1// RUN: %clang_cc1 %s -emit-llvm -o - -triple spir-unknown-unknown | FileCheck --check-prefix=CHECK --check-prefix=NODIVOPT %s
2// RUN: %clang_cc1 %s -emit-llvm -o - -triple spir-unknown-unknown -cl-fp32-correctly-rounded-divide-sqrt | FileCheck --check-prefix=CHECK --check-prefix=DIVOPT %s
3
4typedef __attribute__(( ext_vector_type(4) )) float float4;
5
6float spscalardiv(float a, float b) {
7  // CHECK: @spscalardiv
8  // CHECK: #[[ATTR:[0-9]+]]
9  // CHECK: fdiv{{.*}},
10  // NODIVOPT: !fpmath ![[MD:[0-9]+]]
11  // DIVOPT-NOT: !fpmath ![[MD:[0-9]+]]
12  return a / b;
13}
14
15float4 spvectordiv(float4 a, float4 b) {
16  // CHECK: @spvectordiv
17  // CHECK: #[[ATTR]]
18  // CHECK: fdiv{{.*}},
19  // NODIVOPT: !fpmath ![[MD]]
20  // DIVOPT-NOT: !fpmath ![[MD]]
21  return a / b;
22}
23
24#pragma OPENCL EXTENSION cl_khr_fp64 : enable
25
26double dpscalardiv(double a, double b) {
27  // CHECK: @dpscalardiv
28  // CHECK: #[[ATTR]]
29  // CHECK-NOT: !fpmath
30  return a / b;
31}
32
33// CHECK: attributes #[[ATTR]] = {
34// NODIVOPT: "correctly-rounded-divide-sqrt-fp-math"="false"
35// DIVOPT: "correctly-rounded-divide-sqrt-fp-math"="true"
36// CHECK: }
37// NODIVOPT: ![[MD]] = !{float 2.500000e+00}
38