Skip to content

Commit 09dcf31

Browse files
committed
[NFC] Add tests for i128 fshl on a few targets.
In preparation for D108058.
1 parent d25e91d commit 09dcf31

File tree

3 files changed

+680
-4
lines changed

3 files changed

+680
-4
lines changed

llvm/test/CodeGen/AArch64/funnel-shift.ll

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ declare i8 @llvm.fshl.i8(i8, i8, i8)
55
declare i16 @llvm.fshl.i16(i16, i16, i16)
66
declare i32 @llvm.fshl.i32(i32, i32, i32)
77
declare i64 @llvm.fshl.i64(i64, i64, i64)
8+
declare i128 @llvm.fshl.i128(i128, i128, i128)
89
declare <4 x i32> @llvm.fshl.v4i32(<4 x i32>, <4 x i32>, <4 x i32>)
910

1011
declare i8 @llvm.fshr.i8(i8, i8, i8)
@@ -42,6 +43,37 @@ define i64 @fshl_i64(i64 %x, i64 %y, i64 %z) {
4243
ret i64 %f
4344
}
4445

46+
define i128 @fshl_i128(i128 %x, i128 %y, i128 %z) nounwind {
47+
; CHECK-LABEL: fshl_i128:
48+
; CHECK: // %bb.0:
49+
; CHECK-NEXT: mvn w9, w4
50+
; CHECK-NEXT: and x12, x9, #0x7f
51+
; CHECK-NEXT: extr x8, x3, x2, #1
52+
; CHECK-NEXT: lsr x10, x3, #1
53+
; CHECK-NEXT: tst x12, #0x40
54+
; CHECK-NEXT: lsr x12, x0, #1
55+
; CHECK-NEXT: lsr x8, x8, x9
56+
; CHECK-NEXT: lsr x12, x12, x9
57+
; CHECK-NEXT: lsr x9, x10, x9
58+
; CHECK-NEXT: lsl x10, x10, #1
59+
; CHECK-NEXT: lsl x10, x10, x4
60+
; CHECK-NEXT: lsl x11, x1, x4
61+
; CHECK-NEXT: and x14, x4, #0x7f
62+
; CHECK-NEXT: orr x8, x10, x8
63+
; CHECK-NEXT: lsl x13, x0, x4
64+
; CHECK-NEXT: orr x11, x11, x12
65+
; CHECK-NEXT: csel x10, xzr, x9, ne
66+
; CHECK-NEXT: csel x8, x9, x8, ne
67+
; CHECK-NEXT: tst x14, #0x40
68+
; CHECK-NEXT: csel x9, x13, x11, ne
69+
; CHECK-NEXT: csel x11, xzr, x13, ne
70+
; CHECK-NEXT: orr x1, x9, x10
71+
; CHECK-NEXT: orr x0, x11, x8
72+
; CHECK-NEXT: ret
73+
%f = call i128 @llvm.fshl.i128(i128 %x, i128 %y, i128 %z)
74+
ret i128 %f
75+
}
76+
4577
; Verify that weird types are minimally supported.
4678
declare i37 @llvm.fshl.i37(i37, i37, i37)
4779
define i37 @fshl_i37(i37 %x, i37 %y, i37 %z) {

0 commit comments

Comments
 (0)