Skip to content

Commit c57a9dc

Browse files
author
Evandro Menezes
committedOct 9, 2019
[AMDGPU] Use math constants defined in MathExtras (NFC)
Use the the new math constants in `MathExtras.h`. Differential revision: https://reviews.llvm.org/D68285 llvm-svn: 374208
1 parent e60415a commit c57a9dc

File tree

3 files changed

+19
-45
lines changed

3 files changed

+19
-45
lines changed
 

‎llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp

+4-24
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,6 @@
1212
//
1313
//===----------------------------------------------------------------------===//
1414

15-
#define AMDGPU_LOG2E_F 1.44269504088896340735992468100189214f
16-
#define AMDGPU_LN2_F 0.693147180559945309417232121458176568f
17-
#define AMDGPU_LN10_F 2.30258509299404568401799145468436421f
18-
1915
#include "AMDGPUISelLowering.h"
2016
#include "AMDGPU.h"
2117
#include "AMDGPUCallLowering.h"
@@ -37,6 +33,7 @@
3733
#include "llvm/IR/DataLayout.h"
3834
#include "llvm/IR/DiagnosticInfo.h"
3935
#include "llvm/Support/KnownBits.h"
36+
#include "llvm/Support/MathExtras.h"
4037
using namespace llvm;
4138

