@@ -164,3 +164,65 @@ define i64 @imm0008000080000800() {
164164; CHECK-NEXT: ret
165165 ret i64 2251801961170944
166166}
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