120d4742eSZhaoQi; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 220d4742eSZhaoQi; RUN: llc --mtriple=loongarch64 -mattr=+lsx --verify-machineinstrs < %s \ 320d4742eSZhaoQi; RUN: | FileCheck %s 420d4742eSZhaoQi 520d4742eSZhaoQideclare <16 x i8> @llvm.bitreverse.v16i8(<16 x i8>) 620d4742eSZhaoQi 720d4742eSZhaoQidefine <16 x i8> @test_bitreverse_v16i8(<16 x i8> %a) nounwind { 820d4742eSZhaoQi; CHECK-LABEL: test_bitreverse_v16i8: 920d4742eSZhaoQi; CHECK: # %bb.0: 10*953838dcSZhaoQi; CHECK-NEXT: vpickve2gr.d $a0, $vr0, 0 11*953838dcSZhaoQi; CHECK-NEXT: bitrev.8b $a0, $a0 12*953838dcSZhaoQi; CHECK-NEXT: vinsgr2vr.d $vr1, $a0, 0 13*953838dcSZhaoQi; CHECK-NEXT: vpickve2gr.d $a0, $vr0, 1 14*953838dcSZhaoQi; CHECK-NEXT: bitrev.8b $a0, $a0 15*953838dcSZhaoQi; CHECK-NEXT: vinsgr2vr.d $vr1, $a0, 1 16*953838dcSZhaoQi; CHECK-NEXT: vori.b $vr0, $vr1, 0 1720d4742eSZhaoQi; CHECK-NEXT: ret 1820d4742eSZhaoQi %b = call <16 x i8> @llvm.bitreverse.v16i8(<16 x i8> %a) 1920d4742eSZhaoQi ret <16 x i8> %b 2020d4742eSZhaoQi} 2120d4742eSZhaoQi 2220d4742eSZhaoQideclare <8 x i16> @llvm.bitreverse.v8i16(<8 x i16>) 2320d4742eSZhaoQi 2420d4742eSZhaoQidefine <8 x i16> @test_bitreverse_v8i16(<8 x i16> %a) nounwind { 2520d4742eSZhaoQi; CHECK-LABEL: test_bitreverse_v8i16: 2620d4742eSZhaoQi; CHECK: # %bb.0: 27*953838dcSZhaoQi; CHECK-NEXT: vpickve2gr.d $a0, $vr0, 0 28*953838dcSZhaoQi; CHECK-NEXT: bitrev.d $a0, $a0 29*953838dcSZhaoQi; CHECK-NEXT: vinsgr2vr.d $vr1, $a0, 0 30*953838dcSZhaoQi; CHECK-NEXT: vpickve2gr.d $a0, $vr0, 1 31*953838dcSZhaoQi; CHECK-NEXT: bitrev.d $a0, $a0 32*953838dcSZhaoQi; CHECK-NEXT: vinsgr2vr.d $vr1, $a0, 1 33*953838dcSZhaoQi; CHECK-NEXT: vshuf4i.h $vr0, $vr1, 27 3420d4742eSZhaoQi; CHECK-NEXT: ret 3520d4742eSZhaoQi %b = call <8 x i16> @llvm.bitreverse.v8i16(<8 x i16> %a) 3620d4742eSZhaoQi ret <8 x i16> %b 3720d4742eSZhaoQi} 3820d4742eSZhaoQi 3920d4742eSZhaoQideclare <4 x i32> @llvm.bitreverse.v4i32(<4 x i32>) 4020d4742eSZhaoQi 4120d4742eSZhaoQidefine <4 x i32> @test_bitreverse_v4i32(<4 x i32> %a) nounwind { 4220d4742eSZhaoQi; CHECK-LABEL: test_bitreverse_v4i32: 4320d4742eSZhaoQi; CHECK: # %bb.0: 44*953838dcSZhaoQi; CHECK-NEXT: vpickve2gr.d $a0, $vr0, 0 45*953838dcSZhaoQi; CHECK-NEXT: bitrev.d $a0, $a0 46*953838dcSZhaoQi; CHECK-NEXT: vinsgr2vr.d $vr1, $a0, 0 47*953838dcSZhaoQi; CHECK-NEXT: vpickve2gr.d $a0, $vr0, 1 48*953838dcSZhaoQi; CHECK-NEXT: bitrev.d $a0, $a0 49*953838dcSZhaoQi; CHECK-NEXT: vinsgr2vr.d $vr1, $a0, 1 50*953838dcSZhaoQi; CHECK-NEXT: vshuf4i.w $vr0, $vr1, 177 5120d4742eSZhaoQi; CHECK-NEXT: ret 5220d4742eSZhaoQi %b = call <4 x i32> @llvm.bitreverse.v4i32(<4 x i32> %a) 5320d4742eSZhaoQi ret <4 x i32> %b 5420d4742eSZhaoQi} 5520d4742eSZhaoQi 5620d4742eSZhaoQideclare <2 x i64> @llvm.bitreverse.v2i64(<2 x i64>) 5720d4742eSZhaoQi 5820d4742eSZhaoQidefine <2 x i64> @test_bitreverse_v2i64(<2 x i64> %a) nounwind { 5920d4742eSZhaoQi; CHECK-LABEL: test_bitreverse_v2i64: 6020d4742eSZhaoQi; CHECK: # %bb.0: 6120d4742eSZhaoQi; CHECK-NEXT: vpickve2gr.d $a0, $vr0, 0 6220d4742eSZhaoQi; CHECK-NEXT: bitrev.d $a0, $a0 6320d4742eSZhaoQi; CHECK-NEXT: vinsgr2vr.d $vr1, $a0, 0 6420d4742eSZhaoQi; CHECK-NEXT: vpickve2gr.d $a0, $vr0, 1 6520d4742eSZhaoQi; CHECK-NEXT: bitrev.d $a0, $a0 6620d4742eSZhaoQi; CHECK-NEXT: vinsgr2vr.d $vr1, $a0, 1 6720d4742eSZhaoQi; CHECK-NEXT: vori.b $vr0, $vr1, 0 6820d4742eSZhaoQi; CHECK-NEXT: ret 6920d4742eSZhaoQi %b = call <2 x i64> @llvm.bitreverse.v2i64(<2 x i64> %a) 7020d4742eSZhaoQi ret <2 x i64> %b 7120d4742eSZhaoQi} 72