brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.4 KiB · e1784f8 Raw
198 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 62; RUN: llc --mtriple=loongarch32 --mattr=+32s,+lasx < %s | FileCheck %s3; RUN: llc --mtriple=loongarch64 --mattr=+lasx < %s | FileCheck %s4 5;; xvinsve0.w6define void @xvinsve0_v8i32_l_0(ptr %d, ptr %a, ptr %b) nounwind {7; CHECK-LABEL: xvinsve0_v8i32_l_0:8; CHECK:       # %bb.0: # %entry9; CHECK-NEXT:    xvld $xr0, $a1, 010; CHECK-NEXT:    xvld $xr1, $a2, 011; CHECK-NEXT:    xvinsve0.w $xr0, $xr1, 012; CHECK-NEXT:    xvst $xr0, $a0, 013; CHECK-NEXT:    ret14entry:15  %va = load <8 x i32>, ptr %a16  %vb = load <8 x i32>, ptr %b17  %vc = shufflevector <8 x i32> %va, <8 x i32> %vb, <8 x i32> <i32 8, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>18  store <8 x i32> %vc, ptr %d19  ret void20}21 22define void @xvinsve0_v8i32_l_4(ptr %d, ptr %a, ptr %b) nounwind {23; CHECK-LABEL: xvinsve0_v8i32_l_4:24; CHECK:       # %bb.0: # %entry25; CHECK-NEXT:    xvld $xr0, $a1, 026; CHECK-NEXT:    xvld $xr1, $a2, 027; CHECK-NEXT:    xvinsve0.w $xr0, $xr1, 428; CHECK-NEXT:    xvst $xr0, $a0, 029; CHECK-NEXT:    ret30entry:31  %va = load <8 x i32>, ptr %a32  %vb = load <8 x i32>, ptr %b33  %vc = shufflevector <8 x i32> %va, <8 x i32> %vb, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 5, i32 6, i32 7>34  store <8 x i32> %vc, ptr %d35  ret void36}37 38define void @xvinsve0_v8f32_l(ptr %d, ptr %a, ptr %b) nounwind {39; CHECK-LABEL: xvinsve0_v8f32_l:40; CHECK:       # %bb.0: # %entry41; CHECK-NEXT:    xvld $xr0, $a1, 042; CHECK-NEXT:    xvld $xr1, $a2, 043; CHECK-NEXT:    xvinsve0.w $xr0, $xr1, 044; CHECK-NEXT:    xvst $xr0, $a0, 045; CHECK-NEXT:    ret46entry:47  %va = load <8 x float>, ptr %a48  %vb = load <8 x float>, ptr %b49  %vc = shufflevector <8 x float> %va, <8 x float> %vb, <8 x i32> <i32 8, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>50  store <8 x float> %vc, ptr %d51  ret void52}53 54define void @xvinsve0_v8i32_h_1(ptr %d, ptr %a, ptr %b) nounwind {55; CHECK-LABEL: xvinsve0_v8i32_h_1:56; CHECK:       # %bb.0: # %entry57; CHECK-NEXT:    xvld $xr0, $a1, 058; CHECK-NEXT:    xvld $xr1, $a2, 059; CHECK-NEXT:    xvinsve0.w $xr1, $xr0, 160; CHECK-NEXT:    xvst $xr1, $a0, 061; CHECK-NEXT:    ret62entry:63  %va = load <8 x i32>, ptr %a64  %vb = load <8 x i32>, ptr %b65  %vc = shufflevector <8 x i32> %va, <8 x i32> %vb, <8 x i32> <i32 8, i32 0, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>66  store <8 x i32> %vc, ptr %d67  ret void68}69 70define void @xvinsve0_v8i32_h_6(ptr %d, ptr %a, ptr %b) nounwind {71; CHECK-LABEL: xvinsve0_v8i32_h_6:72; CHECK:       # %bb.0: # %entry73; CHECK-NEXT:    xvld $xr0, $a1, 074; CHECK-NEXT:    xvld $xr1, $a2, 075; CHECK-NEXT:    xvinsve0.w $xr1, $xr0, 676; CHECK-NEXT:    xvst $xr1, $a0, 077; CHECK-NEXT:    ret78entry:79  %va = load <8 x i32>, ptr %a80  %vb = load <8 x i32>, ptr %b81  %vc = shufflevector <8 x i32> %va, <8 x i32> %vb, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 0, i32 15>82  store <8 x i32> %vc, ptr %d83  ret void84}85 86define void @xvinsve0_v8f32_h(ptr %d, ptr %a, ptr %b) nounwind {87; CHECK-LABEL: xvinsve0_v8f32_h:88; CHECK:       # %bb.0: # %entry89; CHECK-NEXT:    xvld $xr0, $a1, 090; CHECK-NEXT:    xvld $xr1, $a2, 091; CHECK-NEXT:    xvinsve0.w $xr1, $xr0, 092; CHECK-NEXT:    xvst $xr1, $a0, 093; CHECK-NEXT:    ret94entry:95  %va = load <8 x float>, ptr %a96  %vb = load <8 x float>, ptr %b97  %vc = shufflevector <8 x float> %va, <8 x float> %vb, <8 x i32> <i32 0, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>98  store <8 x float> %vc, ptr %d99  ret void100}101 102;; xvinsve0.d103define void @xvinsve0_v4i64_l_1(ptr %d, ptr %a, ptr %b) nounwind {104; CHECK-LABEL: xvinsve0_v4i64_l_1:105; CHECK:       # %bb.0: # %entry106; CHECK-NEXT:    xvld $xr0, $a1, 0107; CHECK-NEXT:    xvld $xr1, $a2, 0108; CHECK-NEXT:    xvinsve0.d $xr0, $xr1, 1109; CHECK-NEXT:    xvst $xr0, $a0, 0110; CHECK-NEXT:    ret111entry:112  %va = load <4 x i64>, ptr %a113  %vb = load <4 x i64>, ptr %b114  %vc = shufflevector <4 x i64> %va, <4 x i64> %vb, <4 x i32> <i32 0, i32 4, i32 2, i32 3>115  store <4 x i64> %vc, ptr %d116  ret void117}118 119define void @xvinsve0_v4i64_l_2(ptr %d, ptr %a, ptr %b) nounwind {120; CHECK-LABEL: xvinsve0_v4i64_l_2:121; CHECK:       # %bb.0: # %entry122; CHECK-NEXT:    xvld $xr0, $a1, 0123; CHECK-NEXT:    xvld $xr1, $a2, 0124; CHECK-NEXT:    xvinsve0.d $xr0, $xr1, 2125; CHECK-NEXT:    xvst $xr0, $a0, 0126; CHECK-NEXT:    ret127entry:128  %va = load <4 x i64>, ptr %a129  %vb = load <4 x i64>, ptr %b130  %vc = shufflevector <4 x i64> %va, <4 x i64> %vb, <4 x i32> <i32 0, i32 1, i32 4, i32 3>131  store <4 x i64> %vc, ptr %d132  ret void133}134 135define void @xvinsve0_v4f64_l(ptr %d, ptr %a, ptr %b) nounwind {136; CHECK-LABEL: xvinsve0_v4f64_l:137; CHECK:       # %bb.0: # %entry138; CHECK-NEXT:    xvld $xr0, $a1, 0139; CHECK-NEXT:    xvld $xr1, $a2, 0140; CHECK-NEXT:    xvinsve0.d $xr0, $xr1, 0141; CHECK-NEXT:    xvst $xr0, $a0, 0142; CHECK-NEXT:    ret143entry:144  %va = load <4 x double>, ptr %a145  %vb = load <4 x double>, ptr %b146  %vc = shufflevector <4 x double> %va, <4 x double> %vb, <4 x i32> <i32 4, i32 1, i32 2, i32 3>147  store <4 x double> %vc, ptr %d148  ret void149}150 151define void @xvinsve0_v4i64_h_0(ptr %d, ptr %a, ptr %b) nounwind {152; CHECK-LABEL: xvinsve0_v4i64_h_0:153; CHECK:       # %bb.0: # %entry154; CHECK-NEXT:    xvld $xr0, $a1, 0155; CHECK-NEXT:    xvld $xr1, $a2, 0156; CHECK-NEXT:    xvinsve0.d $xr1, $xr0, 0157; CHECK-NEXT:    xvst $xr1, $a0, 0158; CHECK-NEXT:    ret159entry:160  %va = load <4 x i64>, ptr %a161  %vb = load <4 x i64>, ptr %b162  %vc = shufflevector <4 x i64> %va, <4 x i64> %vb, <4 x i32> <i32 0, i32 5, i32 6, i32 7>163  store <4 x i64> %vc, ptr %d164  ret void165}166 167define void @xvinsve0_v4i64_h_2(ptr %d, ptr %a, ptr %b) nounwind {168; CHECK-LABEL: xvinsve0_v4i64_h_2:169; CHECK:       # %bb.0: # %entry170; CHECK-NEXT:    xvld $xr0, $a1, 0171; CHECK-NEXT:    xvld $xr1, $a2, 0172; CHECK-NEXT:    xvinsve0.d $xr1, $xr0, 2173; CHECK-NEXT:    xvst $xr1, $a0, 0174; CHECK-NEXT:    ret175entry:176  %va = load <4 x i64>, ptr %a177  %vb = load <4 x i64>, ptr %b178  %vc = shufflevector <4 x i64> %va, <4 x i64> %vb, <4 x i32> <i32 4, i32 5, i32 0, i32 7>179  store <4 x i64> %vc, ptr %d180  ret void181}182 183define void @xvinsve0_v4f64_h(ptr %d, ptr %a, ptr %b) nounwind {184; CHECK-LABEL: xvinsve0_v4f64_h:185; CHECK:       # %bb.0: # %entry186; CHECK-NEXT:    xvld $xr0, $a1, 0187; CHECK-NEXT:    xvld $xr1, $a2, 0188; CHECK-NEXT:    xvinsve0.d $xr1, $xr0, 0189; CHECK-NEXT:    xvst $xr1, $a0, 0190; CHECK-NEXT:    ret191entry:192  %va = load <4 x double>, ptr %a193  %vb = load <4 x double>, ptr %b194  %vc = shufflevector <4 x double> %va, <4 x double> %vb, <4 x i32> <i32 0, i32 5, i32 6, i32 7>195  store <4 x double> %vc, ptr %d196  ret void197}198