diff --git a/external/SPIRV-Headers b/external/SPIRV-Headers index ce9dfb0149..ad9184e76a 160000 --- a/external/SPIRV-Headers +++ b/external/SPIRV-Headers @@ -1 +1 @@ -Subproject commit ce9dfb01496073a02d74581ae909384763b41ff8 +Subproject commit ad9184e76a66b1001c29db9b0a3e87f646c64de0 diff --git a/external/SPIRV-Tools b/external/SPIRV-Tools index a52828d672..c1cb30bb04 160000 --- a/external/SPIRV-Tools +++ b/external/SPIRV-Tools @@ -1 +1 @@ -Subproject commit a52828d672ab1622c308d0a6fc99630b79561609 +Subproject commit c1cb30bb04e2bf911755a40df1242cc6e3d83e26 diff --git a/tools/clang/test/CodeGenSPIRV/inline-spirv/spv.inline.decorate.member.hlsl b/tools/clang/test/CodeGenSPIRV/inline-spirv/spv.inline.decorate.member.hlsl index 88a902d326..719be2df64 100644 --- a/tools/clang/test/CodeGenSPIRV/inline-spirv/spv.inline.decorate.member.hlsl +++ b/tools/clang/test/CodeGenSPIRV/inline-spirv/spv.inline.decorate.member.hlsl @@ -40,9 +40,9 @@ PixelOutput main() PointerType ptr = Bitcast(address); PixelOutput output; -// CHECK: [[LD:%[0-9]+]] = OpLoad %S [[BC]] Aligned 32 -// CHECK: [[RET:%[0-9]+]] = OpCompositeExtract %v4float [[LD]] 0 -// CHECK: OpStore %out_var_SV_TARGET [[RET]] +// CHECK: [[AC:%[0-9]+]] = OpAccessChain %_ptr_PhysicalStorageBuffer_v4float [[BC]] %uint_0 +// CHECK: [[LD:%[0-9]+]] = OpLoad %v4float [[AC]] Aligned 32 +// CHECK: OpStore %out_var_SV_TARGET [[LD]] output.rt0 = Load(ptr).f1; return output; } diff --git a/tools/clang/test/CodeGenSPIRV/vk.binding.global-struct-of-resources.optimized.hlsl b/tools/clang/test/CodeGenSPIRV/vk.binding.global-struct-of-resources.optimized.hlsl index 1656e7f50f..e442f75bc2 100644 --- a/tools/clang/test/CodeGenSPIRV/vk.binding.global-struct-of-resources.optimized.hlsl +++ b/tools/clang/test/CodeGenSPIRV/vk.binding.global-struct-of-resources.optimized.hlsl @@ -135,9 +135,10 @@ S secondGlobal; float4 main() : SV_Target { return -// CHECK: [[fg_0_0_t:%[0-9]+]] = OpLoad %_arr_type_2d_image_uint_2 %[[fg0]] -// CHECK: [[fg_1_t_0:%[0-9]+]] = OpCompositeExtract %type_2d_image [[fg_0_0_t]] 0 -// CHECK: [[fg_1_t_1:%[0-9]+]] = OpCompositeExtract %type_2d_image [[fg_0_0_t]] 1 +// CHECK: [[ac_0_0_t0:%[0-9]+]] = OpAccessChain %_ptr_UniformConstant_type_2d_image %[[fg0]] %uint_0 +// CHECK: [[fg_1_t_0:%[0-9]+]] = OpLoad %type_2d_image [[ac_0_0_t0]] +// CHECK: [[ac_0_0_t1:%[0-9]+]] = OpAccessChain %_ptr_UniformConstant_type_2d_image %[[fg0]] %uint_1 +// CHECK: [[fg_1_t_1:%[0-9]+]] = OpLoad %type_2d_image [[ac_0_0_t1]] // CHECK: [[tmp:%[0-9]+]] = OpAccessChain %_ptr_UniformConstant_type_sampler %[[fgtt0_0]] %uint_1 // CHECK: [[fg_1_tt_0_s_1:%[0-9]+]] = OpLoad %type_sampler [[tmp]] // CHECK: [[tmp:%[0-9]+]] = OpAccessChain %_ptr_UniformConstant_type_sampler %[[fgtt0_1]] %uint_2 @@ -149,9 +150,10 @@ float4 main() : SV_Target { // CHECK: OpFAdd tex2D(firstGlobal[0][0], float2(0,0)) + -// CHECK: [[fg_0_1_t:%[0-9]+]] = OpLoad %_arr_type_2d_image_uint_2 %[[fg1]] -// CHECK: [[fg_0_1_t_0:%[0-9]+]] = OpCompositeExtract %type_2d_image [[fg_0_1_t]] 0 -// CHECK: [[fg_0_1_t_1:%[0-9]+]] = OpCompositeExtract %type_2d_image [[fg_0_1_t]] 1 +// CHECK: [[ac_0_1_t0:%[0-9]+]] = OpAccessChain %_ptr_UniformConstant_type_2d_image %[[fg1]] %uint_0 +// CHECK: [[fg_0_1_t_0:%[0-9]+]] = OpLoad %type_2d_image [[ac_0_1_t0]] +// CHECK: [[ac_0_1_t1:%[0-9]+]] = OpAccessChain %_ptr_UniformConstant_type_2d_image %[[fg1]] %uint_1 +// CHECK: [[fg_0_1_t_1:%[0-9]+]] = OpLoad %type_2d_image [[ac_0_1_t1]] // CHECK: [[tmp:%[0-9]+]] = OpAccessChain %_ptr_UniformConstant_type_sampler %[[fgtt1_0]] %uint_1 // CHECK: [[fg_0_1_tt_0_s_1:%[0-9]+]] = OpLoad %type_sampler [[tmp]] // CHECK: [[tmp:%[0-9]+]] = OpAccessChain %_ptr_UniformConstant_type_sampler %[[fgtt1_1]] %uint_2 @@ -162,9 +164,10 @@ float4 main() : SV_Target { // CHECK: {{%[0-9]+}} = OpImageSampleImplicitLod %v4float [[sampled_img_4]] // CHECK: OpFAdd tex2D(firstGlobal[0][1], float2(0,0)) + -// CHECK: [[fg_1_0_t:%[0-9]+]] = OpLoad %_arr_type_2d_image_uint_2 %[[fg2]] -// CHECK: [[fg_1_0_t_0:%[0-9]+]] = OpCompositeExtract %type_2d_image [[fg_1_0_t]] 0 -// CHECK: [[fg_1_0_t_1:%[0-9]+]] = OpCompositeExtract %type_2d_image [[fg_1_0_t]] 1 +// CHECK: [[ac_1_0_t0:%[0-9]+]] = OpAccessChain %_ptr_UniformConstant_type_2d_image %[[fg2]] %uint_0 +// CHECK: [[fg_1_0_t_0:%[0-9]+]] = OpLoad %type_2d_image [[ac_1_0_t0]] +// CHECK: [[ac_1_0_t1:%[0-9]+]] = OpAccessChain %_ptr_UniformConstant_type_2d_image %[[fg2]] %uint_1 +// CHECK: [[fg_1_0_t_1:%[0-9]+]] = OpLoad %type_2d_image [[ac_1_0_t1]] // CHECK: [[tmp:%[0-9]+]] = OpAccessChain %_ptr_UniformConstant_type_sampler %[[fgtt2_0]] %uint_1 // CHECK: [[fg_1_0_tt_0_s_1:%[0-9]+]] = OpLoad %type_sampler [[tmp]] // CHECK: [[tmp:%[0-9]+]] = OpAccessChain %_ptr_UniformConstant_type_sampler %[[fgtt2_1]] %uint_2 @@ -175,9 +178,10 @@ float4 main() : SV_Target { // CHECK: {{%[0-9]+}} = OpImageSampleImplicitLod %v4float [[sampled_img_6]] // CHECK: OpFAdd tex2D(firstGlobal[1][0], float2(0,0)) + -// CHECK: [[fg_1_1_t:%[0-9]+]] = OpLoad %_arr_type_2d_image_uint_2 %[[fg3]] -// CHECK: [[fg_1_1_t_0:%[0-9]+]] = OpCompositeExtract %type_2d_image [[fg_1_1_t]] 0 -// CHECK: [[fg_1_1_t_1:%[0-9]+]] = OpCompositeExtract %type_2d_image [[fg_1_1_t]] 1 +// CHECK: [[ac_1_1_t0:%[0-9]+]] = OpAccessChain %_ptr_UniformConstant_type_2d_image %[[fg3]] %uint_0 +// CHECK: [[fg_1_1_t_0:%[0-9]+]] = OpLoad %type_2d_image [[ac_1_1_t0]] +// CHECK: [[ac_1_1_t1:%[0-9]+]] = OpAccessChain %_ptr_UniformConstant_type_2d_image %[[fg3]] %uint_1 +// CHECK: [[fg_1_1_t_1:%[0-9]+]] = OpLoad %type_2d_image [[ac_1_1_t1]] // CHECK: [[tmp:%[0-9]+]] = OpAccessChain %_ptr_UniformConstant_type_sampler %[[fgtt3_0]] %uint_1 // CHECK: [[fg_1_1_tt_0_s_1:%[0-9]+]] = OpLoad %type_sampler [[tmp]] // CHECK: [[tmp:%[0-9]+]] = OpAccessChain %_ptr_UniformConstant_type_sampler %[[fgtt3_1]] %uint_2 diff --git a/tools/clang/test/CodeGenSPIRV/vk.buffer-pointer.initlist.hlsl b/tools/clang/test/CodeGenSPIRV/vk.buffer-pointer.initlist.hlsl index e872da1f6c..2dad04505c 100644 --- a/tools/clang/test/CodeGenSPIRV/vk.buffer-pointer.initlist.hlsl +++ b/tools/clang/test/CodeGenSPIRV/vk.buffer-pointer.initlist.hlsl @@ -11,12 +11,11 @@ cbuffer Test { [numthreads(256, 1, 1)] void main(in uint3 threadId : SV_DispatchThreadID) { -// CHECK: [[LD:%[_0-9A-Za-z]*]] = OpLoad %_ptr_PhysicalStorageBuffer_float -// CHECK: [[CC:%[_0-9A-Za-z]*]] = OpCompositeConstruct {{%[_0-9A-Za-z]*}} [[LD]] +// CHECK: [[AC:%[_0-9A-Za-z]*]] = OpAccessChain %_ptr_Uniform__ptr_PhysicalStorageBuffer_float %Test %int_0 +// CHECK: [[PTR:%[_0-9A-Za-z]*]] = OpLoad %_ptr_PhysicalStorageBuffer_float [[AC]] BufferAccessor accessor = BufferAccessor(buffer); -// CHECK: [[COPY:%[_0-9A-Za-z]*]] = OpCopyLogical {{%[_0-9A-Za-z]*}} [[CC]] -// CHECK: [[PTR:%[_0-9A-Za-z]*]] = OpCompositeExtract %_ptr_PhysicalStorageBuffer_float [[COPY]] 0 -// CHECK: OpLoad %float [[PTR]] Aligned 4 +// CHECK: [[VAL:%[_0-9A-Za-z]*]] = OpLoad %float [[PTR]] Aligned 4 +// CHECK: OpStore [[PTR]] [[VAL]] Aligned 4 buffer.Get() = accessor.ptr.Get(); }