@@ -72,6 +72,19 @@ define i64 @g_64(i64 %a) {
7272 ret i64 %b
7373}
7474
75+ declare i128 @llvm.bitreverse.i128 (i128 ) readnone
76+
77+ define i128 @g_128 (i128 %a ) {
78+ ; CHECK-LABEL: g_128:
79+ ; CHECK: // %bb.0:
80+ ; CHECK-NEXT: rbit x8, x1
81+ ; CHECK-NEXT: rbit x1, x0
82+ ; CHECK-NEXT: mov x0, x8
83+ ; CHECK-NEXT: ret
84+ %b = call i128 @llvm.bitreverse.i128 (i128 %a )
85+ ret i128 %b
86+ }
87+
7588declare <16 x i3 > @llvm.bitreverse.v16i3 (<16 x i3 >) readnone
7689
7790define <16 x i3 > @g_vec_16x3 (<16 x i3 > %a ) {
@@ -282,3 +295,19 @@ define <4 x i64> @g_vec_4x64(<4 x i64> %a) {
282295 %b = call <4 x i64 > @llvm.bitreverse.v4i64 (<4 x i64 > %a )
283296 ret <4 x i64 > %b
284297}
298+
299+ declare <2 x i128 > @llvm.bitreverse.v2i128 (<2 x i128 >) readnone
300+
301+ define <2 x i128 > @g_vec_2x128 (<2 x i128 > %a ) {
302+ ; CHECK-LABEL: g_vec_2x128:
303+ ; CHECK: // %bb.0:
304+ ; CHECK-NEXT: rbit x8, x1
305+ ; CHECK-NEXT: rbit x9, x3
306+ ; CHECK-NEXT: rbit x1, x0
307+ ; CHECK-NEXT: rbit x3, x2
308+ ; CHECK-NEXT: mov x0, x8
309+ ; CHECK-NEXT: mov x2, x9
310+ ; CHECK-NEXT: ret
311+ %b = call <2 x i128 > @llvm.bitreverse.v2i128 (<2 x i128 > %a )
312+ ret <2 x i128 > %b
313+ }
0 commit comments