1// RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple \ 2// RUN: dxil-pc-shadermodel6.3-library %s -fnative-half-type \ 3// RUN: -emit-llvm -disable-llvm-passes -O3 -o - | FileCheck %s 4 5#ifdef __HLSL_ENABLE_16_BIT 6// CHECK: define noundef i16 @ 7// CHECK: call i16 @llvm.bitreverse.i16( 8uint16_t test_bitreverse_ushort(uint16_t p0) 9{ 10 return reversebits(p0); 11} 12// CHECK: define noundef <2 x i16> @ 13// CHECK: call <2 x i16> @llvm.bitreverse.v2i16 14uint16_t2 test_bitreverse_ushort2(uint16_t2 p0) 15{ 16 return reversebits(p0); 17} 18// CHECK: define noundef <3 x i16> @ 19// CHECK: call <3 x i16> @llvm.bitreverse.v3i16 20uint16_t3 test_bitreverse_ushort3(uint16_t3 p0) 21{ 22 return reversebits(p0); 23} 24// CHECK: define noundef <4 x i16> @ 25// CHECK: call <4 x i16> @llvm.bitreverse.v4i16 26uint16_t4 test_bitreverse_ushort4(uint16_t4 p0) 27{ 28 return reversebits(p0); 29} 30#endif 31 32// CHECK: define noundef i32 @ 33// CHECK: call i32 @llvm.bitreverse.i32( 34int test_bitreverse_uint(uint p0) 35{ 36 return reversebits(p0); 37} 38// CHECK: define noundef <2 x i32> @ 39// CHECK: call <2 x i32> @llvm.bitreverse.v2i32 40uint2 test_bitreverse_uint2(uint2 p0) 41{ 42 return reversebits(p0); 43} 44// CHECK: define noundef <3 x i32> @ 45// CHECK: call <3 x i32> @llvm.bitreverse.v3i32 46uint3 test_bitreverse_uint3(uint3 p0) 47{ 48 return reversebits(p0); 49} 50// CHECK: define noundef <4 x i32> @ 51// CHECK: call <4 x i32> @llvm.bitreverse.v4i32 52uint4 test_bitreverse_uint4(uint4 p0) 53{ 54 return reversebits(p0); 55} 56 57// CHECK: define noundef i64 @ 58// CHECK: call i64 @llvm.bitreverse.i64( 59uint64_t test_bitreverse_long(uint64_t p0) 60{ 61 return reversebits(p0); 62} 63// CHECK: define noundef <2 x i64> @ 64// CHECK: call <2 x i64> @llvm.bitreverse.v2i64 65uint64_t2 test_bitreverse_long2(uint64_t2 p0) 66{ 67 return reversebits(p0); 68} 69// CHECK: define noundef <3 x i64> @ 70// CHECK: call <3 x i64> @llvm.bitreverse.v3i64 71uint64_t3 test_bitreverse_long3(uint64_t3 p0) 72{ 73 return reversebits(p0); 74} 75// CHECK: define noundef <4 x i64> @ 76// CHECK: call <4 x i64> @llvm.bitreverse.v4i64 77uint64_t4 test_bitreverse_long4(uint64_t4 p0) 78{ 79 return reversebits(p0); 80} 81