ac_build_s_barrier(&ctx->ac);
 }
 
-void si_create_function(struct si_shader_context *ctx,
-                       const char *name,
-                       LLVMTypeRef *returns, unsigned num_returns,
-                       unsigned max_workgroup_size)
-{
-       si_llvm_create_func(ctx, name, returns, num_returns);
-       ctx->return_value = LLVMGetUndef(ctx->return_type);
-
-       if (ctx->screen->info.address32_hi) {
-               ac_llvm_add_target_dep_function_attr(ctx->main_fn,
-                                                    "amdgpu-32bit-address-high-bits",
-                                                    ctx->screen->info.address32_hi);
-       }
-
-       LLVMAddTargetDependentFunctionAttr(ctx->main_fn,
-                                          "no-signed-zeros-fp-math",
-                                          "true");
-
-       ac_llvm_set_workgroup_size(ctx->main_fn, max_workgroup_size);
-}
-
 static void declare_streamout_params(struct si_shader_context *ctx,
                                     struct pipe_stream_output_info *so)
 {
                return;
        }
 
-       si_create_function(ctx, "main", returns, num_returns,
-                          si_get_max_workgroup_size(shader));
+       si_llvm_create_func(ctx, "main", returns, num_returns,
+                           si_get_max_workgroup_size(shader));
 
        /* Reserve register locations for VGPR inputs the PS prolog may need. */
        if (ctx->type == PIPE_SHADER_FRAGMENT && !ctx->shader->is_monolithic) {
        }
 
        /* Create the function. */
-       si_create_function(ctx, "gs_prolog", returns, num_sgprs + num_vgprs,
-                          0);
+       si_llvm_create_func(ctx, "gs_prolog", returns, num_sgprs + num_vgprs, 0);
        func = ctx->main_fn;
 
        /* Set the full EXEC mask for the prolog, because we are only fiddling
                unreachable("unexpected type");
        }
 
-       si_create_function(ctx, "wrapper", returns, num_returns,
-                          si_get_max_workgroup_size(ctx->shader));
+       si_llvm_create_func(ctx, "wrapper", returns, num_returns,
+                           si_get_max_workgroup_size(ctx->shader));
 
        if (is_merged_shader(ctx))
                ac_init_exec_full_mask(&ctx->ac);
                returns[num_returns++] = ctx->f32;
 
        /* Create the function. */
-       si_create_function(ctx, "vs_prolog", returns, num_returns, 0);
+       si_llvm_create_func(ctx, "vs_prolog", returns, num_returns, 0);
        func = ctx->main_fn;
 
        for (i = 0; i < num_input_vgprs; i++) {
                ac_add_arg(&ctx->args, AC_ARG_VGPR, 1, AC_ARG_INT, &tess_factors[i]);
 
        /* Create the function. */
-       si_create_function(ctx, "tcs_epilog", NULL, 0,
-                          ctx->screen->info.chip_class >= GFX7 ? 128 : 0);
+       si_llvm_create_func(ctx, "tcs_epilog", NULL, 0,
+                           ctx->screen->info.chip_class >= GFX7 ? 128 : 0);
        ac_declare_lds_as_pointer(&ctx->ac);
 
        LLVMValueRef invoc0_tess_factors[6];
                return_types[num_returns++] = ctx->f32;
 
        /* Create the function. */
-       si_create_function(ctx, "ps_prolog", return_types, num_returns, 0);
+       si_llvm_create_func(ctx, "ps_prolog", return_types, num_returns, 0);
        func = ctx->main_fn;
 
        /* Copy inputs to outputs. This should be no-op, as the registers match,
                ac_add_arg(&ctx->args, AC_ARG_VGPR, 1, AC_ARG_FLOAT, NULL);
 
        /* Create the function. */
-       si_create_function(ctx, "ps_epilog", NULL, 0, 0);
+       si_llvm_create_func(ctx, "ps_epilog", NULL, 0, 0);
        /* Disable elimination of unused inputs. */
        ac_llvm_add_target_dep_function_attr(ctx->main_fn,
                                             "InitialPSInputAddr", 0xffffff);
 
        return container_of(abi, ctx, abi);
 }
 
-void si_create_function(struct si_shader_context *ctx,
-                       const char *name,
-                       LLVMTypeRef *returns, unsigned num_returns,
-                       unsigned max_workgroup_size);
 unsigned si_llvm_compile(LLVMModuleRef M, struct si_shader_binary *binary,
                         struct ac_llvm_compiler *compiler,
                         struct pipe_debug_callback *debug,
 void si_llvm_context_set_ir(struct si_shader_context *ctx,
                            struct si_shader *shader);
 
-void si_llvm_create_func(struct si_shader_context *ctx,
-                        const char *name,
-                        LLVMTypeRef *return_types, unsigned num_return_elems);
+void si_llvm_create_func(struct si_shader_context *ctx, const char *name,
+                        LLVMTypeRef *return_types, unsigned num_return_elems,
+                        unsigned max_workgroup_size);
 
 void si_llvm_dispose(struct si_shader_context *ctx);
 
 
        ctx->num_images = util_last_bit(info->images_declared);
 }
 
-void si_llvm_create_func(struct si_shader_context *ctx,
-                        const char *name,
-                        LLVMTypeRef *return_types, unsigned num_return_elems)
+void si_llvm_create_func(struct si_shader_context *ctx, const char *name,
+                        LLVMTypeRef *return_types, unsigned num_return_elems,
+                        unsigned max_workgroup_size)
 {
        LLVMTypeRef ret_type;
        enum ac_llvm_calling_convention call_conv;
        ctx->return_type = ret_type;
        ctx->main_fn = ac_build_main(&ctx->args, &ctx->ac, call_conv, name,
                                     ret_type, ctx->ac.module);
+       ctx->return_value = LLVMGetUndef(ctx->return_type);
+
+       if (ctx->screen->info.address32_hi) {
+               ac_llvm_add_target_dep_function_attr(ctx->main_fn,
+                                                    "amdgpu-32bit-address-high-bits",
+                                                    ctx->screen->info.address32_hi);
+       }
+
+       LLVMAddTargetDependentFunctionAttr(ctx->main_fn,
+                                          "no-signed-zeros-fp-math",
+                                          "true");
+
+       ac_llvm_set_workgroup_size(ctx->main_fn, max_workgroup_size);
 }
 
 void si_llvm_optimize_module(struct si_shader_context *ctx)