xref: /aosp_15_r20/external/clang/test/CodeGenOpenCL/relaxed-fpmath.cl (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s -check-prefix=NORMAL
2*67e74705SXin Li// RUN: %clang_cc1 %s -emit-llvm -cl-fast-relaxed-math -o - | FileCheck %s -check-prefix=FAST
3*67e74705SXin Li// RUN: %clang_cc1 %s -emit-llvm -cl-finite-math-only -o - | FileCheck %s -check-prefix=FINITE
4*67e74705SXin Li// RUN: %clang_cc1 %s -emit-llvm -cl-unsafe-math-optimizations -o - | FileCheck %s -check-prefix=UNSAFE
5*67e74705SXin Li
6*67e74705SXin Litypedef __attribute__(( ext_vector_type(4) )) float float4;
7*67e74705SXin Li
8*67e74705SXin Lifloat spscalardiv(float a, float b) {
9*67e74705SXin Li  // CHECK: @spscalardiv(
10*67e74705SXin Li
11*67e74705SXin Li  // NORMAL: fdiv float
12*67e74705SXin Li  // FAST: fdiv fast float
13*67e74705SXin Li  // FINITE: fdiv nnan ninf float
14*67e74705SXin Li  // UNSAFE: fdiv nnan float
15*67e74705SXin Li  return a / b;
16*67e74705SXin Li}
17*67e74705SXin Li// CHECK: attributes
18*67e74705SXin Li
19*67e74705SXin Li// NORMAL: "no-infs-fp-math"="false"
20*67e74705SXin Li// NORMAL: "no-nans-fp-math"="false"
21*67e74705SXin Li// NORMAL: "unsafe-fp-math"="false"
22*67e74705SXin Li
23*67e74705SXin Li// FAST: "no-infs-fp-math"="true"
24*67e74705SXin Li// FAST: "no-nans-fp-math"="true"
25*67e74705SXin Li// FAST: "unsafe-fp-math"="true"
26*67e74705SXin Li
27*67e74705SXin Li// FINITE: "no-infs-fp-math"="true"
28*67e74705SXin Li// FINITE: "no-nans-fp-math"="true"
29*67e74705SXin Li// FINITE: "unsafe-fp-math"="false"
30*67e74705SXin Li
31*67e74705SXin Li// UNSAFE: "no-infs-fp-math"="false"
32*67e74705SXin Li// UNSAFE: "no-nans-fp-math"="true"
33*67e74705SXin Li// UNSAFE: "unsafe-fp-math"="true"
34*67e74705SXin Li
35