-
Notifications
You must be signed in to change notification settings - Fork 34
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[vecz] Add support for masking cmpxchg instructions
This finishes off the support for masked atomic instructions. The scheme is essentially identical to that of atomic RMW instructions, except that the instruction returns a literal struct containing the value and a boolean success value. These must also be packetized for efficient results. The packetization of literal struct types - those unnamed structs returned by cmpxchg - has gone through some refactoring, so now the vectorized type of `{ i32, i1 }` is (e.g.) `{ <4 x i32>, <4 x i1> }`. This in practice makes it much more efficient to extract component vectors from the structs. We can see the effect on codegen in the associated LIT tests. It also makes it possible to scalably vectorize cmpxchg instructions. Note that now even unmasked cmpxchg instructions generate the masked builtin, albeit with an "all true" mask. This is to help maintain a uniform internal representation of the packetized literal structure type.
- Loading branch information
1 parent
a19c02c
commit db755a2
Showing
12 changed files
with
845 additions
and
350 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.