//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-vk -emit-spirv-directly // CHECK: 0 // CHECK-NEXT: 0 // CHECK-NEXT: 1 // CHECK-NEXT: 2 // CHECK: 0 // CHECK-NEXT: 0 // CHECK: 1 // CHECK-NEXT: 2 // CHECK: 0 // CHECK-NEXT: 0 // CHECK: 1 // CHECK-NEXT: 2 //TEST_INPUT:ubuffer(stride=4, count=256):out,name=outputBuffer RWStructuredBuffer outputBuffer; //TEST_INPUT:ubuffer(data=[4 3 5 7], stride=4, count=256),name=input1 ByteAddressBuffer input1; //TEST_INPUT:ubuffer(data=[2 3 4 5], stride=4, count=256),name=input2 ByteAddressBuffer input2; using namespace linalg; typealias CoopMatIntType = CoopMat; typealias CoopMatUintType = CoopMat; typealias CoopMatFloatType = CoopMat; [numthreads(32, 1, 1)] void computeMain() { let stride = 16; let mat1 = CoopMatIntType.Load(input1, 0, stride); let mat2 = CoopMatIntType.Load(input2, 0, stride); let mat3 = CoopMatFloatType(mat1); let mat4 = CoopMatFloatType(mat2); let mat5 = CoopMatUintType(mat1); let mat6 = CoopMatUintType(mat2); let result = mat1 % mat2; let result2 = CoopMatIntType(mat3 % mat4); let result3 = CoopMatIntType(mat5 % mat6); result.Store(outputBuffer, 0, stride); result2.Store(outputBuffer, 16, stride); result3.Store(outputBuffer, 32, stride); }