-
Notifications
You must be signed in to change notification settings - Fork 818
Execution Tests: Long Vectors - Finish the basic WaveOp tests #7913
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Execution Tests: Long Vectors - Finish the basic WaveOp tests #7913
Conversation
…r floating point ops for now.
| std::numeric_limits<int16_t>::max()); | ||
| INPUT_SET(InputSet::SelectCond, 0, 1); | ||
| INPUT_SET(InputSet::AllOnes, 1); | ||
| INPUT_SET(InputSet::AllScalarOnes, 1); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Isn't the "scalar" part implicit in all of these input sets? What's special about this one that means we need to call them out?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I'll revert this. For context I changed this name when I was also adding an input set that had all bits set to 1. I was trying to differentiate between them.
| // ExpectedBuilder - specializations are expected to have buildExpectedData | ||
| // member functions. | ||
| template <OpType OP, typename T> struct ExpectedBuilder; | ||
| template <OpType OP, typename T> struct WaveOpExpectedBuilder; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can't find where this is used?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The specializations for WaveActiveAllEqual, WaveReadLaneAt, and WaveReadLaneFirst need it.
Although, they aren't making use of WaveSize argument to the WaveOpExpectedBuilder::buildExpected call. So, they could use the base one (ExpectedBuilder). But then I'd need to do something to call the right buildExpected in dispatchWaveTest.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, it looks like WaveOpExpectedBuilder was added in an earlier change, so the call to it doesn't appear in the diffs for this one.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, it just didn't need the forward declaration when it was added.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I missed this in the previous change - I don't quite get why we need ExpectedBuilder as well as WaveOpExpectedBuilder?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There were a few reasons initially. Now the only thing it's getting is the WaveCount argument for buildExpected.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The specializations don't need to match the argument structure of any of the other specializations.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One of the other things I was going for there was to have the name be clear that it was for use with wave ops. But I guess that doesn't really matter. There's no reason another test couldn't use a wave size if it wanted to.
I've moved it back into the ExpectedBuilder.
Still debating if putting 'waveOp' in the name would make sense. It is heavily implied without it...
This PR is the third and final PR to resolve #7472.
Test cases validated against a private build of WARP with bug fixes.