@@ -4098,19 +4098,15 @@ SDValue SITargetLowering::lowerSET_ROUNDING(SDValue Op,
4098
4098
// TODO: SimplifyDemandedBits on the setreg source here can likely reduce
4099
4099
// the table extracted bits into inline immediates.
4100
4100
} else {
4101
- // is_standard = value < 4;
4102
- // table_index = is_standard ? value : (value - 4)
4101
+ // table_index = umin(value, value - 4)
4103
4102
// MODE.fp_round = (bit_table >> (table_index << 2)) & 0xf
4104
4103
SDValue BitTable =
4105
4104
DAG.getConstant(AMDGPU::FltRoundToHWConversionTable, SL, MVT::i64);
4106
4105
4107
4106
SDValue Four = DAG.getConstant(4, SL, MVT::i32);
4108
- SDValue IsStandardValue =
4109
- DAG.getSetCC(SL, MVT::i1, NewMode, Four, ISD::SETULT);
4110
4107
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);
4114
4110
4115
4111
SDValue Two = DAG.getConstant(2, SL, MVT::i32);
4116
4112
SDValue RoundModeTimesNumBits =
0 commit comments