]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGenOpenCL/half.cl
Vendor import of clang trunk r304149:
[FreeBSD/FreeBSD.git] / test / CodeGenOpenCL / half.cl
1 // RUN: %clang_cc1 %s -emit-llvm -o - -triple spir-unknown-unknown | FileCheck %s
2
3 #pragma OPENCL EXTENSION cl_khr_fp16 : enable
4
5
6 half test()
7 {
8    half x = 0.1f;
9    x+=2.0f;
10    x-=2.0f;
11    half y = x + x;
12    half z = y * 1.0f;
13    return z;
14 // CHECK: half 0xH3260
15 }
16
17 // CHECK-LABEL: @test_inc(half %x)
18 // CHECK: [[INC:%.*]] = fadd half %x, 0xH3C00
19 // CHECK: ret half [[INC]]
20 half test_inc(half x)
21 {
22   return ++x;
23 }
24
25 __attribute__((overloadable)) int min(int, int);
26 __attribute__((overloadable)) half min(half, half);
27 __attribute__((overloadable)) float min(float, float);
28
29 __kernel void foo( __global half* buf, __global float* buf2 )
30 {
31     buf[0] = min( buf[0], 1.5h );
32 // CHECK: half 0xH3E00
33     buf[0] = min( buf2[0], 1.5f );
34 // CHECK: float 1.500000e+00
35
36     const half one = 1.6666;
37     buf[1] = min( buf[1], one );
38 // CHECK: half 0xH3EAB
39 }
40