summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin Holewinski <jholewinski@nvidia.com>2014-01-21 14:40:05 +0000
committerJustin Holewinski <jholewinski@nvidia.com>2014-01-21 14:40:05 +0000
commit7706107e6f6e17dfa8e1f2d85c44cd7430c32e52 (patch)
treef29dc30a8763ab2f5a5cd55062cd583fb68cd420
parent7741274534ba01ecff52e56185b4224bf354b39b (diff)
downloadbcm5719-llvm-7706107e6f6e17dfa8e1f2d85c44cd7430c32e52.tar.gz
bcm5719-llvm-7706107e6f6e17dfa8e1f2d85c44cd7430c32e52.zip
[NVPTX] Add missing patterns for div.approx with immediate denominator
llvm-svn: 199746
-rw-r--r--llvm/lib/Target/NVPTX/NVPTXInstrInfo.td12
-rw-r--r--llvm/test/CodeGen/NVPTX/div-ri.ll8
2 files changed, 20 insertions, 0 deletions
diff --git a/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td b/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td
index b23f1e4b458..fbcd0e4a358 100644
--- a/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td
+++ b/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td
@@ -689,12 +689,24 @@ def FDIV32approxrr_ftz : NVPTXInst<(outs Float32Regs:$dst),
[(set Float32Regs:$dst,
(fdiv Float32Regs:$a, Float32Regs:$b))]>,
Requires<[do_DIVF32_APPROX, doF32FTZ]>;
+def FDIV32approxri_ftz : NVPTXInst<(outs Float32Regs:$dst),
+ (ins Float32Regs:$a, f32imm:$b),
+ "div.approx.ftz.f32 \t$dst, $a, $b;",
+ [(set Float32Regs:$dst,
+ (fdiv Float32Regs:$a, fpimm:$b))]>,
+ Requires<[do_DIVF32_APPROX, doF32FTZ]>;
def FDIV32approxrr : NVPTXInst<(outs Float32Regs:$dst),
(ins Float32Regs:$a, Float32Regs:$b),
"div.approx.f32 \t$dst, $a, $b;",
[(set Float32Regs:$dst,
(fdiv Float32Regs:$a, Float32Regs:$b))]>,
Requires<[do_DIVF32_APPROX]>;
+def FDIV32approxri : NVPTXInst<(outs Float32Regs:$dst),
+ (ins Float32Regs:$a, f32imm:$b),
+ "div.approx.f32 \t$dst, $a, $b;",
+ [(set Float32Regs:$dst,
+ (fdiv Float32Regs:$a, fpimm:$b))]>,
+ Requires<[do_DIVF32_APPROX]>;
//
// F32 Semi-accurate reciprocal
//
diff --git a/llvm/test/CodeGen/NVPTX/div-ri.ll b/llvm/test/CodeGen/NVPTX/div-ri.ll
new file mode 100644
index 00000000000..7f796e0239f
--- /dev/null
+++ b/llvm/test/CodeGen/NVPTX/div-ri.ll
@@ -0,0 +1,8 @@
+; RUN: llc < %s -march=nvptx -mcpu=sm_20 -nvptx-prec-divf32=0 | FileCheck %s
+
+define float @foo(float %a) {
+; CHECK: div.approx.f32
+ %div = fdiv float %a, 13.0
+ ret float %div
+}
+
OpenPOWER on IntegriCloud