diff options
Diffstat (limited to 'test/CodeGen/NVPTX/math-intrins.ll')
-rw-r--r-- | test/CodeGen/NVPTX/math-intrins.ll | 25 |
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" } |