Skip to content

Commit da18fb9

Browse files
zhaoqi5tstellar
authored andcommitted
[LoongArch] Fix xvshuf instructions lowering (#145868)
Fix #137000. (cherry picked from commit 30e519e)
1 parent 65ce78f commit da18fb9

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
@@ -1209,7 +1209,7 @@ static SDValue lowerVECTOR_SHUFFLE_XVSHUF(const SDLoc &DL, ArrayRef<int> Mask,
12091209
if (*it < 0) // UNDEF
12101210
MaskAlloc.push_back(DAG.getTargetConstant(0, DL, MVT::i64));
12111211
else if ((*it >= 0 && *it < HalfSize) ||
1212-
(*it >= MaskSize && *it <= MaskSize + HalfSize)) {
1212+
(*it >= MaskSize && *it < MaskSize + HalfSize)) {
12131213
int M = *it < HalfSize ? *it : *it - HalfSize;
12141214
MaskAlloc.push_back(DAG.getTargetConstant(M, DL, MVT::i64));
12151215
} 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)