@@ -1278,3 +1278,115 @@ define <4 x i32> @or_tree_with_mismatching_shifts_vec_i32(<4 x i32> %a, <4 x i32
1278
1278
%r = or <4 x i32 > %or.ab , %or.cd
1279
1279
ret <4 x i32 > %r
1280
1280
}
1281
+
1282
+ define arm_aapcscc i32 @test_shift15_and510 (ptr nocapture %p ) {
1283
+ ; CHECK-ARM-LABEL: test_shift15_and510:
1284
+ ; CHECK-ARM: @ %bb.0: @ %entry
1285
+ ; CHECK-ARM-NEXT: ldrb r0, [r0, #2]
1286
+ ; CHECK-ARM-NEXT: lsl r0, r0, #1
1287
+ ; CHECK-ARM-NEXT: bx lr
1288
+ ;
1289
+ ; CHECK-BE-LABEL: test_shift15_and510:
1290
+ ; CHECK-BE: @ %bb.0: @ %entry
1291
+ ; CHECK-BE-NEXT: ldrb r0, [r0, #1]
1292
+ ; CHECK-BE-NEXT: lsl r0, r0, #1
1293
+ ; CHECK-BE-NEXT: bx lr
1294
+ ;
1295
+ ; CHECK-THUMB-LABEL: test_shift15_and510:
1296
+ ; CHECK-THUMB: @ %bb.0: @ %entry
1297
+ ; CHECK-THUMB-NEXT: ldrb r0, [r0, #2]
1298
+ ; CHECK-THUMB-NEXT: lsls r0, r0, #1
1299
+ ; CHECK-THUMB-NEXT: bx lr
1300
+ ;
1301
+ ; CHECK-ALIGN-LABEL: test_shift15_and510:
1302
+ ; CHECK-ALIGN: @ %bb.0: @ %entry
1303
+ ; CHECK-ALIGN-NEXT: ldrb r0, [r0, #2]
1304
+ ; CHECK-ALIGN-NEXT: lsls r0, r0, #1
1305
+ ; CHECK-ALIGN-NEXT: bx lr
1306
+ ;
1307
+ ; CHECK-V6M-LABEL: test_shift15_and510:
1308
+ ; CHECK-V6M: @ %bb.0: @ %entry
1309
+ ; CHECK-V6M-NEXT: ldrb r0, [r0, #2]
1310
+ ; CHECK-V6M-NEXT: lsls r0, r0, #1
1311
+ ; CHECK-V6M-NEXT: bx lr
1312
+ entry:
1313
+ %load = load i32 , ptr %p , align 4
1314
+ %lshr = lshr i32 %load , 15
1315
+ %and = and i32 %lshr , 510
1316
+ ret i32 %and
1317
+ }
1318
+
1319
+ define arm_aapcscc i32 @test_shift22_and1020 (ptr nocapture %p ) {
1320
+ ; CHECK-ARM-LABEL: test_shift22_and1020:
1321
+ ; CHECK-ARM: @ %bb.0: @ %entry
1322
+ ; CHECK-ARM-NEXT: ldrb r0, [r0, #3]
1323
+ ; CHECK-ARM-NEXT: lsl r0, r0, #2
1324
+ ; CHECK-ARM-NEXT: bx lr
1325
+ ;
1326
+ ; CHECK-BE-LABEL: test_shift22_and1020:
1327
+ ; CHECK-BE: @ %bb.0: @ %entry
1328
+ ; CHECK-BE-NEXT: ldrb r0, [r0]
1329
+ ; CHECK-BE-NEXT: lsl r0, r0, #2
1330
+ ; CHECK-BE-NEXT: bx lr
1331
+ ;
1332
+ ; CHECK-THUMB-LABEL: test_shift22_and1020:
1333
+ ; CHECK-THUMB: @ %bb.0: @ %entry
1334
+ ; CHECK-THUMB-NEXT: ldrb r0, [r0, #3]
1335
+ ; CHECK-THUMB-NEXT: lsls r0, r0, #2
1336
+ ; CHECK-THUMB-NEXT: bx lr
1337
+ ;
1338
+ ; CHECK-ALIGN-LABEL: test_shift22_and1020:
1339
+ ; CHECK-ALIGN: @ %bb.0: @ %entry
1340
+ ; CHECK-ALIGN-NEXT: ldrb r0, [r0, #3]
1341
+ ; CHECK-ALIGN-NEXT: lsls r0, r0, #2
1342
+ ; CHECK-ALIGN-NEXT: bx lr
1343
+ ;
1344
+ ; CHECK-V6M-LABEL: test_shift22_and1020:
1345
+ ; CHECK-V6M: @ %bb.0: @ %entry
1346
+ ; CHECK-V6M-NEXT: ldrb r0, [r0, #3]
1347
+ ; CHECK-V6M-NEXT: lsls r0, r0, #2
1348
+ ; CHECK-V6M-NEXT: bx lr
1349
+ entry:
1350
+ %load = load i32 , ptr %p , align 4
1351
+ %lshr = lshr i32 %load , 22
1352
+ %and = and i32 %lshr , 1020
1353
+ ret i32 %and
1354
+ }
1355
+
1356
+ define arm_aapcscc i32 @test_zext_shift5_and2040 (ptr nocapture %p ) {
1357
+ ; CHECK-ARM-LABEL: test_zext_shift5_and2040:
1358
+ ; CHECK-ARM: @ %bb.0: @ %entry
1359
+ ; CHECK-ARM-NEXT: ldrb r0, [r0, #1]
1360
+ ; CHECK-ARM-NEXT: lsl r0, r0, #3
1361
+ ; CHECK-ARM-NEXT: bx lr
1362
+ ;
1363
+ ; CHECK-BE-LABEL: test_zext_shift5_and2040:
1364
+ ; CHECK-BE: @ %bb.0: @ %entry
1365
+ ; CHECK-BE-NEXT: ldrb r0, [r0]
1366
+ ; CHECK-BE-NEXT: lsl r0, r0, #3
1367
+ ; CHECK-BE-NEXT: bx lr
1368
+ ;
1369
+ ; CHECK-THUMB-LABEL: test_zext_shift5_and2040:
1370
+ ; CHECK-THUMB: @ %bb.0: @ %entry
1371
+ ; CHECK-THUMB-NEXT: ldrb r0, [r0, #1]
1372
+ ; CHECK-THUMB-NEXT: lsls r0, r0, #3
1373
+ ; CHECK-THUMB-NEXT: bx lr
1374
+ ;
1375
+ ; CHECK-ALIGN-LABEL: test_zext_shift5_and2040:
1376
+ ; CHECK-ALIGN: @ %bb.0: @ %entry
1377
+ ; CHECK-ALIGN-NEXT: ldrb r0, [r0, #1]
1378
+ ; CHECK-ALIGN-NEXT: lsls r0, r0, #3
1379
+ ; CHECK-ALIGN-NEXT: bx lr
1380
+ ;
1381
+ ; CHECK-V6M-LABEL: test_zext_shift5_and2040:
1382
+ ; CHECK-V6M: @ %bb.0: @ %entry
1383
+ ; CHECK-V6M-NEXT: ldrb r0, [r0, #1]
1384
+ ; CHECK-V6M-NEXT: lsls r0, r0, #3
1385
+ ; CHECK-V6M-NEXT: bx lr
1386
+ entry:
1387
+ %load = load i16 , ptr %p , align 2
1388
+ %zext = zext i16 %load to i32
1389
+ %lshr = lshr i32 %zext , 5
1390
+ %and = and i32 %lshr , 2040
1391
+ ret i32 %and
1392
+ }
0 commit comments