diff options
Diffstat (limited to 'tests')
5 files changed, 117 insertions, 89 deletions
diff --git a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-assign.slang b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-assign.slang index c4b40c2ac..7f5be6243 100644 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-assign.slang +++ b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-assign.slang @@ -1,7 +1,7 @@ // hit-object-assign.slang -//TEST:SIMPLE: -target dxil -entry computeMain -stage compute -profile sm_6_5 -DNV_SHADER_EXTN_SLOT=u0 -//TEST:SIMPLE: -target glsl -entry computeMain -stage compute -profile sm_6_5 -line-directive-mode none +//TEST:SIMPLE: -target dxil -entry rayGenerationMain -stage raygeneration -profile sm_6_5 -DNV_SHADER_EXTN_SLOT=u0 +//TEST:SIMPLE: -target glsl -entry rayGenerationMain -stage raygeneration -profile glsl_460+GL_EXT_ray_tracing -O0 -line-directive-mode none //DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -output-using-type -profile sm_6_5 -nvapi-slot u0 //DISABLE_TEST(compute):COMPARE_COMPUTE:-d3d12 -output-using-type -use-dxil -profile sm_6_5 -render-feature ray-query @@ -10,10 +10,12 @@ //TEST_INPUT:ubuffer(data=[0 0 0 0 0], stride=4):out,name=outputBuffer RWStructuredBuffer<uint> outputBuffer; -[numthreads(4, 1, 1)] -void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +void rayGenerationMain() { - int idx = int(dispatchThreadID.x); + int2 launchID = int2(DispatchRaysIndex().xy); + int2 launchSize = int2(DispatchRaysDimensions().xy); + + int idx = int(launchID.x); RayDesc ray; ray.Origin = float3(idx, 0, 0); diff --git a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-assign.slang.1.expected b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-assign.slang.1.expected index e7b370664..ffcb45171 100644 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-assign.slang.1.expected +++ b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-assign.slang.1.expected @@ -2,7 +2,7 @@ result code = 0 standard error = { } standard output = { -#version 450 +#version 460 #extension GL_EXT_ray_tracing : require #extension GL_NV_shader_invocation_reorder : require layout(row_major) uniform; @@ -18,24 +18,26 @@ struct RayDesc_0 float TMax_0; }; -layout(local_size_x = 4, local_size_y = 1, local_size_z = 1) in; void main() { - int idx_0 = int(gl_GlobalInvocationID.x); + uvec3 _S2 = ((gl_LaunchIDEXT)); + ivec2 launchID_0 = ivec2(_S2.xy); + uvec3 _S3 = ((gl_LaunchSizeEXT)); + int idx_0 = int(launchID_0.x); RayDesc_0 ray_0; ray_0.Origin_0 = vec3(float(idx_0), 0.00000000000000000000, 0.00000000000000000000); ray_0.TMin_0 = 0.00999999977648258209; ray_0.Direction_0 = vec3(0.00000000000000000000, 1.00000000000000000000, 0.00000000000000000000); ray_0.TMax_0 = 10000.00000000000000000000; - RayDesc_0 _S2 = ray_0; + RayDesc_0 _S4 = ray_0; hitObjectNV hitObj_0; - hitObjectRecordMissNV(hitObj_0, uint(idx_0), _S2.Origin_0, _S2.TMin_0, _S2.Direction_0, _S2.TMax_0); - RayDesc_0 _S3 = ray_0; + hitObjectRecordMissNV(hitObj_0, uint(idx_0), _S4.Origin_0, _S4.TMin_0, _S4.Direction_0, _S4.TMax_0); + RayDesc_0 _S5 = ray_0; hitObjectNV hitObj_1; - hitObjectRecordMissNV(hitObj_1, uint(idx_0 + 1), _S3.Origin_0, _S3.TMin_0, _S3.Direction_0, _S3.TMax_0); - bool _S4 = (hitObjectIsMissNV((hitObj_1))); - uint _S5 = uint(int(_S4)); - ((outputBuffer_0)._data[(uint(idx_0))]) = _S5; + hitObjectRecordMissNV(hitObj_1, uint(idx_0 + 1), _S5.Origin_0, _S5.TMin_0, _S5.Direction_0, _S5.TMax_0); + bool _S6 = (hitObjectIsMissNV((hitObj_1))); + uint _S7 = uint(int(_S6)); + ((outputBuffer_0)._data[(uint(idx_0))]) = _S7; return; } diff --git a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-assign.slang.expected b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-assign.slang.expected index db8b93407..e09c2067e 100644 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-assign.slang.expected +++ b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-assign.slang.expected @@ -3,24 +3,10 @@ standard error = { } standard output = { ; -; Input signature: -; -; Name Index Mask Register SysValue Format Used -; -------------------- ----- ------ -------- -------- ------- ------ -; no parameters -; -; Output signature: -; -; Name Index Mask Register SysValue Format Used -; -------------------- ----- ------ -------- -------- ------- ------ -; no parameters -; shader hash: 04bfde91b0cbfbe401b763d621f07e2a -; -; Pipeline Runtime Information: -; -; Compute Shader -; NumThreads=(4,1,1) +; Note: shader requires additional functionality: +; UAVs at every shader stage ; +; shader hash: b6ad0ea7247d4a3fc348d91ac190fac1 ; ; Buffer Definitions: ; @@ -67,67 +53,103 @@ standard output = { target datalayout = "e-m:e-p:32:32-i1:32-i8:8-i16:16-i32:32-i64:64-f16:16-f32:32-f64:64-n8:16:32:64" target triple = "dxil-ms-dx" -%dx.types.Handle = type { i8* } %"class.RWStructuredBuffer<NvShaderExtnStruct>" = type { %struct.NvShaderExtnStruct } %struct.NvShaderExtnStruct = type { i32, i32, i32, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32, i32, [27 x float] } %"class.RWStructuredBuffer<unsigned int>" = type { i32 } +%dx.types.Handle = type { i8* } + +@"\01?g_NvidiaExt@@3V?$RWStructuredBuffer@UNvShaderExtnStruct@@@@A" = external constant %"class.RWStructuredBuffer<NvShaderExtnStruct>", align 4 +@"\01?outputBuffer_0@@3V?$RWStructuredBuffer@I@@A" = external constant %"class.RWStructuredBuffer<unsigned int>", align 4 -define void @computeMain() { - %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 1, i32 1, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex) - %2 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 0, i32 0, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex) - %3 = call i32 @dx.op.threadId.i32(i32 93, i32 0) ; ThreadId(component) +; Function Attrs: nounwind +define void @"\01?rayGenerationMain@@YAXXZ"() #0 { + %1 = load %"class.RWStructuredBuffer<unsigned int>", %"class.RWStructuredBuffer<unsigned int>"* @"\01?outputBuffer_0@@3V?$RWStructuredBuffer@I@@A", align 4 + %2 = load %"class.RWStructuredBuffer<NvShaderExtnStruct>", %"class.RWStructuredBuffer<NvShaderExtnStruct>"* @"\01?g_NvidiaExt@@3V?$RWStructuredBuffer@UNvShaderExtnStruct@@@@A", align 4 + %3 = call i32 @dx.op.dispatchRaysIndex.i32(i32 145, i8 0) ; DispatchRaysIndex(col) %4 = sitofp i32 %3 to float - %5 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %2, i8 1) ; BufferUpdateCounter(uav,inc) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %5, i32 0, i32 70, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %5, i32 76, i32 %3, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %5, i32 80, i32 1008981770, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %5, i32 84, i32 1176256512, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %6 = bitcast float %4 to i32 - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %5, i32 92, i32 %6, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %5, i32 96, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %5, i32 100, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %5, i32 108, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %5, i32 112, i32 1065353216, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %5, i32 116, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %7 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %2, i8 1) ; BufferUpdateCounter(uav,inc) - %8 = add nsw i32 %3, 1 - %9 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %2, i8 1) ; BufferUpdateCounter(uav,inc) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %9, i32 0, i32 70, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %9, i32 76, i32 %8, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %9, i32 80, i32 1008981770, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %9, i32 84, i32 1176256512, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %10 = bitcast float %4 to i32 - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %9, i32 92, i32 %10, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %9, i32 96, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %9, i32 100, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %9, i32 108, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %9, i32 112, i32 1065353216, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %9, i32 116, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %11 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %2, i8 1) ; BufferUpdateCounter(uav,inc) - %12 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %2, i8 1) ; BufferUpdateCounter(uav,inc) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %12, i32 0, i32 73, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %12, i32 76, i32 %11, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %13 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %2, i8 1) ; BufferUpdateCounter(uav,inc) - %14 = icmp ne i32 %13, 0 - %15 = zext i1 %14 to i32 - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %1, i32 %3, i32 0, i32 %15, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %5 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + %6 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %5, i8 1) ; BufferUpdateCounter(uav,inc) + %7 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %7, i32 %6, i32 0, i32 70, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %8 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %8, i32 %6, i32 76, i32 %3, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %9 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %9, i32 %6, i32 80, i32 1008981770, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %10 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %10, i32 %6, i32 84, i32 1176256512, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %11 = bitcast float %4 to i32 + %12 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %12, i32 %6, i32 92, i32 %11, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %13 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %13, i32 %6, i32 96, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %14 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %14, i32 %6, i32 100, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %15 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %15, i32 %6, i32 108, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %16 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %16, i32 %6, i32 112, i32 1065353216, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %17 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %17, i32 %6, i32 116, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %18 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + %19 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %18, i8 1) ; BufferUpdateCounter(uav,inc) + %20 = add nsw i32 %3, 1 + %21 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + %22 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %21, i8 1) ; BufferUpdateCounter(uav,inc) + %23 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %23, i32 %22, i32 0, i32 70, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %24 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %24, i32 %22, i32 76, i32 %20, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %25 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %25, i32 %22, i32 80, i32 1008981770, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %26 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %26, i32 %22, i32 84, i32 1176256512, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %27 = bitcast float %4 to i32 + %28 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %28, i32 %22, i32 92, i32 %27, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %29 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %29, i32 %22, i32 96, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %30 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %30, i32 %22, i32 100, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %31 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %31, i32 %22, i32 108, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %32 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %32, i32 %22, i32 112, i32 1065353216, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %33 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %33, i32 %22, i32 116, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %34 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + %35 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %34, i8 1) ; BufferUpdateCounter(uav,inc) + %36 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + %37 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %36, i8 1) ; BufferUpdateCounter(uav,inc) + %38 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %38, i32 %37, i32 0, i32 73, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %39 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %39, i32 %37, i32 76, i32 %35, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) + %40 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) + %41 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %40, i8 1) ; BufferUpdateCounter(uav,inc) + %42 = icmp ne i32 %41, 0 + %43 = zext i1 %42 to i32 + %44 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<unsigned int>"(i32 160, %"class.RWStructuredBuffer<unsigned int>" %1) ; CreateHandleForLib(Resource) + call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %44, i32 %3, i32 0, i32 %43, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) ret void } -; Function Attrs: nounwind readnone -declare i32 @dx.op.threadId.i32(i32, i32) #0 - ; Function Attrs: nounwind -declare void @dx.op.rawBufferStore.i32(i32, %dx.types.Handle, i32, i32, i32, i32, i32, i32, i8, i32) #1 +declare i32 @dx.op.bufferUpdateCounter(i32, %dx.types.Handle, i8) #0 ; Function Attrs: nounwind -declare i32 @dx.op.bufferUpdateCounter(i32, %dx.types.Handle, i8) #1 +declare void @dx.op.rawBufferStore.i32(i32, %dx.types.Handle, i32, i32, i32, i32, i32, i32, i8, i32) #0 + +; Function Attrs: nounwind readnone +declare i32 @dx.op.dispatchRaysIndex.i32(i32, i8) #1 + +; Function Attrs: nounwind readonly +declare %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32, %"class.RWStructuredBuffer<NvShaderExtnStruct>") #2 ; Function Attrs: nounwind readonly -declare %dx.types.Handle @dx.op.createHandle(i32, i8, i32, i32, i1) #2 +declare %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<unsigned int>"(i32, %"class.RWStructuredBuffer<unsigned int>") #2 -attributes #0 = { nounwind readnone } -attributes #1 = { nounwind } +attributes #0 = { nounwind } +attributes #1 = { nounwind readnone } attributes #2 = { nounwind readonly } !llvm.ident = !{!0} @@ -135,19 +157,21 @@ attributes #2 = { nounwind readonly } !dx.valver = !{!2} !dx.shaderModel = !{!3} !dx.resources = !{!4} -!dx.entryPoints = !{!10} +!dx.entryPoints = !{!10, !12} !0 = !{!"clang version 3.7 (tags/RELEASE_370/final)"} !1 = !{i32 1, i32 5} !2 = !{i32 1, i32 7} -!3 = !{!"cs", i32 6, i32 5} +!3 = !{!"lib", i32 6, i32 5} !4 = !{null, !5, null, null} !5 = !{!6, !8} -!6 = !{i32 0, %"class.RWStructuredBuffer<NvShaderExtnStruct>"* undef, !"", i32 0, i32 0, i32 1, i32 12, i1 false, i1 true, i1 false, !7} +!6 = !{i32 0, %"class.RWStructuredBuffer<NvShaderExtnStruct>"* @"\01?g_NvidiaExt@@3V?$RWStructuredBuffer@UNvShaderExtnStruct@@@@A", !"g_NvidiaExt", i32 0, i32 0, i32 1, i32 12, i1 false, i1 true, i1 false, !7} !7 = !{i32 1, i32 256} -!8 = !{i32 1, %"class.RWStructuredBuffer<unsigned int>"* undef, !"", i32 0, i32 1, i32 1, i32 12, i1 false, i1 false, i1 false, !9} +!8 = !{i32 1, %"class.RWStructuredBuffer<unsigned int>"* @"\01?outputBuffer_0@@3V?$RWStructuredBuffer@I@@A", !"outputBuffer_0", i32 0, i32 1, i32 1, i32 12, i1 false, i1 false, i1 false, !9} !9 = !{i32 1, i32 4} -!10 = !{void ()* @computeMain, !"computeMain", null, !4, !11} -!11 = !{i32 0, i64 8388624, i32 4, !12} -!12 = !{i32 4, i32 1, i32 1} +!10 = !{null, !"", null, !4, !11} +!11 = !{i32 0, i64 8454160} +!12 = !{void ()* @"\01?rayGenerationMain@@YAXXZ", !"\01?rayGenerationMain@@YAXXZ", null, null, !13} +!13 = !{i32 8, i32 7, i32 5, !14} +!14 = !{i32 0} } diff --git a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-hit.slang.1.expected b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-hit.slang.1.expected index 167c93aff..8fc391feb 100644 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-hit.slang.1.expected +++ b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-hit.slang.1.expected @@ -94,11 +94,11 @@ void main() ray_2.TMax_0 = 10000.00000000000000000000; RayDesc_0 _S10 = ray_2; hitObjectNV hitObj_0; - hitObjectRecordHitWithIndexNV(hitObj_0, scene_0, uint(idx_0), uint(idx_0 * 2), uint(idx_0 * 3), 0U, 0U, _S10.Origin_0, _S10.TMin_0, _S10.Direction_0, _S10.TMax_0, (0)); + hitObjectRecordHitWithIndexNV(hitObj_0, scene_0, int(uint(idx_0)), int(uint(idx_0 * 2)), int(uint(idx_0 * 3)), 0U, 0U, _S10.Origin_0, _S10.TMin_0, _S10.Direction_0, _S10.TMax_0, (0)); uint r_4 = calcValue_0(hitObj_0); RayDesc_0 _S11 = ray_2; hitObjectNV hitObj_1; - hitObjectRecordHitNV(hitObj_1, scene_0, uint(idx_0), uint(idx_0 * 3), uint(idx_0 * 2), 0U, 0U, 4U, _S11.Origin_0, _S11.TMin_0, _S11.Direction_0, _S11.TMax_0, (0)); + hitObjectRecordHitNV(hitObj_1, scene_0, int(uint(idx_0)), int(uint(idx_0 * 3)), int(uint(idx_0 * 2)), 0U, 0U, 4U, _S11.Origin_0, _S11.TMin_0, _S11.Direction_0, _S11.TMax_0, (0)); uint _S12 = calcValue_0(hitObj_1); uint r_5 = r_4 + _S12; ((outputBuffer_0)._data[(uint(idx_0))]) = r_5; diff --git a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-trace-motion-ray.slang.1.expected b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-trace-motion-ray.slang.1.expected index 2d1ef23ed..a86dc6aa7 100644 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-trace-motion-ray.slang.1.expected +++ b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-trace-motion-ray.slang.1.expected @@ -5,7 +5,7 @@ standard output = { #version 460 #extension GL_EXT_ray_tracing : require #extension GL_NV_shader_invocation_reorder : require -#extension GLSL_NV_ray_tracing_motion_blur : require +#extension GL_NV_ray_tracing_motion_blur : require layout(row_major) uniform; layout(row_major) buffer; struct SomeValues_0 |
