17
17
#include " llvm/ExecutionEngine/JITLink/JITLink.h"
18
18
#include " llvm/ExecutionEngine/Orc/Shared/MemoryFlags.h"
19
19
#include " llvm/Object/ELFObjectFile.h"
20
+ #include " llvm/Support/Compiler.h"
20
21
#include " llvm/Support/Endian.h"
21
22
#include " llvm/Support/ManagedStatic.h"
22
23
#include " llvm/Support/MathExtras.h"
@@ -62,7 +63,7 @@ int64_t decodeImmBT4BlT1BlxT2(uint32_t Hi, uint32_t Lo) {
62
63
// /
63
64
// / S:I1:I2:Imm10:Imm11:0 -> [ 00000:S:Imm10, 00:J1:0:J2:Imm11 ]
64
65
// /
65
- HalfWords encodeImmBT4BlT1BlxT2_J1J2 (int64_t Value) {
66
+ LLVM_ABI HalfWords encodeImmBT4BlT1BlxT2_J1J2 (int64_t Value) {
66
67
uint32_t S = (Value >> 14 ) & 0x0400 ;
67
68
uint32_t J1 = (((~(Value >> 10 )) ^ (Value >> 11 )) & 0x2000 );
68
69
uint32_t J2 = (((~(Value >> 11 )) ^ (Value >> 13 )) & 0x0800 );
@@ -76,7 +77,7 @@ HalfWords encodeImmBT4BlT1BlxT2_J1J2(int64_t Value) {
76
77
// /
77
78
// / [ 00000:S:Imm10, 00:J1:0:J2:Imm11] -> S:I1:I2:Imm10:Imm11:0
78
79
// /
79
- int64_t decodeImmBT4BlT1BlxT2_J1J2 (uint32_t Hi, uint32_t Lo) {
80
+ LLVM_ABI int64_t decodeImmBT4BlT1BlxT2_J1J2 (uint32_t Hi, uint32_t Lo) {
80
81
uint32_t S = Hi & 0x0400 ;
81
82
uint32_t I1 = ~((Lo ^ (Hi << 3 )) << 10 ) & 0x00800000 ;
82
83
uint32_t I2 = ~((Lo ^ (Hi << 1 )) << 11 ) & 0x00400000 ;
@@ -90,7 +91,7 @@ int64_t decodeImmBT4BlT1BlxT2_J1J2(uint32_t Hi, uint32_t Lo) {
90
91
// /
91
92
// / Imm24:00 -> 00000000:Imm24
92
93
// /
93
- uint32_t encodeImmBA1BlA1BlxA2 (int64_t Value) {
94
+ LLVM_ABI uint32_t encodeImmBA1BlA1BlxA2 (int64_t Value) {
94
95
return (Value >> 2 ) & 0x00ffffff ;
95
96
}
96
97
@@ -99,7 +100,7 @@ uint32_t encodeImmBA1BlA1BlxA2(int64_t Value) {
99
100
// /
100
101
// / 00000000:Imm24 -> Imm24:00
101
102
// /
102
- int64_t decodeImmBA1BlA1BlxA2 (int64_t Value) {
103
+ LLVM_ABI int64_t decodeImmBA1BlA1BlxA2 (int64_t Value) {
103
104
return SignExtend64<26 >((Value & 0x00ffffff ) << 2 );
104
105
}
105
106
@@ -108,7 +109,7 @@ int64_t decodeImmBA1BlA1BlxA2(int64_t Value) {
108
109
// /
109
110
// / Imm4:Imm1:Imm3:Imm8 -> [ 00000:i:000000:Imm4, 0:Imm3:0000:Imm8 ]
110
111
// /
111
- HalfWords encodeImmMovtT1MovwT3 (uint16_t Value) {
112
+ LLVM_ABI HalfWords encodeImmMovtT1MovwT3 (uint16_t Value) {
112
113
uint32_t Imm4 = (Value >> 12 ) & 0x0f ;
113
114
uint32_t Imm1 = (Value >> 11 ) & 0x01 ;
114
115
uint32_t Imm3 = (Value >> 8 ) & 0x07 ;
@@ -121,7 +122,7 @@ HalfWords encodeImmMovtT1MovwT3(uint16_t Value) {
121
122
// /
122
123
// / [ 00000:i:000000:Imm4, 0:Imm3:0000:Imm8 ] -> Imm4:Imm1:Imm3:Imm8
123
124
// /
124
- uint16_t decodeImmMovtT1MovwT3 (uint32_t Hi, uint32_t Lo) {
125
+ LLVM_ABI uint16_t decodeImmMovtT1MovwT3 (uint32_t Hi, uint32_t Lo) {
125
126
uint32_t Imm4 = Hi & 0x0f ;
126
127
uint32_t Imm1 = (Hi >> 10 ) & 0x01 ;
127
128
uint32_t Imm3 = (Lo >> 12 ) & 0x07 ;
@@ -135,7 +136,7 @@ uint16_t decodeImmMovtT1MovwT3(uint32_t Hi, uint32_t Lo) {
135
136
// /
136
137
// / Rd4 -> [0000000000000000, 0000:Rd4:00000000]
137
138
// /
138
- HalfWords encodeRegMovtT1MovwT3 (int64_t Value) {
139
+ LLVM_ABI HalfWords encodeRegMovtT1MovwT3 (int64_t Value) {
139
140
uint32_t Rd4 = (Value & 0x0f ) << 8 ;
140
141
return HalfWords{0 , Rd4};
141
142
}
@@ -144,7 +145,7 @@ HalfWords encodeRegMovtT1MovwT3(int64_t Value) {
144
145
// /
145
146
// / [0000000000000000, 0000:Rd4:00000000] -> Rd4
146
147
// /
147
- int64_t decodeRegMovtT1MovwT3 (uint32_t Hi, uint32_t Lo) {
148
+ LLVM_ABI int64_t decodeRegMovtT1MovwT3 (uint32_t Hi, uint32_t Lo) {
148
149
uint32_t Rd4 = (Lo >> 8 ) & 0x0f ;
149
150
return Rd4;
150
151
}
@@ -154,7 +155,7 @@ int64_t decodeRegMovtT1MovwT3(uint32_t Hi, uint32_t Lo) {
154
155
// /
155
156
// / Imm4:Imm12 -> 000000000000:Imm4:0000:Imm12
156
157
// /
157
- uint32_t encodeImmMovtA1MovwA2 (uint16_t Value) {
158
+ LLVM_ABI uint32_t encodeImmMovtA1MovwA2 (uint16_t Value) {
158
159
uint32_t Imm4 = (Value >> 12 ) & 0x0f ;
159
160
uint32_t Imm12 = Value & 0x0fff ;
160
161
return (Imm4 << 16 ) | Imm12;
@@ -165,7 +166,7 @@ uint32_t encodeImmMovtA1MovwA2(uint16_t Value) {
165
166
// /
166
167
// / 000000000000:Imm4:0000:Imm12 -> Imm4:Imm12
167
168
// /
168
- uint16_t decodeImmMovtA1MovwA2 (uint64_t Value) {
169
+ LLVM_ABI uint16_t decodeImmMovtA1MovwA2 (uint64_t Value) {
169
170
uint32_t Imm4 = (Value >> 16 ) & 0x0f ;
170
171
uint32_t Imm12 = Value & 0x0fff ;
171
172
return (Imm4 << 12 ) | Imm12;
@@ -176,7 +177,7 @@ uint16_t decodeImmMovtA1MovwA2(uint64_t Value) {
176
177
// /
177
178
// / Rd4 -> 0000000000000000:Rd4:000000000000
178
179
// /
179
- uint32_t encodeRegMovtA1MovwA2 (int64_t Value) {
180
+ LLVM_ABI uint32_t encodeRegMovtA1MovwA2 (int64_t Value) {
180
181
uint32_t Rd4 = (Value & 0x00000f ) << 12 ;
181
182
return Rd4;
182
183
}
@@ -186,7 +187,7 @@ uint32_t encodeRegMovtA1MovwA2(int64_t Value) {
186
187
// /
187
188
// / 0000000000000000:Rd4:000000000000 -> Rd4
188
189
// /
189
- int64_t decodeRegMovtA1MovwA2 (uint64_t Value) {
190
+ LLVM_ABI int64_t decodeRegMovtA1MovwA2 (uint64_t Value) {
190
191
uint32_t Rd4 = (Value >> 12 ) & 0x00000f ;
191
192
return Rd4;
192
193
}
0 commit comments