//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cpu -compute -shaderobj //TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-slang -compute -shaderobj //TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-slang -compute -dx12 -shaderobj //TEST(compute, vulkan):COMPARE_COMPUTE(filecheck-buffer=CHECK):-vk -compute -shaderobj //TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cuda -compute -shaderobj //TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0], stride=4):out,name outputBuffer RWStructuredBuffer outputBuffer; struct Thing { int val; Tuple tuple; }; int tupleSize1(T vals) { return sizeof(Tuple); } int tupleSize2(T vals) { return sizeof(Tuple); } int tupleSize3(T vals) { return sizeof(Tuple); } int tupleSize4(T vals) { return sizeof(Thing); } [numthreads(1, 1, 1)] void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) { outputBuffer[0] = tupleSize2(); // CHECK: 0 outputBuffer[1] = tupleSize3(); // CHECK-NEXT: 4 outputBuffer[2] = tupleSize4(); // CHECK-NEXT: 4 outputBuffer[3] = tupleSize1(1); // CHECK-NEXT: 4 outputBuffer[4] = tupleSize2(1,2); // CHECK-NEXT: 8 outputBuffer[5] = tupleSize3(1,2,3); // CHECK-NEXT: 10 outputBuffer[6] = tupleSize4(1,2,3,4); // CHECK-NEXT: 14 }