aco: Fix integer overflows when emitting parallel copies during RA
[mesa.git] / src / amd / vulkan / radv_nir_to_llvm.c
index cc98eef0b9938308e271142a4331625792e6c938..db21ad809b784e424da9b5839300c2979ce65210 100644 (file)
@@ -589,11 +589,12 @@ store_tcs_output(struct ac_shader_abi *abi,
                 LLVMValueRef param_index,
                 unsigned const_index,
                 LLVMValueRef src,
-                unsigned writemask)
+                unsigned writemask,
+                unsigned component,
+                unsigned driver_location)
 {
        struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
        const unsigned location = var->data.location;
-       unsigned component = var->data.location_frac;
        const bool is_patch = var->data.patch;
        const bool is_compact = var->data.compact;
        LLVMValueRef dw_addr;
@@ -1367,7 +1368,7 @@ handle_vs_input_decl(struct radv_shader_context *ctx,
 static void
 handle_vs_inputs(struct radv_shader_context *ctx,
                  struct nir_shader *nir) {
-       nir_foreach_variable(variable, &nir->inputs)
+       nir_foreach_shader_in_variable(variable, nir)
                handle_vs_input_decl(ctx, variable);
 }
 
@@ -1377,7 +1378,7 @@ prepare_interp_optimize(struct radv_shader_context *ctx,
 {
        bool uses_center = false;
        bool uses_centroid = false;
-       nir_foreach_variable(variable, &nir->inputs) {
+       nir_foreach_shader_in_variable(variable, nir) {
                if (glsl_get_base_type(glsl_without_array(variable->type)) != GLSL_TYPE_FLOAT ||
                    variable->data.sample)
                        continue;
@@ -4090,7 +4091,7 @@ LLVMModuleRef ac_translate_nir_to_llvm(struct ac_llvm_compiler *ac_llvm,
                        ac_emit_barrier(&ctx.ac, ctx.stage);
                }
 
-               nir_foreach_variable(variable, &shaders[i]->outputs)
+               nir_foreach_shader_out_variable(variable, shaders[i])
                        scan_shader_output_decl(&ctx, variable, shaders[i], shaders[i]->info.stage);
 
                ac_setup_rings(&ctx);
@@ -4409,7 +4410,7 @@ radv_compile_gs_copy_shader(struct ac_llvm_compiler *ac_llvm,
 
        ac_setup_rings(&ctx);
 
-       nir_foreach_variable(variable, &geom_shader->outputs) {
+       nir_foreach_shader_out_variable(variable, geom_shader) {
                scan_shader_output_decl(&ctx, variable, geom_shader, MESA_SHADER_VERTEX);
                ac_handle_shader_output_decl(&ctx.ac, &ctx.abi, geom_shader,
                                             variable, MESA_SHADER_VERTEX);