yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
d50c3f34a
master
1//TEST:SIMPLE(filecheck=CHECK_ANY):-target spirv-assembly -entry computeMain -stage compute 2//TEST:SIMPLE(filecheck=CHECK_ANY):-target spirv-assembly -entry computeMain -stage compute -denorm-mode-fp16 any 3//TEST:SIMPLE(filecheck=CHECK_PRESERVE):-target spirv-assembly -entry computeMain -stage compute -denorm-mode-fp16 preserve 4//TEST:SIMPLE(filecheck=CHECK_FTZ):-target spirv-assembly -entry computeMain -stage compute -denorm-mode-fp16 ftz 5 6//TEST:SIMPLE(filecheck=CHECK_DXIL):-target dxil-assembly -entry computeMain -stage compute -profile cs_6_2 7//TEST:SIMPLE(filecheck=CHECK_DXIL):-target dxil-assembly -entry computeMain -stage compute -profile cs_6_2 -denorm-mode-fp16 any 8//TEST:SIMPLE(filecheck=CHECK_DXIL):-target dxil-assembly -entry computeMain -stage compute -profile cs_6_2 -denorm-mode-fp16 preserve 9//TEST:SIMPLE(filecheck=CHECK_DXIL):-target dxil-assembly -entry computeMain -stage compute -profile cs_6_2 -denorm-mode-fp16 ftz 10 11//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=PRESERVE):-vk -compute -Xslang -denorm-mode-fp16 -Xslang preserve 12// Capability shaderDenormFlushToZeroFloat16 is VK_FALSE on the Vulkan device used for CI testing, resulting in 13// runtime error VUID-RuntimeSpirv-shaderDenormFlushToZeroFloat16-06299 during CI testing 14//DISABLE_TEST(compute):COMPARE_COMPUTE(filecheck-buffer=FTZ):-vk -compute -Xslang -denorm-mode-fp16 -Xslang ftz 15 16// CHECK_ANY-NOT: DenormPreserve 17// CHECK_ANY-NOT: DenormFlushToZero 18 19// CHECK_PRESERVE: OpExecutionMode %computeMain DenormPreserve 16 20// CHECK_PRESERVE-NOT: OpExecutionMode %computeMain DenormPreserve 32 21// CHECK_PRESERVE-NOT: OpExecutionMode %computeMain DenormPreserve 64 22// CHECK_PRESERVE-NOT: DenormFlushToZero 23 24// CHECK_FTZ: OpExecutionMode %computeMain DenormFlushToZero 16 25// CHECK_FTZ-NOT: OpExecutionMode %computeMain DenormFlushToZero 32 26// CHECK_FTZ-NOT: OpExecutionMode %computeMain DenormFlushToZero 64 27// CHECK_FTZ-NOT: DenormPreserve 28 29// CHECK_DXIL-NOT: fp32-denorm-mode 30// CHECK_DXIL-NOT: preserve 31// CHECK_DXIL-NOT: ftz 32 33// In preserve mode, denormalized numbers should be preserved 34// PRESERVE: 66 35 36// In flush-to-zero mode, denormalized numbers should be flushed to zero 37// FTZ: 0 38 39// Smallest normal fp16 40//TEST_INPUT: set inputBuffer = ubuffer(data=[0x0400], stride=2) 41RWStructuredBuffer<half> inputBuffer; 42 43//TEST_INPUT:ubuffer(data=[0], stride=2):out,name=outputBuffer 44RWStructuredBuffer<half> outputBuffer; 45 46[shader("compute")] 47[numthreads(1, 1, 1)] 48void computeMain() 49{ 50 half smallestNormal = inputBuffer[0]; 51 half denormal = smallestNormal / 10; 52 53 outputBuffer[0] = denormal; 54}