// Is FP_CONTRACT is honored in a simple case?
float fp_contract_1(float a, float b, float c) {
// CHECK: _Z13fp_contract_1fff
-// CHECK-NEXT: entry
-// CHECK-NEXT: %0 = tail call float @llvm.fmuladd
+// CHECK: tail call float @llvm.fmuladd
#pragma STDC FP_CONTRACT ON
return a * b + c;
}
// Is FP_CONTRACT state cleared on exiting compound statements?
float fp_contract_2(float a, float b, float c) {
// CHECK: _Z13fp_contract_2fff
-// CHECK-NEXT: entry
-// CHECK-NEXT: %mul = fmul float %a, %b
-// CHECK-NEXT: %add = fadd float %mul, %c
+// CHECK: %[[M:.+]] = fmul float %a, %b
+// CHECK-NEXT: fadd float %[[M]], %c
{
#pragma STDC FP_CONTRACT ON
}
float fp_contract_3(float a, float b, float c) {
// CHECK: _Z13fp_contract_3fff
-// CHECK-NEXT: entry
-// CHECK-NEXT: %0 = tail call float @llvm.fmuladd
+// CHECK: tail call float @llvm.fmuladd
return template_muladd<float>(a, b, c);
}
// RUN: %clang_cc1 %s -cl-single-precision-constant -emit-llvm -o - | FileCheck %s
float fn(float f) {
- // CHECK: %0 = tail call float @llvm.fmuladd.f32(float %f, float 2.000000e+00, float 1.000000e+00)
+ // CHECK: tail call float @llvm.fmuladd.f32(float %f, float 2.000000e+00, float 1.000000e+00)
return f*2. + 1.;
}