diff options
| author | ArielG-NV <159081215+ArielG-NV@users.noreply.github.com> | 2024-03-15 16:14:32 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-15 16:14:32 -0400 |
| commit | 9b434e50f02f9ec02ce230de9042ce7448bae451 (patch) | |
| tree | 092aaecc785047a8005462764404f9c530e3a69c /tests | |
| parent | 9ee88a43f4e67d9c714c27bf968401b6bf7524af (diff) | |
Implement raytracing extension(s); resolves #3560 for GLSL & SPIR-V targets (#3675)
The following PR implements raytracing extensions (GLSL_EXT_ray_tracing, GLSL_EXT_ray_query, GLSL_NV_shader_invocation_reorder & GLSL_NV_ray_tracing_motion_blur); for GLSL & SPIR-V targets. Fully implements all functions, built-in variables, & syntax; resolves #3560 for GLSL & SPIR-V Targets.
notes of worth:
* __rayPayloadFromLocation, __rayAttributeFromLocation, and __rayCallableFromLocation, were added as SPIR-V Intrinsics to refer to location's of raytracing objects in SPIR-V for when using GLSL syntax.
Diffstat (limited to 'tests')
21 files changed, 651 insertions, 2310 deletions
diff --git a/tests/glsl-intrinsic/raytracing/glsl-rayAnyhit.slang b/tests/glsl-intrinsic/raytracing/glsl-rayAnyhit.slang new file mode 100644 index 000000000..0ad09d64d --- /dev/null +++ b/tests/glsl-intrinsic/raytracing/glsl-rayAnyhit.slang @@ -0,0 +1,29 @@ +//TEST:SIMPLE(filecheck=CHECK_GLSL): -allow-glsl -stage anyhit -entry main -target glsl +//TEST:SIMPLE(filecheck=CHECK_SPV): -allow-glsl -emit-spirv-directly -stage anyhit -entry main -target spirv-assembly + +layout(binding = 0) uniform accelerationStructureEXT as; + +//TEST_INPUT:ubuffer(data=[0], stride=4):out,name=outputBuffer +buffer MyBlockName +{ + uint data[]; +} outputBuffer; + +bool testVars() { + return true +// CHECK_GLSL-DAG: gl_HitTEXT +// CHECK_SPV-DAG: RayTmaxNV + && gl_HitTEXT != 99.0f +// CHECK_GLSL-DAG: gl_HitKindEXT +// CHECK_SPV-DAG: HitKindNV + && gl_HitKindEXT != 0xFFFFFFFF + ; +} + +void main() +{ + outputBuffer.data[0] = true + && testVars() + ; + //BUF: 1 +} diff --git a/tests/glsl-intrinsic/raytracing/glsl-rayCompute.slang b/tests/glsl-intrinsic/raytracing/glsl-rayCompute.slang new file mode 100644 index 000000000..7d4950271 --- /dev/null +++ b/tests/glsl-intrinsic/raytracing/glsl-rayCompute.slang @@ -0,0 +1,106 @@ +//TEST:SIMPLE(filecheck=CHECK_GLSL): -allow-glsl -stage compute -entry computeMain -target glsl +//TEST:SIMPLE(filecheck=CHECK_SPV): -allow-glsl -emit-spirv-directly -stage compute -entry computeMain -target spirv-assembly + +//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUF): -allow-glsl -vk -compute -output-using-type -render-feature ray-query -entry computeMain +//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUF): -allow-glsl -vk -compute -output-using-type -render-feature ray-query -emit-spirv-directly -entry computeMain + +// note: the referenced input data is in render-test-main kVertexData; 1 triangle at {(0,0,0.5),(0,1,0.5),(1,0,0.5)} +//TEST_INPUT: set scene = AccelerationStructure +layout(binding = 0) uniform accelerationStructureEXT scene; + +//TEST_INPUT:ubuffer(data=[0], stride=4):out,name=outputBuffer +buffer MyBlockName +{ + uint data[]; +} outputBuffer; + +__generic<T : __BuiltinFloatingPointType, let N : int, let M : int> +bool equals(matrix<T, N, M> lhs, matrix<T, N, M> rhs) +{ + for (int i = 0; i < N; i++) + { + for (int j = 0; j < M; j++) + { + if ( + lhs[i][j] + != + rhs[i][j] + ) + { + return false; + } + } + } + return true; +} + +bool testAbortRayTrace() { + rayQueryEXT q; + rayQueryInitializeEXT(q, scene, gl_RayFlagsNoneEXT, 0xff, vec3(0.1, 0.1, 0.0), 0.01f, vec3(0, 0, 1), 1e4f); + rayQueryTerminateEXT(q); + + return true + && rayQueryGetIntersectionTypeEXT(q, true) == gl_RayQueryCommittedIntersectionNoneEXT + ; +} + +bool testProceedRayTrace() { + rayQueryEXT q; + rayQueryInitializeEXT(q, scene, gl_RayFlagsNoneEXT, 0xff, vec3(0.1, 0.1, 0.0), 0.01f, vec3(0, 0, 1), 1e4f); + rayQueryProceedEXT(q); + + return true + && rayQueryGetIntersectionTypeEXT(q, true) == gl_RayQueryCommittedIntersectionTriangleEXT + && rayQueryGetIntersectionTEXT(q, true) == 0.5 + ; +} + +bool testProceedRayAuxInfo() { + rayQueryEXT q; + rayQueryInitializeEXT(q, scene, gl_RayFlagsNoneEXT, 0xff, vec3(0.1, 0.1, 0.0), 0.01f, vec3(0, 0, 1), 1e4f); + rayQueryProceedEXT(q); + + return true + && rayQueryGetRayTMinEXT(q) == 0.01f + && rayQueryGetRayFlagsEXT(q) == gl_RayFlagsNoneEXT + && rayQueryGetWorldRayOriginEXT(q) == vec3(0.1, 0.1, 0.0) + && rayQueryGetWorldRayDirectionEXT(q) == vec3(0, 0, 1) + && rayQueryGetIntersectionInstanceCustomIndexEXT(q, true) == 0 + && rayQueryGetIntersectionInstanceIdEXT(q, true) == 0 + && rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(q, true) == 0 + && rayQueryGetIntersectionGeometryIndexEXT(q, true) == 0 + && rayQueryGetIntersectionPrimitiveIndexEXT(q, true) == 0 + && rayQueryGetIntersectionBarycentricsEXT(q, true) == vec2(0.1) + && rayQueryGetIntersectionFrontFaceEXT(q, true) == true + && rayQueryGetIntersectionCandidateAABBOpaqueEXT(q) == true + && rayQueryGetIntersectionObjectRayDirectionEXT(q, true) == vec3(0, 0, 1) + && rayQueryGetIntersectionObjectRayOriginEXT(q, true) == vec3(0.1, 0.1, 0.0) + && !equals(rayQueryGetIntersectionObjectToWorldEXT(q, true), mat4x3(0)) // some compile error to sort later + && !equals(rayQueryGetIntersectionWorldToObjectEXT(q, true), mat4x3(0)) + ; +} +bool testRayTraceGenerate() { + rayQueryEXT q; + rayQueryInitializeEXT(q, scene, gl_RayFlagsNoneEXT, 0xff, vec3(0.1, 0.1, 0.0), 0.01f, vec3(0, 0, 1), 1e4f); + rayQueryGenerateIntersectionEXT(q, 0.5); + rayQueryConfirmIntersectionEXT(q); + + return true + && rayQueryGetIntersectionTypeEXT(q, true) == gl_RayQueryCommittedIntersectionTriangleEXT + ; +} + +// CHECK_GLSL-DAG: main +// CHECK_SPV-DAG: OpEntryPoint +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void computeMain() +{ + outputBuffer.data[0] = true + && testAbortRayTrace() + //&& testProceedRayTrace() + //&& testProceedRayAuxInfo() + //&& testRayTraceGenerate() + ; + // BUF: 1 +} + diff --git a/tests/glsl-intrinsic/raytracing/glsl-rayGen.slang b/tests/glsl-intrinsic/raytracing/glsl-rayGen.slang new file mode 100644 index 000000000..ba4663f12 --- /dev/null +++ b/tests/glsl-intrinsic/raytracing/glsl-rayGen.slang @@ -0,0 +1,333 @@ +//TEST:SIMPLE(filecheck=CHECK_GLSL): -allow-glsl -stage raygeneration -entry main -target glsl +//TEST:SIMPLE(filecheck=CHECK_SPV): -allow-glsl -emit-spirv-directly -stage raygeneration -entry main -target spirv-assembly + +layout(binding = 0) uniform accelerationStructureEXT as; + +//TEST_INPUT:ubuffer(data=[0], stride=4):out,name=outputBuffer +buffer MyBlockName +{ + uint data[]; +} outputBuffer; + +// CHECK_GLSL-DAG: rayPayloadEXT +// CHECK_SPV-DAG: RayPayloadNV +layout(location = 2) rayPayloadEXT vec4 payload; +// CHECK_GLSL-DAG: hitObjectAttributeNV +// CHECK_SPV-DAG: HitObjectAttributeNV +layout(location = 2) hitObjectAttributeNV vec4 attrMain; +// CHECK_GLSL-DAG: callableDataEXT +// CHECK_SPV-DAG: CallableDataNV +layout(location = 0) callableDataEXT vec4 outcall; + +__generic<T : __BuiltinFloatingPointType, let N : int, let M : int> +bool equals(matrix<T, N, M> lhs, matrix<T, N, M> rhs) +{ + for (int i = 0; i < N; i++) + { + for (int j = 0; j < M; j++) + { + if ( + lhs[i][j] + != + rhs[i][j] + ) + { + return false; + } + } + } + return true; +} + +bool testHitObjectTraceRay() { + hitObjectNV hit; +// CHECK_GLSL-DAG: hitObjectTraceRayNV +// CHECK_SPV-DAG: OpHitObjectTraceRayNV + hitObjectTraceRayNV(hit, as, gl_RayFlagsNoneEXT, 0xff, 0, 0, 0, vec3(0.1, 0.1, 0.0), 0.01f, vec3(0, 0, 1), 1e4f, 2); + return true +// CHECK_GLSL-DAG: hitObjectIsHitNV +// CHECK_SPV-DAG: OpHitObjectIsHitNV + && hitObjectIsHitNV(hit) == true + ; +} + +bool testHitObjectTraceRayWithAuxInfo() { + hitObjectNV hit; +// CHECK_GLSL-DAG: hitObjectTraceRayNV +// CHECK_SPV-DAG: OpHitObjectTraceRayNV + hitObjectTraceRayNV(hit, as, gl_RayFlagsNoneEXT, 0xff, 0, 0, 0, vec3(0.1, 0.1, 0.0), 0.01f, vec3(0, 0, 1), 1e4f, 2); +// CHECK_GLSL-DAG: hitObjectGetAttributesNV +// CHECK_SPV-DAG: OpHitObjectGetAttributesNV + hitObjectGetAttributesNV(hit, 2); + vec4 testCopy = attrMain; + +// CHECK_GLSL-DAG: reorderThreadNV +// CHECK_SPV-DAG: OpReorderThreadWithHintNV + reorderThreadNV(0, 3); +// CHECK_GLSL-DAG: reorderThreadNV +// CHECK_SPV-DAG: OpReorderThreadWithHitObjectNV + reorderThreadNV(hit); +// CHECK_GLSL-DAG: reorderThreadNV +// CHECK_SPV-DAG: OpReorderThreadWithHitObjectNV + reorderThreadNV(hit, 0, 3); + + return true +// CHECK_GLSL-DAG: hitObjectGetShaderBindingTableRecordIndexNV +// CHECK_SPV-DAG: OpHitObjectGetShaderBindingTableRecordIndexNV + && hitObjectGetShaderBindingTableRecordIndexNV(hit) == 0 +// CHECK_GLSL-DAG: hitObjectGetShaderRecordBufferHandleNV +// CHECK_SPV-DAG: OpHitObjectGetShaderRecordBufferHandleNV + && hitObjectGetShaderRecordBufferHandleNV(hit) != uvec2(0) // valid Handles are never 0, but not predictable either + && testCopy == vec4(1) +// CHECK_GLSL-DAG: hitObjectIsHitNV +// CHECK_SPV-DAG: OpHitObjectIsHitNV + && hitObjectIsHitNV(hit) == true +// CHECK_GLSL-DAG: hitObjectGetRayTMinNV +// CHECK_SPV-DAG: OpHitObjectGetRayTMinNV + && hitObjectGetRayTMinNV(hit) == 0.01f +// CHECK_GLSL-DAG: hitObjectGetRayTMaxNV +// CHECK_SPV-DAG: OpHitObjectGetRayTMaxNV + && hitObjectGetRayTMaxNV(hit) == 1e4f +// CHECK_GLSL-DAG: hitObjectGetObjectRayOriginNV +// CHECK_SPV-DAG: OpHitObjectGetObjectRayOriginNV + && hitObjectGetObjectRayOriginNV(hit) == vec3(0.1, 0.1, 0.0) +// CHECK_GLSL-DAG: hitObjectGetObjectRayDirectionNV +// CHECK_SPV-DAG: OpHitObjectGetObjectRayDirectionNV + && hitObjectGetObjectRayDirectionNV(hit) == vec3(0, 0, 1) +// CHECK_GLSL-DAG: hitObjectGetWorldRayOriginNV +// CHECK_SPV-DAG: OpHitObjectGetWorldRayOriginNV + && hitObjectGetWorldRayOriginNV(hit) == vec3(0.1, 0.1, 0.0) +// CHECK_GLSL-DAG: hitObjectGetWorldRayDirectionNV +// CHECK_SPV-DAG: OpHitObjectGetWorldRayDirectionNV + && hitObjectGetWorldRayDirectionNV(hit) == vec3(0, 0, 1) +// CHECK_GLSL-DAG: hitObjectGetObjectToWorldNV +// CHECK_SPV-DAG: OpHitObjectGetObjectToWorldNV + && !equals(hitObjectGetObjectToWorldNV(hit), mat4x3(0)) +// CHECK_GLSL-DAG: hitObjectGetWorldToObjectNV +// CHECK_SPV-DAG: OpHitObjectGetWorldToObjectNV + && !equals(hitObjectGetWorldToObjectNV(hit), mat4x3(0)) +// CHECK_GLSL-DAG: hitObjectGetInstanceCustomIndexNV +// CHECK_SPV-DAG: OpHitObjectGetInstanceCustomIndexNV + && hitObjectGetInstanceCustomIndexNV(hit) == 0 +// CHECK_GLSL-DAG: hitObjectGetInstanceIdNV +// CHECK_SPV-DAG: OpHitObjectGetInstanceIdNV + && hitObjectGetInstanceIdNV(hit) == 0 +// CHECK_GLSL-DAG: hitObjectGetGeometryIndexNV +// CHECK_SPV-DAG: OpHitObjectGetGeometryIndexNV + && hitObjectGetGeometryIndexNV(hit) == 0 +// CHECK_GLSL-DAG: hitObjectGetPrimitiveIndexNV +// CHECK_SPV-DAG: OpHitObjectGetPrimitiveIndexNV + && hitObjectGetPrimitiveIndexNV(hit) == 0 +// CHECK_GLSL-DAG: hitObjectGetHitKindNV +// CHECK_SPV-DAG: OpHitObjectGetHitKindNV + && hitObjectGetHitKindNV(hit) == gl_HitKindFrontFacingTriangleEXT + ; +} + +bool testHitObjectTraceRayLaunchSubShaders() { + hitObjectNV hit; +// CHECK_GLSL-DAG: hitObjectTraceRayNV +// CHECK_SPV-DAG: OpHitObjectTraceRayNV + hitObjectTraceRayNV(hit, as, gl_RayFlagsNoneEXT, 0xff, 0, 0, 0, vec3(0.1, 0.1, 0.0), 0.01f, vec3(0, 0, 1), 1e4f, 2); +// CHECK_GLSL-DAG: hitObjectExecuteShaderNV +// CHECK_SPV-DAG: OpHitObjectExecuteShaderNV + hitObjectExecuteShaderNV(hit, 2); + return true +// CHECK_GLSL-DAG: hitObjectIsHitNV +// CHECK_SPV-DAG: OpHitObjectIsHitNV + && hitObjectIsHitNV(hit) == true + ; +} + +bool testHitObjectTraceRayMotion() { + hitObjectNV hit; +// CHECK_GLSL-DAG: hitObjectTraceRayMotionNV +// CHECK_SPV-DAG: OpHitObjectTraceRayMotionNV + hitObjectTraceRayMotionNV(hit, as, gl_RayFlagsNoneEXT, 0xff, 0, 0, 0, vec3(0.1, 0.1, 0.0), 0.01f, vec3(0, 0, 1), 1e4f, 0.0f, 2); + return true +// CHECK_GLSL-DAG: hitObjectIsHitNV +// CHECK_SPV-DAG: OpHitObjectIsHitNV + && hitObjectIsHitNV(hit) == true +// CHECK_GLSL-DAG: hitObjectGetCurrentTimeNV +// CHECK_SPV-DAG: OpHitObjectGetCurrentTimeNV + && hitObjectGetCurrentTimeNV(hit) == 0.0f + ; +} + +bool testTraceRayFunctions() { +// CHECK_GLSL-DAG: traceRayEXT +// CHECK_SPV-DAG: OpTraceRayKHR + traceRayEXT(as, 0, 0, 0, 0, 0, vec3(0), 0, vec3(0), 0, 2); + return true + ; +} + +bool testTraceRayCalls() { + return true + && testHitObjectTraceRay() + && testHitObjectTraceRayWithAuxInfo() + && testHitObjectTraceRayLaunchSubShaders() + && testHitObjectTraceRayMotion() + && testTraceRayFunctions() + ; +} + +bool testHitObjectRecord() { + hitObjectNV hit; +// CHECK_GLSL-DAG: hitObjectRecordHitNV +// CHECK_SPV-DAG: OpHitObjectRecordHitNV + hitObjectRecordHitNV(hit, as, 0, 0, 0, gl_HitKindFrontFacingTriangleEXT, 0, 0, vec3(0.1, 0.1, 0.0), 0.01f, vec3(0, 0, 1), 1e4f, 2); + return true +// CHECK_GLSL-DAG: hitObjectIsHitNV +// CHECK_SPV-DAG: OpHitObjectIsHitNV + && hitObjectIsHitNV(hit) == true + ; +} + +bool testHitObjectRecordIndex() { + hitObjectNV hit; +// CHECK_GLSL-DAG: hitObjectRecordHitWithIndexNV +// CHECK_SPV-DAG: OpHitObjectRecordHitWithIndexNV + hitObjectRecordHitWithIndexNV(hit, as, 0, 0, 0, gl_HitKindFrontFacingTriangleEXT, 0, vec3(0.1, 0.1, 0.0), 0.01f, vec3(0, 0, 1), 1e4f, 2); + return true +// CHECK_GLSL-DAG: hitObjectIsHitNV +// CHECK_SPV-DAG: OpHitObjectIsHitNV + && hitObjectIsHitNV(hit) == true + ; +} + +bool testHitObjectRecordMotion() { + hitObjectNV hit; +// CHECK_GLSL-DAG: hitObjectRecordHitMotionNV +// CHECK_SPV-DAG: OpHitObjectRecordHitMotionNV + hitObjectRecordHitMotionNV(hit, as, 0, 0, 0, gl_HitKindFrontFacingTriangleEXT, 0, 0, vec3(0.1, 0.1, 0.0), 0.01f, vec3(0, 0, 1), 1e4f, 0.0f, 2); + return true +// CHECK_GLSL-DAG: hitObjectIsHitNV +// CHECK_SPV-DAG: OpHitObjectIsHitNV + && hitObjectIsHitNV(hit) == true + ; +} + +bool testHitObjectRecordIndexMotion() { + hitObjectNV hit; +// CHECK_GLSL-DAG: hitObjectRecordHitWithIndexMotionNV +// CHECK_SPV-DAG: OpHitObjectRecordHitWithIndexMotionNV + hitObjectRecordHitWithIndexMotionNV(hit, as, 0, 0, 0, gl_HitKindFrontFacingTriangleEXT, 0, vec3(0.1, 0.1, 0.0), 0.01f, vec3(0, 0, 1), 1e4f, 0.0f, 2); + return true +// CHECK_GLSL-DAG: hitObjectIsHitNV +// CHECK_SPV-DAG: OpHitObjectIsHitNV + && hitObjectIsHitNV(hit) == true + ; +} + +bool testRecordHitCalls() { + return true + && testHitObjectRecord() + && testHitObjectRecordIndex() + && testHitObjectRecordMotion() + && testHitObjectRecordIndexMotion() + ; +} + +bool testHitObjectRecordMiss() { + hitObjectNV hit; +// CHECK_GLSL-DAG: hitObjectRecordMissNV +// CHECK_SPV-DAG: OpHitObjectRecordMissNV + hitObjectRecordMissNV(hit, 0, vec3(0.1, 0.1, 0.0), 0.01f, vec3(0, 0, 1), 1e4f); + return true +// CHECK_GLSL-DAG: hitObjectIsMissNV +// CHECK_SPV-DAG: OpHitObjectIsMissNV + && hitObjectIsMissNV(hit) == true + ; +} + +bool testHitObjectRecordMissMotion() { + hitObjectNV hit; +// CHECK_GLSL-DAG: hitObjectRecordMissMotionNV +// CHECK_SPV-DAG: OpHitObjectRecordMissMotionNV + hitObjectRecordMissMotionNV(hit, 0, vec3(0.1, 0.1, 0.0), 0.01f, vec3(0, 0, 1), 1e4f, 0.0f); + return true +// CHECK_GLSL-DAG: hitObjectIsMissNV +// CHECK_SPV-DAG: OpHitObjectIsMissNV + && hitObjectIsMissNV(hit) == true + ; +} + +bool testRecordMissCalls() { + return true + && testHitObjectRecordMiss() + && testHitObjectRecordMissMotion() + ; +} + +bool testHitObjectRecordEmpty() { + hitObjectNV hit; +// CHECK_GLSL-DAG: hitObjectRecordEmptyNV +// CHECK_SPV-DAG: OpHitObjectRecordEmptyNV + hitObjectRecordEmptyNV(hit); + return true +// CHECK_GLSL-DAG: hitObjectIsEmptyNV +// CHECK_SPV-DAG: OpHitObjectIsEmptyNV + && hitObjectIsEmptyNV(hit) == true + ; +} + +bool testRecordEmptyCalls() { + return true + && testHitObjectRecordEmpty() + ; +} + +bool testTraceRayMotion() { +// CHECK_GLSL-DAG: traceRayMotionNV +// CHECK_SPV-DAG: OpTraceRayMotionNV + traceRayMotionNV(as, gl_RayFlagsNoneEXT, 0xff, 0, 0, 0, vec3(0.1, 0.1, 0.0), 0.01f, vec3(0, 0, 1), 1e4f, 0.0f, 2); + attrMain = vec4(1); //ensure traceRayMotionNV does not get optimized out + return true && + attrMain == vec4(1) + ; +} + +bool testPayloadReadWrite() { + payload = vec4(2); + vec4 read = payload; + return true + && read != vec4(0) + ; +} + +bool testAttributeReadWrite() { + attrMain = vec4(2); + vec4 read = attrMain; + return true + && read != vec4(0) + ; +} + +bool testCallableReadWrite() { + outcall = vec4(2); + vec4 read = outcall; + return true + && read != vec4(0) + ; +} + +bool testReadWriteOfObjects(){ + return true + && testPayloadReadWrite() + && testAttributeReadWrite() + && testCallableReadWrite(); + ; +} + +void main() +{ + outputBuffer.data[0] = true + && testTraceRayCalls() + && testRecordHitCalls() + && testRecordMissCalls() + && testRecordEmptyCalls() + && testTraceRayMotion() + && testReadWriteOfObjects(); + //BUF: 1 +} diff --git a/tests/glsl-intrinsic/raytracing/glsl-rayGenSimple.slang b/tests/glsl-intrinsic/raytracing/glsl-rayGenSimple.slang new file mode 100644 index 000000000..444384f52 --- /dev/null +++ b/tests/glsl-intrinsic/raytracing/glsl-rayGenSimple.slang @@ -0,0 +1,34 @@ +//TEST:SIMPLE(filecheck=CHECK_GLSL): -allow-glsl -stage raygeneration -entry main -target glsl +//TEST:SIMPLE(filecheck=CHECK_SPV): -allow-glsl -emit-spirv-directly -stage raygeneration -entry main -target spirv-assembly + +// CHECK_GLSL-DAG: hitObjectAttributeNV +// CHECK_SPV-DAG: HitObjectAttributeNV + +layout(binding = 0) uniform accelerationStructureEXT as; + +//TEST_INPUT:ubuffer(data=[0], stride=4):out,name=outputBuffer +buffer MyBlockName +{ + uint data[]; +} outputBuffer; + +layout(location = 2) hitObjectAttributeNV vec4 attrMain; + +bool testHitObjectRecord() { + hitObjectNV hit; + // CHECK_GLSL: hitObjectRecordHitNV + // CHECK_SPV: OpHitObjectRecordHitNV + hitObjectRecordHitNV(hit, as, 0, 0, 0, gl_HitKindFrontFacingTriangleEXT, 0, 0, vec3(0.1, 0.1, 0.0), 0.01f, vec3(0, 0, 1), 1e4f, 2); + return true + // CHECK_GLSL: hitObjectIsHitNV + // CHECK_SPV: OpHitObjectIsHitNV + && hitObjectIsHitNV(hit) == true + ; +} + +void main() +{ + outputBuffer.data[0] = true + && testHitObjectRecord(); + //BUF: 1 +} diff --git a/tests/glsl-intrinsic/raytracing/glsl-rayIntersection.slang b/tests/glsl-intrinsic/raytracing/glsl-rayIntersection.slang new file mode 100644 index 000000000..92549e2d7 --- /dev/null +++ b/tests/glsl-intrinsic/raytracing/glsl-rayIntersection.slang @@ -0,0 +1,87 @@ +//TEST:SIMPLE(filecheck=CHECK_GLSL): -stage intersection -entry main -target glsl -allow-glsl +//TEST:SIMPLE(filecheck=CHECK_SPV): -stage intersection -entry main -target spirv-assembly -emit-spirv-directly -allow-glsl + +layout(binding = 0) uniform accelerationStructureEXT as; + +//TEST_INPUT:ubuffer(data=[0], stride=4):out,name=outputBuffer +buffer MyBlockName +{ + uint data[]; +} outputBuffer; + +//CHECK_GLSL-DAG: hitAttributeEXT +//CHECK_SPV-DAG: HitAttributeNV +hitAttributeEXT vec4 hitAttr; + +__generic<T : __BuiltinFloatingPointType, let N : int, let M : int> +bool equals(matrix<T, N, M> lhs, matrix<T, N, M> rhs) +{ + for (int i = 0; i < N; i++) + { + for (int j = 0; j < M; j++) + { + if ( + lhs[i][j] + != + rhs[i][j] + ) + { + return false; + } + } + } + return true; +} + +bool testVars() { + hitAttr = vec4(1); + + return true +// CHECK_GLSL-DAG: gl_PrimitiveID +// CHECK_SPV-DAG: PrimitiveId + && gl_PrimitiveID != 10000 +// CHECK_GLSL-DAG: gl_InstanceID +// CHECK_SPV-DAG: InstanceId + && gl_InstanceID != 10000 +// CHECK_GLSL-DAG: gl_InstanceCustomIndexEXT +// CHECK_SPV-DAG: InstanceCustomIndexNV + && gl_InstanceCustomIndexEXT != 10000 +// CHECK_GLSL-DAG: gl_GeometryIndexEXT +// CHECK_SPV-DAG: RayGeometryIndexKHR + && gl_GeometryIndexEXT != 10000 +// CHECK_GLSL-DAG: gl_ObjectRayOriginEXT +// CHECK_SPV-DAG: ObjectRayOriginNV + && gl_ObjectRayOriginEXT != vec3(99) +// CHECK_GLSL-DAG: gl_ObjectRayDirectionEXT +// CHECK_SPV-DAG: ObjectRayDirectionNV + && gl_ObjectRayDirectionEXT != vec3(99) +// CHECK_GLSL-DAG: gl_ObjectToWorldEXT +//COM: CHECK_SPV-DAG: ObjectToWorldNV + && !equals(gl_ObjectToWorldEXT, mat4x3(0.0f)) +// CHECK_GLSL-DAG: gl_ObjectToWorld3x4EXT +//COM: CHECK_SPV-DAG: ObjectToWorldNV + && !equals(gl_ObjectToWorld3x4EXT, mat3x4(0.0f)) +// CHECK_GLSL-DAG: gl_WorldToObjectEXT +// CHECK_SPV-DAG-N: WorldToObjectNV + && !equals(gl_WorldToObjectEXT, mat4x3(0.0f)) +// CHECK_GLSL-DAG: gl_WorldToObject3x4EXT +// spirv checked with CHECK_SPV-DAG-N + && !equals(gl_WorldToObject3x4EXT, mat3x4(0.0f)) + ; +} + +bool testFunctions() { + return true +// CHECK_GLSL-DAG: reportIntersectionEXT +// CHECK_SPV-DAG: OpReportIntersectionKHR + && reportIntersectionEXT(99, 0); +} + +void main() +{ + outputBuffer.data[0] = true + && testVars() + && testFunctions(); + ; + //BUF: 1 +} diff --git a/tests/glsl-intrinsic/raytracing/glsl-rayMiss.slang b/tests/glsl-intrinsic/raytracing/glsl-rayMiss.slang new file mode 100644 index 000000000..714b214e1 --- /dev/null +++ b/tests/glsl-intrinsic/raytracing/glsl-rayMiss.slang @@ -0,0 +1,62 @@ +//TEST:SIMPLE(filecheck=CHECK_GLSL): -allow-glsl -stage miss -entry main -target glsl +//TEST:SIMPLE(filecheck=CHECK_SPV): -allow-glsl -emit-spirv-directly -stage miss -entry main -target spirv-assembly + +layout(binding = 0) uniform accelerationStructureEXT as; + +//TEST_INPUT:ubuffer(data=[0], stride=4):out,name=outputBuffer +buffer MyBlockName +{ + uint data[]; +} outputBuffer; + +// CHECK_GLSL-DAG: rayPayloadInEXT +// CHECK_SPV-DAG: IncomingRayPayloadNV +layout(location = 2) rayPayloadInEXT vec4 payload; +// CHECK_GLSL-DAG: hitObjectAttributeNV +// CHECK_SPV-DAG: HitObjectAttributeNV +layout(location = 2) hitObjectAttributeNV vec4 attrMain; + +bool testVars() { + payload = vec4(1); + attrMain = vec4(1); + return true +// CHECK_GLSL-DAG: gl_LaunchIDNV +// CHECK_SPV-DAG-N: LaunchIdNV + && gl_LaunchIDNV != uint3(99) +// CHECK_GLSL-DAG: gl_LaunchIDEXT +// spirv checked with CHECK_SPV-DAG-N + && gl_LaunchIDEXT != uint3(99) +// CHECK_GLSL-DAG: gl_LaunchSizeNV +// CHECK_SPV-DAG-N: LaunchSizeNV + && gl_LaunchSizeNV != uint3(99) +// CHECK_GLSL-DAG: gl_LaunchSizeEXT +// spirv checked with CHECK_SPV-DAG-N + && gl_LaunchSizeEXT != uint3(99) +// CHECK_GLSL-DAG: gl_WorldRayOriginEXT +// CHECK_SPV-DAG: WorldRayOriginNV + && gl_WorldRayOriginEXT != vec3(99) +// CHECK_GLSL-DAG: gl_WorldRayDirectionEXT +// CHECK_SPV-DAG: WorldRayDirectionNV + && gl_WorldRayDirectionEXT != vec3(99) +// CHECK_GLSL-DAG: gl_RayTminEXT +// CHECK_SPV-DAG: RayTminNV + && gl_RayTminEXT != 99.0f +// CHECK_GLSL-DAG: gl_RayTmaxEXT +// CHECK_SPV-DAG: RayTmaxNV + && gl_RayTmaxEXT != 99.0f +// CHECK_GLSL-DAG: gl_IncomingRayFlagsEXT +// CHECK_SPV-DAG: IncomingRayFlagsNV + && gl_IncomingRayFlagsEXT != 0xFFFFFFFF +// CHECK_GLSL-DAG: gl_CurrentRayTimeNV +// CHECK_SPV-DAG: CurrentRayTimeNV + && gl_CurrentRayTimeNV != 0.0f + ; +} + +void main() +{ + outputBuffer.data[0] = true + && testVars() + ; + //BUF: 1 +} diff --git a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-array.slang.expected b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-array.slang.expected deleted file mode 100644 index fdc5cf0d7..000000000 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-array.slang.expected +++ /dev/null @@ -1,439 +0,0 @@ -result code = 0 -standard error = { -} -standard output = { -; -; Note: shader requires additional functionality: -; UAVs at every shader stage -; -; shader hash: 1376fe501fef02e2587aacc2b18e252f -; -; Buffer Definitions: -; -; Resource bind info for g_NvidiaExt -; { -; -; struct struct.NvShaderExtnStruct -; { -; -; uint opcode; ; Offset: 0 -; uint rid; ; Offset: 4 -; uint sid; ; Offset: 8 -; uint4 dst1u; ; Offset: 12 -; uint4 src3u; ; Offset: 28 -; uint4 src4u; ; Offset: 44 -; uint4 src5u; ; Offset: 60 -; uint4 src0u; ; Offset: 76 -; uint4 src1u; ; Offset: 92 -; uint4 src2u; ; Offset: 108 -; uint4 dst0u; ; Offset: 124 -; uint markUavRef; ; Offset: 140 -; uint numOutputsForIncCounter; ; Offset: 144 -; float padding1[27]; ; Offset: 148 -; -; } $Element; ; Offset: 0 Size: 256 -; -; } -; -; Resource bind info for outputBuffer_0 -; { -; -; uint $Element; ; Offset: 0 Size: 4 -; -; } -; -; -; Resource Bindings: -; -; Name Type Format Dim ID HLSL Bind Count -; ------------------------------ ---------- ------- ----------- ------- -------------- ------ -; scene_0 texture i32 ras T0 t0 1 -; g_NvidiaExt UAV struct r/w+cnt U0 u0 1 -; outputBuffer_0 UAV struct r/w U1 u1 1 -; -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" - -%"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] } -%struct.RaytracingAccelerationStructure = type { i32 } -%"class.RWStructuredBuffer<unsigned int>" = type { i32 } -%struct.SomeValues_0 = type { i32, float } -%struct.NvHitObjectMacroDummyPayloadType = type { i32 } -%dx.types.Handle = type { i8* } - -@"\01?g_NvidiaExt@@3V?$RWStructuredBuffer@UNvShaderExtnStruct@@@@A" = external constant %"class.RWStructuredBuffer<NvShaderExtnStruct>", align 4 -@"\01?scene_0@@3URaytracingAccelerationStructure@@A" = external constant %struct.RaytracingAccelerationStructure, align 4 -@"\01?outputBuffer_0@@3V?$RWStructuredBuffer@I@@A" = external constant %"class.RWStructuredBuffer<unsigned int>", align 4 - -; Function Attrs: nounwind -define void @"\01?rayGenerationMain@@YAXXZ"() #0 { - %1 = load %struct.RaytracingAccelerationStructure, %struct.RaytracingAccelerationStructure* @"\01?scene_0@@3URaytracingAccelerationStructure@@A", align 4, !noalias !18 - %2 = load %"class.RWStructuredBuffer<unsigned int>", %"class.RWStructuredBuffer<unsigned int>"* @"\01?outputBuffer_0@@3V?$RWStructuredBuffer@I@@A", align 4 - %3 = load %"class.RWStructuredBuffer<NvShaderExtnStruct>", %"class.RWStructuredBuffer<NvShaderExtnStruct>"* @"\01?g_NvidiaExt@@3V?$RWStructuredBuffer@UNvShaderExtnStruct@@@@A", align 4, !noalias !21 - %4 = alloca %struct.SomeValues_0, align 8 - %5 = alloca %struct.SomeValues_0, align 8 - %6 = alloca %struct.SomeValues_0, align 8 - %7 = alloca %struct.NvHitObjectMacroDummyPayloadType, align 4 - %8 = alloca %struct.SomeValues_0, align 8 - %9 = alloca %struct.NvHitObjectMacroDummyPayloadType, align 4 - %10 = call i32 @dx.op.dispatchRaysIndex.i32(i32 145, i8 0) ; DispatchRaysIndex(col) - %11 = sitofp i32 %10 to float - %12 = fmul fast float %11, 2.000000e+00 - %13 = sitofp i32 %10 to float - %14 = mul nsw i32 %10, 3 - %15 = shl nsw i32 %10, 1 - %16 = getelementptr inbounds %struct.SomeValues_0, %struct.SomeValues_0* %8, i32 0, i32 0 - store i32 %10, i32* %16, align 8 - %17 = getelementptr inbounds %struct.SomeValues_0, %struct.SomeValues_0* %8, i32 0, i32 1 - store float %12, float* %17, align 4 - %18 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %19 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %18, i8 1) ; BufferUpdateCounter(uav,inc) - %20 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %20, i32 %19, i32 0, i32 69, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %21 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %21, i32 %19, i32 144, i32 2, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %22 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %22, i32 %19, i32 76, i32 %10, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %23 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %23, i32 %19, i32 80, i32 %15, 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>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %24, i32 %19, i32 84, i32 %14, 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>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %25, i32 %19, i32 88, i32 0, 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>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %26, i32 %19, i32 92, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %27 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %28 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %27, i8 1) ; BufferUpdateCounter(uav,inc) - %29 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %30 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %29, i8 1) ; BufferUpdateCounter(uav,inc) - call void @dx.op.callShader.struct.SomeValues_0(i32 159, i32 %30, %struct.SomeValues_0* nonnull %8) ; CallShader(ShaderIndex,Parameter) - %31 = call %dx.types.Handle @dx.op.createHandleForLib.struct.RaytracingAccelerationStructure(i32 160, %struct.RaytracingAccelerationStructure %1) ; CreateHandleForLib(Resource) - call void @dx.op.traceRay.struct.NvHitObjectMacroDummyPayloadType(i32 157, %dx.types.Handle %31, i32 0, i32 0, i32 0, i32 0, i32 %30, float %13, float 0.000000e+00, float 0.000000e+00, float 0x3F847AE140000000, float 0.000000e+00, float 1.000000e+00, float 0.000000e+00, float 1.000000e+04, %struct.NvHitObjectMacroDummyPayloadType* nonnull %9) ; TraceRay(AccelerationStructure,RayFlags,InstanceInclusionMask,RayContributionToHitGroupIndex,MultiplierForGeometryContributionToShaderIndex,MissShaderIndex,Origin_X,Origin_Y,Origin_Z,TMin,Direction_X,Direction_Y,Direction_Z,TMax,payload) - %32 = mul nsw i32 %10, 3 - %33 = shl nsw i32 %10, 1 - %34 = getelementptr inbounds %struct.SomeValues_0, %struct.SomeValues_0* %6, i32 0, i32 0 - store i32 %10, i32* %34, align 8 - %35 = getelementptr inbounds %struct.SomeValues_0, %struct.SomeValues_0* %6, i32 0, i32 1 - store float %12, float* %35, align 4 - %36 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; 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>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %38, i32 %37, i32 0, i32 68, 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>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %39, i32 %37, i32 144, i32 2, 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>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %40, i32 %37, i32 76, i32 %10, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %41 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %41, i32 %37, i32 80, i32 %33, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %42 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %42, i32 %37, i32 84, i32 %32, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %43 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %43, i32 %37, i32 88, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %44 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %44, i32 %37, i32 92, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %45 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %45, i32 %37, i32 96, i32 4, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %46 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %47 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %46, i8 1) ; BufferUpdateCounter(uav,inc) - %48 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %49 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %48, i8 1) ; BufferUpdateCounter(uav,inc) - call void @dx.op.callShader.struct.SomeValues_0(i32 159, i32 %49, %struct.SomeValues_0* nonnull %6) ; CallShader(ShaderIndex,Parameter) - %50 = call %dx.types.Handle @dx.op.createHandleForLib.struct.RaytracingAccelerationStructure(i32 160, %struct.RaytracingAccelerationStructure %1) ; CreateHandleForLib(Resource) - call void @dx.op.traceRay.struct.NvHitObjectMacroDummyPayloadType(i32 157, %dx.types.Handle %50, i32 0, i32 0, i32 0, i32 0, i32 %49, float %13, float 0.000000e+00, float 0.000000e+00, float 0x3F847AE140000000, float 0.000000e+00, float 1.000000e+00, float 0.000000e+00, float 1.000000e+04, %struct.NvHitObjectMacroDummyPayloadType* nonnull %7) ; TraceRay(AccelerationStructure,RayFlags,InstanceInclusionMask,RayContributionToHitGroupIndex,MultiplierForGeometryContributionToShaderIndex,MissShaderIndex,Origin_X,Origin_Y,Origin_Z,TMin,Direction_X,Direction_Y,Direction_Z,TMax,payload) - %51 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %52 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %51, i8 1) ; BufferUpdateCounter(uav,inc) - %53 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %53, i32 %52, i32 0, i32 83, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %54 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %54, i32 %52, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %55 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %56 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %55, i8 1) ; BufferUpdateCounter(uav,inc) - %57 = icmp eq i32 %56, 0 - br i1 %57, label %130, label %58 - -; <label>:58 ; preds = %0 - %59 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %60 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %59, i8 1) ; BufferUpdateCounter(uav,inc) - %61 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %61, i32 %60, i32 0, i32 75, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %62 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %62, i32 %60, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %63 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %64 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %63, i8 1) ; BufferUpdateCounter(uav,inc) - %65 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %66 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %65, i8 1) ; BufferUpdateCounter(uav,inc) - %67 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %67, i32 %66, i32 0, i32 74, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %68 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %68, i32 %66, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %69 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %70 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %69, i8 1) ; BufferUpdateCounter(uav,inc) - %71 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %72 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %71, i8 1) ; BufferUpdateCounter(uav,inc) - %73 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %73, i32 %72, i32 0, i32 77, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %74 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %74, i32 %72, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %75 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %76 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %75, i8 1) ; BufferUpdateCounter(uav,inc) - %77 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %78 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %77, i8 1) ; BufferUpdateCounter(uav,inc) - %79 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %79, i32 %78, i32 0, i32 76, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %80 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %80, i32 %78, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %81 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %82 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %81, i8 1) ; BufferUpdateCounter(uav,inc) - %83 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %84 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %83, i8 1) ; BufferUpdateCounter(uav,inc) - %85 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %85, i32 %84, i32 0, i32 78, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %86 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %86, i32 %84, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %87 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %88 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %87, i8 1) ; BufferUpdateCounter(uav,inc) - %89 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %90 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %89, i8 1) ; BufferUpdateCounter(uav,inc) - %91 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %91, i32 %90, i32 0, i32 79, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %92 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %92, i32 %90, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %93 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %94 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %93, i8 1) ; BufferUpdateCounter(uav,inc) - %95 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %96 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %95, i8 1) ; BufferUpdateCounter(uav,inc) - %97 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %98 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %97, i8 1) ; BufferUpdateCounter(uav,inc) - %99 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %100 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %99, i8 1) ; BufferUpdateCounter(uav,inc) - %101 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %102 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %101, i8 1) ; BufferUpdateCounter(uav,inc) - %103 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %104 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %103, i8 1) ; BufferUpdateCounter(uav,inc) - %105 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %106 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %105, i8 1) ; BufferUpdateCounter(uav,inc) - %107 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %108 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %107, i8 1) ; BufferUpdateCounter(uav,inc) - %109 = bitcast i32 %94 to float - %110 = bitcast i32 %96 to float - %111 = fcmp fast ogt float %109, 0.000000e+00 - %112 = zext i1 %111 to i32 - %113 = fcmp fast olt float %110, %109 - %114 = zext i1 %113 to i32 - %115 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %116 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %115, i8 1) ; BufferUpdateCounter(uav,inc) - %117 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %117, i32 %116, i32 0, i32 80, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %118 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %118, i32 %116, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %119 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %120 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %119, i8 1) ; BufferUpdateCounter(uav,inc) - call void @dx.op.callShader.struct.SomeValues_0(i32 159, i32 %120, %struct.SomeValues_0* nonnull %5) ; CallShader(ShaderIndex,Parameter) - %121 = getelementptr inbounds %struct.SomeValues_0, %struct.SomeValues_0* %5, i32 0, i32 0 - %122 = load i32, i32* %121, align 8 - %123 = add i32 %70, %64 - %124 = add i32 %123, %76 - %125 = add i32 %124, %82 - %126 = add i32 %125, %88 - %127 = add i32 %126, %112 - %128 = add i32 %127, %114 - %129 = add i32 %128, %122 - br label %139 - -; <label>:130 ; preds = %0 - %131 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %132 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %131, i8 1) ; BufferUpdateCounter(uav,inc) - %133 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %133, i32 %132, i32 0, i32 73, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %134 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %134, i32 %132, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %135 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %136 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %135, i8 1) ; BufferUpdateCounter(uav,inc) - %137 = icmp ne i32 %136, 0 - %138 = zext i1 %137 to i32 - br label %139 - -; <label>:139 ; preds = %130, %58 - %140 = phi i32 [ %129, %58 ], [ %138, %130 ] - %141 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %142 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %141, i8 1) ; BufferUpdateCounter(uav,inc) - %143 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %143, i32 %142, i32 0, i32 83, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %144 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %144, i32 %142, i32 76, i32 %47, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %145 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %146 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %145, i8 1) ; BufferUpdateCounter(uav,inc) - %147 = icmp eq i32 %146, 0 - br i1 %147, label %220, label %148 - -; <label>:148 ; preds = %139 - %149 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %150 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %149, i8 1) ; BufferUpdateCounter(uav,inc) - %151 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %151, i32 %150, i32 0, i32 75, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %152 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %152, i32 %150, i32 76, i32 %47, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %153 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %154 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %153, i8 1) ; BufferUpdateCounter(uav,inc) - %155 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %156 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %155, i8 1) ; BufferUpdateCounter(uav,inc) - %157 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %157, i32 %156, i32 0, i32 74, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %158 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %158, i32 %156, i32 76, i32 %47, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %159 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %160 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %159, i8 1) ; BufferUpdateCounter(uav,inc) - %161 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %162 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %161, i8 1) ; BufferUpdateCounter(uav,inc) - %163 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %163, i32 %162, i32 0, i32 77, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %164 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %164, i32 %162, i32 76, i32 %47, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %165 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %166 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %165, i8 1) ; BufferUpdateCounter(uav,inc) - %167 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %168 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %167, i8 1) ; BufferUpdateCounter(uav,inc) - %169 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %169, i32 %168, i32 0, i32 76, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %170 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %170, i32 %168, i32 76, i32 %47, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %171 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %172 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %171, i8 1) ; BufferUpdateCounter(uav,inc) - %173 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %174 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %173, i8 1) ; BufferUpdateCounter(uav,inc) - %175 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %175, i32 %174, i32 0, i32 78, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %176 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %176, i32 %174, i32 76, i32 %47, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %177 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %178 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %177, i8 1) ; BufferUpdateCounter(uav,inc) - %179 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %180 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %179, i8 1) ; BufferUpdateCounter(uav,inc) - %181 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %181, i32 %180, i32 0, i32 79, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %182 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %182, i32 %180, i32 76, i32 %47, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %183 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %184 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %183, i8 1) ; BufferUpdateCounter(uav,inc) - %185 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %186 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %185, i8 1) ; BufferUpdateCounter(uav,inc) - %187 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %188 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %187, i8 1) ; BufferUpdateCounter(uav,inc) - %189 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %190 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %189, i8 1) ; BufferUpdateCounter(uav,inc) - %191 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %192 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %191, i8 1) ; BufferUpdateCounter(uav,inc) - %193 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %194 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %193, i8 1) ; BufferUpdateCounter(uav,inc) - %195 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %196 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %195, i8 1) ; BufferUpdateCounter(uav,inc) - %197 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %198 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %197, i8 1) ; BufferUpdateCounter(uav,inc) - %199 = bitcast i32 %184 to float - %200 = bitcast i32 %186 to float - %201 = fcmp fast ogt float %199, 0.000000e+00 - %202 = zext i1 %201 to i32 - %203 = fcmp fast olt float %200, %199 - %204 = zext i1 %203 to i32 - %205 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %206 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %205, i8 1) ; BufferUpdateCounter(uav,inc) - %207 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %207, i32 %206, i32 0, i32 80, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %208 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %208, i32 %206, i32 76, i32 %47, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %209 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %210 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %209, i8 1) ; BufferUpdateCounter(uav,inc) - call void @dx.op.callShader.struct.SomeValues_0(i32 159, i32 %210, %struct.SomeValues_0* nonnull %4) ; CallShader(ShaderIndex,Parameter) - %211 = getelementptr inbounds %struct.SomeValues_0, %struct.SomeValues_0* %4, i32 0, i32 0 - %212 = load i32, i32* %211, align 8 - %213 = add i32 %160, %154 - %214 = add i32 %213, %166 - %215 = add i32 %214, %172 - %216 = add i32 %215, %178 - %217 = add i32 %216, %202 - %218 = add i32 %217, %204 - %219 = add i32 %218, %212 - br label %229 - -; <label>:220 ; preds = %139 - %221 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %222 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %221, i8 1) ; BufferUpdateCounter(uav,inc) - %223 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %223, i32 %222, i32 0, i32 73, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %224 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %224, i32 %222, i32 76, i32 %47, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %225 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %226 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %225, i8 1) ; BufferUpdateCounter(uav,inc) - %227 = icmp ne i32 %226, 0 - %228 = zext i1 %227 to i32 - br label %229 - -; <label>:229 ; preds = %220, %148 - %230 = phi i32 [ %219, %148 ], [ %228, %220 ] - %231 = add i32 %230, %140 - %232 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<unsigned int>"(i32 160, %"class.RWStructuredBuffer<unsigned int>" %2) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %232, i32 %10, i32 0, i32 %231, 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 -declare i32 @dx.op.bufferUpdateCounter(i32, %dx.types.Handle, i8) #0 - -; Function Attrs: nounwind -declare void @dx.op.rawBufferStore.i32(i32, %dx.types.Handle, i32, i32, i32, i32, i32, i32, i8, i32) #0 - -; Function Attrs: nounwind -declare void @dx.op.callShader.struct.SomeValues_0(i32, i32, %struct.SomeValues_0*) #0 - -; Function Attrs: nounwind -declare void @dx.op.traceRay.struct.NvHitObjectMacroDummyPayloadType(i32, %dx.types.Handle, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, %struct.NvHitObjectMacroDummyPayloadType*) #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.createHandleForLib.struct.RaytracingAccelerationStructure(i32, %struct.RaytracingAccelerationStructure) #2 - -; Function Attrs: nounwind readonly -declare %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<unsigned int>"(i32, %"class.RWStructuredBuffer<unsigned int>") #2 - -attributes #0 = { nounwind } -attributes #1 = { nounwind readnone } -attributes #2 = { nounwind readonly } - -!llvm.ident = !{!0} -!dx.version = !{!1} -!dx.valver = !{!2} -!dx.shaderModel = !{!3} -!dx.resources = !{!4} -!dx.entryPoints = !{!13, !15} - -!0 = !{!"clang version 3.7 (tags/RELEASE_370/final)"} -!1 = !{i32 1, i32 5} -!2 = !{i32 1, i32 7} -!3 = !{!"lib", i32 6, i32 5} -!4 = !{!5, !8, null, null} -!5 = !{!6} -!6 = !{i32 0, %struct.RaytracingAccelerationStructure* @"\01?scene_0@@3URaytracingAccelerationStructure@@A", !"scene_0", i32 0, i32 0, i32 1, i32 16, i32 0, !7} -!7 = !{i32 0, i32 4} -!8 = !{!9, !11} -!9 = !{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, !10} -!10 = !{i32 1, i32 256} -!11 = !{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, !12} -!12 = !{i32 1, i32 4} -!13 = !{null, !"", null, !4, !14} -!14 = !{i32 0, i64 8454160} -!15 = !{void ()* @"\01?rayGenerationMain@@YAXXZ", !"\01?rayGenerationMain@@YAXXZ", null, null, !16} -!16 = !{i32 8, i32 7, i32 5, !17} -!17 = !{i32 0} -!18 = !{!19} -!19 = distinct !{!19, !20, !"\01?HitObject_MakeHit_1@@YA?AUNvHitObject@@URaytracingAccelerationStructure@@IIIIIIURayDesc@@USomeValues_0@@@Z: %agg.result"} -!20 = distinct !{!20, !"\01?HitObject_MakeHit_1@@YA?AUNvHitObject@@URaytracingAccelerationStructure@@IIIIIIURayDesc@@USomeValues_0@@@Z"} -!21 = !{!22} -!22 = distinct !{!22, !23, !"\01?HitObject_GetAttributes_0@@YA?AUSomeValues_0@@UNvHitObject@@@Z: %agg.result"} -!23 = distinct !{!23, !"\01?HitObject_GetAttributes_0@@YA?AUSomeValues_0@@UNvHitObject@@@Z"} -} 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 deleted file mode 100644 index 2bb288e11..000000000 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-assign.slang.1.expected +++ /dev/null @@ -1,43 +0,0 @@ -result code = 0 -standard error = { -} -standard output = { -#version 460 -#extension GL_EXT_ray_tracing : require -#extension GL_NV_shader_invocation_reorder : require -layout(row_major) uniform; -layout(row_major) buffer; -layout(std430, binding = 0) buffer StructuredBuffer_uint_t_0 { - uint _data[]; -} outputBuffer_0; -struct RayDesc_0 -{ - vec3 Origin_0; - float TMin_0; - vec3 Direction_0; - float TMax_0; -}; - -void main() -{ - uvec3 _S1 = ((gl_LaunchIDEXT)); - ivec2 launchID_0 = ivec2(_S1.xy); - uvec3 _S2 = ((gl_LaunchSizeEXT)); - int idx_0 = launchID_0.x; - RayDesc_0 ray_0; - ray_0.Origin_0 = vec3(float(idx_0), 0.0, 0.0); - ray_0.TMin_0 = 0.00999999977648258209; - ray_0.Direction_0 = vec3(0.0, 1.0, 0.0); - ray_0.TMax_0 = 10000.0; - uint _S3 = uint(idx_0); - hitObjectNV hitObj_0; - hitObjectRecordMissNV(hitObj_0, _S3, ray_0.Origin_0, ray_0.TMin_0, ray_0.Direction_0, ray_0.TMax_0); - uint _S4 = uint(idx_0 + 1); - hitObjectNV hitObj_1; - hitObjectRecordMissNV(hitObj_1, _S4, ray_0.Origin_0, ray_0.TMin_0, ray_0.Direction_0, ray_0.TMax_0); - bool _S5 = (hitObjectIsMissNV((hitObj_1))); - outputBuffer_0._data[_S3] = uint(int(_S5)); - 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 deleted file mode 100644 index e09c2067e..000000000 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-assign.slang.expected +++ /dev/null @@ -1,177 +0,0 @@ -result code = 0 -standard error = { -} -standard output = { -; -; Note: shader requires additional functionality: -; UAVs at every shader stage -; -; shader hash: b6ad0ea7247d4a3fc348d91ac190fac1 -; -; Buffer Definitions: -; -; Resource bind info for g_NvidiaExt -; { -; -; struct struct.NvShaderExtnStruct -; { -; -; uint opcode; ; Offset: 0 -; uint rid; ; Offset: 4 -; uint sid; ; Offset: 8 -; uint4 dst1u; ; Offset: 12 -; uint4 src3u; ; Offset: 28 -; uint4 src4u; ; Offset: 44 -; uint4 src5u; ; Offset: 60 -; uint4 src0u; ; Offset: 76 -; uint4 src1u; ; Offset: 92 -; uint4 src2u; ; Offset: 108 -; uint4 dst0u; ; Offset: 124 -; uint markUavRef; ; Offset: 140 -; uint numOutputsForIncCounter; ; Offset: 144 -; float padding1[27]; ; Offset: 148 -; -; } $Element; ; Offset: 0 Size: 256 -; -; } -; -; Resource bind info for outputBuffer_0 -; { -; -; uint $Element; ; Offset: 0 Size: 4 -; -; } -; -; -; Resource Bindings: -; -; Name Type Format Dim ID HLSL Bind Count -; ------------------------------ ---------- ------- ----------- ------- -------------- ------ -; g_NvidiaExt UAV struct r/w+cnt U0 u0 1 -; outputBuffer_0 UAV struct r/w U1 u1 1 -; -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" - -%"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 - -; 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 %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 -declare i32 @dx.op.bufferUpdateCounter(i32, %dx.types.Handle, i8) #0 - -; Function Attrs: nounwind -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.createHandleForLib.class.RWStructuredBuffer<unsigned int>"(i32, %"class.RWStructuredBuffer<unsigned int>") #2 - -attributes #0 = { nounwind } -attributes #1 = { nounwind readnone } -attributes #2 = { nounwind readonly } - -!llvm.ident = !{!0} -!dx.version = !{!1} -!dx.valver = !{!2} -!dx.shaderModel = !{!3} -!dx.resources = !{!4} -!dx.entryPoints = !{!10, !12} - -!0 = !{!"clang version 3.7 (tags/RELEASE_370/final)"} -!1 = !{i32 1, i32 5} -!2 = !{i32 1, i32 7} -!3 = !{!"lib", i32 6, i32 5} -!4 = !{null, !5, null, null} -!5 = !{!6, !8} -!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>"* @"\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 = !{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 deleted file mode 100644 index 9d4f4e5fb..000000000 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-hit.slang.1.expected +++ /dev/null @@ -1,114 +0,0 @@ -result code = 0 -standard error = { -} -standard output = { -#version 460 -#extension GL_EXT_ray_tracing : require -#extension GL_NV_shader_invocation_reorder : require -#extension GL_EXT_spirv_intrinsics : require -layout(row_major) uniform; -layout(row_major) buffer; -layout(binding = 0) -uniform accelerationStructureEXT scene_0; - -layout(std430, binding = 1) buffer StructuredBuffer_uint_t_0 { - uint _data[]; -} outputBuffer_0; -struct SomeValues_0 -{ - int a_0; - float b_0; -}; - -layout(location = 0) -hitObjectAttributeNV -SomeValues_0 t_0; - -struct RayDesc_0 -{ - vec3 Origin_0; - float TMin_0; - vec3 Direction_0; - float TMax_0; -}; - -RayDesc_0 HitObject_GetRayDesc_0(hitObjectNV this_0) -{ - vec3 _S1 = (hitObjectGetWorldRayOriginNV((this_0))); - float _S2 = (hitObjectGetRayTMinNV((this_0))); - vec3 _S3 = (hitObjectGetObjectRayDirectionNV((this_0))); - float _S4 = (hitObjectGetRayTMaxNV((this_0))); - RayDesc_0 ray_0 = { _S1, _S2, _S3, _S4 }; - return ray_0; -} - -SomeValues_0 HitObject_GetAttributes_0(hitObjectNV this_1) -{ - hitObjectGetAttributesNV((this_1), ((0))); - return t_0; -} - -uint calcValue_0(spirv_by_reference hitObjectNV hit_0) -{ - bool _S5 = (hitObjectIsHitNV((hit_0))); - uint r_0; - if(_S5) - { - uint instanceIndex_0 = (hitObjectGetInstanceCustomIndexNV((hit_0))); - uint instanceID_0 = (hitObjectGetInstanceIdNV((hit_0))); - uint geometryIndex_0 = (hitObjectGetGeometryIndexNV((hit_0))); - uint primitiveIndex_0 = (hitObjectGetPrimitiveIndexNV((hit_0))); - uint hitKind_0 = (hitObjectGetHitKindNV((hit_0))); - uint r_1 = hitKind_0 + instanceIndex_0 + instanceID_0 + geometryIndex_0 + primitiveIndex_0; - RayDesc_0 ray_1 = HitObject_GetRayDesc_0(hit_0); - uint r_2 = r_1 + uint(ray_1.TMin_0 > 0.0) + uint(ray_1.TMax_0 < ray_1.TMin_0); - SomeValues_0 objSomeValues_0 = HitObject_GetAttributes_0(hit_0); - r_0 = uint(int(r_2) + objSomeValues_0.a_0); - } - else - { - bool _S6 = (hitObjectIsMissNV((hit_0))); - if(_S6) - { - r_0 = 1U; - } - else - { - r_0 = 0U; - } - } - return r_0; -} - -void main() -{ - uvec3 _S7 = ((gl_LaunchIDEXT)); - ivec2 launchID_0 = ivec2(_S7.xy); - uvec3 _S8 = ((gl_LaunchSizeEXT)); - int idx_0 = launchID_0.x; - RayDesc_0 ray_2; - ray_2.Origin_0 = vec3(float(idx_0), 0.0, 0.0); - ray_2.TMin_0 = 0.00999999977648258209; - ray_2.Direction_0 = vec3(0.0, 1.0, 0.0); - ray_2.TMax_0 = 10000.0; - uint _S9 = uint(idx_0); - uint _S10 = uint(idx_0 * 2); - uint _S11 = uint(idx_0 * 3); - RayDesc_0 _S12 = ray_2; - hitObjectNV hitObj_0; - int _S13 = int(_S9); - int _S14 = int(_S10); - int _S15 = int(_S11); - hitObjectRecordHitWithIndexNV(hitObj_0, scene_0, _S13, _S14, _S15, 0U, 0U, _S12.Origin_0, _S12.TMin_0, _S12.Direction_0, _S12.TMax_0, (0)); - hitObjectNV hit_1 = hitObj_0; - uint r_3 = calcValue_0(hit_1); - RayDesc_0 _S16 = ray_2; - hitObjectNV hitObj_1; - hitObjectRecordHitNV(hitObj_1, scene_0, _S13, _S15, _S14, 0U, 0U, 4U, _S16.Origin_0, _S16.TMin_0, _S16.Direction_0, _S16.TMax_0, (0)); - hitObjectNV hit_2 = hitObj_1; - uint _S17 = calcValue_0(hit_2); - outputBuffer_0._data[_S9] = r_3 + _S17; - return; -} - -} diff --git a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-hit.slang.expected b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-hit.slang.expected deleted file mode 100644 index 323762360..000000000 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-hit.slang.expected +++ /dev/null @@ -1,439 +0,0 @@ -result code = 0 -standard error = { -} -standard output = { -; -; Note: shader requires additional functionality: -; UAVs at every shader stage -; -; shader hash: 74e3ebb1057bef29c64dd2b1aede2893 -; -; Buffer Definitions: -; -; Resource bind info for g_NvidiaExt -; { -; -; struct struct.NvShaderExtnStruct -; { -; -; uint opcode; ; Offset: 0 -; uint rid; ; Offset: 4 -; uint sid; ; Offset: 8 -; uint4 dst1u; ; Offset: 12 -; uint4 src3u; ; Offset: 28 -; uint4 src4u; ; Offset: 44 -; uint4 src5u; ; Offset: 60 -; uint4 src0u; ; Offset: 76 -; uint4 src1u; ; Offset: 92 -; uint4 src2u; ; Offset: 108 -; uint4 dst0u; ; Offset: 124 -; uint markUavRef; ; Offset: 140 -; uint numOutputsForIncCounter; ; Offset: 144 -; float padding1[27]; ; Offset: 148 -; -; } $Element; ; Offset: 0 Size: 256 -; -; } -; -; Resource bind info for outputBuffer_0 -; { -; -; uint $Element; ; Offset: 0 Size: 4 -; -; } -; -; -; Resource Bindings: -; -; Name Type Format Dim ID HLSL Bind Count -; ------------------------------ ---------- ------- ----------- ------- -------------- ------ -; scene_0 texture i32 ras T0 t0 1 -; g_NvidiaExt UAV struct r/w+cnt U0 u0 1 -; outputBuffer_0 UAV struct r/w U1 u1 1 -; -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" - -%"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] } -%struct.RaytracingAccelerationStructure = type { i32 } -%"class.RWStructuredBuffer<unsigned int>" = type { i32 } -%struct.SomeValues_0 = type { i32, float } -%struct.NvHitObjectMacroDummyPayloadType = type { i32 } -%dx.types.Handle = type { i8* } - -@"\01?g_NvidiaExt@@3V?$RWStructuredBuffer@UNvShaderExtnStruct@@@@A" = external constant %"class.RWStructuredBuffer<NvShaderExtnStruct>", align 4 -@"\01?scene_0@@3URaytracingAccelerationStructure@@A" = external constant %struct.RaytracingAccelerationStructure, align 4 -@"\01?outputBuffer_0@@3V?$RWStructuredBuffer@I@@A" = external constant %"class.RWStructuredBuffer<unsigned int>", align 4 - -; Function Attrs: nounwind -define void @"\01?rayGenerationMain@@YAXXZ"() #0 { - %1 = load %struct.RaytracingAccelerationStructure, %struct.RaytracingAccelerationStructure* @"\01?scene_0@@3URaytracingAccelerationStructure@@A", align 4, !noalias !18 - %2 = load %"class.RWStructuredBuffer<unsigned int>", %"class.RWStructuredBuffer<unsigned int>"* @"\01?outputBuffer_0@@3V?$RWStructuredBuffer@I@@A", align 4 - %3 = load %"class.RWStructuredBuffer<NvShaderExtnStruct>", %"class.RWStructuredBuffer<NvShaderExtnStruct>"* @"\01?g_NvidiaExt@@3V?$RWStructuredBuffer@UNvShaderExtnStruct@@@@A", align 4, !noalias !21 - %4 = alloca %struct.SomeValues_0, align 8 - %5 = alloca %struct.SomeValues_0, align 8 - %6 = alloca %struct.NvHitObjectMacroDummyPayloadType, align 4 - %7 = alloca %struct.SomeValues_0, align 8 - %8 = alloca %struct.SomeValues_0, align 8 - %9 = alloca %struct.NvHitObjectMacroDummyPayloadType, align 4 - %10 = call i32 @dx.op.dispatchRaysIndex.i32(i32 145, i8 0) ; DispatchRaysIndex(col) - %11 = sitofp i32 %10 to float - %12 = fmul fast float %11, 2.000000e+00 - %13 = sitofp i32 %10 to float - %14 = mul nsw i32 %10, 3 - %15 = shl nsw i32 %10, 1 - %16 = getelementptr inbounds %struct.SomeValues_0, %struct.SomeValues_0* %8, i32 0, i32 0 - store i32 %10, i32* %16, align 8 - %17 = getelementptr inbounds %struct.SomeValues_0, %struct.SomeValues_0* %8, i32 0, i32 1 - store float %12, float* %17, align 4 - %18 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %19 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %18, i8 1) ; BufferUpdateCounter(uav,inc) - %20 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %20, i32 %19, i32 0, i32 69, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %21 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %21, i32 %19, i32 144, i32 2, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %22 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %22, i32 %19, i32 76, i32 %10, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %23 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %23, i32 %19, i32 80, i32 %15, 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>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %24, i32 %19, i32 84, i32 %14, 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>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %25, i32 %19, i32 88, i32 0, 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>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %26, i32 %19, i32 92, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %27 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %28 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %27, i8 1) ; BufferUpdateCounter(uav,inc) - %29 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %30 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %29, i8 1) ; BufferUpdateCounter(uav,inc) - call void @dx.op.callShader.struct.SomeValues_0(i32 159, i32 %30, %struct.SomeValues_0* nonnull %8) ; CallShader(ShaderIndex,Parameter) - %31 = call %dx.types.Handle @dx.op.createHandleForLib.struct.RaytracingAccelerationStructure(i32 160, %struct.RaytracingAccelerationStructure %1) ; CreateHandleForLib(Resource) - call void @dx.op.traceRay.struct.NvHitObjectMacroDummyPayloadType(i32 157, %dx.types.Handle %31, i32 0, i32 0, i32 0, i32 0, i32 %30, float %13, float 0.000000e+00, float 0.000000e+00, float 0x3F847AE140000000, float 0.000000e+00, float 1.000000e+00, float 0.000000e+00, float 1.000000e+04, %struct.NvHitObjectMacroDummyPayloadType* nonnull %9) ; TraceRay(AccelerationStructure,RayFlags,InstanceInclusionMask,RayContributionToHitGroupIndex,MultiplierForGeometryContributionToShaderIndex,MissShaderIndex,Origin_X,Origin_Y,Origin_Z,TMin,Direction_X,Direction_Y,Direction_Z,TMax,payload) - %32 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %33 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %32, i8 1) ; BufferUpdateCounter(uav,inc) - %34 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %34, i32 %33, i32 0, i32 83, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %35 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %35, i32 %33, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %36 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %37 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %36, i8 1) ; BufferUpdateCounter(uav,inc) - %38 = icmp eq i32 %37, 0 - br i1 %38, label %111, label %39 - -; <label>:39 ; preds = %0 - %40 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %41 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %40, i8 1) ; BufferUpdateCounter(uav,inc) - %42 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %42, i32 %41, i32 0, i32 75, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %43 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %43, i32 %41, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %44 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %45 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %44, i8 1) ; BufferUpdateCounter(uav,inc) - %46 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %47 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %46, i8 1) ; BufferUpdateCounter(uav,inc) - %48 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %48, i32 %47, i32 0, i32 74, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %49 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %49, i32 %47, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %50 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %51 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %50, i8 1) ; BufferUpdateCounter(uav,inc) - %52 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %53 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %52, i8 1) ; BufferUpdateCounter(uav,inc) - %54 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %54, i32 %53, i32 0, i32 77, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %55 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %55, i32 %53, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %56 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %57 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %56, i8 1) ; BufferUpdateCounter(uav,inc) - %58 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %59 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %58, i8 1) ; BufferUpdateCounter(uav,inc) - %60 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %60, i32 %59, i32 0, i32 76, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %61 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %61, i32 %59, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %62 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %63 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %62, i8 1) ; BufferUpdateCounter(uav,inc) - %64 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %65 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %64, i8 1) ; BufferUpdateCounter(uav,inc) - %66 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %66, i32 %65, i32 0, i32 78, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %67 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %67, i32 %65, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %68 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %69 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %68, i8 1) ; BufferUpdateCounter(uav,inc) - %70 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %71 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %70, i8 1) ; BufferUpdateCounter(uav,inc) - %72 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %72, i32 %71, i32 0, i32 79, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %73 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %73, i32 %71, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %74 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %75 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %74, i8 1) ; BufferUpdateCounter(uav,inc) - %76 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %77 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %76, i8 1) ; BufferUpdateCounter(uav,inc) - %78 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %79 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %78, i8 1) ; BufferUpdateCounter(uav,inc) - %80 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %81 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %80, i8 1) ; BufferUpdateCounter(uav,inc) - %82 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %83 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %82, i8 1) ; BufferUpdateCounter(uav,inc) - %84 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %85 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %84, i8 1) ; BufferUpdateCounter(uav,inc) - %86 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %87 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %86, i8 1) ; BufferUpdateCounter(uav,inc) - %88 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %89 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %88, i8 1) ; BufferUpdateCounter(uav,inc) - %90 = bitcast i32 %75 to float - %91 = bitcast i32 %77 to float - %92 = fcmp fast ogt float %90, 0.000000e+00 - %93 = zext i1 %92 to i32 - %94 = fcmp fast olt float %91, %90 - %95 = zext i1 %94 to i32 - %96 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %97 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %96, i8 1) ; BufferUpdateCounter(uav,inc) - %98 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %98, i32 %97, i32 0, i32 80, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %99 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %99, i32 %97, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %100 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %101 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %100, i8 1) ; BufferUpdateCounter(uav,inc) - call void @dx.op.callShader.struct.SomeValues_0(i32 159, i32 %101, %struct.SomeValues_0* nonnull %7) ; CallShader(ShaderIndex,Parameter) - %102 = getelementptr inbounds %struct.SomeValues_0, %struct.SomeValues_0* %7, i32 0, i32 0 - %103 = load i32, i32* %102, align 8 - %104 = add i32 %51, %45 - %105 = add i32 %104, %57 - %106 = add i32 %105, %63 - %107 = add i32 %106, %69 - %108 = add i32 %107, %93 - %109 = add i32 %108, %95 - %110 = add i32 %109, %103 - br label %120 - -; <label>:111 ; preds = %0 - %112 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %113 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %112, i8 1) ; BufferUpdateCounter(uav,inc) - %114 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %114, i32 %113, i32 0, i32 73, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %115 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %115, i32 %113, i32 76, i32 %28, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %116 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %117 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %116, i8 1) ; BufferUpdateCounter(uav,inc) - %118 = icmp ne i32 %117, 0 - %119 = zext i1 %118 to i32 - br label %120 - -; <label>:120 ; preds = %111, %39 - %121 = phi i32 [ %110, %39 ], [ %119, %111 ] - %122 = mul nsw i32 %10, 3 - %123 = shl nsw i32 %10, 1 - %124 = getelementptr inbounds %struct.SomeValues_0, %struct.SomeValues_0* %5, i32 0, i32 0 - store i32 %10, i32* %124, align 8 - %125 = getelementptr inbounds %struct.SomeValues_0, %struct.SomeValues_0* %5, i32 0, i32 1 - store float %12, float* %125, align 4 - %126 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %127 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %126, i8 1) ; BufferUpdateCounter(uav,inc) - %128 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %128, i32 %127, i32 0, i32 68, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %129 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %129, i32 %127, i32 144, i32 2, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %130 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %130, i32 %127, i32 76, i32 %10, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %131 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %131, i32 %127, i32 80, i32 %123, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %132 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %132, i32 %127, i32 84, i32 %122, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %133 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %133, i32 %127, i32 88, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %134 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %134, i32 %127, i32 92, i32 0, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %135 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %135, i32 %127, i32 96, i32 4, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %136 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %137 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %136, i8 1) ; BufferUpdateCounter(uav,inc) - %138 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %139 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %138, i8 1) ; BufferUpdateCounter(uav,inc) - call void @dx.op.callShader.struct.SomeValues_0(i32 159, i32 %139, %struct.SomeValues_0* nonnull %5) ; CallShader(ShaderIndex,Parameter) - %140 = call %dx.types.Handle @dx.op.createHandleForLib.struct.RaytracingAccelerationStructure(i32 160, %struct.RaytracingAccelerationStructure %1) ; CreateHandleForLib(Resource) - call void @dx.op.traceRay.struct.NvHitObjectMacroDummyPayloadType(i32 157, %dx.types.Handle %140, i32 0, i32 0, i32 0, i32 0, i32 %139, float %13, float 0.000000e+00, float 0.000000e+00, float 0x3F847AE140000000, float 0.000000e+00, float 1.000000e+00, float 0.000000e+00, float 1.000000e+04, %struct.NvHitObjectMacroDummyPayloadType* nonnull %6) ; TraceRay(AccelerationStructure,RayFlags,InstanceInclusionMask,RayContributionToHitGroupIndex,MultiplierForGeometryContributionToShaderIndex,MissShaderIndex,Origin_X,Origin_Y,Origin_Z,TMin,Direction_X,Direction_Y,Direction_Z,TMax,payload) - %141 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %142 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %141, i8 1) ; BufferUpdateCounter(uav,inc) - %143 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %143, i32 %142, i32 0, i32 83, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %144 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %144, i32 %142, i32 76, i32 %137, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %145 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %146 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %145, i8 1) ; BufferUpdateCounter(uav,inc) - %147 = icmp eq i32 %146, 0 - br i1 %147, label %220, label %148 - -; <label>:148 ; preds = %120 - %149 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %150 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %149, i8 1) ; BufferUpdateCounter(uav,inc) - %151 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %151, i32 %150, i32 0, i32 75, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %152 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %152, i32 %150, i32 76, i32 %137, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %153 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %154 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %153, i8 1) ; BufferUpdateCounter(uav,inc) - %155 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %156 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %155, i8 1) ; BufferUpdateCounter(uav,inc) - %157 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %157, i32 %156, i32 0, i32 74, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %158 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %158, i32 %156, i32 76, i32 %137, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %159 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %160 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %159, i8 1) ; BufferUpdateCounter(uav,inc) - %161 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %162 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %161, i8 1) ; BufferUpdateCounter(uav,inc) - %163 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %163, i32 %162, i32 0, i32 77, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %164 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %164, i32 %162, i32 76, i32 %137, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %165 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %166 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %165, i8 1) ; BufferUpdateCounter(uav,inc) - %167 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %168 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %167, i8 1) ; BufferUpdateCounter(uav,inc) - %169 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %169, i32 %168, i32 0, i32 76, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %170 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %170, i32 %168, i32 76, i32 %137, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %171 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %172 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %171, i8 1) ; BufferUpdateCounter(uav,inc) - %173 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %174 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %173, i8 1) ; BufferUpdateCounter(uav,inc) - %175 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %175, i32 %174, i32 0, i32 78, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %176 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %176, i32 %174, i32 76, i32 %137, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %177 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %178 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %177, i8 1) ; BufferUpdateCounter(uav,inc) - %179 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %180 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %179, i8 1) ; BufferUpdateCounter(uav,inc) - %181 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %181, i32 %180, i32 0, i32 79, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %182 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %182, i32 %180, i32 76, i32 %137, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %183 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %184 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %183, i8 1) ; BufferUpdateCounter(uav,inc) - %185 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %186 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %185, i8 1) ; BufferUpdateCounter(uav,inc) - %187 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %188 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %187, i8 1) ; BufferUpdateCounter(uav,inc) - %189 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %190 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %189, i8 1) ; BufferUpdateCounter(uav,inc) - %191 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %192 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %191, i8 1) ; BufferUpdateCounter(uav,inc) - %193 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %194 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %193, i8 1) ; BufferUpdateCounter(uav,inc) - %195 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %196 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %195, i8 1) ; BufferUpdateCounter(uav,inc) - %197 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %198 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %197, i8 1) ; BufferUpdateCounter(uav,inc) - %199 = bitcast i32 %184 to float - %200 = bitcast i32 %186 to float - %201 = fcmp fast ogt float %199, 0.000000e+00 - %202 = zext i1 %201 to i32 - %203 = fcmp fast olt float %200, %199 - %204 = zext i1 %203 to i32 - %205 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %206 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %205, i8 1) ; BufferUpdateCounter(uav,inc) - %207 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %207, i32 %206, i32 0, i32 80, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %208 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %208, i32 %206, i32 76, i32 %137, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %209 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %210 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %209, i8 1) ; BufferUpdateCounter(uav,inc) - call void @dx.op.callShader.struct.SomeValues_0(i32 159, i32 %210, %struct.SomeValues_0* nonnull %4) ; CallShader(ShaderIndex,Parameter) - %211 = getelementptr inbounds %struct.SomeValues_0, %struct.SomeValues_0* %4, i32 0, i32 0 - %212 = load i32, i32* %211, align 8 - %213 = add i32 %160, %154 - %214 = add i32 %213, %166 - %215 = add i32 %214, %172 - %216 = add i32 %215, %178 - %217 = add i32 %216, %202 - %218 = add i32 %217, %204 - %219 = add i32 %218, %212 - br label %229 - -; <label>:220 ; preds = %120 - %221 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %222 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %221, i8 1) ; BufferUpdateCounter(uav,inc) - %223 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %223, i32 %222, i32 0, i32 73, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %224 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %224, i32 %222, i32 76, i32 %137, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %225 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %226 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %225, i8 1) ; BufferUpdateCounter(uav,inc) - %227 = icmp ne i32 %226, 0 - %228 = zext i1 %227 to i32 - br label %229 - -; <label>:229 ; preds = %220, %148 - %230 = phi i32 [ %219, %148 ], [ %228, %220 ] - %231 = add i32 %230, %121 - %232 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<unsigned int>"(i32 160, %"class.RWStructuredBuffer<unsigned int>" %2) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %232, i32 %10, i32 0, i32 %231, 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 -declare i32 @dx.op.bufferUpdateCounter(i32, %dx.types.Handle, i8) #0 - -; Function Attrs: nounwind -declare void @dx.op.rawBufferStore.i32(i32, %dx.types.Handle, i32, i32, i32, i32, i32, i32, i8, i32) #0 - -; Function Attrs: nounwind -declare void @dx.op.callShader.struct.SomeValues_0(i32, i32, %struct.SomeValues_0*) #0 - -; Function Attrs: nounwind -declare void @dx.op.traceRay.struct.NvHitObjectMacroDummyPayloadType(i32, %dx.types.Handle, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, %struct.NvHitObjectMacroDummyPayloadType*) #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.createHandleForLib.struct.RaytracingAccelerationStructure(i32, %struct.RaytracingAccelerationStructure) #2 - -; Function Attrs: nounwind readonly -declare %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<unsigned int>"(i32, %"class.RWStructuredBuffer<unsigned int>") #2 - -attributes #0 = { nounwind } -attributes #1 = { nounwind readnone } -attributes #2 = { nounwind readonly } - -!llvm.ident = !{!0} -!dx.version = !{!1} -!dx.valver = !{!2} -!dx.shaderModel = !{!3} -!dx.resources = !{!4} -!dx.entryPoints = !{!13, !15} - -!0 = !{!"clang version 3.7 (tags/RELEASE_370/final)"} -!1 = !{i32 1, i32 5} -!2 = !{i32 1, i32 7} -!3 = !{!"lib", i32 6, i32 5} -!4 = !{!5, !8, null, null} -!5 = !{!6} -!6 = !{i32 0, %struct.RaytracingAccelerationStructure* @"\01?scene_0@@3URaytracingAccelerationStructure@@A", !"scene_0", i32 0, i32 0, i32 1, i32 16, i32 0, !7} -!7 = !{i32 0, i32 4} -!8 = !{!9, !11} -!9 = !{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, !10} -!10 = !{i32 1, i32 256} -!11 = !{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, !12} -!12 = !{i32 1, i32 4} -!13 = !{null, !"", null, !4, !14} -!14 = !{i32 0, i64 8454160} -!15 = !{void ()* @"\01?rayGenerationMain@@YAXXZ", !"\01?rayGenerationMain@@YAXXZ", null, null, !16} -!16 = !{i32 8, i32 7, i32 5, !17} -!17 = !{i32 0} -!18 = !{!19} -!19 = distinct !{!19, !20, !"\01?HitObject_MakeHit_1@@YA?AUNvHitObject@@URaytracingAccelerationStructure@@IIIIIIURayDesc@@USomeValues_0@@@Z: %agg.result"} -!20 = distinct !{!20, !"\01?HitObject_MakeHit_1@@YA?AUNvHitObject@@URaytracingAccelerationStructure@@IIIIIIURayDesc@@USomeValues_0@@@Z"} -!21 = !{!22} -!22 = distinct !{!22, !23, !"\01?HitObject_GetAttributes_0@@YA?AUSomeValues_0@@UNvHitObject@@@Z: %agg.result"} -!23 = distinct !{!23, !"\01?HitObject_GetAttributes_0@@YA?AUSomeValues_0@@UNvHitObject@@@Z"} -} diff --git a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-miss.slang.1.expected b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-miss.slang.1.expected deleted file mode 100644 index f74c8d5e9..000000000 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-miss.slang.1.expected +++ /dev/null @@ -1,38 +0,0 @@ -result code = 0 -standard error = { -} -standard output = { -#version 450 -#extension GL_EXT_ray_tracing : require -#extension GL_NV_shader_invocation_reorder : require -layout(row_major) uniform; -layout(row_major) buffer; -layout(std430, binding = 0) buffer StructuredBuffer_uint_t_0 { - uint _data[]; -} outputBuffer_0; -struct RayDesc_0 -{ - vec3 Origin_0; - float TMin_0; - vec3 Direction_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); - RayDesc_0 ray_0; - ray_0.Origin_0 = vec3(float(idx_0), 0.0, 0.0); - ray_0.TMin_0 = 0.00999999977648258209; - ray_0.Direction_0 = vec3(0.0, 1.0, 0.0); - ray_0.TMax_0 = 10000.0; - uint _S1 = uint(idx_0); - hitObjectNV hitObj_0; - hitObjectRecordMissNV(hitObj_0, _S1, ray_0.Origin_0, ray_0.TMin_0, ray_0.Direction_0, ray_0.TMax_0); - bool _S2 = (hitObjectIsMissNV((hitObj_0))); - outputBuffer_0._data[_S1] = uint(int(_S2)); - return; -} - -} diff --git a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-miss.slang.expected b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-miss.slang.expected deleted file mode 100644 index e8550c60c..000000000 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-miss.slang.expected +++ /dev/null @@ -1,139 +0,0 @@ -result code = 0 -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: 4aaa7c10f5b9989a1fa5a05376bb77c7 -; -; Pipeline Runtime Information: -; -; Compute Shader -; NumThreads=(4,1,1) -; -; -; Buffer Definitions: -; -; Resource bind info for g_NvidiaExt -; { -; -; struct struct.NvShaderExtnStruct -; { -; -; uint opcode; ; Offset: 0 -; uint rid; ; Offset: 4 -; uint sid; ; Offset: 8 -; uint4 dst1u; ; Offset: 12 -; uint4 src3u; ; Offset: 28 -; uint4 src4u; ; Offset: 44 -; uint4 src5u; ; Offset: 60 -; uint4 src0u; ; Offset: 76 -; uint4 src1u; ; Offset: 92 -; uint4 src2u; ; Offset: 108 -; uint4 dst0u; ; Offset: 124 -; uint markUavRef; ; Offset: 140 -; uint numOutputsForIncCounter; ; Offset: 144 -; float padding1[27]; ; Offset: 148 -; -; } $Element; ; Offset: 0 Size: 256 -; -; } -; -; Resource bind info for outputBuffer_0 -; { -; -; uint $Element; ; Offset: 0 Size: 4 -; -; } -; -; -; Resource Bindings: -; -; Name Type Format Dim ID HLSL Bind Count -; ------------------------------ ---------- ------- ----------- ------- -------------- ------ -; g_NvidiaExt UAV struct r/w+cnt U0 u0 1 -; outputBuffer_0 UAV struct r/w U1 u1 1 -; -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 } - -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) - %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 = 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 %8, 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 %8, i32 76, i32 %7, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %9 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %2, i8 1) ; BufferUpdateCounter(uav,inc) - %10 = icmp ne i32 %9, 0 - %11 = zext i1 %10 to i32 - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %1, i32 %3, i32 0, i32 %11, 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 - -; Function Attrs: nounwind -declare i32 @dx.op.bufferUpdateCounter(i32, %dx.types.Handle, i8) #1 - -; Function Attrs: nounwind readonly -declare %dx.types.Handle @dx.op.createHandle(i32, i8, i32, i32, i1) #2 - -attributes #0 = { nounwind readnone } -attributes #1 = { nounwind } -attributes #2 = { nounwind readonly } - -!llvm.ident = !{!0} -!dx.version = !{!1} -!dx.valver = !{!2} -!dx.shaderModel = !{!3} -!dx.resources = !{!4} -!dx.entryPoints = !{!10} - -!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} -!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} -!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} -!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} -} diff --git a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-nop.slang.1.expected b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-nop.slang.1.expected deleted file mode 100644 index 2522ee2e5..000000000 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-nop.slang.1.expected +++ /dev/null @@ -1,27 +0,0 @@ -result code = 0 -standard error = { -} -standard output = { -#version 460 -#extension GL_EXT_ray_tracing : require -#extension GL_NV_shader_invocation_reorder : require -layout(row_major) uniform; -layout(row_major) buffer; -layout(std430, binding = 0) buffer StructuredBuffer_uint_t_0 { - uint _data[]; -} outputBuffer_0; -void main() -{ - uvec3 _S1 = ((gl_LaunchIDEXT)); - ivec2 launchID_0 = ivec2(_S1.xy); - uvec3 _S2 = ((gl_LaunchSizeEXT)); - int idx_0 = launchID_0.x; - hitObjectNV hitObj_0; - hitObjectRecordEmptyNV((hitObj_0)); - uint _S3 = uint(idx_0); - bool _S4 = (hitObjectIsEmptyNV((hitObj_0))); - outputBuffer_0._data[_S3] = uint(_S4); - return; -} - -} diff --git a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-nop.slang.expected b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-nop.slang.expected deleted file mode 100644 index 5861defd2..000000000 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-make-nop.slang.expected +++ /dev/null @@ -1,131 +0,0 @@ -result code = 0 -standard error = { -} -standard output = { -; -; Note: shader requires additional functionality: -; UAVs at every shader stage -; -; shader hash: 2e71f52ef69a934b50737af1d5f3a7a5 -; -; Buffer Definitions: -; -; Resource bind info for g_NvidiaExt -; { -; -; struct struct.NvShaderExtnStruct -; { -; -; uint opcode; ; Offset: 0 -; uint rid; ; Offset: 4 -; uint sid; ; Offset: 8 -; uint4 dst1u; ; Offset: 12 -; uint4 src3u; ; Offset: 28 -; uint4 src4u; ; Offset: 44 -; uint4 src5u; ; Offset: 60 -; uint4 src0u; ; Offset: 76 -; uint4 src1u; ; Offset: 92 -; uint4 src2u; ; Offset: 108 -; uint4 dst0u; ; Offset: 124 -; uint markUavRef; ; Offset: 140 -; uint numOutputsForIncCounter; ; Offset: 144 -; float padding1[27]; ; Offset: 148 -; -; } $Element; ; Offset: 0 Size: 256 -; -; } -; -; Resource bind info for outputBuffer_0 -; { -; -; uint $Element; ; Offset: 0 Size: 4 -; -; } -; -; -; Resource Bindings: -; -; Name Type Format Dim ID HLSL Bind Count -; ------------------------------ ---------- ------- ----------- ------- -------------- ------ -; g_NvidiaExt UAV struct r/w+cnt U0 u0 1 -; outputBuffer_0 UAV struct r/w U1 u1 1 -; -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" - -%"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 - -; 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 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) - %5 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %4, i8 1) ; BufferUpdateCounter(uav,inc) - %6 = 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 %6, i32 %5, i32 0, i32 85, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %7 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) - %8 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %7, i8 1) ; BufferUpdateCounter(uav,inc) - %9 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %2) ; CreateHandleForLib(Resource) - %10 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %9, i8 1) ; BufferUpdateCounter(uav,inc) - %11 = 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 %11, i32 %10, i32 0, i32 84, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %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 %10, i32 76, i32 %8, 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) - %14 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %13, i8 1) ; BufferUpdateCounter(uav,inc) - %15 = icmp ne i32 %14, 0 - %16 = zext i1 %15 to i32 - %17 = 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 %17, i32 %3, i32 0, i32 %16, 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 -declare i32 @dx.op.bufferUpdateCounter(i32, %dx.types.Handle, i8) #0 - -; Function Attrs: nounwind -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.createHandleForLib.class.RWStructuredBuffer<unsigned int>"(i32, %"class.RWStructuredBuffer<unsigned int>") #2 - -attributes #0 = { nounwind } -attributes #1 = { nounwind readnone } -attributes #2 = { nounwind readonly } - -!llvm.ident = !{!0} -!dx.version = !{!1} -!dx.valver = !{!2} -!dx.shaderModel = !{!3} -!dx.resources = !{!4} -!dx.entryPoints = !{!10, !12} - -!0 = !{!"clang version 3.7 (tags/RELEASE_370/final)"} -!1 = !{i32 1, i32 5} -!2 = !{i32 1, i32 7} -!3 = !{!"lib", i32 6, i32 5} -!4 = !{null, !5, null, null} -!5 = !{!6, !8} -!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>"* @"\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 = !{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-output.slang.1.expected b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-output.slang.1.expected deleted file mode 100644 index 778aa0e58..000000000 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-output.slang.1.expected +++ /dev/null @@ -1,113 +0,0 @@ -result code = 0 -standard error = { -} -standard output = { -#version 460 -#extension GL_EXT_ray_tracing : require -#extension GL_NV_shader_invocation_reorder : require -#extension GL_EXT_spirv_intrinsics : require -layout(row_major) uniform; -layout(row_major) buffer; -layout(binding = 0) -uniform accelerationStructureEXT scene_0; - -layout(std430, binding = 1) buffer StructuredBuffer_uint_t_0 { - uint _data[]; -} outputBuffer_0; -struct MyAttributes_0 -{ - uint value_0; -}; - -layout(location = 0) -hitObjectAttributeNV -MyAttributes_0 t_0; - -struct MyRayPayload_0 -{ - uint value_1; -}; - -layout(location = 0) -rayPayloadEXT -MyRayPayload_0 p_0; - -struct RayDesc_0 -{ - vec3 Origin_0; - float TMin_0; - vec3 Direction_0; - float TMax_0; -}; - -RayDesc_0 makeRay_0(uint idx_0, uint variation_0) -{ - RayDesc_0 ray_0; - ray_0.Origin_0 = vec3(float(idx_0), 0.0, float(variation_0)); - ray_0.TMin_0 = 0.00999999977648258209; - ray_0.Direction_0 = vec3(0.0, 1.0, 0.0); - ray_0.TMax_0 = 10000.0; - return ray_0; -} - -hitObjectNV myTraceRay_0(uint idx_1) -{ - RayDesc_0 ray_1 = makeRay_0(idx_1, 0U); - hitObjectNV hitObj_0; - p_0.value_1 = idx_1; - hitObjectTraceRayNV(hitObj_0, scene_0, 20U, 255U, 0U, 4U, 0U, ray_1.Origin_0, ray_1.TMin_0, ray_1.Direction_0, ray_1.TMax_0, (0)); - return hitObj_0; -} - -MyAttributes_0 HitObject_GetAttributes_0(hitObjectNV this_0) -{ - hitObjectGetAttributesNV((this_0), ((0))); - return t_0; -} - -void accumulate_0(inout uint value_2, spirv_by_reference hitObjectNV hit_0) -{ - value_2 = value_2 * 256U; - bool _S1 = (hitObjectIsHitNV((hit_0))); - if(_S1) - { - MyAttributes_0 _S2 = HitObject_GetAttributes_0(hit_0); - value_2 = value_2 + (16U + _S2.value_0); - } - return; -} - -void copyHitObjectHandle_0(spirv_by_reference hitObjectNV dst_0, spirv_by_reference hitObjectNV src_0) -{ - dst_0 = src_0; - return; -} - -void myMakeMiss_0(uint idx_2, spirv_by_reference hitObjectNV h_0) -{ - RayDesc_0 ray_2 = makeRay_0(idx_2, 1U); - hitObjectNV hitObj_1; - hitObjectRecordMissNV(hitObj_1, idx_2, ray_2.Origin_0, ray_2.TMin_0, ray_2.Direction_0, ray_2.TMax_0); - h_0 = hitObj_1; - return; -} - -void main() -{ - uvec3 _S3 = ((gl_LaunchIDEXT)); - uint idx_3 = _S3.x; - uint r_0 = 0U; - hitObjectNV hit_1 = myTraceRay_0(idx_3); - accumulate_0(r_0, hit_1); - hitObjectNV hit2_0; - copyHitObjectHandle_0(hit2_0, hit_1); - accumulate_0(r_0, hit2_0); - hitObjectNV hitBackup_0 = hit_1; - myMakeMiss_0(idx_3, hit_1); - accumulate_0(r_0, hit_1); - accumulate_0(r_0, hitBackup_0); - outputBuffer_0._data[idx_3] = r_0; - return; -} - -} diff --git a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-reorder-thread.slang.1.expected b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-reorder-thread.slang.1.expected deleted file mode 100644 index 167d27514..000000000 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-reorder-thread.slang.1.expected +++ /dev/null @@ -1,122 +0,0 @@ -result code = 0 -standard error = { -} -standard output = { -#version 460 -#extension GL_EXT_ray_tracing : require -#extension GL_NV_shader_invocation_reorder : require -#extension GL_EXT_spirv_intrinsics : require -layout(row_major) uniform; -layout(row_major) buffer; -layout(binding = 0) -uniform accelerationStructureEXT scene_0; - -layout(std430, binding = 1) buffer StructuredBuffer_uint_t_0 { - uint _data[]; -} outputBuffer_0; -struct SomeValues_0 -{ - int a_0; - float b_0; -}; - -layout(location = 0) -rayPayloadEXT -SomeValues_0 p_0; - -layout(location = 0) -hitObjectAttributeNV -SomeValues_0 t_0; - -layout(location = 1) -rayPayloadEXT -SomeValues_0 p_1; - -SomeValues_0 HitObject_GetAttributes_0(hitObjectNV this_0) -{ - hitObjectGetAttributesNV((this_0), ((0))); - return t_0; -} - -uint calcValue_0(spirv_by_reference hitObjectNV hit_0) -{ - bool _S1 = (hitObjectIsHitNV((hit_0))); - uint r_0; - if(_S1) - { - uint instanceIndex_0 = (hitObjectGetInstanceCustomIndexNV((hit_0))); - uint instanceID_0 = (hitObjectGetInstanceIdNV((hit_0))); - uint geometryIndex_0 = (hitObjectGetGeometryIndexNV((hit_0))); - uint primitiveIndex_0 = (hitObjectGetPrimitiveIndexNV((hit_0))); - SomeValues_0 objSomeValues_0 = HitObject_GetAttributes_0(hit_0); - r_0 = uint(int(instanceIndex_0 + instanceID_0 + geometryIndex_0 + primitiveIndex_0) + objSomeValues_0.a_0); - } - else - { - r_0 = 0U; - } - return r_0; -} - -void HitObject_Invoke_0(accelerationStructureEXT AccelerationStructure_0, spirv_by_reference hitObjectNV HitOrMiss_0, inout SomeValues_0 Payload_0) -{ - p_0 = Payload_0; - hitObjectExecuteShaderNV(HitOrMiss_0, (0)); - Payload_0 = p_0; - return; -} - -struct RayDesc_0 -{ - vec3 Origin_0; - float TMin_0; - vec3 Direction_0; - float TMax_0; -}; - -void main() -{ - uvec3 _S2 = ((gl_LaunchIDEXT)); - ivec2 launchID_0 = ivec2(_S2.xy); - uvec3 _S3 = ((gl_LaunchSizeEXT)); - int idx_0 = launchID_0.x; - float _S4 = float(idx_0); - float _S5 = _S4 * 2.0; - RayDesc_0 ray_0; - ray_0.Origin_0 = vec3(_S4, 0.0, 0.0); - ray_0.TMin_0 = 0.00999999977648258209; - ray_0.Direction_0 = vec3(0.0, 1.0, 0.0); - ray_0.TMax_0 = 10000.0; - RayDesc_0 _S6 = ray_0; - hitObjectNV hitObj_0; - p_1.a_0 = idx_0; - p_1.b_0 = _S5; - hitObjectTraceRayNV(hitObj_0, scene_0, 20U, 255U, 0U, 4U, 0U, _S6.Origin_0, _S6.TMin_0, _S6.Direction_0, _S6.TMax_0, (1)); - hitObjectNV hit_1 = hitObj_0; - uint r_1 = calcValue_0(hit_1); - reorderThreadNV(hit_1); - float _S7 = _S4 * 4.0; - SomeValues_0 otherValues_0; - otherValues_0.a_0 = idx_0 * -1; - otherValues_0.b_0 = _S7; - HitObject_Invoke_0(scene_0, hit_1, otherValues_0); - uint _S8 = calcValue_0(hit_1); - uint r_2 = r_1 + _S8; - reorderThreadNV(hit_1, uint(idx_0 & 3), 2U); - float _S9 = _S4 * 8.0; - otherValues_0.a_0 = idx_0 * -2; - otherValues_0.b_0 = _S9; - HitObject_Invoke_0(scene_0, hit_1, otherValues_0); - uint _S10 = calcValue_0(hit_1); - uint r_3 = r_2 + _S10; - reorderThreadNV(uint(idx_0 & 1), 1U); - float _S11 = _S4 * 16.0; - otherValues_0.a_0 = idx_0 * -4; - otherValues_0.b_0 = _S11; - HitObject_Invoke_0(scene_0, hit_1, otherValues_0); - uint _S12 = calcValue_0(hit_1); - outputBuffer_0._data[uint(idx_0)] = r_3 + _S12; - return; -} - -} diff --git a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-reorder-thread.slang.expected b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-reorder-thread.slang.expected deleted file mode 100644 index ae8efee2b..000000000 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-reorder-thread.slang.expected +++ /dev/null @@ -1,121 +0,0 @@ -result code = 0 -standard error = { -} -standard output = { -#version 460 -#extension GL_EXT_ray_tracing : require -#extension GL_NV_shader_invocation_reorder : require -layout(row_major) uniform; -layout(row_major) buffer; -layout(binding = 0) -uniform accelerationStructureEXT scene_0; - -layout(std430, binding = 1) buffer _S1 { - uint _data[]; -} outputBuffer_0; -struct SomeValues_0 -{ - int a_0; - float b_0; -}; - -layout(location = 0) -rayPayloadEXT -SomeValues_0 p_0; - -layout(location = 0) -hitObjectAttributeNV -SomeValues_0 t_0; - -layout(location = 1) -rayPayloadEXT -SomeValues_0 p_1; - -SomeValues_0 HitObject_GetAttributes_0(hitObjectNV this_0) -{ - hitObjectGetAttributesNV((this_0), ((0))); - return t_0; -} - -uint calcValue_0(hitObjectNV hit_0) -{ - bool _S2 = (hitObjectIsHitNV((hit_0))); - uint r_0; - if(_S2) - { - uint instanceIndex_0 = (hitObjectGetInstanceCustomIndexNV((hit_0))); - uint instanceID_0 = (hitObjectGetInstanceIdNV((hit_0))); - uint geometryIndex_0 = (hitObjectGetGeometryIndexNV((hit_0))); - uint primitiveIndex_0 = (hitObjectGetPrimitiveIndexNV((hit_0))); - SomeValues_0 objSomeValues_0 = HitObject_GetAttributes_0(hit_0); - r_0 = uint(int(instanceIndex_0 + instanceID_0 + geometryIndex_0 + primitiveIndex_0) + objSomeValues_0.a_0); - } - else - { - r_0 = 0U; - } - return r_0; -} - -void HitObject_Invoke_0(accelerationStructureEXT AccelerationStructure_0, hitObjectNV HitOrMiss_0, inout SomeValues_0 Payload_0) -{ - p_0 = Payload_0; - hitObjectExecuteShaderNV(HitOrMiss_0, (0)); - Payload_0 = p_0; - return; -} - -struct RayDesc_0 -{ - vec3 Origin_0; - float TMin_0; - vec3 Direction_0; - float TMax_0; -}; - -void main() -{ - uvec3 _S3 = ((gl_LaunchIDEXT)); - ivec2 launchID_0 = ivec2(_S3.xy); - uvec3 _S4 = ((gl_LaunchSizeEXT)); - int idx_0 = launchID_0.x; - float _S5 = float(idx_0); - float _S6 = _S5 * 2.0; - RayDesc_0 ray_0; - ray_0.Origin_0 = vec3(_S5, 0.0, 0.0); - ray_0.TMin_0 = 0.00999999977648258209; - ray_0.Direction_0 = vec3(0.0, 1.0, 0.0); - ray_0.TMax_0 = 10000.0; - RayDesc_0 _S7 = ray_0; - hitObjectNV hitObj_0; - p_1.a_0 = idx_0; - p_1.b_0 = _S6; - hitObjectTraceRayNV(hitObj_0, scene_0, 20U, 255U, 0U, 4U, 0U, _S7.Origin_0, _S7.TMin_0, _S7.Direction_0, _S7.TMax_0, (1)); - uint r_1 = calcValue_0(hitObj_0); - reorderThreadNV(hitObj_0); - float _S8 = _S5 * 4.0; - SomeValues_0 otherValues_0; - otherValues_0.a_0 = idx_0 * -1; - otherValues_0.b_0 = _S8; - HitObject_Invoke_0(scene_0, hitObj_0, otherValues_0); - uint _S9 = calcValue_0(hitObj_0); - uint r_2 = r_1 + _S9; - reorderThreadNV(hitObj_0, uint(idx_0 & 3), 2U); - float _S10 = _S5 * 8.0; - otherValues_0.a_0 = idx_0 * -2; - otherValues_0.b_0 = _S10; - HitObject_Invoke_0(scene_0, hitObj_0, otherValues_0); - uint _S11 = calcValue_0(hitObj_0); - uint r_3 = r_2 + _S11; - reorderThreadNV(uint(idx_0 & 1), 1U); - float _S12 = _S5 * 16.0; - otherValues_0.a_0 = idx_0 * -4; - otherValues_0.b_0 = _S12; - HitObject_Invoke_0(scene_0, hitObj_0, otherValues_0); - uint _S13 = calcValue_0(hitObj_0); - uint r_4 = r_3 + _S13; - ((outputBuffer_0)._data[(uint(idx_0))]) = r_4; - return; -} - -} 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 deleted file mode 100644 index 298edfa02..000000000 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-trace-motion-ray.slang.1.expected +++ /dev/null @@ -1,92 +0,0 @@ -result code = 0 -standard error = { -} -standard output = { -#version 460 -#extension GL_EXT_ray_tracing : require -#extension GL_NV_shader_invocation_reorder : require -#extension GL_EXT_spirv_intrinsics : require -#extension GL_NV_ray_tracing_motion_blur : require -layout(row_major) uniform; -layout(row_major) buffer; -layout(binding = 0) -uniform accelerationStructureEXT scene_0; - -layout(std430, binding = 1) buffer StructuredBuffer_uint_t_0 { - uint _data[]; -} outputBuffer_0; -struct SomeValues_0 -{ - int a_0; - float b_0; -}; - -layout(location = 0) -hitObjectAttributeNV -SomeValues_0 t_0; - -layout(location = 0) -rayPayloadEXT -SomeValues_0 p_0; - -SomeValues_0 HitObject_GetAttributes_0(hitObjectNV this_0) -{ - hitObjectGetAttributesNV((this_0), ((0))); - return t_0; -} - -uint calcValue_0(spirv_by_reference hitObjectNV hit_0) -{ - bool _S1 = (hitObjectIsHitNV((hit_0))); - uint r_0; - if(_S1) - { - uint instanceIndex_0 = (hitObjectGetInstanceCustomIndexNV((hit_0))); - uint instanceID_0 = (hitObjectGetInstanceIdNV((hit_0))); - uint geometryIndex_0 = (hitObjectGetGeometryIndexNV((hit_0))); - uint primitiveIndex_0 = (hitObjectGetPrimitiveIndexNV((hit_0))); - SomeValues_0 objSomeValues_0 = HitObject_GetAttributes_0(hit_0); - r_0 = uint(int(instanceIndex_0 + instanceID_0 + geometryIndex_0 + primitiveIndex_0) + objSomeValues_0.a_0); - } - else - { - r_0 = 0U; - } - return r_0; -} - -struct RayDesc_0 -{ - vec3 Origin_0; - float TMin_0; - vec3 Direction_0; - float TMax_0; -}; - -void main() -{ - uvec3 _S2 = ((gl_LaunchIDEXT)); - ivec2 launchID_0 = ivec2(_S2.xy); - uvec3 _S3 = ((gl_LaunchSizeEXT)); - int idx_0 = launchID_0.x; - float currentTime_0 = float(idx_0 / 4); - float _S4 = float(idx_0); - float _S5 = _S4 * 2.0; - RayDesc_0 ray_0; - ray_0.Origin_0 = vec3(_S4, 0.0, 0.0); - ray_0.TMin_0 = 0.00999999977648258209; - ray_0.Direction_0 = vec3(0.0, 1.0, 0.0); - ray_0.TMax_0 = 10000.0; - RayDesc_0 _S6 = ray_0; - hitObjectNV hitObj_0; - p_0.a_0 = idx_0; - p_0.b_0 = _S5; - hitObjectTraceRayMotionNV(hitObj_0, scene_0, 20U, 255U, 0U, 4U, 0U, _S6.Origin_0, _S6.TMin_0, _S6.Direction_0, _S6.TMax_0, currentTime_0, (0)); - hitObjectNV hit_1 = hitObj_0; - uint _S7 = uint(idx_0); - uint _S8 = calcValue_0(hit_1); - outputBuffer_0._data[_S7] = _S8; - return; -} - -} diff --git a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-trace-ray.slang.1.expected b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-trace-ray.slang.1.expected deleted file mode 100644 index e6091a555..000000000 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-trace-ray.slang.1.expected +++ /dev/null @@ -1,90 +0,0 @@ -result code = 0 -standard error = { -} -standard output = { -#version 460 -#extension GL_EXT_ray_tracing : require -#extension GL_NV_shader_invocation_reorder : require -#extension GL_EXT_spirv_intrinsics : require -layout(row_major) uniform; -layout(row_major) buffer; -layout(binding = 0) -uniform accelerationStructureEXT scene_0; - -layout(std430, binding = 1) buffer StructuredBuffer_uint_t_0 { - uint _data[]; -} outputBuffer_0; -struct SomeValues_0 -{ - int a_0; - float b_0; -}; - -layout(location = 0) -hitObjectAttributeNV -SomeValues_0 t_0; - -layout(location = 0) -rayPayloadEXT -SomeValues_0 p_0; - -SomeValues_0 HitObject_GetAttributes_0(hitObjectNV this_0) -{ - hitObjectGetAttributesNV((this_0), ((0))); - return t_0; -} - -uint calcValue_0(spirv_by_reference hitObjectNV hit_0) -{ - bool _S1 = (hitObjectIsHitNV((hit_0))); - uint r_0; - if(_S1) - { - uint instanceIndex_0 = (hitObjectGetInstanceCustomIndexNV((hit_0))); - uint instanceID_0 = (hitObjectGetInstanceIdNV((hit_0))); - uint geometryIndex_0 = (hitObjectGetGeometryIndexNV((hit_0))); - uint primitiveIndex_0 = (hitObjectGetPrimitiveIndexNV((hit_0))); - SomeValues_0 objSomeValues_0 = HitObject_GetAttributes_0(hit_0); - r_0 = uint(int(instanceIndex_0 + instanceID_0 + geometryIndex_0 + primitiveIndex_0) + objSomeValues_0.a_0); - } - else - { - r_0 = 0U; - } - return r_0; -} - -struct RayDesc_0 -{ - vec3 Origin_0; - float TMin_0; - vec3 Direction_0; - float TMax_0; -}; - -void main() -{ - uvec3 _S2 = ((gl_LaunchIDEXT)); - ivec2 launchID_0 = ivec2(_S2.xy); - uvec3 _S3 = ((gl_LaunchSizeEXT)); - int idx_0 = launchID_0.x; - float _S4 = float(idx_0); - float _S5 = _S4 * 2.0; - RayDesc_0 ray_0; - ray_0.Origin_0 = vec3(_S4, 0.0, 0.0); - ray_0.TMin_0 = 0.00999999977648258209; - ray_0.Direction_0 = vec3(0.0, 1.0, 0.0); - ray_0.TMax_0 = 10000.0; - RayDesc_0 _S6 = ray_0; - hitObjectNV hitObj_0; - p_0.a_0 = idx_0; - p_0.b_0 = _S5; - hitObjectTraceRayNV(hitObj_0, scene_0, 20U, 255U, 0U, 4U, 0U, _S6.Origin_0, _S6.TMin_0, _S6.Direction_0, _S6.TMax_0, (0)); - hitObjectNV hit_1 = hitObj_0; - uint _S7 = uint(idx_0); - uint _S8 = calcValue_0(hit_1); - outputBuffer_0._data[_S7] = _S8; - return; -} - -} diff --git a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-trace-ray.slang.expected b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-trace-ray.slang.expected deleted file mode 100644 index 45f086621..000000000 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-trace-ray.slang.expected +++ /dev/null @@ -1,225 +0,0 @@ -result code = 0 -standard error = { -} -standard output = { -; -; Note: shader requires additional functionality: -; UAVs at every shader stage -; -; shader hash: 5958a10f52253a55aac002cb7f042b33 -; -; Buffer Definitions: -; -; Resource bind info for g_NvidiaExt -; { -; -; struct struct.NvShaderExtnStruct -; { -; -; uint opcode; ; Offset: 0 -; uint rid; ; Offset: 4 -; uint sid; ; Offset: 8 -; uint4 dst1u; ; Offset: 12 -; uint4 src3u; ; Offset: 28 -; uint4 src4u; ; Offset: 44 -; uint4 src5u; ; Offset: 60 -; uint4 src0u; ; Offset: 76 -; uint4 src1u; ; Offset: 92 -; uint4 src2u; ; Offset: 108 -; uint4 dst0u; ; Offset: 124 -; uint markUavRef; ; Offset: 140 -; uint numOutputsForIncCounter; ; Offset: 144 -; float padding1[27]; ; Offset: 148 -; -; } $Element; ; Offset: 0 Size: 256 -; -; } -; -; Resource bind info for outputBuffer_0 -; { -; -; uint $Element; ; Offset: 0 Size: 4 -; -; } -; -; -; Resource Bindings: -; -; Name Type Format Dim ID HLSL Bind Count -; ------------------------------ ---------- ------- ----------- ------- -------------- ------ -; scene_0 texture i32 ras T0 t0 1 -; g_NvidiaExt UAV struct r/w+cnt U0 u0 1 -; outputBuffer_0 UAV struct r/w U1 u1 1 -; -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" - -%"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] } -%struct.RaytracingAccelerationStructure = type { i32 } -%"class.RWStructuredBuffer<unsigned int>" = type { i32 } -%struct.SomeValues_0 = type { i32, float } -%dx.types.Handle = type { i8* } - -@"\01?g_NvidiaExt@@3V?$RWStructuredBuffer@UNvShaderExtnStruct@@@@A" = external constant %"class.RWStructuredBuffer<NvShaderExtnStruct>", align 4 -@"\01?scene_0@@3URaytracingAccelerationStructure@@A" = external constant %struct.RaytracingAccelerationStructure, align 4 -@"\01?outputBuffer_0@@3V?$RWStructuredBuffer@I@@A" = external constant %"class.RWStructuredBuffer<unsigned int>", align 4 - -; Function Attrs: nounwind -define void @"\01?rayGenerationMain@@YAXXZ"() #0 { - %1 = load %struct.RaytracingAccelerationStructure, %struct.RaytracingAccelerationStructure* @"\01?scene_0@@3URaytracingAccelerationStructure@@A", align 4, !noalias !18 - %2 = load %"class.RWStructuredBuffer<unsigned int>", %"class.RWStructuredBuffer<unsigned int>"* @"\01?outputBuffer_0@@3V?$RWStructuredBuffer@I@@A", align 4 - %3 = load %"class.RWStructuredBuffer<NvShaderExtnStruct>", %"class.RWStructuredBuffer<NvShaderExtnStruct>"* @"\01?g_NvidiaExt@@3V?$RWStructuredBuffer@UNvShaderExtnStruct@@@@A", align 4, !noalias !22 - %4 = alloca %struct.SomeValues_0, align 8 - %5 = alloca %struct.SomeValues_0, align 4 - %6 = call i32 @dx.op.dispatchRaysIndex.i32(i32 145, i8 0) ; DispatchRaysIndex(col) - %7 = sitofp i32 %6 to float - %8 = fmul fast float %7, 2.000000e+00 - %9 = getelementptr inbounds %struct.SomeValues_0, %struct.SomeValues_0* %5, i32 0, i32 0 - store i32 %6, i32* %9, align 4 - %10 = getelementptr inbounds %struct.SomeValues_0, %struct.SomeValues_0* %5, i32 0, i32 1 - store float %8, float* %10, align 4 - %11 = sitofp i32 %6 to float - %12 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %13 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %12, i8 1) ; BufferUpdateCounter(uav,inc) - %14 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %14, i32 %13, i32 0, i32 67, 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>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %15, i32 %13, i32 144, i32 2, 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>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %16, i32 %13, i32 76, i32 0, 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>" %3) ; CreateHandleForLib(Resource) - %18 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %17, i8 1) ; BufferUpdateCounter(uav,inc) - %19 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %20 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %19, i8 1) ; BufferUpdateCounter(uav,inc) - %21 = call %dx.types.Handle @dx.op.createHandleForLib.struct.RaytracingAccelerationStructure(i32 160, %struct.RaytracingAccelerationStructure %1) ; CreateHandleForLib(Resource) - call void @dx.op.traceRay.struct.SomeValues_0(i32 157, %dx.types.Handle %21, i32 20, i32 255, i32 0, i32 4, i32 %20, float %11, float 0.000000e+00, float 0.000000e+00, float 0x3F847AE140000000, float 0.000000e+00, float 1.000000e+00, float 0.000000e+00, float 1.000000e+04, %struct.SomeValues_0* nonnull %5) ; TraceRay(AccelerationStructure,RayFlags,InstanceInclusionMask,RayContributionToHitGroupIndex,MultiplierForGeometryContributionToShaderIndex,MissShaderIndex,Origin_X,Origin_Y,Origin_Z,TMin,Direction_X,Direction_Y,Direction_Z,TMax,payload) - %22 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %23 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %22, i8 1) ; BufferUpdateCounter(uav,inc) - %24 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %24, i32 %23, i32 0, i32 83, 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>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %25, i32 %23, i32 76, i32 %18, 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>" %3) ; CreateHandleForLib(Resource) - %27 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %26, i8 1) ; BufferUpdateCounter(uav,inc) - %28 = icmp eq i32 %27, 0 - br i1 %28, label %66, label %29 - -; <label>:29 ; preds = %0 - %30 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %31 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %30, i8 1) ; BufferUpdateCounter(uav,inc) - %32 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %32, i32 %31, i32 0, i32 75, 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>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %33, i32 %31, i32 76, i32 %18, 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>" %3) ; 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>" %3) ; 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>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %38, i32 %37, i32 0, i32 74, 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>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %39, i32 %37, i32 76, i32 %18, 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>" %3) ; CreateHandleForLib(Resource) - %41 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %40, i8 1) ; BufferUpdateCounter(uav,inc) - %42 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %43 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %42, i8 1) ; BufferUpdateCounter(uav,inc) - %44 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %44, i32 %43, i32 0, i32 77, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %45 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %45, i32 %43, i32 76, i32 %18, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %46 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %47 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %46, i8 1) ; BufferUpdateCounter(uav,inc) - %48 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %49 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %48, i8 1) ; BufferUpdateCounter(uav,inc) - %50 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %50, i32 %49, i32 0, i32 76, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %51 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %51, i32 %49, i32 76, i32 %18, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %52 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %53 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %52, i8 1) ; BufferUpdateCounter(uav,inc) - %54 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %55 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %54, i8 1) ; BufferUpdateCounter(uav,inc) - %56 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %56, i32 %55, i32 0, i32 80, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %57 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %57, i32 %55, i32 76, i32 %18, i32 undef, i32 undef, i32 undef, i8 1, i32 4) ; RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment) - %58 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<NvShaderExtnStruct>"(i32 160, %"class.RWStructuredBuffer<NvShaderExtnStruct>" %3) ; CreateHandleForLib(Resource) - %59 = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle %58, i8 1) ; BufferUpdateCounter(uav,inc) - call void @dx.op.callShader.struct.SomeValues_0(i32 159, i32 %59, %struct.SomeValues_0* nonnull %4) ; CallShader(ShaderIndex,Parameter) - %60 = getelementptr inbounds %struct.SomeValues_0, %struct.SomeValues_0* %4, i32 0, i32 0 - %61 = load i32, i32* %60, align 8 - %62 = add i32 %41, %35 - %63 = add i32 %62, %47 - %64 = add i32 %63, %53 - %65 = add i32 %64, %61 - br label %66 - -; <label>:66 ; preds = %29, %0 - %67 = phi i32 [ %65, %29 ], [ 0, %0 ] - %68 = call %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<unsigned int>"(i32 160, %"class.RWStructuredBuffer<unsigned int>" %2) ; CreateHandleForLib(Resource) - call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %68, i32 %6, i32 0, i32 %67, 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 -declare i32 @dx.op.bufferUpdateCounter(i32, %dx.types.Handle, i8) #0 - -; Function Attrs: nounwind -declare void @dx.op.rawBufferStore.i32(i32, %dx.types.Handle, i32, i32, i32, i32, i32, i32, i8, i32) #0 - -; Function Attrs: nounwind -declare void @dx.op.traceRay.struct.SomeValues_0(i32, %dx.types.Handle, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, %struct.SomeValues_0*) #0 - -; Function Attrs: nounwind -declare void @dx.op.callShader.struct.SomeValues_0(i32, i32, %struct.SomeValues_0*) #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.createHandleForLib.struct.RaytracingAccelerationStructure(i32, %struct.RaytracingAccelerationStructure) #2 - -; Function Attrs: nounwind readonly -declare %dx.types.Handle @"dx.op.createHandleForLib.class.RWStructuredBuffer<unsigned int>"(i32, %"class.RWStructuredBuffer<unsigned int>") #2 - -attributes #0 = { nounwind } -attributes #1 = { nounwind readnone } -attributes #2 = { nounwind readonly } - -!llvm.ident = !{!0} -!dx.version = !{!1} -!dx.valver = !{!2} -!dx.shaderModel = !{!3} -!dx.resources = !{!4} -!dx.entryPoints = !{!13, !15} - -!0 = !{!"clang version 3.7 (tags/RELEASE_370/final)"} -!1 = !{i32 1, i32 5} -!2 = !{i32 1, i32 7} -!3 = !{!"lib", i32 6, i32 5} -!4 = !{!5, !8, null, null} -!5 = !{!6} -!6 = !{i32 0, %struct.RaytracingAccelerationStructure* @"\01?scene_0@@3URaytracingAccelerationStructure@@A", !"scene_0", i32 0, i32 0, i32 1, i32 16, i32 0, !7} -!7 = !{i32 0, i32 4} -!8 = !{!9, !11} -!9 = !{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, !10} -!10 = !{i32 1, i32 256} -!11 = !{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, !12} -!12 = !{i32 1, i32 4} -!13 = !{null, !"", null, !4, !14} -!14 = !{i32 0, i64 8454160} -!15 = !{void ()* @"\01?rayGenerationMain@@YAXXZ", !"\01?rayGenerationMain@@YAXXZ", null, null, !16} -!16 = !{i32 8, i32 7, i32 5, !17} -!17 = !{i32 0} -!18 = !{!19, !21} -!19 = distinct !{!19, !20, !"\01?HitObject_TraceRay_0@@YA?AUNvHitObject@@URaytracingAccelerationStructure@@IIIIIURayDesc@@USomeValues_0@@@Z: %agg.result"} -!20 = distinct !{!20, !"\01?HitObject_TraceRay_0@@YA?AUNvHitObject@@URaytracingAccelerationStructure@@IIIIIURayDesc@@USomeValues_0@@@Z"} -!21 = distinct !{!21, !20, !"\01?HitObject_TraceRay_0@@YA?AUNvHitObject@@URaytracingAccelerationStructure@@IIIIIURayDesc@@USomeValues_0@@@Z: %Payload_0"} -!22 = !{!23} -!23 = distinct !{!23, !24, !"\01?HitObject_GetAttributes_0@@YA?AUSomeValues_0@@UNvHitObject@@@Z: %agg.result"} -!24 = distinct !{!24, !"\01?HitObject_GetAttributes_0@@YA?AUSomeValues_0@@UNvHitObject@@@Z"} -} |
