summaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/LoongArch/lsx/intrinsic-bitset.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/LoongArch/lsx/intrinsic-bitset.ll')
-rw-r--r--llvm/test/CodeGen/LoongArch/lsx/intrinsic-bitset.ll35
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