Skip to content

Commit 30e519e

Browse files
authored
[LoongArch] Fix xvshuf instructions lowering (#145868)
Fix #137000.
1 parent d58b0f2 commit 30e519e

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2009,7 +2009,7 @@ static SDValue lowerVECTOR_SHUFFLE_XVSHUF(const SDLoc &DL, ArrayRef<int> Mask,
20092009
if (*it < 0) // UNDEF
20102010
MaskAlloc.push_back(DAG.getTargetConstant(0, DL, MVT::i64));
20112011
else if ((*it >= 0 && *it < HalfSize) ||
2012-
(*it >= MaskSize && *it <= MaskSize + HalfSize)) {
2012+
(*it >= MaskSize && *it < MaskSize + HalfSize)) {
20132013
int M = *it < HalfSize ? *it : *it - HalfSize;
20142014
MaskAlloc.push_back(DAG.getTargetConstant(M, DL, MVT::i64));
20152015
} else

llvm/test/CodeGen/LoongArch/lasx/ir-instruction/fix-xvshuf.ll

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,22 @@
66
define <4 x double> @shufflevector_v4f64(<4 x double> %a, <4 x double> %b) {
77
; CHECK-LABEL: shufflevector_v4f64:
88
; CHECK: # %bb.0: # %entry
9-
; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI0_0)
10-
; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI0_0)
11-
; CHECK-NEXT: xvshuf.d $xr2, $xr1, $xr0
9+
; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 0
10+
; CHECK-NEXT: movgr2fr.d $fa2, $a0
11+
; CHECK-NEXT: xvpickve2gr.d $a0, $xr1, 2
12+
; CHECK-NEXT: movgr2fr.d $fa3, $a0
13+
; CHECK-NEXT: movfr2gr.d $a0, $fa2
14+
; CHECK-NEXT: xvinsgr2vr.d $xr2, $a0, 0
15+
; CHECK-NEXT: movfr2gr.d $a0, $fa3
16+
; CHECK-NEXT: xvinsgr2vr.d $xr2, $a0, 1
17+
; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 3
18+
; CHECK-NEXT: movgr2fr.d $fa0, $a0
19+
; CHECK-NEXT: xvpickve2gr.d $a0, $xr1, 3
20+
; CHECK-NEXT: movgr2fr.d $fa1, $a0
21+
; CHECK-NEXT: movfr2gr.d $a0, $fa0
22+
; CHECK-NEXT: xvinsgr2vr.d $xr2, $a0, 2
23+
; CHECK-NEXT: movfr2gr.d $a0, $fa1
24+
; CHECK-NEXT: xvinsgr2vr.d $xr2, $a0, 3
1225
; CHECK-NEXT: xvori.b $xr0, $xr2, 0
1326
; CHECK-NEXT: ret
1427
entry:

0 commit comments

Comments
 (0)