diff options
author | Jan Vesely <jan.vesely@rutgers.edu> | 2015-05-04 19:53:36 +0000 |
---|---|---|
committer | Jan Vesely <jan.vesely@rutgers.edu> | 2015-05-04 19:53:36 +0000 |
commit | eebeaea0ab2a685ebb528e12cfe211c16b585caf (patch) | |
tree | ae436eeff32498fdb54d87e4e19f5d84defd53c4 /clang/lib/Basic/Targets.cpp | |
parent | a3747a9d31e88b89bbb1d7ba219746caabb14397 (diff) | |
download | bcm5719-llvm-eebeaea0ab2a685ebb528e12cfe211c16b585caf.tar.gz bcm5719-llvm-eebeaea0ab2a685ebb528e12cfe211c16b585caf.zip |
R600: Add fma and ldexp asic specific feature macros
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 236453
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index d253f7e25b6..6d946236e28 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -1695,7 +1695,9 @@ class R600TargetInfo : public TargetInfo { GK_SEA_ISLANDS } GPU; - bool hasFP64; + bool hasFP64:1; + bool hasFMAF:1; + bool hasLDEXPF:1; public: R600TargetInfo(const llvm::Triple &Triple) @@ -1705,10 +1707,14 @@ public: DescriptionString = DescriptionStringSI; GPU = GK_SOUTHERN_ISLANDS; hasFP64 = true; + hasFMAF = true; + hasLDEXPF = true; } else { DescriptionString = DescriptionStringR600; GPU = GK_R600; hasFP64 = false; + hasFMAF = false; + hasLDEXPF = false; } AddrSpaceMap = &R600AddrSpaceMap; UseAddrSpaceMapMangling = true; @@ -1755,6 +1761,10 @@ public: void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override { Builder.defineMacro("__R600__"); + if (hasFMAF) + Builder.defineMacro("__HAS_FMAF__"); + if (hasLDEXPF) + Builder.defineMacro("__HAS_LDEXPF__"); if (hasFP64 && Opts.OpenCL) { Builder.defineMacro("cl_khr_fp64"); } @@ -1816,6 +1826,8 @@ public: case GK_NORTHERN_ISLANDS: DescriptionString = DescriptionStringR600; hasFP64 = false; + hasFMAF = false; + hasLDEXPF = false; break; case GK_R600_DOUBLE_OPS: case GK_R700_DOUBLE_OPS: @@ -1823,11 +1835,15 @@ public: case GK_CAYMAN: DescriptionString = DescriptionStringR600DoubleOps; hasFP64 = true; + hasFMAF = true; + hasLDEXPF = false; break; case GK_SOUTHERN_ISLANDS: case GK_SEA_ISLANDS: DescriptionString = DescriptionStringSI; hasFP64 = true; + hasFMAF = true; + hasLDEXPF = true; break; } |