@@ -164,3 +164,65 @@ define i64 @imm0008000080000800() {
164
164
; CHECK-NEXT: ret
165
165
ret i64 2251801961170944
166
166
}
167
+
168
+ define i64 @imm14000000a () {
169
+ ; CHECK-LABEL: imm14000000a:
170
+ ; CHECK: # %bb.0:
171
+ ; CHECK-NEXT: lu12i.w $a0, 262144
172
+ ; CHECK-NEXT: ori $a0, $a0, 10
173
+ ; CHECK-NEXT: lu32i.d $a0, 1
174
+ ; CHECK-NEXT: ret
175
+ ret i64 5368709130
176
+ }
177
+
178
+ define i64 @imm0fff000000000fff () {
179
+ ; CHECK-LABEL: imm0fff000000000fff:
180
+ ; CHECK: # %bb.0:
181
+ ; CHECK-NEXT: ori $a0, $zero, 4095
182
+ ; CHECK-NEXT: lu32i.d $a0, -65536
183
+ ; CHECK-NEXT: lu52i.d $a0, $a0, 255
184
+ ; CHECK-NEXT: ret
185
+ ret i64 1152640029630140415
186
+ }
187
+
188
+ define i64 @immffecffffffffffec () {
189
+ ; CHECK-LABEL: immffecffffffffffec:
190
+ ; CHECK: # %bb.0:
191
+ ; CHECK-NEXT: addi.w $a0, $zero, -20
192
+ ; CHECK-NEXT: lu32i.d $a0, -196609
193
+ ; CHECK-NEXT: lu52i.d $a0, $a0, -2
194
+ ; CHECK-NEXT: ret
195
+ ret i64 -5348024557502484
196
+ }
197
+
198
+ define i64 @imm1c000000700000 () {
199
+ ; CHECK-LABEL: imm1c000000700000:
200
+ ; CHECK: # %bb.0:
201
+ ; CHECK-NEXT: lu12i.w $a0, 1792
202
+ ; CHECK-NEXT: lu32i.d $a0, -262144
203
+ ; CHECK-NEXT: lu52i.d $a0, $a0, 1
204
+ ; CHECK-NEXT: ret
205
+ ret i64 7881299355238400
206
+ }
207
+
208
+ define i64 @immf0f0f0f0f0f0f0f0 () {
209
+ ; CHECK-LABEL: immf0f0f0f0f0f0f0f0:
210
+ ; CHECK: # %bb.0:
211
+ ; CHECK-NEXT: lu12i.w $a0, -61681
212
+ ; CHECK-NEXT: ori $a0, $a0, 240
213
+ ; CHECK-NEXT: lu32i.d $a0, 61680
214
+ ; CHECK-NEXT: lu52i.d $a0, $a0, -241
215
+ ; CHECK-NEXT: ret
216
+ ret i64 -1085102592571150096
217
+ }
218
+
219
+ define i64 @imm110000014000000a () {
220
+ ; CHECK-LABEL: imm110000014000000a:
221
+ ; CHECK: # %bb.0:
222
+ ; CHECK-NEXT: lu12i.w $a0, 262144
223
+ ; CHECK-NEXT: ori $a0, $a0, 10
224
+ ; CHECK-NEXT: lu32i.d $a0, 1
225
+ ; CHECK-NEXT: lu52i.d $a0, $a0, 272
226
+ ; CHECK-NEXT: ret
227
+ ret i64 1224979104013484042
228
+ }
0 commit comments