Skip to content

Commit 2192997

Browse files
committed
Fix varname
1 parent e00536f commit 2192997

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
@@ -4250,12 +4250,12 @@ SDValue AMDGPUTargetLowering::performSraCombine(SDNode *N,
42504250
(ElementType.getSizeInBits() - 1)) {
42514251
ShiftAmt = ShiftFullAmt;
42524252
} else {
4253-
SDValue truncShiftAmt = DAG.getNode(ISD::TRUNCATE, SL, TargetType, RHS);
4253+
SDValue TruncShiftAmt = DAG.getNode(ISD::TRUNCATE, SL, TargetType, RHS);
42544254
const SDValue ShiftMask =
42554255
DAG.getConstant(TargetScalarType.getSizeInBits() - 1, SL, TargetType);
42564256
// This AND instruction will clamp out of bounds shift values.
42574257
// It will also be removed during later instruction selection.
4258-
ShiftAmt = DAG.getNode(ISD::AND, SL, TargetType, truncShiftAmt, ShiftMask);
4258+
ShiftAmt = DAG.getNode(ISD::AND, SL, TargetType, TruncShiftAmt, ShiftMask);
42594259
}
42604260

42614261
EVT ConcatType;
@@ -4312,16 +4312,8 @@ SDValue AMDGPUTargetLowering::performSraCombine(SDNode *N,
43124312
return DAG.getNode(ISD::BITCAST, SL, VT, Vec);
43134313
}
43144314

4315-
SDValue AMDGPUTargetLowering::performSrlCombine(SDNode *N,
4316-
DAGCombinerInfo &DCI) const {
4317-
SDValue RHS = N->getOperand(1);
4318-
ConstantSDNode *CRHS = dyn_cast<ConstantSDNode>(RHS);
4319-
EVT VT = N->getValueType(0);
4320-
SDValue LHS = N->getOperand(0);
4321-
SelectionDAG &DAG = DCI.DAG;
4322-
SDLoc SL(N);
4323-
unsigned RHSVal;
4324-
4315+
static SDValue getScalarisedShift(SDValue LHS, SDValue RHS, SelectionDAG &DAG) {
4316+
SDLoc SL = SDLoc(RHS);
43254317
if (RHS->getOpcode() == ISD::EXTRACT_VECTOR_ELT) {
43264318
SDValue VAND = RHS.getOperand(0);
43274319
if (ConstantSDNode *CRRHS = dyn_cast<ConstantSDNode>(RHS->getOperand(1))) {
@@ -4358,12 +4350,26 @@ SDValue AMDGPUTargetLowering::performSrlCombine(SDNode *N,
43584350
SDValue Trunc = DAG.getNode(ISD::TRUNCATE, SL, MVT::i32, LHS);
43594351
if (AndIndex == 0 || AndIndex == 1)
43604352
return DAG.getNode(ISD::SRL, SL, MVT::i32, Trunc,
4361-
AndIndex == 0 ? LoAnd : HiAnd, N->getFlags());
4353+
AndIndex == 0 ? LoAnd : HiAnd, RHS->getFlags());
43624354
}
43634355
}
43644356
}
43654357
}
43664358
}
4359+
return SDValue();
4360+
}
4361+
4362+
SDValue AMDGPUTargetLowering::performSrlCombine(SDNode *N,
4363+
DAGCombinerInfo &DCI) const {
4364+
SDValue RHS = N->getOperand(1);
4365+
ConstantSDNode *CRHS = dyn_cast<ConstantSDNode>(RHS);
4366+
EVT VT = N->getValueType(0);
4367+
SDValue LHS = N->getOperand(0);
4368+
SelectionDAG &DAG = DCI.DAG;
4369+
SDLoc SL(N);
4370+
unsigned RHSVal;
4371+
4372+
43674373

43684374
if (CRHS) {
43694375
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)