1 // RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple \
\r
2 // RUN: dxil-pc-shadermodel6.3-library %s -D__HLSL_ENABLE_16_BIT \
\r
3 // RUN: -emit-llvm -disable-llvm-passes -O3 -o - | FileCheck %s
\r
5 #ifdef __HLSL_ENABLE_16_BIT
\r
6 // CHECK: define noundef i16 @
\r
7 // CHECK: call i16 @llvm.bitreverse.i16(
\r
8 int16_t test_bitreverse_short(int16_t p0)
\r
10 return reversebits(p0);
\r
12 // CHECK: define noundef <2 x i16> @
\r
13 // CHECK: call <2 x i16> @llvm.bitreverse.v2i16(
\r
14 int16_t2 test_bitreverse_short2(int16_t2 p0)
\r
16 return reversebits(p0);
\r
18 // CHECK: define noundef <3 x i16> @
\r
19 // CHECK: call <3 x i16> @llvm.bitreverse.v3i16
\r
20 int16_t3 test_bitreverse_short3(int16_t3 p0)
\r
22 return reversebits(p0);
\r
24 // CHECK: define noundef <4 x i16> @
\r
25 // CHECK: call <4 x i16> @llvm.bitreverse.v4i16
\r
26 int16_t4 test_bitreverse_short4(int16_t4 p0)
\r
28 return reversebits(p0);
\r
31 // CHECK: define noundef i16 @
\r
32 // CHECK: call i16 @llvm.bitreverse.i16(
\r
33 uint16_t test_bitreverse_ushort(uint16_t p0)
\r
35 return reversebits(p0);
\r
37 // CHECK: define noundef <2 x i16> @
\r
38 // CHECK: call <2 x i16> @llvm.bitreverse.v2i16
\r
39 uint16_t2 test_bitreverse_ushort2(uint16_t2 p0)
\r
41 return reversebits(p0);
\r
43 // CHECK: define noundef <3 x i16> @
\r
44 // CHECK: call <3 x i16> @llvm.bitreverse.v3i16
\r
45 uint16_t3 test_bitreverse_ushort3(uint16_t3 p0)
\r
47 return reversebits(p0);
\r
49 // CHECK: define noundef <4 x i16> @
\r
50 // CHECK: call <4 x i16> @llvm.bitreverse.v4i16
\r
51 uint16_t4 test_bitreverse_ushort4(uint16_t4 p0)
\r
53 return reversebits(p0);
\r
57 // CHECK: define noundef i32 @
\r
58 // CHECK: call i32 @llvm.bitreverse.i32(
\r
59 int test_bitreverse_int(int p0)
\r
61 return reversebits(p0);
\r
63 // CHECK: define noundef <2 x i32> @
\r
64 // CHECK: call <2 x i32> @llvm.bitreverse.v2i32
\r
65 int2 test_bitreverse_int2(int2 p0)
\r
67 return reversebits(p0);
\r
69 // CHECK: define noundef <3 x i32> @
\r
70 // CHECK: call <3 x i32> @llvm.bitreverse.v3i32
\r
71 int3 test_bitreverse_int3(int3 p0)
\r
73 return reversebits(p0);
\r
75 // CHECK: define noundef <4 x i32> @
\r
76 // CHECK: call <4 x i32> @llvm.bitreverse.v4i32
\r
77 int4 test_bitreverse_int4(int4 p0)
\r
79 return reversebits(p0);
\r
82 // CHECK: define noundef i32 @
\r
83 // CHECK: call i32 @llvm.bitreverse.i32(
\r
84 int test_bitreverse_uint(uint p0)
\r
86 return reversebits(p0);
\r
88 // CHECK: define noundef <2 x i32> @
\r
89 // CHECK: call <2 x i32> @llvm.bitreverse.v2i32
\r
90 uint2 test_bitreverse_uint2(uint2 p0)
\r
92 return reversebits(p0);
\r
94 // CHECK: define noundef <3 x i32> @
\r
95 // CHECK: call <3 x i32> @llvm.bitreverse.v3i32
\r
96 uint3 test_bitreverse_uint3(uint3 p0)
\r
98 return reversebits(p0);
\r
100 // CHECK: define noundef <4 x i32> @
\r
101 // CHECK: call <4 x i32> @llvm.bitreverse.v4i32
\r
102 uint4 test_bitreverse_uint4(uint4 p0)
\r
104 return reversebits(p0);
\r
107 // CHECK: define noundef i64 @
\r
108 // CHECK: call i64 @llvm.bitreverse.i64(
\r
109 int64_t test_bitreverse_long(int64_t p0)
\r
111 return reversebits(p0);
\r
113 // CHECK: define noundef <2 x i64> @
\r
114 // CHECK: call <2 x i64> @llvm.bitreverse.v2i64
\r
115 int64_t2 test_bitreverse_long2(int64_t2 p0)
\r
117 return reversebits(p0);
\r
119 // CHECK: define noundef <3 x i64> @
\r
120 // CHECK: call <3 x i64> @llvm.bitreverse.v3i64
\r
121 int64_t3 test_bitreverse_long3(int64_t3 p0)
\r
123 return reversebits(p0);
\r
125 // CHECK: define noundef <4 x i64> @
\r
126 // CHECK: call <4 x i64> @llvm.bitreverse.v4i64
\r
127 int64_t4 test_bitreverse_long4(int64_t4 p0)
\r
129 return reversebits(p0);
\r
132 // CHECK: define noundef i64 @
\r
133 // CHECK: call i64 @llvm.bitreverse.i64(
\r
134 uint64_t test_bitreverse_long(uint64_t p0)
\r
136 return reversebits(p0);
\r
138 // CHECK: define noundef <2 x i64> @
\r
139 // CHECK: call <2 x i64> @llvm.bitreverse.v2i64
\r
140 uint64_t2 test_bitreverse_long2(uint64_t2 p0)
\r
142 return reversebits(p0);
\r
144 // CHECK: define noundef <3 x i64> @
\r
145 // CHECK: call <3 x i64> @llvm.bitreverse.v3i64
\r
146 uint64_t3 test_bitreverse_long3(uint64_t3 p0)
\r
148 return reversebits(p0);
\r
150 // CHECK: define noundef <4 x i64> @
\r
151 // CHECK: call <4 x i64> @llvm.bitreverse.v4i64
\r
152 uint64_t4 test_bitreverse_long4(uint64_t4 p0)
\r
154 return reversebits(p0);
\r