| // RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple \ | |
| // RUN: dxil-pc-shadermodel6.3-library %s -D__HLSL_ENABLE_16_BIT \ | |
| // RUN: -emit-llvm -disable-llvm-passes -O3 -o - | FileCheck %s | |
| #ifdef __HLSL_ENABLE_16_BIT | |
| // CHECK: define noundef i16 @ | |
| // CHECK: call i16 @llvm.bitreverse.i16( | |
| int16_t test_bitreverse_short(int16_t p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <2 x i16> @ | |
| // CHECK: call <2 x i16> @llvm.bitreverse.v2i16( | |
| int16_t2 test_bitreverse_short2(int16_t2 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <3 x i16> @ | |
| // CHECK: call <3 x i16> @llvm.bitreverse.v3i16 | |
| int16_t3 test_bitreverse_short3(int16_t3 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <4 x i16> @ | |
| // CHECK: call <4 x i16> @llvm.bitreverse.v4i16 | |
| int16_t4 test_bitreverse_short4(int16_t4 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef i16 @ | |
| // CHECK: call i16 @llvm.bitreverse.i16( | |
| uint16_t test_bitreverse_ushort(uint16_t p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <2 x i16> @ | |
| // CHECK: call <2 x i16> @llvm.bitreverse.v2i16 | |
| uint16_t2 test_bitreverse_ushort2(uint16_t2 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <3 x i16> @ | |
| // CHECK: call <3 x i16> @llvm.bitreverse.v3i16 | |
| uint16_t3 test_bitreverse_ushort3(uint16_t3 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <4 x i16> @ | |
| // CHECK: call <4 x i16> @llvm.bitreverse.v4i16 | |
| uint16_t4 test_bitreverse_ushort4(uint16_t4 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| #endif | |
| // CHECK: define noundef i32 @ | |
| // CHECK: call i32 @llvm.bitreverse.i32( | |
| int test_bitreverse_int(int p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <2 x i32> @ | |
| // CHECK: call <2 x i32> @llvm.bitreverse.v2i32 | |
| int2 test_bitreverse_int2(int2 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <3 x i32> @ | |
| // CHECK: call <3 x i32> @llvm.bitreverse.v3i32 | |
| int3 test_bitreverse_int3(int3 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <4 x i32> @ | |
| // CHECK: call <4 x i32> @llvm.bitreverse.v4i32 | |
| int4 test_bitreverse_int4(int4 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef i32 @ | |
| // CHECK: call i32 @llvm.bitreverse.i32( | |
| int test_bitreverse_uint(uint p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <2 x i32> @ | |
| // CHECK: call <2 x i32> @llvm.bitreverse.v2i32 | |
| uint2 test_bitreverse_uint2(uint2 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <3 x i32> @ | |
| // CHECK: call <3 x i32> @llvm.bitreverse.v3i32 | |
| uint3 test_bitreverse_uint3(uint3 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <4 x i32> @ | |
| // CHECK: call <4 x i32> @llvm.bitreverse.v4i32 | |
| uint4 test_bitreverse_uint4(uint4 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef i64 @ | |
| // CHECK: call i64 @llvm.bitreverse.i64( | |
| int64_t test_bitreverse_long(int64_t p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <2 x i64> @ | |
| // CHECK: call <2 x i64> @llvm.bitreverse.v2i64 | |
| int64_t2 test_bitreverse_long2(int64_t2 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <3 x i64> @ | |
| // CHECK: call <3 x i64> @llvm.bitreverse.v3i64 | |
| int64_t3 test_bitreverse_long3(int64_t3 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <4 x i64> @ | |
| // CHECK: call <4 x i64> @llvm.bitreverse.v4i64 | |
| int64_t4 test_bitreverse_long4(int64_t4 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef i64 @ | |
| // CHECK: call i64 @llvm.bitreverse.i64( | |
| uint64_t test_bitreverse_long(uint64_t p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <2 x i64> @ | |
| // CHECK: call <2 x i64> @llvm.bitreverse.v2i64 | |
| uint64_t2 test_bitreverse_long2(uint64_t2 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <3 x i64> @ | |
| // CHECK: call <3 x i64> @llvm.bitreverse.v3i64 | |
| uint64_t3 test_bitreverse_long3(uint64_t3 p0) | |
| { | |
| return reversebits(p0); | |
| } | |
| // CHECK: define noundef <4 x i64> @ | |
| // CHECK: call <4 x i64> @llvm.bitreverse.v4i64 | |
| uint64_t4 test_bitreverse_long4(uint64_t4 p0) | |
| { | |
| return reversebits(p0); | |
| } |