[Mesa-dev] [PATCH 16/18] ac/nir: remove nir_to_llvm_context::builder

Samuel Pitoiset samuel.pitoiset at gmail.com
Fri Feb 9 12:54:33 UTC 2018


Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
---
 src/amd/common/ac_nir_to_llvm.c | 187 ++++++++++++++++++++--------------------
 1 file changed, 92 insertions(+), 95 deletions(-)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 273435adb6..ae9e7b6c80 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -80,7 +80,6 @@ struct nir_to_llvm_context {
 	unsigned max_workgroup_size;
 	LLVMContextRef context;
 	LLVMModuleRef module;
-	LLVMBuilderRef builder;
 	LLVMValueRef main_function;
 
 	LLVMValueRef descriptor_sets[AC_UD_MAX_SETS];
@@ -395,7 +394,7 @@ get_tcs_out_patch_stride(struct nir_to_llvm_context *ctx)
 static LLVMValueRef
 get_tcs_out_patch0_offset(struct nir_to_llvm_context *ctx)
 {
-	return LLVMBuildMul(ctx->builder,
+	return LLVMBuildMul(ctx->ac.builder,
 			    unpack_param(&ctx->ac, ctx->tcs_out_offsets, 0, 16),
 			    LLVMConstInt(ctx->ac.i32, 4, false), "");
 }
@@ -403,7 +402,7 @@ get_tcs_out_patch0_offset(struct nir_to_llvm_context *ctx)
 static LLVMValueRef
 get_tcs_out_patch0_patch_data_offset(struct nir_to_llvm_context *ctx)
 {
-	return LLVMBuildMul(ctx->builder,
+	return LLVMBuildMul(ctx->ac.builder,
 			    unpack_param(&ctx->ac, ctx->tcs_out_offsets, 16, 16),
 			    LLVMConstInt(ctx->ac.i32, 4, false), "");
 }
@@ -414,7 +413,7 @@ get_tcs_in_current_patch_offset(struct nir_to_llvm_context *ctx)
 	LLVMValueRef patch_stride = get_tcs_in_patch_stride(ctx);
 	LLVMValueRef rel_patch_id = get_rel_patch_id(ctx);
 
-	return LLVMBuildMul(ctx->builder, patch_stride, rel_patch_id, "");
+	return LLVMBuildMul(ctx->ac.builder, patch_stride, rel_patch_id, "");
 }
 
 static LLVMValueRef
@@ -424,8 +423,8 @@ get_tcs_out_current_patch_offset(struct nir_to_llvm_context *ctx)
 	LLVMValueRef patch_stride = get_tcs_out_patch_stride(ctx);
 	LLVMValueRef rel_patch_id = get_rel_patch_id(ctx);
 
-	return LLVMBuildAdd(ctx->builder, patch0_offset,
-			    LLVMBuildMul(ctx->builder, patch_stride,
+	return LLVMBuildAdd(ctx->ac.builder, patch0_offset,
+			    LLVMBuildMul(ctx->ac.builder, patch_stride,
 					 rel_patch_id, ""),
 			    "");
 }
@@ -438,8 +437,8 @@ get_tcs_out_current_patch_data_offset(struct nir_to_llvm_context *ctx)
 	LLVMValueRef patch_stride = get_tcs_out_patch_stride(ctx);
 	LLVMValueRef rel_patch_id = get_rel_patch_id(ctx);
 
-	return LLVMBuildAdd(ctx->builder, patch0_patch_data_offset,
-			    LLVMBuildMul(ctx->builder, patch_stride,
+	return LLVMBuildAdd(ctx->ac.builder, patch0_patch_data_offset,
+			    LLVMBuildMul(ctx->ac.builder, patch_stride,
 					 rel_patch_id, ""),
 			    "");
 }
@@ -1021,7 +1020,7 @@ static void create_function(struct nir_to_llvm_context *ctx,
 	}
 
 	ctx->main_function = create_llvm_function(
-	    ctx->context, ctx->module, ctx->builder, NULL, 0, &args,
+	    ctx->context, ctx->module, ctx->ac.builder, NULL, 0, &args,
 	    ctx->max_workgroup_size,
 	    ctx->options->unsafe_math);
 	set_llvm_calling_convention(ctx->main_function, stage);
@@ -1046,7 +1045,7 @@ static void create_function(struct nir_to_llvm_context *ctx,
 			ctx->ring_offsets = ac_build_intrinsic(&ctx->ac, "llvm.amdgcn.implicit.buffer.ptr",
 							       LLVMPointerType(ctx->ac.i8, AC_CONST_ADDR_SPACE),
 							       NULL, 0, AC_FUNC_ATTR_READNONE);
-			ctx->ring_offsets = LLVMBuildBitCast(ctx->builder, ctx->ring_offsets,
+			ctx->ring_offsets = LLVMBuildBitCast(ctx->ac.builder, ctx->ring_offsets,
 							     ac_array_in_const_addr_space(ctx->ac.v4i32), "");
 		}
 	}
@@ -2371,8 +2370,8 @@ radv_load_resource(struct ac_shader_abi *abi, LLVMValueRef index,
 		stride = LLVMConstInt(ctx->ac.i32, layout->binding[binding].size, false);
 
 	offset = LLVMConstInt(ctx->ac.i32, base_offset, false);
-	index = LLVMBuildMul(ctx->builder, index, stride, "");
-	offset = LLVMBuildAdd(ctx->builder, offset, index, "");
+	index = LLVMBuildMul(ctx->ac.builder, index, stride, "");
+	offset = LLVMBuildAdd(ctx->ac.builder, offset, index, "");
 	
 	desc_ptr = ac_build_gep0(&ctx->ac, desc_ptr, offset);
 	desc_ptr = cast_ptr(&ctx->ac, desc_ptr, ctx->ac.v4i32);
@@ -2770,15 +2769,15 @@ static LLVMValueRef get_tcs_tes_buffer_address(struct nir_to_llvm_context *ctx,
 
 	vertices_per_patch = unpack_param(&ctx->ac, ctx->tcs_offchip_layout, 9, 6);
 	num_patches = unpack_param(&ctx->ac, ctx->tcs_offchip_layout, 0, 9);
-	total_vertices = LLVMBuildMul(ctx->builder, vertices_per_patch,
+	total_vertices = LLVMBuildMul(ctx->ac.builder, vertices_per_patch,
 	                              num_patches, "");
 
 	constant16 = LLVMConstInt(ctx->ac.i32, 16, false);
 	if (vertex_index) {
-		base_addr = LLVMBuildMul(ctx->builder, rel_patch_id,
+		base_addr = LLVMBuildMul(ctx->ac.builder, rel_patch_id,
 		                         vertices_per_patch, "");
 
-		base_addr = LLVMBuildAdd(ctx->builder, base_addr,
+		base_addr = LLVMBuildAdd(ctx->ac.builder, base_addr,
 		                         vertex_index, "");
 
 		param_stride = total_vertices;
@@ -2787,17 +2786,17 @@ static LLVMValueRef get_tcs_tes_buffer_address(struct nir_to_llvm_context *ctx,
 		param_stride = num_patches;
 	}
 
-	base_addr = LLVMBuildAdd(ctx->builder, base_addr,
-	                         LLVMBuildMul(ctx->builder, param_index,
+	base_addr = LLVMBuildAdd(ctx->ac.builder, base_addr,
+	                         LLVMBuildMul(ctx->ac.builder, param_index,
 	                                      param_stride, ""), "");
 
-	base_addr = LLVMBuildMul(ctx->builder, base_addr, constant16, "");
+	base_addr = LLVMBuildMul(ctx->ac.builder, base_addr, constant16, "");
 
 	if (!vertex_index) {
 		LLVMValueRef patch_data_offset =
 		           unpack_param(&ctx->ac, ctx->tcs_offchip_layout, 16, 16);
 
-		base_addr = LLVMBuildAdd(ctx->builder, base_addr,
+		base_addr = LLVMBuildAdd(ctx->ac.builder, base_addr,
 		                         patch_data_offset, "");
 	}
 	return base_addr;
@@ -2813,7 +2812,7 @@ static LLVMValueRef get_tcs_tes_buffer_address_params(struct nir_to_llvm_context
 	LLVMValueRef param_index;
 
 	if (indir_index)
-		param_index = LLVMBuildAdd(ctx->builder, LLVMConstInt(ctx->ac.i32, param, false),
+		param_index = LLVMBuildAdd(ctx->ac.builder, LLVMConstInt(ctx->ac.i32, param, false),
 					   indir_index, "");
 	else {
 		if (const_index && !is_compact)
@@ -2847,25 +2846,25 @@ get_dw_address(struct nir_to_llvm_context *ctx,
 {
 
 	if (vertex_index) {
-		dw_addr = LLVMBuildAdd(ctx->builder, dw_addr,
-				       LLVMBuildMul(ctx->builder,
+		dw_addr = LLVMBuildAdd(ctx->ac.builder, dw_addr,
+				       LLVMBuildMul(ctx->ac.builder,
 						    vertex_index,
 						    stride, ""), "");
 	}
 
 	if (indir_index)
-		dw_addr = LLVMBuildAdd(ctx->builder, dw_addr,
-				       LLVMBuildMul(ctx->builder, indir_index,
+		dw_addr = LLVMBuildAdd(ctx->ac.builder, dw_addr,
+				       LLVMBuildMul(ctx->ac.builder, indir_index,
 						    LLVMConstInt(ctx->ac.i32, 4, false), ""), "");
 	else if (const_index && !compact_const_index)
-		dw_addr = LLVMBuildAdd(ctx->builder, dw_addr,
+		dw_addr = LLVMBuildAdd(ctx->ac.builder, dw_addr,
 				       LLVMConstInt(ctx->ac.i32, const_index, false), "");
 
-	dw_addr = LLVMBuildAdd(ctx->builder, dw_addr,
+	dw_addr = LLVMBuildAdd(ctx->ac.builder, dw_addr,
 			       LLVMConstInt(ctx->ac.i32, param * 4, false), "");
 
 	if (const_index && compact_const_index)
-		dw_addr = LLVMBuildAdd(ctx->builder, dw_addr,
+		dw_addr = LLVMBuildAdd(ctx->ac.builder, dw_addr,
 				       LLVMConstInt(ctx->ac.i32, const_index, false), "");
 	return dw_addr;
 }
@@ -2906,7 +2905,7 @@ load_tcs_varyings(struct ac_shader_abi *abi,
 
 	for (unsigned i = 0; i < num_components + component; i++) {
 		value[i] = ac_lds_load(&ctx->ac, dw_addr);
-		dw_addr = LLVMBuildAdd(ctx->builder, dw_addr,
+		dw_addr = LLVMBuildAdd(ctx->ac.builder, dw_addr,
 				       ctx->ac.i32_1, "");
 	}
 	result = ac_build_varying_gather_values(&ctx->ac, value, num_components, component);
@@ -2975,7 +2974,7 @@ store_tcs_output(struct ac_shader_abi *abi,
 
 		if (store_lds || is_tess_factor) {
 			LLVMValueRef dw_addr_chan =
-				LLVMBuildAdd(ctx->builder, dw_addr,
+				LLVMBuildAdd(ctx->ac.builder, dw_addr,
 				                           LLVMConstInt(ctx->ac.i32, chan, false), "");
 			ac_lds_store(&ctx->ac, dw_addr_chan, value);
 		}
@@ -3020,7 +3019,7 @@ load_tes_input(struct ac_shader_abi *abi,
 						     is_compact, vertex_index, param_index);
 
 	LLVMValueRef comp_offset = LLVMConstInt(ctx->ac.i32, component * 4, false);
-	buf_addr = LLVMBuildAdd(ctx->builder, buf_addr, comp_offset, "");
+	buf_addr = LLVMBuildAdd(ctx->ac.builder, buf_addr, comp_offset, "");
 
 	result = ac_build_buffer_load(&ctx->ac, ctx->hs_ring_tess_offchip, num_components, NULL,
 				      buf_addr, ctx->oc_lds, is_compact ? (4 * const_index) : 0, 1, 0, true, false);
@@ -3045,7 +3044,7 @@ load_gs_input(struct ac_shader_abi *abi,
 
 	vtx_offset_param = vertex_index;
 	assert(vtx_offset_param < 6);
-	vtx_offset = LLVMBuildMul(ctx->builder, ctx->gs_vtx_offset[vtx_offset_param],
+	vtx_offset = LLVMBuildMul(ctx->ac.builder, ctx->gs_vtx_offset[vtx_offset_param],
 				  LLVMConstInt(ctx->ac.i32, 4, false), "");
 
 	param = shader_io_get_unique_index(location);
@@ -3068,7 +3067,7 @@ load_gs_input(struct ac_shader_abi *abi,
 							vtx_offset, soffset,
 							0, 1, 0, true, false);
 
-			value[i] = LLVMBuildBitCast(ctx->builder, value[i],
+			value[i] = LLVMBuildBitCast(ctx->ac.builder, value[i],
 						    type, "");
 		}
 	}
@@ -4002,10 +4001,10 @@ static LLVMValueRef load_sample_position(struct ac_shader_abi *abi,
 	LLVMValueRef result;
 	LLVMValueRef ptr = ac_build_gep0(&ctx->ac, ctx->ring_offsets, LLVMConstInt(ctx->ac.i32, RING_PS_SAMPLE_POSITIONS, false));
 
-	ptr = LLVMBuildBitCast(ctx->builder, ptr,
+	ptr = LLVMBuildBitCast(ctx->ac.builder, ptr,
 			       ac_array_in_const_addr_space(ctx->ac.v2f32), "");
 
-	sample_id = LLVMBuildAdd(ctx->builder, sample_id, ctx->sample_pos_offset, "");
+	sample_id = LLVMBuildAdd(ctx->ac.builder, sample_id, ctx->sample_pos_offset, "");
 	result = ac_build_load_invariant(&ctx->ac, ptr, sample_id);
 
 	return result;
@@ -4164,7 +4163,7 @@ visit_emit_vertex(struct ac_shader_abi *abi, unsigned stream, LLVMValueRef *addr
 	assert(stream == 0);
 
 	/* Write vertex attribute values to GSVS ring */
-	gs_next_vertex = LLVMBuildLoad(ctx->builder,
+	gs_next_vertex = LLVMBuildLoad(ctx->ac.builder,
 				       ctx->gs_next_vertex,
 				       "");
 
@@ -4173,7 +4172,7 @@ visit_emit_vertex(struct ac_shader_abi *abi, unsigned stream, LLVMValueRef *addr
 	 * have any effect, and GS threads have no externally observable
 	 * effects other than emitting vertices.
 	 */
-	can_emit = LLVMBuildICmp(ctx->builder, LLVMIntULT, gs_next_vertex,
+	can_emit = LLVMBuildICmp(ctx->ac.builder, LLVMIntULT, gs_next_vertex,
 				 LLVMConstInt(ctx->ac.i32, ctx->gs_max_out_vertices, false), "");
 	ac_build_kill_if_false(&ctx->ac, can_emit);
 
@@ -4195,13 +4194,13 @@ visit_emit_vertex(struct ac_shader_abi *abi, unsigned stream, LLVMValueRef *addr
 				slot_inc = 2;
 		}
 		for (unsigned j = 0; j < length; j++) {
-			LLVMValueRef out_val = LLVMBuildLoad(ctx->builder,
+			LLVMValueRef out_val = LLVMBuildLoad(ctx->ac.builder,
 							     out_ptr[j], "");
 			LLVMValueRef voffset = LLVMConstInt(ctx->ac.i32, (slot * 4 + j) * ctx->gs_max_out_vertices, false);
-			voffset = LLVMBuildAdd(ctx->builder, voffset, gs_next_vertex, "");
-			voffset = LLVMBuildMul(ctx->builder, voffset, LLVMConstInt(ctx->ac.i32, 4, false), "");
+			voffset = LLVMBuildAdd(ctx->ac.builder, voffset, gs_next_vertex, "");
+			voffset = LLVMBuildMul(ctx->ac.builder, voffset, LLVMConstInt(ctx->ac.i32, 4, false), "");
 
-			out_val = LLVMBuildBitCast(ctx->builder, out_val, ctx->ac.i32, "");
+			out_val = LLVMBuildBitCast(ctx->ac.builder, out_val, ctx->ac.i32, "");
 
 			ac_build_buffer_store_dword(&ctx->ac, ctx->gsvs_ring,
 						    out_val, 1,
@@ -4211,9 +4210,9 @@ visit_emit_vertex(struct ac_shader_abi *abi, unsigned stream, LLVMValueRef *addr
 		idx += slot_inc;
 	}
 
-	gs_next_vertex = LLVMBuildAdd(ctx->builder, gs_next_vertex,
+	gs_next_vertex = LLVMBuildAdd(ctx->ac.builder, gs_next_vertex,
 				      ctx->ac.i32_1, "");
-	LLVMBuildStore(ctx->builder, gs_next_vertex, ctx->gs_next_vertex);
+	LLVMBuildStore(ctx->ac.builder, gs_next_vertex, ctx->gs_next_vertex);
 
 	ac_build_sendmsg(&ctx->ac, AC_SENDMSG_GS_OP_EMIT | AC_SENDMSG_GS | (0 << 8), ctx->gs_wave_id);
 }
@@ -4238,8 +4237,8 @@ load_tess_coord(struct ac_shader_abi *abi)
 	};
 
 	if (ctx->tes_primitive_mode == GL_TRIANGLES)
-		coord[2] = LLVMBuildFSub(ctx->builder, ctx->ac.f32_1,
-					LLVMBuildFAdd(ctx->builder, coord[0], coord[1], ""), "");
+		coord[2] = LLVMBuildFSub(ctx->ac.builder, ctx->ac.f32_1,
+					LLVMBuildFAdd(ctx->ac.builder, coord[0], coord[1], ""), "");
 
 	return ac_build_gather_values(&ctx->ac, coord, 3);
 }
@@ -4530,7 +4529,7 @@ static LLVMValueRef radv_load_ssbo(struct ac_shader_abi *abi,
 
 	LLVMSetMetadata(buffer_ptr, ctx->ac.uniform_md_kind, ctx->ac.empty_md);
 
-	result = LLVMBuildLoad(ctx->builder, buffer_ptr, "");
+	result = LLVMBuildLoad(ctx->ac.builder, buffer_ptr, "");
 	LLVMSetMetadata(result, ctx->ac.invariant_load_md_kind, ctx->ac.empty_md);
 
 	return result;
@@ -4543,7 +4542,7 @@ static LLVMValueRef radv_load_ubo(struct ac_shader_abi *abi, LLVMValueRef buffer
 
 	LLVMSetMetadata(buffer_ptr, ctx->ac.uniform_md_kind, ctx->ac.empty_md);
 
-	result = LLVMBuildLoad(ctx->builder, buffer_ptr, "");
+	result = LLVMBuildLoad(ctx->ac.builder, buffer_ptr, "");
 	LLVMSetMetadata(result, ctx->ac.invariant_load_md_kind, ctx->ac.empty_md);
 
 	return result;
@@ -4564,7 +4563,7 @@ static LLVMValueRef radv_get_sampler_desc(struct ac_shader_abi *abi,
 	unsigned offset = binding->offset;
 	unsigned stride = binding->size;
 	unsigned type_size;
-	LLVMBuilderRef builder = ctx->builder;
+	LLVMBuilderRef builder = ctx->ac.builder;
 	LLVMTypeRef type;
 
 	assert(base_index < layout->binding_count);
@@ -5326,7 +5325,7 @@ handle_vs_input_decl(struct nir_to_llvm_context *ctx,
 
 	for (unsigned i = 0; i < attrib_count; ++i, ++idx) {
 		if (ctx->options->key.vs.instance_rate_inputs & (1u << (index + i))) {
-			buffer_index = LLVMBuildAdd(ctx->builder, ctx->abi.instance_id,
+			buffer_index = LLVMBuildAdd(ctx->ac.builder, ctx->abi.instance_id,
 			                            ctx->abi.start_instance, "");
 			if (ctx->options->key.vs.as_ls) {
 				ctx->shader_info->vs.vgpr_comp_cnt =
@@ -5336,7 +5335,7 @@ handle_vs_input_decl(struct nir_to_llvm_context *ctx,
 					MAX2(1, ctx->shader_info->vs.vgpr_comp_cnt);
 			}
 		} else
-			buffer_index = LLVMBuildAdd(ctx->builder, ctx->abi.vertex_id,
+			buffer_index = LLVMBuildAdd(ctx->ac.builder, ctx->abi.vertex_id,
 			                            ctx->abi.base_vertex, "");
 		t_offset = LLVMConstInt(ctx->ac.i32, index + i, false);
 
@@ -5352,7 +5351,7 @@ handle_vs_input_decl(struct nir_to_llvm_context *ctx,
 		for (unsigned chan = 0; chan < 4; chan++) {
 			LLVMValueRef llvm_chan = LLVMConstInt(ctx->ac.i32, chan, false);
 			ctx->inputs[radeon_llvm_reg_index_soa(idx, chan)] =
-				ac_to_integer(&ctx->ac, LLVMBuildExtractElement(ctx->builder,
+				ac_to_integer(&ctx->ac, LLVMBuildExtractElement(ctx->ac.builder,
 							input, llvm_chan, ""));
 		}
 	}
@@ -5382,12 +5381,12 @@ static void interp_fs_input(struct nir_to_llvm_context *ctx,
 	 * to NaN.
 	 */
 	if (interp) {
-		interp_param = LLVMBuildBitCast(ctx->builder, interp_param,
+		interp_param = LLVMBuildBitCast(ctx->ac.builder, interp_param,
 						ctx->ac.v2f32, "");
 
-		i = LLVMBuildExtractElement(ctx->builder, interp_param,
+		i = LLVMBuildExtractElement(ctx->ac.builder, interp_param,
 						ctx->ac.i32_0, "");
-		j = LLVMBuildExtractElement(ctx->builder, interp_param,
+		j = LLVMBuildExtractElement(ctx->ac.builder, interp_param,
 						ctx->ac.i32_1, "");
 	}
 
@@ -5467,9 +5466,9 @@ prepare_interp_optimize(struct nir_to_llvm_context *ctx,
 	}
 
 	if (uses_center && uses_centroid) {
-		LLVMValueRef sel = LLVMBuildICmp(ctx->builder, LLVMIntSLT, ctx->abi.prim_mask, ctx->ac.i32_0, "");
-		ctx->persp_centroid = LLVMBuildSelect(ctx->builder, sel, ctx->persp_center, ctx->persp_centroid, "");
-		ctx->linear_centroid = LLVMBuildSelect(ctx->builder, sel, ctx->linear_center, ctx->linear_centroid, "");
+		LLVMValueRef sel = LLVMBuildICmp(ctx->ac.builder, LLVMIntSLT, ctx->abi.prim_mask, ctx->ac.i32_0, "");
+		ctx->persp_centroid = LLVMBuildSelect(ctx->ac.builder, sel, ctx->persp_center, ctx->persp_centroid, "");
+		ctx->linear_centroid = LLVMBuildSelect(ctx->ac.builder, sel, ctx->linear_center, ctx->linear_centroid, "");
 	}
 }
 
@@ -5881,7 +5880,7 @@ radv_load_output(struct nir_to_llvm_context *ctx, unsigned index, unsigned chan)
 	LLVMValueRef output =
 		ctx->nir->outputs[radeon_llvm_reg_index_soa(index, chan)];
 
-	return LLVMBuildLoad(ctx->builder, output, "");
+	return LLVMBuildLoad(ctx->ac.builder, output, "");
 }
 
 static void
@@ -5904,7 +5903,7 @@ handle_vs_outputs_post(struct nir_to_llvm_context *ctx,
 				            si_build_alloca_undef(&ctx->ac, ctx->ac.f32, "");
 		}
 
-		LLVMBuildStore(ctx->builder, ac_to_float(&ctx->ac, ctx->abi.view_index),  *tmp_out);
+		LLVMBuildStore(ctx->ac.builder, ac_to_float(&ctx->ac, ctx->abi.view_index),  *tmp_out);
 		ctx->output_mask |= 1ull << VARYING_SLOT_LAYER;
 	}
 
@@ -5986,10 +5985,10 @@ handle_vs_outputs_post(struct nir_to_llvm_context *ctx,
 				 */
 				LLVMValueRef v = viewport_index_value;
 				v = ac_to_integer(&ctx->ac, v);
-				v = LLVMBuildShl(ctx->builder, v,
+				v = LLVMBuildShl(ctx->ac.builder, v,
 						 LLVMConstInt(ctx->ac.i32, 16, false),
 						 "");
-				v = LLVMBuildOr(ctx->builder, v,
+				v = LLVMBuildOr(ctx->ac.builder, v,
 						ac_to_integer(&ctx->ac, pos_args[1].out[2]), "");
 
 				pos_args[1].out[2] = ac_to_float(&ctx->ac, v);
@@ -6107,18 +6106,18 @@ handle_es_outputs_post(struct nir_to_llvm_context *ctx,
 		param_index = shader_io_get_unique_index(i);
 
 		if (lds_base) {
-			dw_addr = LLVMBuildAdd(ctx->builder, lds_base,
+			dw_addr = LLVMBuildAdd(ctx->ac.builder, lds_base,
 			                       LLVMConstInt(ctx->ac.i32, param_index * 4, false),
 			                       "");
 		}
 		for (j = 0; j < length; j++) {
-			LLVMValueRef out_val = LLVMBuildLoad(ctx->builder, out_ptr[j], "");
-			out_val = LLVMBuildBitCast(ctx->builder, out_val, ctx->ac.i32, "");
+			LLVMValueRef out_val = LLVMBuildLoad(ctx->ac.builder, out_ptr[j], "");
+			out_val = LLVMBuildBitCast(ctx->ac.builder, out_val, ctx->ac.i32, "");
 
 			if (ctx->ac.chip_class  >= GFX9) {
 				ac_lds_store(&ctx->ac, dw_addr,
-					     LLVMBuildLoad(ctx->builder, out_ptr[j], ""));
-				dw_addr = LLVMBuildAdd(ctx->builder, dw_addr, ctx->ac.i32_1, "");
+					     LLVMBuildLoad(ctx->ac.builder, out_ptr[j], ""));
+				dw_addr = LLVMBuildAdd(ctx->ac.builder, dw_addr, ctx->ac.i32_1, "");
 			} else {
 				ac_build_buffer_store_dword(&ctx->ac,
 				                            ctx->esgs_ring,
@@ -6136,7 +6135,7 @@ handle_ls_outputs_post(struct nir_to_llvm_context *ctx)
 {
 	LLVMValueRef vertex_id = ctx->rel_auto_id;
 	LLVMValueRef vertex_dw_stride = unpack_param(&ctx->ac, ctx->ls_out_layout, 13, 8);
-	LLVMValueRef base_dw_addr = LLVMBuildMul(ctx->builder, vertex_id,
+	LLVMValueRef base_dw_addr = LLVMBuildMul(ctx->ac.builder, vertex_id,
 						 vertex_dw_stride, "");
 
 	for (unsigned i = 0; i < RADEON_LLVM_MAX_OUTPUTS; ++i) {
@@ -6152,13 +6151,13 @@ handle_ls_outputs_post(struct nir_to_llvm_context *ctx)
 		mark_tess_output(ctx, false, param);
 		if (length > 4)
 			mark_tess_output(ctx, false, param + 1);
-		LLVMValueRef dw_addr = LLVMBuildAdd(ctx->builder, base_dw_addr,
+		LLVMValueRef dw_addr = LLVMBuildAdd(ctx->ac.builder, base_dw_addr,
 						    LLVMConstInt(ctx->ac.i32, param * 4, false),
 						    "");
 		for (unsigned j = 0; j < length; j++) {
 			ac_lds_store(&ctx->ac, dw_addr,
-				     LLVMBuildLoad(ctx->builder, out_ptr[j], ""));
-			dw_addr = LLVMBuildAdd(ctx->builder, dw_addr, ctx->ac.i32_1, "");
+				     LLVMBuildLoad(ctx->ac.builder, out_ptr[j], ""));
+			dw_addr = LLVMBuildAdd(ctx->ac.builder, dw_addr, ctx->ac.i32_1, "");
 		}
 	}
 }
@@ -6181,7 +6180,7 @@ ac_build_insert_new_block(struct nir_to_llvm_context *ctx, const char *name)
 	LLVMBasicBlockRef new_block;
 
 	/* get current basic block */
-	current_block = LLVMGetInsertBlock(ctx->builder);
+	current_block = LLVMGetInsertBlock(ctx->ac.builder);
 
 	/* chqeck if there's another block after this one */
 	next_block = LLVMGetNextBasicBlock(current_block);
@@ -6202,7 +6201,7 @@ ac_nir_build_if(struct ac_build_if_state *ifthen,
 		struct nir_to_llvm_context *ctx,
 		LLVMValueRef condition)
 {
-	LLVMBasicBlockRef block = LLVMGetInsertBlock(ctx->builder);
+	LLVMBasicBlockRef block = LLVMGetInsertBlock(ctx->ac.builder);
 
 	memset(ifthen, 0, sizeof *ifthen);
 	ifthen->ctx = ctx;
@@ -6219,7 +6218,7 @@ ac_nir_build_if(struct ac_build_if_state *ifthen,
 					      "if-true-block");
 
 	/* successive code goes into the true block */
-	LLVMPositionBuilderAtEnd(ctx->builder, ifthen->true_block);
+	LLVMPositionBuilderAtEnd(ctx->ac.builder, ifthen->true_block);
 }
 
 /**
@@ -6228,7 +6227,7 @@ ac_nir_build_if(struct ac_build_if_state *ifthen,
 static void
 ac_nir_build_endif(struct ac_build_if_state *ifthen)
 {
-	LLVMBuilderRef builder = ifthen->ctx->builder;
+	LLVMBuilderRef builder = ifthen->ctx->ac.builder;
 
 	/* Insert branch to the merge block from current block */
 	LLVMBuildBr(builder, ifthen->merge_block);
@@ -6288,7 +6287,7 @@ write_tess_factors(struct nir_to_llvm_context *ctx)
 	}
 
 	ac_nir_build_if(&if_ctx, ctx,
-			LLVMBuildICmp(ctx->builder, LLVMIntEQ,
+			LLVMBuildICmp(ctx->ac.builder, LLVMIntEQ,
 				      invocation_id, ctx->ac.i32_0, ""));
 
 	tess_inner_index = shader_io_get_unique_index(VARYING_SLOT_TESS_LEVEL_INNER);
@@ -6297,9 +6296,9 @@ write_tess_factors(struct nir_to_llvm_context *ctx)
 	mark_tess_output(ctx, true, tess_inner_index);
 	mark_tess_output(ctx, true, tess_outer_index);
 	lds_base = get_tcs_out_current_patch_data_offset(ctx);
-	lds_inner = LLVMBuildAdd(ctx->builder, lds_base,
+	lds_inner = LLVMBuildAdd(ctx->ac.builder, lds_base,
 				 LLVMConstInt(ctx->ac.i32, tess_inner_index * 4, false), "");
-	lds_outer = LLVMBuildAdd(ctx->builder, lds_base,
+	lds_outer = LLVMBuildAdd(ctx->ac.builder, lds_base,
 				 LLVMConstInt(ctx->ac.i32, tess_outer_index * 4, false), "");
 
 	for (i = 0; i < 4; i++) {
@@ -6310,20 +6309,20 @@ write_tess_factors(struct nir_to_llvm_context *ctx)
 	// LINES reverseal
 	if (ctx->options->key.tcs.primitive_mode == GL_ISOLINES) {
 		outer[0] = out[1] = ac_lds_load(&ctx->ac, lds_outer);
-		lds_outer = LLVMBuildAdd(ctx->builder, lds_outer,
+		lds_outer = LLVMBuildAdd(ctx->ac.builder, lds_outer,
 					 ctx->ac.i32_1, "");
 		outer[1] = out[0] = ac_lds_load(&ctx->ac, lds_outer);
 	} else {
 		for (i = 0; i < outer_comps; i++) {
 			outer[i] = out[i] =
 				ac_lds_load(&ctx->ac, lds_outer);
-			lds_outer = LLVMBuildAdd(ctx->builder, lds_outer,
+			lds_outer = LLVMBuildAdd(ctx->ac.builder, lds_outer,
 						 ctx->ac.i32_1, "");
 		}
 		for (i = 0; i < inner_comps; i++) {
 			inner[i] = out[outer_comps+i] =
 				ac_lds_load(&ctx->ac, lds_inner);
-			lds_inner = LLVMBuildAdd(ctx->builder, lds_inner,
+			lds_inner = LLVMBuildAdd(ctx->ac.builder, lds_inner,
 						 ctx->ac.i32_1, "");
 		}
 	}
@@ -6338,13 +6337,13 @@ write_tess_factors(struct nir_to_llvm_context *ctx)
 
 	buffer = ctx->hs_ring_tess_factor;
 	tf_base = ctx->tess_factor_offset;
-	byteoffset = LLVMBuildMul(ctx->builder, rel_patch_id,
+	byteoffset = LLVMBuildMul(ctx->ac.builder, rel_patch_id,
 				  LLVMConstInt(ctx->ac.i32, 4 * stride, false), "");
 	unsigned tf_offset = 0;
 
 	if (ctx->options->chip_class <= VI) {
 		ac_nir_build_if(&inner_if_ctx, ctx,
-		                LLVMBuildICmp(ctx->builder, LLVMIntEQ,
+		                LLVMBuildICmp(ctx->ac.builder, LLVMIntEQ,
 		                              rel_patch_id, ctx->ac.i32_0, ""));
 
 		/* Store the dynamic HS control word. */
@@ -6555,7 +6554,7 @@ static void ac_llvm_finalize_module(struct nir_to_llvm_context * ctx)
 	LLVMRunFunctionPassManager(passmgr, ctx->main_function);
 	LLVMFinalizeFunctionPassManager(passmgr);
 
-	LLVMDisposeBuilder(ctx->builder);
+	LLVMDisposeBuilder(ctx->ac.builder);
 	LLVMDisposePassManager(passmgr);
 }
 
@@ -6608,12 +6607,12 @@ ac_setup_rings(struct nir_to_llvm_context *ctx)
 		ctx->esgs_ring = ac_build_load_to_sgpr(&ctx->ac, ctx->ring_offsets, LLVMConstInt(ctx->ac.i32, RING_ESGS_GS, false));
 		ctx->gsvs_ring = ac_build_load_to_sgpr(&ctx->ac, ctx->ring_offsets, LLVMConstInt(ctx->ac.i32, RING_GSVS_GS, false));
 
-		ctx->gsvs_ring = LLVMBuildBitCast(ctx->builder, ctx->gsvs_ring, ctx->ac.v4i32, "");
+		ctx->gsvs_ring = LLVMBuildBitCast(ctx->ac.builder, ctx->gsvs_ring, ctx->ac.v4i32, "");
 
-		ctx->gsvs_ring = LLVMBuildInsertElement(ctx->builder, ctx->gsvs_ring, ctx->gsvs_num_entries, LLVMConstInt(ctx->ac.i32, 2, false), "");
-		tmp = LLVMBuildExtractElement(ctx->builder, ctx->gsvs_ring, ctx->ac.i32_1, "");
-		tmp = LLVMBuildOr(ctx->builder, tmp, ctx->gsvs_ring_stride, "");
-		ctx->gsvs_ring = LLVMBuildInsertElement(ctx->builder, ctx->gsvs_ring, tmp, ctx->ac.i32_1, "");
+		ctx->gsvs_ring = LLVMBuildInsertElement(ctx->ac.builder, ctx->gsvs_ring, ctx->gsvs_num_entries, LLVMConstInt(ctx->ac.i32, 2, false), "");
+		tmp = LLVMBuildExtractElement(ctx->ac.builder, ctx->gsvs_ring, ctx->ac.i32_1, "");
+		tmp = LLVMBuildOr(ctx->ac.builder, tmp, ctx->gsvs_ring_stride, "");
+		ctx->gsvs_ring = LLVMBuildInsertElement(ctx->ac.builder, ctx->gsvs_ring, tmp, ctx->ac.i32_1, "");
 	}
 
 	if (ctx->stage == MESA_SHADER_TESS_CTRL ||
@@ -6750,8 +6749,7 @@ LLVMModuleRef ac_translate_nir_to_llvm(LLVMTargetMachineRef tm,
 		options->unsafe_math ? AC_FLOAT_MODE_UNSAFE_FP_MATH :
 				       AC_FLOAT_MODE_DEFAULT;
 
-	ctx.builder = ac_create_builder(ctx.context, float_mode);
-	ctx.ac.builder = ctx.builder;
+	ctx.ac.builder = ac_create_builder(ctx.context, float_mode);
 
 	memset(shader_info, 0, sizeof(*shader_info));
 
@@ -6882,7 +6880,7 @@ LLVMModuleRef ac_translate_nir_to_llvm(LLVMTargetMachineRef tm,
 		}
 	}
 
-	LLVMBuildRetVoid(ctx.builder);
+	LLVMBuildRetVoid(ctx.ac.builder);
 
 	if (options->dump_preoptir)
 		ac_dump_module(ctx.module);
@@ -7104,7 +7102,7 @@ static void
 ac_gs_copy_shader_emit(struct nir_to_llvm_context *ctx)
 {
 	LLVMValueRef vtx_offset =
-		LLVMBuildMul(ctx->builder, ctx->abi.vertex_id,
+		LLVMBuildMul(ctx->ac.builder, ctx->abi.vertex_id,
 			     LLVMConstInt(ctx->ac.i32, 4, false), "");
 	int idx = 0;
 
@@ -7134,7 +7132,7 @@ ac_gs_copy_shader_emit(struct nir_to_llvm_context *ctx)
 						     vtx_offset, soffset,
 						     0, 1, 1, true, false);
 
-			LLVMBuildStore(ctx->builder,
+			LLVMBuildStore(ctx->ac.builder,
 				       ac_to_float(&ctx->ac, value), ctx->nir->outputs[radeon_llvm_reg_index_soa(i, j)]);
 		}
 		idx += slot_inc;
@@ -7167,8 +7165,7 @@ void ac_create_gs_copy_shader(LLVMTargetMachineRef tm,
 		options->unsafe_math ? AC_FLOAT_MODE_UNSAFE_FP_MATH :
 				       AC_FLOAT_MODE_DEFAULT;
 
-	ctx.builder = ac_create_builder(ctx.context, float_mode);
-	ctx.ac.builder = ctx.builder;
+	ctx.ac.builder = ac_create_builder(ctx.context, float_mode);
 	ctx.stage = MESA_SHADER_VERTEX;
 
 	create_function(&ctx, MESA_SHADER_VERTEX, false, MESA_SHADER_VERTEX);
@@ -7195,7 +7192,7 @@ void ac_create_gs_copy_shader(LLVMTargetMachineRef tm,
 
 	ctx.nir = NULL;
 
-	LLVMBuildRetVoid(ctx.builder);
+	LLVMBuildRetVoid(ctx.ac.builder);
 
 	ac_llvm_finalize_module(&ctx);
 
-- 
2.16.1



More information about the mesa-dev mailing list