-void si_llvm_add_attribute(LLVMValueRef F, const char *name, int value);
-
-unsigned si_llvm_compile(LLVMModuleRef M, struct ac_shader_binary *binary,
- LLVMTargetMachineRef tm,
- struct pipe_debug_callback *debug);
+void si_init_function_info(struct si_function_info *fninfo);
+unsigned add_arg_assign(struct si_function_info *fninfo,
+ enum si_arg_regfile regfile, LLVMTypeRef type,
+ LLVMValueRef *assign);
+void si_create_function(struct si_shader_context *ctx,
+ const char *name,
+ LLVMTypeRef *returns, unsigned num_returns,
+ struct si_function_info *fninfo,
+ 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,
+ bool less_optimized, unsigned wave_size);