Includes verifier changes checking the elementtype, clang codegen
changes to emit the elementtype, and ISel changes using the elementtype.
Details
- Reviewers
dmgreen nikic - Group Reviewers
Restricted Project - Commits
- rG250620f76e07: [OpaquePtr][AArch64] Use elementtype on ldxr/stxr
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
An alternative I suggested on https://github.com/llvm/llvm-project/issues/51165 was to overload these intrinsics by result/value type. I think that would be cleaner design-wise, but it also seems harder to implement (requires custom ISD nodes), so I'm okay with the elementtype approach.
llvm/lib/IR/Verifier.cpp | ||
---|---|---|
5541 | This is checked generically for all elementtype attributes. You can also merge this into the previous switch case. | |
llvm/test/Verifier/AArch64/lit.local.cfg | ||
2 ↗ | (On Diff #411274) | This is unnecessary, target intrinsics are available even if the target isn't. |
LGTM. You probably want to add these intrinsics to the auto-upgrade code in BitcodeReader::propagateAttributeTypes() as well.
Seems OK. Thanks for the patch.
Do opaque pointer variants (like i32 @llvm.aarch64.stxr.p0(i64 1, ptr elementtype(i64) %ptr.0)) get tested automatically from the existing tests once -opaque-pointers is the default?
This is checked generically for all elementtype attributes. You can also merge this into the previous switch case.