@@ -4506,3 +4506,53 @@ entry:
4506
4506
%d = call <2 x i128 > @llvm.fshr (<2 x i128 > %a , <2 x i128 > %b , <2 x i128 > <i128 3 , i128 3 >)
4507
4507
ret <2 x i128 > %d
4508
4508
}
4509
+
4510
+
4511
+
4512
+ define <2 x i64 > @fshl_to_rev2i64 (<2 x i64 > %r ) {
4513
+ ; CHECK-SD-LABEL: fshl_to_rev2i64:
4514
+ ; CHECK-SD: // %bb.0:
4515
+ ; CHECK-SD-NEXT: rev64 v0.4s, v0.4s
4516
+ ; CHECK-SD-NEXT: ret
4517
+ ;
4518
+ ; CHECK-GI-LABEL: fshl_to_rev2i64:
4519
+ ; CHECK-GI: // %bb.0:
4520
+ ; CHECK-GI-NEXT: shl v1.2d, v0.2d, #32
4521
+ ; CHECK-GI-NEXT: ushr v0.2d, v0.2d, #32
4522
+ ; CHECK-GI-NEXT: orr v0.16b, v1.16b, v0.16b
4523
+ ; CHECK-GI-NEXT: ret
4524
+ %or = tail call <2 x i64 > @llvm.fshl.v2i64 (<2 x i64 > %r , <2 x i64 > %r , <2 x i64 > splat (i64 32 ))
4525
+ ret <2 x i64 > %or
4526
+ }
4527
+
4528
+ define <4 x i32 > @fshl_to_rev4i32 (<4 x i32 > %r ) {
4529
+ ; CHECK-SD-LABEL: fshl_to_rev4i32:
4530
+ ; CHECK-SD: // %bb.0:
4531
+ ; CHECK-SD-NEXT: rev32 v0.8h, v0.8h
4532
+ ; CHECK-SD-NEXT: ret
4533
+ ;
4534
+ ; CHECK-GI-LABEL: fshl_to_rev4i32:
4535
+ ; CHECK-GI: // %bb.0:
4536
+ ; CHECK-GI-NEXT: shl v1.4s, v0.4s, #16
4537
+ ; CHECK-GI-NEXT: ushr v0.4s, v0.4s, #16
4538
+ ; CHECK-GI-NEXT: orr v0.16b, v1.16b, v0.16b
4539
+ ; CHECK-GI-NEXT: ret
4540
+ %or = tail call <4 x i32 > @llvm.fshl.v4i32 (<4 x i32 > %r , <4 x i32 > %r , <4 x i32 > splat (i32 16 ))
4541
+ ret <4 x i32 > %or
4542
+ }
4543
+
4544
+ define <2 x i32 > @fshl_to_rev2i32 (<2 x i32 > %r ) {
4545
+ ; CHECK-SD-LABEL: fshl_to_rev2i32:
4546
+ ; CHECK-SD: // %bb.0:
4547
+ ; CHECK-SD-NEXT: rev32 v0.4h, v0.4h
4548
+ ; CHECK-SD-NEXT: ret
4549
+ ;
4550
+ ; CHECK-GI-LABEL: fshl_to_rev2i32:
4551
+ ; CHECK-GI: // %bb.0:
4552
+ ; CHECK-GI-NEXT: shl v1.2s, v0.2s, #16
4553
+ ; CHECK-GI-NEXT: ushr v0.2s, v0.2s, #16
4554
+ ; CHECK-GI-NEXT: orr v0.8b, v1.8b, v0.8b
4555
+ ; CHECK-GI-NEXT: ret
4556
+ %or = tail call <2 x i32 > @llvm.fshl.v2i32 (<2 x i32 > %r , <2 x i32 > %r , <2 x i32 > splat (i32 16 ))
4557
+ ret <2 x i32 > %or
4558
+ }
0 commit comments