15
15
#include " llvm/ADT/StringExtras.h"
16
16
#include " llvm/ExecutionEngine/JITLink/JITLink.h"
17
17
#include " llvm/ExecutionEngine/Orc/Shared/MemoryFlags.h"
18
+ #include " llvm/Support/Compiler.h"
18
19
#include " llvm/Support/Endian.h"
19
20
#include " llvm/Support/ManagedStatic.h"
20
21
#include " llvm/Support/MathExtras.h"
@@ -60,7 +61,7 @@ int64_t decodeImmBT4BlT1BlxT2(uint32_t Hi, uint32_t Lo) {
60
61
// /
61
62
// / S:I1:I2:Imm10:Imm11:0 -> [ 00000:S:Imm10, 00:J1:0:J2:Imm11 ]
62
63
// /
63
- HalfWords encodeImmBT4BlT1BlxT2_J1J2 (int64_t Value) {
64
+ LLVM_ABI HalfWords encodeImmBT4BlT1BlxT2_J1J2 (int64_t Value) {
64
65
uint32_t S = (Value >> 14 ) & 0x0400 ;
65
66
uint32_t J1 = (((~(Value >> 10 )) ^ (Value >> 11 )) & 0x2000 );
66
67
uint32_t J2 = (((~(Value >> 11 )) ^ (Value >> 13 )) & 0x0800 );
@@ -74,7 +75,7 @@ HalfWords encodeImmBT4BlT1BlxT2_J1J2(int64_t Value) {
74
75
// /
75
76
// / [ 00000:S:Imm10, 00:J1:0:J2:Imm11] -> S:I1:I2:Imm10:Imm11:0
76
77
// /
77
- int64_t decodeImmBT4BlT1BlxT2_J1J2 (uint32_t Hi, uint32_t Lo) {
78
+ LLVM_ABI int64_t decodeImmBT4BlT1BlxT2_J1J2 (uint32_t Hi, uint32_t Lo) {
78
79
uint32_t S = Hi & 0x0400 ;
79
80
uint32_t I1 = ~((Lo ^ (Hi << 3 )) << 10 ) & 0x00800000 ;
80
81
uint32_t I2 = ~((Lo ^ (Hi << 1 )) << 11 ) & 0x00400000 ;
@@ -88,7 +89,7 @@ int64_t decodeImmBT4BlT1BlxT2_J1J2(uint32_t Hi, uint32_t Lo) {
88
89
// /
89
90
// / Imm24:00 -> 00000000:Imm24
90
91
// /
91
- uint32_t encodeImmBA1BlA1BlxA2 (int64_t Value) {
92
+ LLVM_ABI uint32_t encodeImmBA1BlA1BlxA2 (int64_t Value) {
92
93
return (Value >> 2 ) & 0x00ffffff ;
93
94
}
94
95
@@ -97,7 +98,7 @@ uint32_t encodeImmBA1BlA1BlxA2(int64_t Value) {
97
98
// /
98
99
// / 00000000:Imm24 -> Imm24:00
99
100
// /
100
- int64_t decodeImmBA1BlA1BlxA2 (int64_t Value) {
101
+ LLVM_ABI int64_t decodeImmBA1BlA1BlxA2 (int64_t Value) {
101
102
return SignExtend64<26 >((Value & 0x00ffffff ) << 2 );
102
103
}
103
104
@@ -106,7 +107,7 @@ int64_t decodeImmBA1BlA1BlxA2(int64_t Value) {
106
107
// /
107
108
// / Imm4:Imm1:Imm3:Imm8 -> [ 00000:i:000000:Imm4, 0:Imm3:0000:Imm8 ]
108
109
// /
109
- HalfWords encodeImmMovtT1MovwT3 (uint16_t Value) {
110
+ LLVM_ABI HalfWords encodeImmMovtT1MovwT3 (uint16_t Value) {
110
111
uint32_t Imm4 = (Value >> 12 ) & 0x0f ;
111
112
uint32_t Imm1 = (Value >> 11 ) & 0x01 ;
112
113
uint32_t Imm3 = (Value >> 8 ) & 0x07 ;
@@ -119,7 +120,7 @@ HalfWords encodeImmMovtT1MovwT3(uint16_t Value) {
119
120
// /
120
121
// / [ 00000:i:000000:Imm4, 0:Imm3:0000:Imm8 ] -> Imm4:Imm1:Imm3:Imm8
121
122
// /
122
- uint16_t decodeImmMovtT1MovwT3 (uint32_t Hi, uint32_t Lo) {
123
+ LLVM_ABI uint16_t decodeImmMovtT1MovwT3 (uint32_t Hi, uint32_t Lo) {
123
124
uint32_t Imm4 = Hi & 0x0f ;
124
125
uint32_t Imm1 = (Hi >> 10 ) & 0x01 ;
125
126
uint32_t Imm3 = (Lo >> 12 ) & 0x07 ;
@@ -133,7 +134,7 @@ uint16_t decodeImmMovtT1MovwT3(uint32_t Hi, uint32_t Lo) {
133
134
// /
134
135
// / Rd4 -> [0000000000000000, 0000:Rd4:00000000]
135
136
// /
136
- HalfWords encodeRegMovtT1MovwT3 (int64_t Value) {
137
+ LLVM_ABI HalfWords encodeRegMovtT1MovwT3 (int64_t Value) {
137
138
uint32_t Rd4 = (Value & 0x0f ) << 8 ;
138
139
return HalfWords{0 , Rd4};
139
140
}
@@ -142,7 +143,7 @@ HalfWords encodeRegMovtT1MovwT3(int64_t Value) {
142
143
// /
143
144
// / [0000000000000000, 0000:Rd4:00000000] -> Rd4
144
145
// /
145
- int64_t decodeRegMovtT1MovwT3 (uint32_t Hi, uint32_t Lo) {
146
+ LLVM_ABI int64_t decodeRegMovtT1MovwT3 (uint32_t Hi, uint32_t Lo) {
146
147
uint32_t Rd4 = (Lo >> 8 ) & 0x0f ;
147
148
return Rd4;
148
149
}
@@ -152,7 +153,7 @@ int64_t decodeRegMovtT1MovwT3(uint32_t Hi, uint32_t Lo) {
152
153
// /
153
154
// / Imm4:Imm12 -> 000000000000:Imm4:0000:Imm12
154
155
// /
155
- uint32_t encodeImmMovtA1MovwA2 (uint16_t Value) {
156
+ LLVM_ABI uint32_t encodeImmMovtA1MovwA2 (uint16_t Value) {
156
157
uint32_t Imm4 = (Value >> 12 ) & 0x0f ;
157
158
uint32_t Imm12 = Value & 0x0fff ;
158
159
return (Imm4 << 16 ) | Imm12;
@@ -163,7 +164,7 @@ uint32_t encodeImmMovtA1MovwA2(uint16_t Value) {
163
164
// /
164
165
// / 000000000000:Imm4:0000:Imm12 -> Imm4:Imm12
165
166
// /
166
- uint16_t decodeImmMovtA1MovwA2 (uint64_t Value) {
167
+ LLVM_ABI uint16_t decodeImmMovtA1MovwA2 (uint64_t Value) {
167
168
uint32_t Imm4 = (Value >> 16 ) & 0x0f ;
168
169
uint32_t Imm12 = Value & 0x0fff ;
169
170
return (Imm4 << 12 ) | Imm12;
@@ -174,7 +175,7 @@ uint16_t decodeImmMovtA1MovwA2(uint64_t Value) {
174
175
// /
175
176
// / Rd4 -> 0000000000000000:Rd4:000000000000
176
177
// /
177
- uint32_t encodeRegMovtA1MovwA2 (int64_t Value) {
178
+ LLVM_ABI uint32_t encodeRegMovtA1MovwA2 (int64_t Value) {
178
179
uint32_t Rd4 = (Value & 0x00000f ) << 12 ;
179
180
return Rd4;
180
181
}
@@ -184,7 +185,7 @@ uint32_t encodeRegMovtA1MovwA2(int64_t Value) {
184
185
// /
185
186
// / 0000000000000000:Rd4:000000000000 -> Rd4
186
187
// /
187
- int64_t decodeRegMovtA1MovwA2 (uint64_t Value) {
188
+ LLVM_ABI int64_t decodeRegMovtA1MovwA2 (uint64_t Value) {
188
189
uint32_t Rd4 = (Value >> 12 ) & 0x00000f ;
189
190
return Rd4;
190
191
}
0 commit comments