aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/NVPTX/math-intrins.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/NVPTX/math-intrins.ll')
-rw-r--r--test/CodeGen/NVPTX/math-intrins.ll25
1 files changed, 25 insertions, 0 deletions
diff --git a/test/CodeGen/NVPTX/math-intrins.ll b/test/CodeGen/NVPTX/math-intrins.ll
index de911d050755..828a8807dcfa 100644
--- a/test/CodeGen/NVPTX/math-intrins.ll
+++ b/test/CodeGen/NVPTX/math-intrins.ll
@@ -21,6 +21,8 @@ declare float @llvm.minnum.f32(float, float) #0
declare double @llvm.minnum.f64(double, double) #0
declare float @llvm.maxnum.f32(float, float) #0
declare double @llvm.maxnum.f64(double, double) #0
+declare float @llvm.fma.f32(float, float, float) #0
+declare double @llvm.fma.f64(double, double, double) #0
; ---- ceil ----
@@ -257,5 +259,28 @@ define double @max_double(double %a, double %b) {
ret double %x
}
+; ---- fma ----
+
+; CHECK-LABEL: @fma_float
+define float @fma_float(float %a, float %b, float %c) {
+ ; CHECK: fma.rn.f32
+ %x = call float @llvm.fma.f32(float %a, float %b, float %c)
+ ret float %x
+}
+
+; CHECK-LABEL: @fma_float_ftz
+define float @fma_float_ftz(float %a, float %b, float %c) #1 {
+ ; CHECK: fma.rn.ftz.f32
+ %x = call float @llvm.fma.f32(float %a, float %b, float %c)
+ ret float %x
+}
+
+; CHECK-LABEL: @fma_double
+define double @fma_double(double %a, double %b, double %c) {
+ ; CHECK: fma.rn.f64
+ %x = call double @llvm.fma.f64(double %a, double %b, double %c)
+ ret double %x
+}
+
attributes #0 = { nounwind readnone }
attributes #1 = { "nvptx-f32ftz" = "true" }