@@ -8,11 +8,23 @@ def int_aarch64_get_za_2 : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [IntrInacc
88
99def int_aarch64_get_fpmr_set_za : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [IntrInaccessibleReadMemOnly<AArch64_FPMR>, IntrInaccessibleWriteMemOnly<AArch64_ZA>]>;
1010
11+ def int_aarch64_get_set_fpmr : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [IntrInaccessibleReadWriteMem<AArch64_FPMR>]>;
12+
13+ def int_aarch64_get_set_za : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [IntrInaccessibleReadWriteMem<AArch64_ZA>]>;
14+
15+ def int_aarch64_get_set_fpmr_get_za : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [IntrInaccessibleReadWriteMem<AArch64_FPMR>, IntrInaccessibleReadMemOnly<AArch64_ZA>]>;
16+
17+ def int_aarch64_get_fpmr_get_set_za : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [IntrInaccessibleReadMemOnly<AArch64_FPMR>, IntrInaccessibleReadWriteMem<AArch64_ZA>]>;
18+
1119// CHECK: static constexpr unsigned IntrinsicNameOffsetTable[] = {
1220// CHECK-NEXT: 1, // not_intrinsic
13- // CHECK-NEXT: 15, // llvm.aarch64.get.fpmr.set.za
14- // CHECK-NEXT: 44, // llvm.aarch64.get.za.2
15- // CHECK-NEXT: 66, // llvm.aarch64.set.fpmr.2
21+ // CHECK-NEXT: 15, // llvm.aarch64.get.fpmr.get.set.za
22+ // CHECK-NEXT: 48, // llvm.aarch64.get.fpmr.set.za
23+ // CHECK-NEXT: 77, // llvm.aarch64.get.set.fpmr
24+ // CHECK-NEXT: 103, // llvm.aarch64.get.set.fpmr.get.za
25+ // CHECK-NEXT: 136, // llvm.aarch64.get.set.za
26+ // CHECK-NEXT: 160, // llvm.aarch64.get.za.2
27+ // CHECK-NEXT: 182, // llvm.aarch64.set.fpmr.2
1628
1729// CHECK: static AttributeSet getIntrinsicFnAttributeSet(LLVMContext &C, unsigned ID) {
1830// CHECK-NEXT: switch (ID) {
@@ -24,10 +36,50 @@ def int_aarch64_get_fpmr_set_za : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [In
2436// CHECK-NEXT: Attribute::get(C, Attribute::NoSync),
2537// CHECK-NEXT: Attribute::get(C, Attribute::NoFree),
2638// CHECK-NEXT: Attribute::get(C, Attribute::WillReturn),
39+ // CHECK-NEXT: // ArgMem: NoModRef, InaccessibleMem: NoModRef, ErrnoMem: NoModRef, AARCH64_FPMR: Ref, AARCH64_ZA: ModRef, Other: NoModRef
40+ // CHECK-NEXT: Attribute::getWithMemoryEffects(C, MemoryEffects::createFromIntValue(832)),
41+ // CHECK-NEXT: });
42+ // CHECK-NEXT: case 1:
43+ // CHECK-NEXT: return AttributeSet::get(C, {
44+ // CHECK-NEXT: Attribute::get(C, Attribute::NoUnwind),
45+ // CHECK-NEXT: Attribute::get(C, Attribute::NoCallback),
46+ // CHECK-NEXT: Attribute::get(C, Attribute::NoSync),
47+ // CHECK-NEXT: Attribute::get(C, Attribute::NoFree),
48+ // CHECK-NEXT: Attribute::get(C, Attribute::WillReturn),
2749// CHECK-NEXT: // ArgMem: NoModRef, InaccessibleMem: NoModRef, ErrnoMem: NoModRef, AARCH64_FPMR: Ref, AARCH64_ZA: Mod, Other: NoModRef
2850// CHECK-NEXT: Attribute::getWithMemoryEffects(C, MemoryEffects::createFromIntValue(576)),
2951// CHECK-NEXT: });
30- // CHECK-NEXT: case 1:
52+ // CHECK-NEXT: case 2:
53+ // CHECK-NEXT: return AttributeSet::get(C, {
54+ // CHECK-NEXT: Attribute::get(C, Attribute::NoUnwind),
55+ // CHECK-NEXT: Attribute::get(C, Attribute::NoCallback),
56+ // CHECK-NEXT: Attribute::get(C, Attribute::NoSync),
57+ // CHECK-NEXT: Attribute::get(C, Attribute::NoFree),
58+ // CHECK-NEXT: Attribute::get(C, Attribute::WillReturn),
59+ // CHECK-NEXT: // ArgMem: NoModRef, InaccessibleMem: NoModRef, ErrnoMem: NoModRef, AARCH64_FPMR: ModRef, AARCH64_ZA: NoModRef, Other: NoModRef
60+ // CHECK-NEXT: Attribute::getWithMemoryEffects(C, MemoryEffects::createFromIntValue(192)),
61+ // CHECK-NEXT: });
62+ // CHECK-NEXT: case 3:
63+ // CHECK-NEXT: return AttributeSet::get(C, {
64+ // CHECK-NEXT: Attribute::get(C, Attribute::NoUnwind),
65+ // CHECK-NEXT: Attribute::get(C, Attribute::NoCallback),
66+ // CHECK-NEXT: Attribute::get(C, Attribute::NoSync),
67+ // CHECK-NEXT: Attribute::get(C, Attribute::NoFree),
68+ // CHECK-NEXT: Attribute::get(C, Attribute::WillReturn),
69+ // CHECK-NEXT: // ArgMem: NoModRef, InaccessibleMem: NoModRef, ErrnoMem: NoModRef, AARCH64_FPMR: ModRef, AARCH64_ZA: Ref, Other: NoModRef
70+ // CHECK-NEXT: Attribute::getWithMemoryEffects(C, MemoryEffects::createFromIntValue(448)),
71+ // CHECK-NEXT: });
72+ // CHECK-NEXT: case 4:
73+ // CHECK-NEXT: return AttributeSet::get(C, {
74+ // CHECK-NEXT: Attribute::get(C, Attribute::NoUnwind),
75+ // CHECK-NEXT: Attribute::get(C, Attribute::NoCallback),
76+ // CHECK-NEXT: Attribute::get(C, Attribute::NoSync),
77+ // CHECK-NEXT: Attribute::get(C, Attribute::NoFree),
78+ // CHECK-NEXT: Attribute::get(C, Attribute::WillReturn),
79+ // CHECK-NEXT: // ArgMem: NoModRef, InaccessibleMem: NoModRef, ErrnoMem: NoModRef, AARCH64_FPMR: NoModRef, AARCH64_ZA: ModRef, Other: NoModRef
80+ // CHECK-NEXT: Attribute::getWithMemoryEffects(C, MemoryEffects::createFromIntValue(768)),
81+ // CHECK-NEXT: });
82+ // CHECK-NEXT: case 5:
3183// CHECK-NEXT: return AttributeSet::get(C, {
3284// CHECK-NEXT: Attribute::get(C, Attribute::NoUnwind),
3385// CHECK-NEXT: Attribute::get(C, Attribute::NoCallback),
@@ -37,7 +89,7 @@ def int_aarch64_get_fpmr_set_za : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [In
3789// CHECK-NEXT: // ArgMem: NoModRef, InaccessibleMem: NoModRef, ErrnoMem: NoModRef, AARCH64_FPMR: NoModRef, AARCH64_ZA: Ref, Other: NoModRef
3890// CHECK-NEXT: Attribute::getWithMemoryEffects(C, MemoryEffects::createFromIntValue(256)),
3991// CHECK-NEXT: });
40- // CHECK-NEXT: case 2 :
92+ // CHECK-NEXT: case 6 :
4193// CHECK-NEXT: return AttributeSet::get(C, {
4294// CHECK-NEXT: Attribute::get(C, Attribute::NoUnwind),
4395// CHECK-NEXT: Attribute::get(C, Attribute::NoCallback),
@@ -48,7 +100,11 @@ def int_aarch64_get_fpmr_set_za : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [In
48100// CHECK-NEXT: Attribute::getWithMemoryEffects(C, MemoryEffects::createFromIntValue(128)),
49101
50102// CHECK: static constexpr uint16_t IntrinsicsToAttributesMap[] = {
51- // CHECK-NEXT: 0 << 8 | 0, // llvm.aarch64.get.fpmr.set.za
52- // CHECK-NEXT: 1 << 8 | 0, // llvm.aarch64.get.za.2
53- // CHECK-NEXT: 2 << 8 | 0, // llvm.aarch64.set.fpmr.2
103+ // CHECK-NEXT: 0 << 8 | 0, // llvm.aarch64.get.fpmr.get.set.za
104+ // CHECK-NEXT: 1 << 8 | 0, // llvm.aarch64.get.fpmr.set.za
105+ // CHECK-NEXT: 2 << 8 | 0, // llvm.aarch64.get.set.fpmr
106+ // CHECK-NEXT: 3 << 8 | 0, // llvm.aarch64.get.set.fpmr.get.za
107+ // CHECK-NEXT: 4 << 8 | 0, // llvm.aarch64.get.set.za
108+ // CHECK-NEXT: 5 << 8 | 0, // llvm.aarch64.get.za.2
109+ // CHECK-NEXT: 6 << 8 | 0, // llvm.aarch64.set.fpmr.2
54110// CHECK-NEXT:};
0 commit comments