diff options
Diffstat (limited to 'llvm/test/CodeGen/LoongArch/lsx/intrinsic-bitset.ll')
| -rw-r--r-- | llvm/test/CodeGen/LoongArch/lsx/intrinsic-bitset.ll | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/llvm/test/CodeGen/LoongArch/lsx/intrinsic-bitset.ll b/llvm/test/CodeGen/LoongArch/lsx/intrinsic-bitset.ll index 75d98e6f8bce..b01e533a1c8b 100644 --- a/llvm/test/CodeGen/LoongArch/lsx/intrinsic-bitset.ll +++ b/llvm/test/CodeGen/LoongArch/lsx/intrinsic-bitset.ll @@ -1,5 +1,6 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py -; RUN: llc --mtriple=loongarch64 --mattr=+lsx < %s | FileCheck %s +; RUN: llc --mtriple=loongarch32 --mattr=+32s,+lsx < %s | FileCheck %s --check-prefixes=CHECK,LA32 +; RUN: llc --mtriple=loongarch64 --mattr=+lsx < %s | FileCheck %s --check-prefixes=CHECK,LA64 declare <16 x i8> @llvm.loongarch.lsx.vbitset.b(<16 x i8>, <16 x i8>) @@ -40,10 +41,19 @@ entry: declare <2 x i64> @llvm.loongarch.lsx.vbitset.d(<2 x i64>, <2 x i64>) define <2 x i64> @lsx_vbitset_d(<2 x i64> %va, <2 x i64> %vb) nounwind { -; CHECK-LABEL: lsx_vbitset_d: -; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vbitset.d $vr0, $vr0, $vr1 -; CHECK-NEXT: ret +; LA32-LABEL: lsx_vbitset_d: +; LA32: # %bb.0: # %entry +; LA32-NEXT: vrepli.d $vr2, 63 +; LA32-NEXT: vand.v $vr1, $vr1, $vr2 +; LA32-NEXT: vrepli.d $vr2, 1 +; LA32-NEXT: vsll.d $vr1, $vr2, $vr1 +; LA32-NEXT: vor.v $vr0, $vr0, $vr1 +; LA32-NEXT: ret +; +; LA64-LABEL: lsx_vbitset_d: +; LA64: # %bb.0: # %entry +; LA64-NEXT: vbitset.d $vr0, $vr0, $vr1 +; LA64-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vbitset.d(<2 x i64> %va, <2 x i64> %vb) ret <2 x i64> %res @@ -88,10 +98,17 @@ entry: declare <2 x i64> @llvm.loongarch.lsx.vbitseti.d(<2 x i64>, i32) define <2 x i64> @lsx_vbitseti_d(<2 x i64> %va) nounwind { -; CHECK-LABEL: lsx_vbitseti_d: -; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vbitseti.d $vr0, $vr0, 63 -; CHECK-NEXT: ret +; LA32-LABEL: lsx_vbitseti_d: +; LA32: # %bb.0: # %entry +; LA32-NEXT: pcalau12i $a0, %pc_hi20(.LCPI7_0) +; LA32-NEXT: vld $vr1, $a0, %pc_lo12(.LCPI7_0) +; LA32-NEXT: vor.v $vr0, $vr0, $vr1 +; LA32-NEXT: ret +; +; LA64-LABEL: lsx_vbitseti_d: +; LA64: # %bb.0: # %entry +; LA64-NEXT: vbitseti.d $vr0, $vr0, 63 +; LA64-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vbitseti.d(<2 x i64> %va, i32 63) ret <2 x i64> %res |
