brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · 4baa6e2 Raw
180 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc --mtriple=loongarch32 --mattr=+32s,+lasx < %s | FileCheck %s3; RUN: llc --mtriple=loongarch64 --mattr=+lasx < %s | FileCheck %s4 5define void @lshr_v32i8(ptr %res, ptr %a0, ptr %a1) nounwind {6; CHECK-LABEL: lshr_v32i8:7; CHECK:       # %bb.0: # %entry8; CHECK-NEXT:    xvld $xr0, $a1, 09; CHECK-NEXT:    xvld $xr1, $a2, 010; CHECK-NEXT:    xvsrl.b $xr0, $xr0, $xr111; CHECK-NEXT:    xvst $xr0, $a0, 012; CHECK-NEXT:    ret13entry:14  %v0 = load <32 x i8>, ptr %a015  %v1 = load <32 x i8>, ptr %a116  %v2 = lshr <32 x i8> %v0, %v117  store <32 x i8> %v2, ptr %res18  ret void19}20 21define void @lshr_v16i16(ptr %res, ptr %a0, ptr %a1) nounwind {22; CHECK-LABEL: lshr_v16i16:23; CHECK:       # %bb.0: # %entry24; CHECK-NEXT:    xvld $xr0, $a1, 025; CHECK-NEXT:    xvld $xr1, $a2, 026; CHECK-NEXT:    xvsrl.h $xr0, $xr0, $xr127; CHECK-NEXT:    xvst $xr0, $a0, 028; CHECK-NEXT:    ret29entry:30  %v0 = load <16 x i16>, ptr %a031  %v1 = load <16 x i16>, ptr %a132  %v2 = lshr <16 x i16> %v0, %v133  store <16 x i16> %v2, ptr %res34  ret void35}36 37define void @lshr_v8i32(ptr %res, ptr %a0, ptr %a1) nounwind {38; CHECK-LABEL: lshr_v8i32:39; CHECK:       # %bb.0: # %entry40; CHECK-NEXT:    xvld $xr0, $a1, 041; CHECK-NEXT:    xvld $xr1, $a2, 042; CHECK-NEXT:    xvsrl.w $xr0, $xr0, $xr143; CHECK-NEXT:    xvst $xr0, $a0, 044; CHECK-NEXT:    ret45entry:46  %v0 = load <8 x i32>, ptr %a047  %v1 = load <8 x i32>, ptr %a148  %v2 = lshr <8 x i32> %v0, %v149  store <8 x i32> %v2, ptr %res50  ret void51}52 53define void @lshr_v4i64(ptr %res, ptr %a0, ptr %a1) nounwind {54; CHECK-LABEL: lshr_v4i64:55; CHECK:       # %bb.0: # %entry56; CHECK-NEXT:    xvld $xr0, $a1, 057; CHECK-NEXT:    xvld $xr1, $a2, 058; CHECK-NEXT:    xvsrl.d $xr0, $xr0, $xr159; CHECK-NEXT:    xvst $xr0, $a0, 060; CHECK-NEXT:    ret61entry:62  %v0 = load <4 x i64>, ptr %a063  %v1 = load <4 x i64>, ptr %a164  %v2 = lshr <4 x i64> %v0, %v165  store <4 x i64> %v2, ptr %res66  ret void67}68 69define void @lshr_v32i8_1(ptr %res, ptr %a0) nounwind {70; CHECK-LABEL: lshr_v32i8_1:71; CHECK:       # %bb.0: # %entry72; CHECK-NEXT:    xvld $xr0, $a1, 073; CHECK-NEXT:    xvsrli.b $xr0, $xr0, 174; CHECK-NEXT:    xvst $xr0, $a0, 075; CHECK-NEXT:    ret76entry:77  %v0 = load <32 x i8>, ptr %a078  %v1 = lshr <32 x i8> %v0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>79  store <32 x i8> %v1, ptr %res80  ret void81}82 83define void @lshr_v32i8_7(ptr %res, ptr %a0) nounwind {84; CHECK-LABEL: lshr_v32i8_7:85; CHECK:       # %bb.0: # %entry86; CHECK-NEXT:    xvld $xr0, $a1, 087; CHECK-NEXT:    xvsrli.b $xr0, $xr0, 788; CHECK-NEXT:    xvst $xr0, $a0, 089; CHECK-NEXT:    ret90entry:91  %v0 = load <32 x i8>, ptr %a092  %v1 = lshr <32 x i8> %v0, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>93  store <32 x i8> %v1, ptr %res94  ret void95}96 97define void @lshr_v16i16_1(ptr %res, ptr %a0) nounwind {98; CHECK-LABEL: lshr_v16i16_1:99; CHECK:       # %bb.0: # %entry100; CHECK-NEXT:    xvld $xr0, $a1, 0101; CHECK-NEXT:    xvsrli.h $xr0, $xr0, 1102; CHECK-NEXT:    xvst $xr0, $a0, 0103; CHECK-NEXT:    ret104entry:105  %v0 = load <16 x i16>, ptr %a0106  %v1 = lshr <16 x i16> %v0, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>107  store <16 x i16> %v1, ptr %res108  ret void109}110 111define void @lshr_v16i16_15(ptr %res, ptr %a0) nounwind {112; CHECK-LABEL: lshr_v16i16_15:113; CHECK:       # %bb.0: # %entry114; CHECK-NEXT:    xvld $xr0, $a1, 0115; CHECK-NEXT:    xvsrli.h $xr0, $xr0, 15116; CHECK-NEXT:    xvst $xr0, $a0, 0117; CHECK-NEXT:    ret118entry:119  %v0 = load <16 x i16>, ptr %a0120  %v1 = lshr <16 x i16> %v0, <i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15>121  store <16 x i16> %v1, ptr %res122  ret void123}124 125define void @lshr_v8i32_1(ptr %res, ptr %a0) nounwind {126; CHECK-LABEL: lshr_v8i32_1:127; CHECK:       # %bb.0: # %entry128; CHECK-NEXT:    xvld $xr0, $a1, 0129; CHECK-NEXT:    xvsrli.w $xr0, $xr0, 1130; CHECK-NEXT:    xvst $xr0, $a0, 0131; CHECK-NEXT:    ret132entry:133  %v0 = load <8 x i32>, ptr %a0134  %v1 = lshr <8 x i32> %v0, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>135  store <8 x i32> %v1, ptr %res136  ret void137}138 139define void @lshr_v8i32_31(ptr %res, ptr %a0) nounwind {140; CHECK-LABEL: lshr_v8i32_31:141; CHECK:       # %bb.0: # %entry142; CHECK-NEXT:    xvld $xr0, $a1, 0143; CHECK-NEXT:    xvsrli.w $xr0, $xr0, 31144; CHECK-NEXT:    xvst $xr0, $a0, 0145; CHECK-NEXT:    ret146entry:147  %v0 = load <8 x i32>, ptr %a0148  %v1 = lshr <8 x i32> %v0, <i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31>149  store <8 x i32> %v1, ptr %res150  ret void151}152 153define void @lshr_v4i64_1(ptr %res, ptr %a0) nounwind {154; CHECK-LABEL: lshr_v4i64_1:155; CHECK:       # %bb.0: # %entry156; CHECK-NEXT:    xvld $xr0, $a1, 0157; CHECK-NEXT:    xvsrli.d $xr0, $xr0, 1158; CHECK-NEXT:    xvst $xr0, $a0, 0159; CHECK-NEXT:    ret160entry:161  %v0 = load <4 x i64>, ptr %a0162  %v1 = lshr <4 x i64> %v0, <i64 1, i64 1, i64 1, i64 1>163  store <4 x i64> %v1, ptr %res164  ret void165}166 167define void @lshr_v4i64_63(ptr %res, ptr %a0) nounwind {168; CHECK-LABEL: lshr_v4i64_63:169; CHECK:       # %bb.0: # %entry170; CHECK-NEXT:    xvld $xr0, $a1, 0171; CHECK-NEXT:    xvsrli.d $xr0, $xr0, 63172; CHECK-NEXT:    xvst $xr0, $a0, 0173; CHECK-NEXT:    ret174entry:175  %v0 = load <4 x i64>, ptr %a0176  %v1 = lshr <4 x i64> %v0, <i64 63, i64 63, i64 63, i64 63>177  store <4 x i64> %v1, ptr %res178  ret void179}180