@@ -8,11 +8,23 @@ def int_aarch64_get_za_2 : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [IntrInacc
8
8
9
9
def int_aarch64_get_fpmr_set_za : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [IntrInaccessibleReadMemOnly<AArch64_FPMR>, IntrInaccessibleWriteMemOnly<AArch64_ZA>]>;
10
10
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
+
11
19
// CHECK: static constexpr unsigned IntrinsicNameOffsetTable[] = {
12
20
// 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
16
28
17
29
// CHECK: static AttributeSet getIntrinsicFnAttributeSet(LLVMContext &C, unsigned ID) {
18
30
// CHECK-NEXT: switch (ID) {
@@ -24,10 +36,50 @@ def int_aarch64_get_fpmr_set_za : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [In
24
36
// CHECK-NEXT: Attribute::get(C, Attribute::NoSync),
25
37
// CHECK-NEXT: Attribute::get(C, Attribute::NoFree),
26
38
// 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),
27
49
// CHECK-NEXT: // ArgMem: NoModRef, InaccessibleMem: NoModRef, ErrnoMem: NoModRef, AARCH64_FPMR: Ref, AARCH64_ZA: Mod, Other: NoModRef
28
50
// CHECK-NEXT: Attribute::getWithMemoryEffects(C, MemoryEffects::createFromIntValue(576)),
29
51
// 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:
31
83
// CHECK-NEXT: return AttributeSet::get(C, {
32
84
// CHECK-NEXT: Attribute::get(C, Attribute::NoUnwind),
33
85
// CHECK-NEXT: Attribute::get(C, Attribute::NoCallback),
@@ -37,7 +89,7 @@ def int_aarch64_get_fpmr_set_za : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [In
37
89
// CHECK-NEXT: // ArgMem: NoModRef, InaccessibleMem: NoModRef, ErrnoMem: NoModRef, AARCH64_FPMR: NoModRef, AARCH64_ZA: Ref, Other: NoModRef
38
90
// CHECK-NEXT: Attribute::getWithMemoryEffects(C, MemoryEffects::createFromIntValue(256)),
39
91
// CHECK-NEXT: });
40
- // CHECK-NEXT: case 2 :
92
+ // CHECK-NEXT: case 6 :
41
93
// CHECK-NEXT: return AttributeSet::get(C, {
42
94
// CHECK-NEXT: Attribute::get(C, Attribute::NoUnwind),
43
95
// CHECK-NEXT: Attribute::get(C, Attribute::NoCallback),
@@ -48,7 +100,11 @@ def int_aarch64_get_fpmr_set_za : DefaultAttrsIntrinsic<[], [llvm_i64_ty], [In
48
100
// CHECK-NEXT: Attribute::getWithMemoryEffects(C, MemoryEffects::createFromIntValue(128)),
49
101
50
102
// 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
54
110
// CHECK-NEXT:};
0 commit comments