Skip to content

Commit 247bf50

Browse files
committed
Fix varname
1 parent fee1986 commit 247bf50

File tree

2 files changed

+40
-24
lines changed

2 files changed

+40
-24
lines changed

llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4252,12 +4252,12 @@ SDValue AMDGPUTargetLowering::performSraCombine(SDNode *N,
42524252
(ElementType.getSizeInBits() - 1)) {
42534253
ShiftAmt = ShiftFullAmt;
42544254
} else {
4255-
SDValue truncShiftAmt = DAG.getNode(ISD::TRUNCATE, SL, TargetType, RHS);
4255+
SDValue TruncShiftAmt = DAG.getNode(ISD::TRUNCATE, SL, TargetType, RHS);
42564256
const SDValue ShiftMask =
42574257
DAG.getConstant(TargetScalarType.getSizeInBits() - 1, SL, TargetType);
42584258
// This AND instruction will clamp out of bounds shift values.
42594259
// It will also be removed during later instruction selection.
4260-
ShiftAmt = DAG.getNode(ISD::AND, SL, TargetType, truncShiftAmt, ShiftMask);
4260+
ShiftAmt = DAG.getNode(ISD::AND, SL, TargetType, TruncShiftAmt, ShiftMask);
42614261
}
42624262

42634263
EVT ConcatType;
@@ -4314,16 +4314,8 @@ SDValue AMDGPUTargetLowering::performSraCombine(SDNode *N,
43144314
return DAG.getNode(ISD::BITCAST, SL, VT, Vec);
43154315
}
43164316

