Skip to content

Commit bd2dca0

Browse files
committed
AMDGPU: Use hex floats instead of ugly bitcasting
1 parent 8f90a5c commit bd2dca0

File tree

3 files changed

+11
-11
lines changed

3 files changed

+11
-11
lines changed

llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4806,9 +4806,9 @@ bool AMDGPULegalizerInfo::legalizeFDIVFastIntrin(MachineInstr &MI,
48064806
auto Abs = B.buildFAbs(S32, RHS, Flags);
48074807
const APFloat C0Val(1.0f);
48084808

4809-
auto C0 = B.buildConstant(S32, 0x6f800000);
4810-
auto C1 = B.buildConstant(S32, 0x2f800000);
4811-
auto C2 = B.buildConstant(S32, llvm::bit_cast<uint32_t>(1.0f));
4809+
auto C0 = B.buildFConstant(S32, 0x1p+96f);
4810+
auto C1 = B.buildFConstant(S32, 0x1p-32f);
4811+
auto C2 = B.buildFConstant(S32, 1.0f);
48124812

48134813
auto CmpRes = B.buildFCmp(CmpInst::FCMP_OGT, S1, Abs, C0, Flags);
48144814
auto Sel = B.buildSelect(S32, CmpRes, C1, C2, Flags);

llvm/lib/Target/AMDGPU/SIISelLowering.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9277,10 +9277,10 @@ SDValue SITargetLowering::lowerFDIV_FAST(SDValue Op, SelectionDAG &DAG) const {
92779277

92789278
SDValue r1 = DAG.getNode(ISD::FABS, SL, MVT::f32, RHS);
92799279

9280-
const APFloat K0Val(llvm::bit_cast<float>(0x6f800000));
9280+
const APFloat K0Val(0x1p+96f);
92819281
const SDValue K0 = DAG.getConstantFP(K0Val, SL, MVT::f32);
92829282

9283-
const APFloat K1Val(llvm::bit_cast<float>(0x2f800000));
9283+
const APFloat K1Val(0x1p-32f);
92849284
const SDValue K1 = DAG.getConstantFP(K1Val, SL, MVT::f32);
92859285

92869286
const SDValue One = DAG.getConstantFP(1.0, SL, MVT::f32);

llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-intrinsic-amdgcn-fdiv-fast.mir

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ body: |
1313
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1414
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1515
; CHECK-NEXT: [[FABS:%[0-9]+]]:_(s32) = G_FABS [[COPY1]]
16-
; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1870659584
17-
; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 796917760
18-
; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1065353216
16+
; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x45F0000000000000
17+
; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x3DF0000000000000
18+
; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_FCONSTANT float 1.000000e+00
1919
; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s1) = G_FCMP floatpred(ogt), [[FABS]](s32), [[C]]
2020
; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[FCMP]](s1), [[C1]], [[C2]]
2121
; CHECK-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[COPY1]], [[SELECT]]
@@ -41,9 +41,9 @@ body: |
4141
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
4242
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
4343
; CHECK-NEXT: [[FABS:%[0-9]+]]:_(s32) = nsz G_FABS [[COPY1]]
44-
; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1870659584
45-
; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 796917760
46-
; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1065353216
44+
; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x45F0000000000000
45+
; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x3DF0000000000000
46+
; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_FCONSTANT float 1.000000e+00
4747
; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s1) = nsz G_FCMP floatpred(ogt), [[FABS]](s32), [[C]]
4848
; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = nsz G_SELECT [[FCMP]](s1), [[C1]], [[C2]]
4949
; CHECK-NEXT: [[FMUL:%[0-9]+]]:_(s32) = nsz G_FMUL [[COPY1]], [[SELECT]]

0 commit comments

Comments
 (0)