|
32 | 32 | #include <optional> |
33 | 33 | #include <vector> |
34 | 34 |
|
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 | | - |
57 | 35 | // A function generator macro for picking the right intrinsic |
58 | 36 | // for the target backend |
59 | 37 | #define GENERATE_HLSL_INTRINSIC_FUNCTION(FunctionName, IntrinsicPostfix) \ |
@@ -172,6 +150,7 @@ class CGHLSLRuntime { |
172 | 150 | GENERATE_HLSL_INTRINSIC_FUNCTION(WaveIsFirstLane, wave_is_first_lane) |
173 | 151 | GENERATE_HLSL_INTRINSIC_FUNCTION(WaveGetLaneCount, wave_get_lane_count) |
174 | 152 | GENERATE_HLSL_INTRINSIC_FUNCTION(WaveReadLaneAt, wave_readlane) |
| 153 | + GENERATE_HLSL_INTRINSIC_FUNCTION_UNSIGNED(WaveActiveSum, wave_reduce_sum, true, false); |
175 | 154 | GENERATE_HLSL_INTRINSIC_FUNCTION(FirstBitUHigh, firstbituhigh) |
176 | 155 | GENERATE_HLSL_INTRINSIC_FUNCTION(FirstBitSHigh, firstbitshigh) |
177 | 156 | GENERATE_HLSL_INTRINSIC_FUNCTION(FirstBitLow, firstbitlow) |
|
0 commit comments