-
Notifications
You must be signed in to change notification settings - Fork 13.2k
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
[X86] Add atomic vector tests for >1 sizes. #120316
base: main
Are you sure you want to change the base?
Conversation
Vector types on atomics are assumed to be invalid by the verifier. However, this type can be valid if it is lowered by codegen.
Scalarize vector of atomic load in SelectionDAG.
When lowering atomic vector types with floats, selection can fail since this pattern is unsupported. To support this, floats can be casted to an integer type of the same size.
Atomic vectors with size >1 are lowered to calls. Adding their tests separately here.
; CHECK0-NEXT: retq | ||
%ret = load atomic <32 x half>, ptr %x acquire, align 4 | ||
ret <32 x half> %ret | ||
} |
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.
To repeat from the other thread, should also test a 1 x ptr, 1 x ptr addrspace(270), 1 x i8, 1 x i16 (plus with sext/zext of the results to <1 x i32/64>)
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 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 call lowering seems like an accident
With #117625, #111414, and #118793, atomic vector loads can be lowered. Atomic vectors with size >1 are lowered to calls. Adding their tests separately here.