Skip to content

Commit 548299a

Browse files
committed
merge of main
1 parent e6a17ac commit 548299a

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

clang/lib/CodeGen/CGHLSLRuntime.h

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,28 @@
3232
#include <optional>
3333
#include <vector>
3434

35+
#define GENERATE_HLSL_INTRINSIC_CASE(Arch, ArchPrefix, IntrinsicPostfix, HasUnsignedVariant) \
36+
case llvm::Triple::Arch: { \
37+
if (HasUnsignedVariant && QT->isUnsignedIntegerType()) \
38+
return llvm::Intrinsic::##ArchPrefix##_u##IntrinsicPostfix; \
39+
return llvm::Intrinsic::##ArchPrefix##_##IntrinsicPostfix; \
40+
}
41+
42+
#define GENERATE_DX_INTRINSIC_CASE(IntrinsicPostfix, HasUnsignedVariant) \
43+
GENERATE_HLSL_INTRINSIC_CASE(dxil, dx, IntrinsicPostfix, HasUnsignedVariant)
44+
45+
#define GENERATE_SPV_INTRINSIC_CASE(IntrinsicPostfix, HasUnsignedVariant) \
46+
GENERATE_HLSL_INTRINSIC_CASE(spirv, spv, IntrinsicPostfix, HasUnsignedVariant)
47+
48+
#define GENERATE_HLSL_INTRINSIC_FUNCTION_UNSIGNED(FunctionName, IntrinsicPostfix, DxHasUnsignedVariant, SpvHasUnsignedVariant) \
49+
llvm::Intrinsic::ID get##FunctionName##Intrinsic(QualType QT) { \
50+
llvm::Triple::ArchType Arch = getArch(); \
51+
switch (Arch) { \
52+
GENERATE_DX_INTRINSIC_CASE(IntrinsicPostfix, DxHasUnsignedVariant) \
53+
GENERATE_SPV_INTRINSIC_CASE(IntrinsicPostfix, SpvHasUnsignedVariant) \
54+
} \
55+
}
56+
3557
// A function generator macro for picking the right intrinsic
3658
// for the target backend
3759
#define GENERATE_HLSL_INTRINSIC_FUNCTION(FunctionName, IntrinsicPostfix) \
@@ -146,7 +168,6 @@ class CGHLSLRuntime {
146168
GENERATE_HLSL_INTRINSIC_FUNCTION(Dot4AddU8Packed, dot4add_u8packed)
147169
GENERATE_HLSL_INTRINSIC_FUNCTION(WaveActiveAllTrue, wave_all)
148170
GENERATE_HLSL_INTRINSIC_FUNCTION(WaveActiveAnyTrue, wave_any)
149-
GENERATE_HLSL_INTRINSIC_FUNCTION(WaveActiveBitOr, wave_reduce_or)
150171
GENERATE_HLSL_INTRINSIC_FUNCTION(WaveActiveCountBits, wave_active_countbits)
151172
GENERATE_HLSL_INTRINSIC_FUNCTION(WaveIsFirstLane, wave_is_first_lane)
152173
GENERATE_HLSL_INTRINSIC_FUNCTION(WaveGetLaneCount, wave_get_lane_count)

0 commit comments

Comments
 (0)