4239
#include "AMDGPUGenCallingConv.inc"
@@ -1135,9 +1132,9 @@ SDValue AMDGPUTargetLowering::LowerOperation(SDValue Op,
11351132
case ISD::FROUND: return LowerFROUND(Op, DAG);
11361133
case ISD::FFLOOR: return LowerFFLOOR(Op, DAG);
11371134
case ISD::FLOG:
1138-
return LowerFLOG(Op, DAG, 1 / AMDGPU_LOG2E_F);
1135+
return LowerFLOG(Op, DAG, 1.0F / numbers::log2ef);
11391136
case ISD::FLOG10:
1140-
return LowerFLOG(Op, DAG, AMDGPU_LN2_F / AMDGPU_LN10_F);
1137+
return LowerFLOG(Op, DAG, numbers::ln2f / numbers::ln10f);
11411138
case ISD::FEXP:
11421139
return lowerFEXP(Op, DAG);
11431140
case ISD::SINT_TO_FP: return LowerSINT_TO_FP(Op, DAG);
@@ -2285,30 +2282,13 @@ SDValue AMDGPUTargetLowering::LowerFLOG(SDValue Op, SelectionDAG &DAG,
22852282
return DAG.getNode(ISD::FMUL, SL, VT, Log2Operand, Log2BaseInvertedOperand);
22862283
}
22872284

2288-
// Return M_LOG2E of appropriate type
2289-
static SDValue getLog2EVal(SelectionDAG &DAG, const SDLoc &SL, EVT VT) {
2290-
switch (VT.getScalarType().getSimpleVT().SimpleTy) {
2291-
case MVT::f32:
2292-
return DAG.getConstantFP(1.44269504088896340735992468100189214f, SL, VT);
2293-
case MVT::f16:
2294-
return DAG.getConstantFP(
2295-
APFloat(APFloat::IEEEhalf(), "1.44269504088896340735992468100189214"),
2296-
SL, VT);
2297-
case MVT::f64:
2298-
return DAG.getConstantFP(
2299-
APFloat(APFloat::IEEEdouble(), "0x1.71547652b82fep+0"), SL, VT);
2300-
default:
2301-
llvm_unreachable("unsupported fp type");
2302-
}
2303-
}
2304-
23052285
// exp2(M_LOG2E_F * f);
23062286
SDValue AMDGPUTargetLowering::lowerFEXP(SDValue Op, SelectionDAG &DAG) const {
23072287
EVT VT = Op.getValueType();
23082288
SDLoc SL(Op);
23092289
SDValue Src = Op.getOperand(0);
23102290

2311-
const SDValue K = getLog2EVal(DAG, SL, VT);
2291+
const SDValue K = DAG.getConstantFP(numbers::log2e, SL, VT);
23122292
SDValue Mul = DAG.getNode(ISD::FMUL, SL, VT, Src, K, Op->getFlags());
23132293
return DAG.getNode(ISD::FEXP2, SL, VT, Mul, Op->getFlags());
23142294
}

‎llvm/lib/Target/AMDGPU/AMDGPULibCalls.cpp

+13-20
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#include "llvm/IR/Module.h"
3131
#include "llvm/IR/ValueSymbolTable.h"
3232
#include "llvm/Support/Debug.h"
33+
#include "llvm/Support/MathExtras.h"
3334
#include "llvm/Support/raw_ostream.h"
3435
#include "llvm/Target/TargetMachine.h"
3536
#include "llvm/Target/TargetOptions.h"
@@ -48,18 +49,10 @@ static cl::list<std::string> UseNative("amdgpu-use-native",
4849
cl::CommaSeparated, cl::ValueOptional,
4950
cl::Hidden);
5051

51-
#define MATH_PI 3.14159265358979323846264338327950288419716939937511
52-
#define MATH_E 2.71828182845904523536028747135266249775724709369996
53-
#define MATH_SQRT2 1.41421356237309504880168872420969807856967187537695
54-
55-
#define MATH_LOG2E 1.4426950408889634073599246810018921374266459541529859
56-
#define MATH_LOG10E 0.4342944819032518276511289189166050822943970058036665
57-
// Value of log2(10)
58-
#define MATH_LOG2_10 3.3219280948873623478703194294893901758648313930245806
59-
// Value of 1 / log2(10)
60-
#define MATH_RLOG2_10 0.3010299956639811952137388947244930267681898814621085
61-
// Value of 1 / M_LOG2E_F = 1 / log2(e)
62-
#define MATH_RLOG2_E 0.6931471805599453094172321214581765680755001343602552
52+
#define MATH_PI numbers::pi
53+
#define MATH_E numbers::e
54+
#define MATH_SQRT2 numbers::sqrt2
55+
#define MATH_SQRT1_2 numbers::inv_sqrt2
6356

6457
namespace llvm {
6558

@@ -254,8 +247,8 @@ struct TableEntry {
254247

255248
/* a list of {result, input} */
256249
static const TableEntry tbl_acos[] = {
257-
{MATH_PI/2.0, 0.0},
258-
{MATH_PI/2.0, -0.0},
250+
{MATH_PI / 2.0, 0.0},
251+
{MATH_PI / 2.0, -0.0},
259252
{0.0, 1.0},
260253
{MATH_PI, -1.0}
261254
};
@@ -271,8 +264,8 @@ static const TableEntry tbl_acospi[] = {
271264
static const TableEntry tbl_asin[] = {
272265
{0.0, 0.0},
273266
{-0.0, -0.0},
274-
{MATH_PI/2.0, 1.0},
275-
{-MATH_PI/2.0, -1.0}
267+
{MATH_PI / 2.0, 1.0},
268+
{-MATH_PI / 2.0, -1.0}
276269
};
277270
static const TableEntry tbl_asinh[] = {
278271
{0.0, 0.0},
@@ -287,8 +280,8 @@ static const TableEntry tbl_asinpi[] = {
287280
static const TableEntry tbl_atan[] = {
288281
{0.0, 0.0},
289282
{-0.0, -0.0},
290-
{MATH_PI/4.0, 1.0},
291-
{-MATH_PI/4.0, -1.0}
283+
{MATH_PI / 4.0, 1.0},
284+
{-MATH_PI / 4.0, -1.0}
292285
};
293286
static const TableEntry tbl_atanh[] = {
294287
{0.0, 0.0},
@@ -359,7 +352,7 @@ static const TableEntry tbl_log10[] = {
359352
};
360353
static const TableEntry tbl_rsqrt[] = {
361354
{1.0, 1.0},
362-
{1.0/MATH_SQRT2, 2.0}
355+
{MATH_SQRT1_2, 2.0}
363356
};
364357
static const TableEntry tbl_sin[] = {
365358
{0.0, 0.0},
@@ -868,7 +861,7 @@ static double log2(double V) {
868861
#if _XOPEN_SOURCE >= 600 || defined(_ISOC99_SOURCE) || _POSIX_C_SOURCE >= 200112L
869862
return ::log2(V);
870863
#else
871-
return log(V) / 0.693147180559945309417;
864+
return log(V) / numbers::ln2;
872865
#endif
873866
}
874867
}

‎llvm/lib/Target/AMDGPU/R600ISelLowering.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
#include "llvm/Support/Compiler.h"
4242
#include "llvm/Support/ErrorHandling.h"
4343
#include "llvm/Support/MachineValueType.h"
44+
#include "llvm/Support/MathExtras.h"
4445
#include <cassert>
4546
#include <cstdint>
4647
#include <iterator>
@@ -782,7 +783,7 @@ SDValue R600TargetLowering::LowerTrig(SDValue Op, SelectionDAG &DAG) const {
782783
return TrigVal;
783784
// On R600 hw, COS/SIN input must be between -Pi and Pi.
784785
return DAG.getNode(ISD::FMUL, DL, VT, TrigVal,
785-
DAG.getConstantFP(3.14159265359, DL, MVT::f32));
786+
DAG.getConstantFP(numbers::pif, DL, MVT::f32));
786787
}
787788

788789
SDValue R600TargetLowering::LowerSHLParts(SDValue Op, SelectionDAG &DAG) const {

0 commit comments

Comments
 (0)
Please sign in to comment.