Skip to content

Commit a56f0b5

Browse files
committed
AMDGPU: Use umin in set.rounding expansion
Addresses comment from llvm#88587
1 parent 121bef7 commit a56f0b5

File tree

2 files changed

+57
-111
lines changed

2 files changed

+57
-111
lines changed

llvm/lib/Target/AMDGPU/SIISelLowering.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4098,19 +4098,15 @@ SDValue SITargetLowering::lowerSET_ROUNDING(SDValue Op,
40984098
// TODO: SimplifyDemandedBits on the setreg source here can likely reduce
40994099
// the table extracted bits into inline immediates.
41004100
} else {
4101-
// is_standard = value < 4;
4102-
// table_index = is_standard ? value : (value - 4)
4101+
// table_index = umin(value, value - 4)
41034102
// MODE.fp_round = (bit_table >> (table_index << 2)) & 0xf
41044103
SDValue BitTable =
41054104
DAG.getConstant(AMDGPU::FltRoundToHWConversionTable, SL, MVT::i64);
41064105

41074106
SDValue Four = DAG.getConstant(4, SL, MVT::i32);
4108-
SDValue IsStandardValue =
4109-
DAG.getSetCC(SL, MVT::i1, NewMode, Four, ISD::SETULT);
41104107
SDValue OffsetEnum = DAG.getNode(ISD::SUB, SL, MVT::i32, NewMode, Four);
4111-
4112-
SDValue IndexVal = DAG.getNode(ISD::SELECT, SL, MVT::i32, IsStandardValue,
4113-
NewMode, OffsetEnum);
4108+
SDValue IndexVal =
4109+
DAG.getNode(ISD::UMIN, SL, MVT::i32, NewMode, OffsetEnum);
41144110

41154111
SDValue Two = DAG.getConstant(2, SL, MVT::i32);
41164112
SDValue RoundModeTimesNumBits =

0 commit comments

Comments
 (0)