Skip to content

Commit a92d9fc

Browse files
committed
[SM6.10] Add Smoke Test For VectorAccumulate
1 parent 654d66f commit a92d9fc

1 file changed

Lines changed: 40 additions & 0 deletions

File tree

tools/clang/unittests/HLSLExec/LinAlgTests.cpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,9 @@ class DxilConf_SM610_LinAlg {
359359
// Convert
360360
TEST_METHOD(Convert);
361361

362+
// Vector Accumulate
363+
TEST_METHOD(VectorAccumulateDescriptor_Thread_F16);
364+
362365
private:
363366
CComPtr<ID3D12Device> D3DDevice;
364367
dxc::SpecificDllLoader DxcSupport;
@@ -1718,4 +1721,41 @@ void DxilConf_SM610_LinAlg::Convert() {
17181721
runConvert(D3DDevice, DxcSupport, VerboseLogging);
17191722
}
17201723

1724+
static const char VectorAccumulateDescriptorShader[] = R"(
1725+
RWByteAddressBuffer Output : register(u0);
1726+
1727+
[numthreads(1, 1, 1)]
1728+
void main() {
1729+
vector<half, 4> InVec = {1.0, 2.0, 3.0, 4.0};
1730+
__builtin_LinAlg_VectorAccumulateToDescriptor(InVec, Output, 0, 64);
1731+
}
1732+
)";
1733+
1734+
static void runVectorAccumulateDescriptor(ID3D12Device *Device, dxc::SpecificDllLoader &DxcSupport,
1735+
bool Verbose) {
1736+
std::string Args = "-HV 202x";
1737+
MatrixDim NumElements = 4;
1738+
size_t BufferSize = elementSize(ComponentType::F16) * NumElements;
1739+
1740+
compileShader(DxcSupport, VectorAccumulateDescriptorShader, "cs_6_10", Args, Verbose);
1741+
1742+
auto Expected = makeExpectedVec(ComponentType::F16, NumElements, 1.0);
1743+
1744+
auto Op = createComputeOp(VectorAccumulateDescriptorShader, "cs_6_10", "UAV(u0)", Args.c_str());
1745+
addUAVBuffer(Op.get(), "Output", BufferSize, true);
1746+
addRootView(Op.get(), 0, "Output");
1747+
1748+
auto Result = runShaderOp(Device, DxcSupport, std::move(Op));
1749+
1750+
MappedData OutData;
1751+
Result->Test->GetReadBackData("Output", &OutData);
1752+
1753+
VERIFY_IS_TRUE(verifyComponentBuffer(ComponentType::F16, OutData.data(),
1754+
Expected, NumElements, Verbose));
1755+
}
1756+
1757+
void DxilConf_SM610_LinAlg::VectorAccumulateDescriptor_Thread_F16() {
1758+
runVectorAccumulateDescriptor(D3DDevice, DxcSupport, VerboseLogging);
1759+
}
1760+
17211761
} // namespace LinAlg

0 commit comments

Comments
 (0)