Skip to content

Commit 2ffde95

Browse files
committed
address comments: using arithmetic right shift
1 parent 86ced14 commit 2ffde95

File tree

2 files changed

+3
-4
lines changed

2 files changed

+3
-4
lines changed

llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2807,8 +2807,7 @@ LoongArchTargetLowering::lowerEXTRACT_VECTOR_ELT(SDValue Op,
28072807
// The original desired i8/i16 element is now replicated in each
28082808
// i32 lane of the splatted vector.
28092809
SDValue NewIdx = DAG.getNode(
2810-
LoongArchISD::BSTRPICK, DL, GRLenVT, Idx,
2811-
DAG.getConstant(31, DL, GRLenVT),
2810+
ISD::SRA, DL, GRLenVT, Idx,
28122811
DAG.getConstant(((VecTy == MVT::v32i8) ? 2 : 1), DL, GRLenVT));
28132812
SDValue SplatIdx = DAG.getSplatBuildVector(MVT::v8i32, DL, NewIdx);
28142813
SDValue SplatValue =

llvm/test/CodeGen/LoongArch/lasx/ir-instruction/extractelement.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ define void @extract_32xi8_idx(ptr %src, ptr %dst, i32 %idx) nounwind {
7777
; CHECK-LABEL: extract_32xi8_idx:
7878
; CHECK: # %bb.0:
7979
; CHECK-NEXT: xvld $xr0, $a0, 0
80-
; CHECK-NEXT: bstrpick.d $a0, $a2, 31, 2
80+
; CHECK-NEXT: srai.d $a0, $a2, 2
8181
; CHECK-NEXT: xvreplgr2vr.w $xr1, $a0
8282
; CHECK-NEXT: xvperm.w $xr0, $xr0, $xr1
8383
; CHECK-NEXT: andi $a0, $a2, 3
@@ -94,7 +94,7 @@ define void @extract_16xi16_idx(ptr %src, ptr %dst, i32 %idx) nounwind {
9494
; CHECK-LABEL: extract_16xi16_idx:
9595
; CHECK: # %bb.0:
9696
; CHECK-NEXT: xvld $xr0, $a0, 0
97-
; CHECK-NEXT: bstrpick.d $a0, $a2, 31, 1
97+
; CHECK-NEXT: srai.d $a0, $a2, 1
9898
; CHECK-NEXT: xvreplgr2vr.w $xr1, $a0
9999
; CHECK-NEXT: xvperm.w $xr0, $xr0, $xr1
100100
; CHECK-NEXT: andi $a0, $a2, 1

0 commit comments

Comments
 (0)