//TEST:SIMPLE(filecheck=CHECK_GLSL): -allow-glsl -stage compute -entry computeMain -target glsl //TEST:SIMPLE(filecheck=CHECK_SPV): -allow-glsl -stage compute -entry computeMain -target spirv -emit-spirv-directly // not testing hlsl due to missing impl //DISABLE_TEST:SIMPLE(filecheck=CHECK_HLSL): -allow-glsl -stage compute -entry computeMain -target hlsl -DTARGET_HLSL // not testing cuda due to missing impl //DISABLE_TEST:SIMPLE(filecheck=CHECK_CUDA): -allow-glsl -stage compute -entry computeMain -target cuda -DTARGET_CUDA // not testing cpp due to missing impl //DISABLE_TEST:SIMPLE(filecheck=CHECK_CPP): -allow-glsl -stage compute -entry computeMain -target cpp -DTARGET_CPP //TEST(compute, vulkan):COMPARE_COMPUTE(filecheck-buffer=BUF):-vk -compute -entry computeMain -allow-glsl //TEST(compute, vulkan):COMPARE_COMPUTE(filecheck-buffer=BUF):-vk -compute -entry computeMain -allow-glsl -emit-spirv-directly //TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUF):-wgpu -compute -entry computeMain -allow-glsl -xslang -DWGPU -render-feature half //TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUF):-metal -compute -entry computeMain -allow-glsl -xslang -DMETAL #version 430 //TEST_INPUT:ubuffer(data=[0], stride=4):out,name=outputBuffer buffer MyBlockName2 { uint data[]; } outputBuffer; layout(local_size_x = 32) in; __generic bool test1ShuffleX() { return true & subgroupShuffleUp(T(1), 1) == T(1) & subgroupShuffleDown(T(1), 1) == T(1) ; } __generic bool testVShuffleX() { typealias gvec = vector; return true & subgroupShuffleUp(gvec(T(1)), 1) == gvec(T(1)) & subgroupShuffleDown(gvec(T(1)), 1) == gvec(T(1)) ; } __generic bool test1ShuffleX() { return true & subgroupShuffleUp(T(1), 1) == T(1) & subgroupShuffleDown(T(1), 1) == T(1) ; } __generic bool testVShuffleX() { typealias gvec = vector; return true & subgroupShuffleUp(gvec(T(1)), 1) == gvec(T(1)) & subgroupShuffleDown(gvec(T(1)), 1) == gvec(T(1)) ; } bool testShuffleX() { return true & test1ShuffleX() & testVShuffleX() & testVShuffleX() & testVShuffleX() & test1ShuffleX() & testVShuffleX() & testVShuffleX() & testVShuffleX() & test1ShuffleX() & testVShuffleX() & testVShuffleX() & testVShuffleX() & test1ShuffleX() & testVShuffleX() & testVShuffleX() & testVShuffleX() // Disabled on WGPU and Metal as these built-in types are not supported as of time of writing. #if !defined(WGPU) && !defined(METAL) & test1ShuffleX() // WARNING: intel GPU's lack FP64 support & testVShuffleX() & testVShuffleX() & testVShuffleX() & test1ShuffleX() & testVShuffleX() & testVShuffleX() & testVShuffleX() & test1ShuffleX() & testVShuffleX() & testVShuffleX() & testVShuffleX() & test1ShuffleX() & testVShuffleX() & testVShuffleX() & testVShuffleX() & test1ShuffleX() & testVShuffleX() & testVShuffleX() & testVShuffleX() & test1ShuffleX() & testVShuffleX() & testVShuffleX() & testVShuffleX() #endif // Disabled on WGPU as these built-in types are not supported as of time of writing. #if !defined(WGPU) & test1ShuffleX() & testVShuffleX() & testVShuffleX() & testVShuffleX() & test1ShuffleX() & testVShuffleX() & testVShuffleX() & testVShuffleX() #endif ; } void computeMain() { outputBuffer.data[0] = true & testShuffleX() ; // CHECK_GLSL: void main( // CHECK_SPV: OpEntryPoint // CHECK_HLSL: void computeMain( // CHECK_CUDA: void computeMain( // CHECK_CPP: void _computeMain( // BUF: 1 }