Skip to content

Commit ff2ad96

Browse files
committed
Add double requirement and remove priority on wave ops
1 parent 003bfd7 commit ff2ad96

File tree

1 file changed

+82
-60
lines changed

1 file changed

+82
-60
lines changed

tools/clang/unittests/HLSLExec/LongVectors.cpp

Lines changed: 82 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1792,10 +1792,32 @@ using namespace LongVector;
17921792
#define HLK_TEST(Op, DataType) \
17931793
TEST_METHOD(Op##_##DataType) { runTest<DataType, OpType::Op>(); }
17941794

1795+
#define HLK_TEST_DOUBLE(Op, DataType) \
1796+
TEST_METHOD(Op##_##DataType) { \
1797+
BEGIN_TEST_METHOD_PROPERTIES() \
1798+
TEST_METHOD_PROPERTY( \
1799+
"Kits.Specification", \
1800+
"Device.Graphics.D3D12.DXILCore.ShaderModel69.DoublePrecision") \
1801+
END_TEST_METHOD_PROPERTIES() \
1802+
runTest<DataType, OpType::Op>(); \
1803+
}
1804+
17951805
#define HLK_WAVEOP_TEST(Op, DataType) \
17961806
TEST_METHOD(Op##_##DataType) { \
17971807
BEGIN_TEST_METHOD_PROPERTIES() \
1798-
TEST_METHOD_PROPERTY(L"Priority", L"2") \
1808+
TEST_METHOD_PROPERTY( \
1809+
"Kits.Specification", \
1810+
"Device.Graphics.D3D12.DXILCore.ShaderModel69.CoreRequirement") \
1811+
END_TEST_METHOD_PROPERTIES() \
1812+
runWaveOpTest<DataType, OpType::Op>(); \
1813+
}
1814+
1815+
#define HLK_WAVEOP_TEST_DOUBLE(Op, DataType) \
1816+
TEST_METHOD(Op##_##DataType) { \
1817+
BEGIN_TEST_METHOD_PROPERTIES() \
1818+
TEST_METHOD_PROPERTY( \
1819+
"Kits.Specification", \
1820+
"Device.Graphics.D3D12.DXILCore.ShaderModel69.DoublePrecision") \
17991821
END_TEST_METHOD_PROPERTIES() \
18001822
runWaveOpTest<DataType, OpType::Op>(); \
18011823
}
@@ -1940,8 +1962,8 @@ class DxilConf_SM69_Vectorized {
19401962
HLK_TEST(Mad, int64_t);
19411963
HLK_TEST(Mad, HLSLHalf_t);
19421964
HLK_TEST(Mad, float);
1943-
HLK_TEST(Fma, double);
1944-
HLK_TEST(Mad, double);
1965+
HLK_TEST_DOUBLE(Fma, double);
1966+
HLK_TEST_DOUBLE(Mad, double);
19451967

19461968
// BinaryMath
19471969

@@ -2005,12 +2027,12 @@ class DxilConf_SM69_Vectorized {
20052027
HLK_TEST(Min, float);
20062028
HLK_TEST(Max, float);
20072029
HLK_TEST(Ldexp, float);
2008-
HLK_TEST(Add, double);
2009-
HLK_TEST(Subtract, double);
2010-
HLK_TEST(Multiply, double);
2011-
HLK_TEST(Divide, double);
2012-
HLK_TEST(Min, double);
2013-
HLK_TEST(Max, double);
2030+
HLK_TEST_DOUBLE(Add, double);
2031+
HLK_TEST_DOUBLE(Subtract, double);
2032+
HLK_TEST_DOUBLE(Multiply, double);
2033+
HLK_TEST_DOUBLE(Divide, double);
2034+
HLK_TEST_DOUBLE(Min, double);
2035+
HLK_TEST_DOUBLE(Max, double);
20142036

20152037
// Bitwise
20162038

@@ -2070,7 +2092,7 @@ class DxilConf_SM69_Vectorized {
20702092
HLK_TEST(FirstBitLow, int64_t);
20712093
HLK_TEST(Saturate, HLSLHalf_t);
20722094
HLK_TEST(Saturate, float);
2073-
HLK_TEST(Saturate, double);
2095+
HLK_TEST_DOUBLE(Saturate, double);
20742096

20752097
// Unary
20762098

@@ -2101,9 +2123,9 @@ class DxilConf_SM69_Vectorized {
21012123
HLK_TEST(Initialize, float);
21022124
HLK_TEST(ArrayOperator_StaticAccess, float);
21032125
HLK_TEST(ArrayOperator_DynamicAccess, float);
2104-
HLK_TEST(Initialize, double);
2105-
HLK_TEST(ArrayOperator_StaticAccess, double);
2106-
HLK_TEST(ArrayOperator_DynamicAccess, double);
2126+
HLK_TEST_DOUBLE(Initialize, double);
2127+
HLK_TEST_DOUBLE(ArrayOperator_StaticAccess, double);
2128+
HLK_TEST_DOUBLE(ArrayOperator_DynamicAccess, double);
21072129

21082130
HLK_TEST(ShuffleVector, HLSLBool_t);
21092131
HLK_TEST(ShuffleVector, int16_t);
@@ -2114,7 +2136,7 @@ class DxilConf_SM69_Vectorized {
21142136
HLK_TEST(ShuffleVector, uint64_t);
21152137
HLK_TEST(ShuffleVector, HLSLHalf_t);
21162138
HLK_TEST(ShuffleVector, float);
2117-
HLK_TEST(ShuffleVector, double);
2139+
HLK_TEST_DOUBLE(ShuffleVector, double);
21182140

21192141
// Explicit Cast
21202142

@@ -2148,15 +2170,15 @@ class DxilConf_SM69_Vectorized {
21482170
HLK_TEST(CastToFloat16, float);
21492171
HLK_TEST(CastToFloat64, float);
21502172

2151-
HLK_TEST(CastToBool, double);
2152-
HLK_TEST(CastToInt16, double);
2153-
HLK_TEST(CastToInt32, double);
2154-
HLK_TEST(CastToInt64, double);
2155-
HLK_TEST(CastToUint16_FromFP, double);
2156-
HLK_TEST(CastToUint32_FromFP, double);
2157-
HLK_TEST(CastToUint64_FromFP, double);
2158-
HLK_TEST(CastToFloat16, double);
2159-
HLK_TEST(CastToFloat32, double);
2173+
HLK_TEST_DOUBLE(CastToBool, double);
2174+
HLK_TEST_DOUBLE(CastToInt16, double);
2175+
HLK_TEST_DOUBLE(CastToInt32, double);
2176+
HLK_TEST_DOUBLE(CastToInt64, double);
2177+
HLK_TEST_DOUBLE(CastToUint16_FromFP, double);
2178+
HLK_TEST_DOUBLE(CastToUint32_FromFP, double);
2179+
HLK_TEST_DOUBLE(CastToUint64_FromFP, double);
2180+
HLK_TEST_DOUBLE(CastToFloat16, double);
2181+
HLK_TEST_DOUBLE(CastToFloat32, double);
21602182

21612183
HLK_TEST(CastToBool, uint16_t);
21622184
HLK_TEST(CastToInt16, uint16_t);
@@ -2304,8 +2326,8 @@ class DxilConf_SM69_Vectorized {
23042326
HLK_TEST(Log10, float);
23052327
HLK_TEST(Log2, float);
23062328
HLK_TEST(Frexp, float);
2307-
HLK_TEST(Abs, double);
2308-
HLK_TEST(Sign, double);
2329+
HLK_TEST_DOUBLE(Abs, double);
2330+
HLK_TEST_DOUBLE(Sign, double);
23092331

23102332
// Float Special
23112333

@@ -2369,12 +2391,12 @@ class DxilConf_SM69_Vectorized {
23692391
HLK_TEST(GreaterEqual, float);
23702392
HLK_TEST(Equal, float);
23712393
HLK_TEST(NotEqual, float);
2372-
HLK_TEST(LessThan, double);
2373-
HLK_TEST(LessEqual, double);
2374-
HLK_TEST(GreaterThan, double);
2375-
HLK_TEST(GreaterEqual, double);
2376-
HLK_TEST(Equal, double);
2377-
HLK_TEST(NotEqual, double);
2394+
HLK_TEST_DOUBLE(LessThan, double);
2395+
HLK_TEST_DOUBLE(LessEqual, double);
2396+
HLK_TEST_DOUBLE(GreaterThan, double);
2397+
HLK_TEST_DOUBLE(GreaterEqual, double);
2398+
HLK_TEST_DOUBLE(Equal, double);
2399+
HLK_TEST_DOUBLE(NotEqual, double);
23782400

23792401
// Binary Logical
23802402

@@ -2391,7 +2413,7 @@ class DxilConf_SM69_Vectorized {
23912413
HLK_TEST(Select, uint64_t);
23922414
HLK_TEST(Select, HLSLHalf_t);
23932415
HLK_TEST(Select, float);
2394-
HLK_TEST(Select, double);
2416+
HLK_TEST_DOUBLE(Select, double);
23952417

23962418
// Reduction
23972419
HLK_TEST(Any_Mixed, HLSLBool_t);
@@ -2550,18 +2572,18 @@ class DxilConf_SM69_Vectorized {
25502572
HLK_TEST(LoadAndStore_RD_SB_UAV, float);
25512573
HLK_TEST(LoadAndStore_RD_SB_SRV, float);
25522574

2553-
HLK_TEST(LoadAndStore_RDH_BAB_SRV, double);
2554-
HLK_TEST(LoadAndStore_RDH_BAB_UAV, double);
2555-
HLK_TEST(LoadAndStore_DT_BAB_SRV, double);
2556-
HLK_TEST(LoadAndStore_DT_BAB_UAV, double);
2557-
HLK_TEST(LoadAndStore_RD_BAB_SRV, double);
2558-
HLK_TEST(LoadAndStore_RD_BAB_UAV, double);
2559-
HLK_TEST(LoadAndStore_RDH_SB_SRV, double);
2560-
HLK_TEST(LoadAndStore_RDH_SB_UAV, double);
2561-
HLK_TEST(LoadAndStore_DT_SB_SRV, double);
2562-
HLK_TEST(LoadAndStore_DT_SB_UAV, double);
2563-
HLK_TEST(LoadAndStore_RD_SB_SRV, double);
2564-
HLK_TEST(LoadAndStore_RD_SB_UAV, double);
2575+
HLK_TEST_DOUBLE(LoadAndStore_RDH_BAB_SRV, double);
2576+
HLK_TEST_DOUBLE(LoadAndStore_RDH_BAB_UAV, double);
2577+
HLK_TEST_DOUBLE(LoadAndStore_DT_BAB_SRV, double);
2578+
HLK_TEST_DOUBLE(LoadAndStore_DT_BAB_UAV, double);
2579+
HLK_TEST_DOUBLE(LoadAndStore_RD_BAB_SRV, double);
2580+
HLK_TEST_DOUBLE(LoadAndStore_RD_BAB_UAV, double);
2581+
HLK_TEST_DOUBLE(LoadAndStore_RDH_SB_SRV, double);
2582+
HLK_TEST_DOUBLE(LoadAndStore_RDH_SB_UAV, double);
2583+
HLK_TEST_DOUBLE(LoadAndStore_DT_SB_SRV, double);
2584+
HLK_TEST_DOUBLE(LoadAndStore_DT_SB_UAV, double);
2585+
HLK_TEST_DOUBLE(LoadAndStore_RD_SB_SRV, double);
2586+
HLK_TEST_DOUBLE(LoadAndStore_RD_SB_UAV, double);
25652587

25662588
// Derivative
25672589
HLK_TEST(DerivativeDdx, HLSLHalf_t);
@@ -2610,10 +2632,10 @@ class DxilConf_SM69_Vectorized {
26102632
HLK_TEST(QuadReadAcrossX, float);
26112633
HLK_TEST(QuadReadAcrossY, float);
26122634
HLK_TEST(QuadReadAcrossDiagonal, float);
2613-
HLK_TEST(QuadReadLaneAt, double);
2614-
HLK_TEST(QuadReadAcrossX, double);
2615-
HLK_TEST(QuadReadAcrossY, double);
2616-
HLK_TEST(QuadReadAcrossDiagonal, double);
2635+
HLK_TEST_DOUBLE(QuadReadLaneAt, double);
2636+
HLK_TEST_DOUBLE(QuadReadAcrossX, double);
2637+
HLK_TEST_DOUBLE(QuadReadAcrossY, double);
2638+
HLK_TEST_DOUBLE(QuadReadAcrossDiagonal, double);
26172639

26182640
// Wave
26192641

@@ -2746,18 +2768,18 @@ class DxilConf_SM69_Vectorized {
27462768
HLK_WAVEOP_TEST(WaveMultiPrefixSum, float);
27472769
HLK_WAVEOP_TEST(WaveMultiPrefixProduct, float);
27482770
HLK_WAVEOP_TEST(WaveMatch, float);
2749-
HLK_WAVEOP_TEST(WaveActiveSum, double);
2750-
HLK_WAVEOP_TEST(WaveActiveMin, double);
2751-
HLK_WAVEOP_TEST(WaveActiveMax, double);
2752-
HLK_WAVEOP_TEST(WaveActiveProduct, double);
2753-
HLK_WAVEOP_TEST(WaveActiveAllEqual, double);
2754-
HLK_WAVEOP_TEST(WaveReadLaneAt, double);
2755-
HLK_WAVEOP_TEST(WaveReadLaneFirst, double);
2756-
HLK_WAVEOP_TEST(WavePrefixSum, double);
2757-
HLK_WAVEOP_TEST(WavePrefixProduct, double);
2758-
HLK_WAVEOP_TEST(WaveMultiPrefixSum, double);
2759-
HLK_WAVEOP_TEST(WaveMultiPrefixProduct, double);
2760-
HLK_WAVEOP_TEST(WaveMatch, double);
2771+
HLK_WAVEOP_TEST_DOUBLE(WaveActiveSum, double);
2772+
HLK_WAVEOP_TEST_DOUBLE(WaveActiveMin, double);
2773+
HLK_WAVEOP_TEST_DOUBLE(WaveActiveMax, double);
2774+
HLK_WAVEOP_TEST_DOUBLE(WaveActiveProduct, double);
2775+
HLK_WAVEOP_TEST_DOUBLE(WaveActiveAllEqual, double);
2776+
HLK_WAVEOP_TEST_DOUBLE(WaveReadLaneAt, double);
2777+
HLK_WAVEOP_TEST_DOUBLE(WaveReadLaneFirst, double);
2778+
HLK_WAVEOP_TEST_DOUBLE(WavePrefixSum, double);
2779+
HLK_WAVEOP_TEST_DOUBLE(WavePrefixProduct, double);
2780+
HLK_WAVEOP_TEST_DOUBLE(WaveMultiPrefixSum, double);
2781+
HLK_WAVEOP_TEST_DOUBLE(WaveMultiPrefixProduct, double);
2782+
HLK_WAVEOP_TEST_DOUBLE(WaveMatch, double);
27612783

27622784
private:
27632785
bool Initialized = false;

0 commit comments

Comments
 (0)