4317-
SDValue AMDGPUTargetLowering::performSrlCombine(SDNode *N,
4318-
DAGCombinerInfo &DCI) const {
4319-
SDValue RHS = N->getOperand(1);
4320-
ConstantSDNode *CRHS = dyn_cast<ConstantSDNode>(RHS);
4321-
EVT VT = N->getValueType(0);
4322-
SDValue LHS = N->getOperand(0);
4323-
SelectionDAG &DAG = DCI.DAG;
4324-
SDLoc SL(N);
4325-
unsigned RHSVal;
4326-
4317+
static SDValue getScalarisedShift(SDValue LHS, SDValue RHS, SelectionDAG &DAG) {
4318+
SDLoc SL = SDLoc(RHS);
43274319
if (RHS->getOpcode() == ISD::EXTRACT_VECTOR_ELT) {
43284320
SDValue VAND = RHS.getOperand(0);
43294321
if (ConstantSDNode *CRRHS = dyn_cast<ConstantSDNode>(RHS->getOperand(1))) {
@@ -4360,12 +4352,26 @@ SDValue AMDGPUTargetLowering::performSrlCombine(SDNode *N,
43604352
SDValue Trunc = DAG.getNode(ISD::TRUNCATE, SL, MVT::i32, LHS);
43614353
if (AndIndex == 0 || AndIndex == 1)
43624354
return DAG.getNode(ISD::SRL, SL, MVT::i32, Trunc,
4363-
AndIndex == 0 ? LoAnd : HiAnd, N->getFlags());
4355+
AndIndex == 0 ? LoAnd : HiAnd, RHS->getFlags());
43644356
}
43654357
}
43664358
}
43674359
}
43684360
}
4361+
return SDValue();
4362+
}
4363+
4364+
SDValue AMDGPUTargetLowering::performSrlCombine(SDNode *N,
4365+
DAGCombinerInfo &DCI) const {
4366+
SDValue RHS = N->getOperand(1);
4367+
ConstantSDNode *CRHS = dyn_cast<ConstantSDNode>(RHS);
4368+
EVT VT = N->getValueType(0);
4369+
SDValue LHS = N->getOperand(0);
4370+
SelectionDAG &DAG = DCI.DAG;
4371+
SDLoc SL(N);
4372+
unsigned RHSVal;
4373+
4374+
43694375

43704376
if (CRHS) {
43714377
RHSVal = CRHS->getZExtValue();

llvm/test/CodeGen/AMDGPU/ashr64_reduce.ll

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,10 @@ define <2 x i64> @ashr_v2_metadata(<2 x i64> %arg0, ptr %arg1.ptr) {
112112
; CHECK-NEXT: v_ashrrev_i32_e32 v5, 31, v1
113113
; CHECK-NEXT: v_ashrrev_i32_e32 v4, 31, v3
114114
; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
115-
; CHECK-NEXT: v_ashrrev_i32_e32 v0, v6, v1
116-
; CHECK-NEXT: v_ashrrev_i32_e32 v2, v8, v3
115+
; CHECK-NEXT: v_and_b32_e32 v2, 31, v8
116+
; CHECK-NEXT: v_and_b32_e32 v0, 31, v6
117+
; CHECK-NEXT: v_ashrrev_i32_e32 v0, v0, v1
118+
; CHECK-NEXT: v_ashrrev_i32_e32 v2, v2, v3
117119
; CHECK-NEXT: v_mov_b32_e32 v1, v5
118120
; CHECK-NEXT: v_mov_b32_e32 v3, v4
119121
; CHECK-NEXT: s_setpc_b64 s[30:31]
@@ -145,8 +147,10 @@ define <2 x i64> @ashr_exact_v2_metadata(<2 x i64> %arg0, ptr %arg1.ptr) {
145147
; CHECK-NEXT: v_ashrrev_i32_e32 v5, 31, v1
146148
; CHECK-NEXT: v_ashrrev_i32_e32 v4, 31, v3
147149
; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
148-
; CHECK-NEXT: v_ashrrev_i32_e32 v0, v6, v1
149-
; CHECK-NEXT: v_ashrrev_i32_e32 v2, v8, v3
150+
; CHECK-NEXT: v_and_b32_e32 v2, 31, v8
151+
; CHECK-NEXT: v_and_b32_e32 v0, 31, v6
152+
; CHECK-NEXT: v_ashrrev_i32_e32 v0, v0, v1
153+
; CHECK-NEXT: v_ashrrev_i32_e32 v2, v2, v3
150154
; CHECK-NEXT: v_mov_b32_e32 v1, v5
151155
; CHECK-NEXT: v_mov_b32_e32 v3, v4
152156
; CHECK-NEXT: s_setpc_b64 s[30:31]
@@ -390,9 +394,11 @@ define <2 x i64> @ashr_v2_or32(<2 x i64> %arg0, <2 x i64> %shift_amt) {
390394
; CHECK-LABEL: ashr_v2_or32:
391395
; CHECK: ; %bb.0:
392396
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
393-
; CHECK-NEXT: v_ashrrev_i32_e32 v0, v4, v1
397+
; CHECK-NEXT: v_and_b32_e32 v2, 31, v6
398+
; CHECK-NEXT: v_and_b32_e32 v0, 31, v4
399+
; CHECK-NEXT: v_ashrrev_i32_e32 v0, v0, v1
400+
; CHECK-NEXT: v_ashrrev_i32_e32 v2, v2, v3
394401
; CHECK-NEXT: v_ashrrev_i32_e32 v1, 31, v1
395-
; CHECK-NEXT: v_ashrrev_i32_e32 v2, v6, v3
396402
; CHECK-NEXT: v_ashrrev_i32_e32 v3, 31, v3
397403
; CHECK-NEXT: s_setpc_b64 s[30:31]
398404
%or = or <2 x i64> %shift_amt, splat (i64 32)
@@ -465,13 +471,17 @@ define <2 x i64> @ashr_v2_or32_sgpr(<2 x i64> inreg %arg0, <2 x i64> inreg %shif
465471
; CHECK-LABEL: ashr_v2_or32_sgpr:
466472
; CHECK: ; %bb.0:
467473
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
468-
; CHECK-NEXT: s_ashr_i32 s4, s17, s20
469-
; CHECK-NEXT: s_ashr_i32 s5, s17, 31
470-
; CHECK-NEXT: s_ashr_i32 s6, s19, s22
474+
; CHECK-NEXT: s_mov_b32 s4, 31
475+
; CHECK-NEXT: s_mov_b32 s21, s22
476+
; CHECK-NEXT: s_mov_b32 s5, s4
477+
; CHECK-NEXT: s_and_b64 s[4:5], s[20:21], s[4:5]
478+
; CHECK-NEXT: s_ashr_i32 s6, s17, 31
471479
; CHECK-NEXT: s_ashr_i32 s7, s19, 31
480+
; CHECK-NEXT: s_ashr_i32 s4, s17, s4
481+
; CHECK-NEXT: s_ashr_i32 s5, s19, s5
472482
; CHECK-NEXT: v_mov_b32_e32 v0, s4
473-
; CHECK-NEXT: v_mov_b32_e32 v1, s5
474-
; CHECK-NEXT: v_mov_b32_e32 v2, s6
483+
; CHECK-NEXT: v_mov_b32_e32 v1, s6
484+
; CHECK-NEXT: v_mov_b32_e32 v2, s5
475485
; CHECK-NEXT: v_mov_b32_e32 v3, s7
476486
; CHECK-NEXT: s_setpc_b64 s[30:31]
477487
%or = or <2 x i64> %shift_amt, splat (i64 32)

0 commit comments

Comments
 (0)