[Mesa-dev] [PATCH 09/15] ac: move ac_to_integer() and ac_to_float() to ac_llvm_build.c

Connor Abbott connora at valvesoftware.com
Tue Aug 8 01:32:35 UTC 2017


From: Connor Abbott <cwabbott0 at gmail.com>

We'll need to use ac_to_integer() for other stuff in ac_llvm_build.c.
---
 src/amd/common/ac_llvm_build.c  |  61 +++++++++++
 src/amd/common/ac_llvm_build.h  |   5 +
 src/amd/common/ac_nir_to_llvm.c | 224 +++++++++++++++-------------------------
 3 files changed, 150 insertions(+), 140 deletions(-)

diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c
index 7b024aa..2fdb3e8 100644
--- a/src/amd/common/ac_llvm_build.c
+++ b/src/amd/common/ac_llvm_build.c
@@ -113,6 +113,67 @@ ac_get_type_size(LLVMTypeRef type)
 	}
 }
 
+static LLVMTypeRef to_integer_type_scalar(struct ac_llvm_context *ctx, LLVMTypeRef t)
+{
+	if (t == ctx->f16 || t == ctx->i16)
+		return ctx->i16;
+	else if (t == ctx->f32 || t == ctx->i32)
+		return ctx->i32;
+	else if (t == ctx->f64 || t == ctx->i64)
+		return ctx->i64;
+	else
+		unreachable("Unhandled integer size");
+}
+
+LLVMTypeRef
+ac_to_integer_type(struct ac_llvm_context *ctx, LLVMTypeRef t)
+{
+	if (LLVMGetTypeKind(t) == LLVMVectorTypeKind) {
+		LLVMTypeRef elem_type = LLVMGetElementType(t);
+		return LLVMVectorType(to_integer_type_scalar(ctx, elem_type),
+		                      LLVMGetVectorSize(t));
+	}
+	return to_integer_type_scalar(ctx, t);
+}
+
+LLVMValueRef
+ac_to_integer(struct ac_llvm_context *ctx, LLVMValueRef v)
+{
+	LLVMTypeRef type = LLVMTypeOf(v);
+	return LLVMBuildBitCast(ctx->builder, v, ac_to_integer_type(ctx, type), "");
+}
+
+static LLVMTypeRef to_float_type_scalar(struct ac_llvm_context *ctx, LLVMTypeRef t)
+{
+	if (t == ctx->i16 || t == ctx->f16)
+		return ctx->f16;
+	else if (t == ctx->i32 || t == ctx->f32)
+		return ctx->f32;
+	else if (t == ctx->i64 || t == ctx->f64)
+		return ctx->f64;
+	else
+		unreachable("Unhandled float size");
+}
+
+LLVMTypeRef
+ac_to_float_type(struct ac_llvm_context *ctx, LLVMTypeRef t)
+{
+	if (LLVMGetTypeKind(t) == LLVMVectorTypeKind) {
+		LLVMTypeRef elem_type = LLVMGetElementType(t);
+		return LLVMVectorType(to_float_type_scalar(ctx, elem_type),
+		                      LLVMGetVectorSize(t));
+	}
+	return to_float_type_scalar(ctx, t);
+}
+
+LLVMValueRef
+ac_to_float(struct ac_llvm_context *ctx, LLVMValueRef v)
+{
+	LLVMTypeRef type = LLVMTypeOf(v);
+	return LLVMBuildBitCast(ctx->builder, v, ac_to_float_type(ctx, type), "");
+}
+
+
 LLVMValueRef
 ac_build_intrinsic(struct ac_llvm_context *ctx, const char *name,
 		   LLVMTypeRef return_type, LLVMValueRef *params,
diff --git a/src/amd/common/ac_llvm_build.h b/src/amd/common/ac_llvm_build.h
index 13655f1..1d9850b 100644
--- a/src/amd/common/ac_llvm_build.h
+++ b/src/amd/common/ac_llvm_build.h
@@ -68,6 +68,11 @@ ac_llvm_context_init(struct ac_llvm_context *ctx, LLVMContextRef context);
 
 unsigned ac_get_type_size(LLVMTypeRef type);
 
+LLVMTypeRef ac_to_integer_type(struct ac_llvm_context *ctx, LLVMTypeRef t);
+LLVMValueRef ac_to_integer(struct ac_llvm_context *ctx, LLVMValueRef v);
+LLVMTypeRef ac_to_float_type(struct ac_llvm_context *ctx, LLVMTypeRef t);
+LLVMValueRef ac_to_float(struct ac_llvm_context *ctx, LLVMValueRef v);
+
 LLVMValueRef
 ac_build_intrinsic(struct ac_llvm_context *ctx, const char *name,
 		   LLVMTypeRef return_type, LLVMValueRef *params,
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index f01081c..b39b873 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -399,62 +399,6 @@ static LLVMTypeRef const_array(LLVMTypeRef elem_type, int num_elements)
 	                       CONST_ADDR_SPACE);
 }
 
-static LLVMTypeRef to_integer_type_scalar(struct ac_llvm_context *ctx, LLVMTypeRef t)
-{
-	if (t == ctx->f16 || t == ctx->i16)
-		return ctx->i16;
-	else if (t == ctx->f32 || t == ctx->i32)
-		return ctx->i32;
-	else if (t == ctx->f64 || t == ctx->i64)
-		return ctx->i64;
-	else
-		unreachable("Unhandled integer size");
-}
-
-static LLVMTypeRef to_integer_type(struct ac_llvm_context *ctx, LLVMTypeRef t)
-{
-	if (LLVMGetTypeKind(t) == LLVMVectorTypeKind) {
-		LLVMTypeRef elem_type = LLVMGetElementType(t);
-		return LLVMVectorType(to_integer_type_scalar(ctx, elem_type),
-		                      LLVMGetVectorSize(t));
-	}
-	return to_integer_type_scalar(ctx, t);
-}
-
-static LLVMValueRef to_integer(struct ac_llvm_context *ctx, LLVMValueRef v)
-{
-	LLVMTypeRef type = LLVMTypeOf(v);
-	return LLVMBuildBitCast(ctx->builder, v, to_integer_type(ctx, type), "");
-}
-
-static LLVMTypeRef to_float_type_scalar(struct ac_llvm_context *ctx, LLVMTypeRef t)
-{
-	if (t == ctx->i16 || t == ctx->f16)
-		return ctx->f16;
-	else if (t == ctx->i32 || t == ctx->f32)
-		return ctx->f32;
-	else if (t == ctx->i64 || t == ctx->f64)
-		return ctx->f64;
-	else
-		unreachable("Unhandled float size");
-}
-
-static LLVMTypeRef to_float_type(struct ac_llvm_context *ctx, LLVMTypeRef t)
-{
-	if (LLVMGetTypeKind(t) == LLVMVectorTypeKind) {
-		LLVMTypeRef elem_type = LLVMGetElementType(t);
-		return LLVMVectorType(to_float_type_scalar(ctx, elem_type),
-		                      LLVMGetVectorSize(t));
-	}
-	return to_float_type_scalar(ctx, t);
-}
-
-static LLVMValueRef to_float(struct ac_llvm_context *ctx, LLVMValueRef v)
-{
-	LLVMTypeRef type = LLVMTypeOf(v);
-	return LLVMBuildBitCast(ctx->builder, v, to_float_type(ctx, type), "");
-}
-
 static int get_elem_bits(struct ac_llvm_context *ctx, LLVMTypeRef type)
 {
 	if (LLVMGetTypeKind(type) == LLVMVectorTypeKind)
@@ -1103,8 +1047,8 @@ static LLVMValueRef emit_float_cmp(struct ac_llvm_context *ctx,
                                    LLVMValueRef src1)
 {
 	LLVMValueRef result;
-	src0 = to_float(ctx, src0);
-	src1 = to_float(ctx, src1);
+	src0 = ac_to_float(ctx, src0);
+	src1 = ac_to_float(ctx, src1);
 	result = LLVMBuildFCmp(ctx->builder, pred, src0, src1, "");
 	return LLVMBuildSelect(ctx->builder, result,
 	                       LLVMConstInt(ctx->i32, 0xFFFFFFFF, false),
@@ -1118,7 +1062,7 @@ static LLVMValueRef emit_intrin_1f_param(struct ac_llvm_context *ctx,
 {
 	char name[64];
 	LLVMValueRef params[] = {
-		to_float(ctx, src0),
+		ac_to_float(ctx, src0),
 	};
 
 	MAYBE_UNUSED const int length = snprintf(name, sizeof(name), "%s.f%d", intrin,
@@ -1134,8 +1078,8 @@ static LLVMValueRef emit_intrin_2f_param(struct ac_llvm_context *ctx,
 {
 	char name[64];
 	LLVMValueRef params[] = {
-		to_float(ctx, src0),
-		to_float(ctx, src1),
+		ac_to_float(ctx, src0),
+		ac_to_float(ctx, src1),
 	};
 
 	MAYBE_UNUSED const int length = snprintf(name, sizeof(name), "%s.f%d", intrin,
@@ -1151,9 +1095,9 @@ static LLVMValueRef emit_intrin_3f_param(struct ac_llvm_context *ctx,
 {
 	char name[64];
 	LLVMValueRef params[] = {
-		to_float(ctx, src0),
-		to_float(ctx, src1),
-		to_float(ctx, src2),
+		ac_to_float(ctx, src0),
+		ac_to_float(ctx, src1),
+		ac_to_float(ctx, src2),
 	};
 
 	MAYBE_UNUSED const int length = snprintf(name, sizeof(name), "%s.f%d", intrin,
@@ -1255,7 +1199,7 @@ static LLVMValueRef emit_ffract(struct ac_llvm_context *ctx,
 				LLVMValueRef src0)
 {
 	const char *intr = "llvm.floor.f32";
-	LLVMValueRef fsrc0 = to_float(ctx, src0);
+	LLVMValueRef fsrc0 = ac_to_float(ctx, src0);
 	LLVMValueRef params[] = {
 		fsrc0,
 	};
@@ -1293,7 +1237,7 @@ static LLVMValueRef emit_b2f(struct ac_llvm_context *ctx,
 static LLVMValueRef emit_f2b(struct ac_llvm_context *ctx,
 			     LLVMValueRef src0)
 {
-	src0 = to_float(ctx, src0);
+	src0 = ac_to_float(ctx, src0);
 	return LLVMBuildSExt(ctx->builder,
 			     LLVMBuildFCmp(ctx->builder, LLVMRealUNE, src0, ctx->f32_0, ""),
 			     ctx->i32, "");
@@ -1319,7 +1263,7 @@ static LLVMValueRef emit_f2f16(struct nir_to_llvm_context *ctx,
 	LLVMValueRef result;
 	LLVMValueRef cond;
 
-	src0 = to_float(&ctx->ac, src0);
+	src0 = ac_to_float(&ctx->ac, src0);
 	result = LLVMBuildFPTrunc(ctx->builder, src0, ctx->f16, "");
 
 	if (ctx->options->chip_class >= VI) {
@@ -1429,7 +1373,7 @@ static LLVMValueRef emit_pack_half_2x16(struct ac_llvm_context *ctx,
 	int i;
 	LLVMValueRef comp[2];
 
-	src0 = to_float(ctx, src0);
+	src0 = ac_to_float(ctx, src0);
 	comp[0] = LLVMBuildExtractElement(ctx->builder, src0, ctx->i32_0, "");
 	comp[1] = LLVMBuildExtractElement(ctx->builder, src0, ctx->i32_1, "");
 	for (i = 0; i < 2; i++) {
@@ -1550,7 +1494,7 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
 		result = src[0];
 		break;
 	case nir_op_fneg:
-	        src[0] = to_float(&ctx->ac, src[0]);
+	        src[0] = ac_to_float(&ctx->ac, src[0]);
 		result = LLVMBuildFNeg(ctx->ac.builder, src[0], "");
 		break;
 	case nir_op_ineg:
@@ -1563,13 +1507,13 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
 		result = LLVMBuildAdd(ctx->ac.builder, src[0], src[1], "");
 		break;
 	case nir_op_fadd:
-		src[0] = to_float(&ctx->ac, src[0]);
-		src[1] = to_float(&ctx->ac, src[1]);
+		src[0] = ac_to_float(&ctx->ac, src[0]);
+		src[1] = ac_to_float(&ctx->ac, src[1]);
 		result = LLVMBuildFAdd(ctx->ac.builder, src[0], src[1], "");
 		break;
 	case nir_op_fsub:
-		src[0] = to_float(&ctx->ac, src[0]);
-		src[1] = to_float(&ctx->ac, src[1]);
+		src[0] = ac_to_float(&ctx->ac, src[0]);
+		src[1] = ac_to_float(&ctx->ac, src[1]);
 		result = LLVMBuildFSub(ctx->ac.builder, src[0], src[1], "");
 		break;
 	case nir_op_isub:
@@ -1585,17 +1529,17 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
 		result = LLVMBuildURem(ctx->ac.builder, src[0], src[1], "");
 		break;
 	case nir_op_fmod:
-		src[0] = to_float(&ctx->ac, src[0]);
-		src[1] = to_float(&ctx->ac, src[1]);
+		src[0] = ac_to_float(&ctx->ac, src[0]);
+		src[1] = ac_to_float(&ctx->ac, src[1]);
 		result = ac_build_fdiv(&ctx->ac, src[0], src[1]);
 		result = emit_intrin_1f_param(&ctx->ac, "llvm.floor",
-		                              to_float_type(&ctx->ac, def_type), result);
+		                              ac_to_float_type(&ctx->ac, def_type), result);
 		result = LLVMBuildFMul(ctx->ac.builder, src[1] , result, "");
 		result = LLVMBuildFSub(ctx->ac.builder, src[0], result, "");
 		break;
 	case nir_op_frem:
-		src[0] = to_float(&ctx->ac, src[0]);
-		src[1] = to_float(&ctx->ac, src[1]);
+		src[0] = ac_to_float(&ctx->ac, src[0]);
+		src[1] = ac_to_float(&ctx->ac, src[1]);
 		result = LLVMBuildFRem(ctx->ac.builder, src[0], src[1], "");
 		break;
 	case nir_op_irem:
@@ -1608,17 +1552,17 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
 		result = LLVMBuildUDiv(ctx->ac.builder, src[0], src[1], "");
 		break;
 	case nir_op_fmul:
-		src[0] = to_float(&ctx->ac, src[0]);
-		src[1] = to_float(&ctx->ac, src[1]);
+		src[0] = ac_to_float(&ctx->ac, src[0]);
+		src[1] = ac_to_float(&ctx->ac, src[1]);
 		result = LLVMBuildFMul(ctx->ac.builder, src[0], src[1], "");
 		break;
 	case nir_op_fdiv:
-		src[0] = to_float(&ctx->ac, src[0]);
-		src[1] = to_float(&ctx->ac, src[1]);
+		src[0] = ac_to_float(&ctx->ac, src[0]);
+		src[1] = ac_to_float(&ctx->ac, src[1]);
 		result = ac_build_fdiv(&ctx->ac, src[0], src[1]);
 		break;
 	case nir_op_frcp:
-		src[0] = to_float(&ctx->ac, src[0]);
+		src[0] = ac_to_float(&ctx->ac, src[0]);
 		result = ac_build_fdiv(&ctx->ac, ctx->ac.f32_1, src[0]);
 		break;
 	case nir_op_iand:
@@ -1680,7 +1624,7 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
 		break;
 	case nir_op_fabs:
 		result = emit_intrin_1f_param(&ctx->ac, "llvm.fabs",
-		                              to_float_type(&ctx->ac, def_type), src[0]);
+		                              ac_to_float_type(&ctx->ac, def_type), src[0]);
 		break;
 	case nir_op_iabs:
 		result = emit_iabs(&ctx->ac, src[0]);
@@ -1701,76 +1645,76 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
 		result = emit_isign(&ctx->ac, src[0]);
 		break;
 	case nir_op_fsign:
-		src[0] = to_float(&ctx->ac, src[0]);
+		src[0] = ac_to_float(&ctx->ac, src[0]);
 		result = emit_fsign(&ctx->ac, src[0]);
 		break;
 	case nir_op_ffloor:
 		result = emit_intrin_1f_param(&ctx->ac, "llvm.floor",
-		                              to_float_type(&ctx->ac, def_type), src[0]);
+		                              ac_to_float_type(&ctx->ac, def_type), src[0]);
 		break;
 	case nir_op_ftrunc:
 		result = emit_intrin_1f_param(&ctx->ac, "llvm.trunc",
-		                              to_float_type(&ctx->ac, def_type), src[0]);
+		                              ac_to_float_type(&ctx->ac, def_type), src[0]);
 		break;
 	case nir_op_fceil:
 		result = emit_intrin_1f_param(&ctx->ac, "llvm.ceil",
-		                              to_float_type(&ctx->ac, def_type), src[0]);
+		                              ac_to_float_type(&ctx->ac, def_type), src[0]);
 		break;
 	case nir_op_fround_even:
 		result = emit_intrin_1f_param(&ctx->ac, "llvm.rint",
-		                              to_float_type(&ctx->ac, def_type),src[0]);
+		                              ac_to_float_type(&ctx->ac, def_type),src[0]);
 		break;
 	case nir_op_ffract:
 		result = emit_ffract(&ctx->ac, src[0]);
 		break;
 	case nir_op_fsin:
 		result = emit_intrin_1f_param(&ctx->ac, "llvm.sin",
-		                              to_float_type(&ctx->ac, def_type), src[0]);
+		                              ac_to_float_type(&ctx->ac, def_type), src[0]);
 		break;
 	case nir_op_fcos:
 		result = emit_intrin_1f_param(&ctx->ac, "llvm.cos",
-		                              to_float_type(&ctx->ac, def_type), src[0]);
+		                              ac_to_float_type(&ctx->ac, def_type), src[0]);
 		break;
 	case nir_op_fsqrt:
 		result = emit_intrin_1f_param(&ctx->ac, "llvm.sqrt",
-		                              to_float_type(&ctx->ac, def_type), src[0]);
+		                              ac_to_float_type(&ctx->ac, def_type), src[0]);
 		break;
 	case nir_op_fexp2:
 		result = emit_intrin_1f_param(&ctx->ac, "llvm.exp2",
-		                              to_float_type(&ctx->ac, def_type), src[0]);
+		                              ac_to_float_type(&ctx->ac, def_type), src[0]);
 		break;
 	case nir_op_flog2:
 		result = emit_intrin_1f_param(&ctx->ac, "llvm.log2",
-		                              to_float_type(&ctx->ac, def_type), src[0]);
+		                              ac_to_float_type(&ctx->ac, def_type), src[0]);
 		break;
 	case nir_op_frsq:
 		result = emit_intrin_1f_param(&ctx->ac, "llvm.sqrt",
-		                              to_float_type(&ctx->ac, def_type), src[0]);
+		                              ac_to_float_type(&ctx->ac, def_type), src[0]);
 		result = ac_build_fdiv(&ctx->ac, ctx->ac.f32_1, result);
 		break;
 	case nir_op_fpow:
 		result = emit_intrin_2f_param(&ctx->ac, "llvm.pow",
-		                              to_float_type(&ctx->ac, def_type), src[0], src[1]);
+		                              ac_to_float_type(&ctx->ac, def_type), src[0], src[1]);
 		break;
 	case nir_op_fmax:
 		result = emit_intrin_2f_param(&ctx->ac, "llvm.maxnum",
-		                              to_float_type(&ctx->ac, def_type), src[0], src[1]);
+		                              ac_to_float_type(&ctx->ac, def_type), src[0], src[1]);
 		if (instr->dest.dest.ssa.bit_size == 32)
 			result = emit_intrin_1f_param(&ctx->ac, "llvm.canonicalize",
-						      to_float_type(&ctx->ac, def_type),
+						      ac_to_float_type(&ctx->ac, def_type),
 						      result);
 		break;
 	case nir_op_fmin:
 		result = emit_intrin_2f_param(&ctx->ac, "llvm.minnum",
-		                              to_float_type(&ctx->ac, def_type), src[0], src[1]);
+		                              ac_to_float_type(&ctx->ac, def_type), src[0], src[1]);
 		if (instr->dest.dest.ssa.bit_size == 32)
 			result = emit_intrin_1f_param(&ctx->ac, "llvm.canonicalize",
-						      to_float_type(&ctx->ac, def_type),
+						      ac_to_float_type(&ctx->ac, def_type),
 						      result);
 		break;
 	case nir_op_ffma:
 		result = emit_intrin_3f_param(&ctx->ac, "llvm.fma",
-		                              to_float_type(&ctx->ac, def_type), src[0], src[1], src[2]);
+		                              ac_to_float_type(&ctx->ac, def_type), src[0], src[1], src[2]);
 		break;
 	case nir_op_ibitfield_extract:
 		result = emit_bitfield_extract(&ctx->ac, true, src);
@@ -1791,32 +1735,32 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
 	case nir_op_vec3:
 	case nir_op_vec4:
 		for (unsigned i = 0; i < nir_op_infos[instr->op].num_inputs; i++)
-			src[i] = to_integer(&ctx->ac, src[i]);
+			src[i] = ac_to_integer(&ctx->ac, src[i]);
 		result = ac_build_gather_values(&ctx->ac, src, num_components);
 		break;
 	case nir_op_f2i32:
 	case nir_op_f2i64:
-		src[0] = to_float(&ctx->ac, src[0]);
+		src[0] = ac_to_float(&ctx->ac, src[0]);
 		result = LLVMBuildFPToSI(ctx->ac.builder, src[0], def_type, "");
 		break;
 	case nir_op_f2u32:
 	case nir_op_f2u64:
-		src[0] = to_float(&ctx->ac, src[0]);
+		src[0] = ac_to_float(&ctx->ac, src[0]);
 		result = LLVMBuildFPToUI(ctx->ac.builder, src[0], def_type, "");
 		break;
 	case nir_op_i2f32:
 	case nir_op_i2f64:
-		result = LLVMBuildSIToFP(ctx->ac.builder, src[0], to_float_type(&ctx->ac, def_type), "");
+		result = LLVMBuildSIToFP(ctx->ac.builder, src[0], ac_to_float_type(&ctx->ac, def_type), "");
 		break;
 	case nir_op_u2f32:
 	case nir_op_u2f64:
-		result = LLVMBuildUIToFP(ctx->ac.builder, src[0], to_float_type(&ctx->ac, def_type), "");
+		result = LLVMBuildUIToFP(ctx->ac.builder, src[0], ac_to_float_type(&ctx->ac, def_type), "");
 		break;
 	case nir_op_f2f64:
-		result = LLVMBuildFPExt(ctx->ac.builder, src[0], to_float_type(&ctx->ac, def_type), "");
+		result = LLVMBuildFPExt(ctx->ac.builder, src[0], ac_to_float_type(&ctx->ac, def_type), "");
 		break;
 	case nir_op_f2f32:
-		result = LLVMBuildFPTrunc(ctx->ac.builder, src[0], to_float_type(&ctx->ac, def_type), "");
+		result = LLVMBuildFPTrunc(ctx->ac.builder, src[0], ac_to_float_type(&ctx->ac, def_type), "");
 		break;
 	case nir_op_u2u32:
 	case nir_op_u2u64:
@@ -1925,7 +1869,7 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
 
 	if (result) {
 		assert(instr->dest.dest.is_ssa);
-		result = to_integer(&ctx->ac, result);
+		result = ac_to_integer(&ctx->ac, result);
 		_mesa_hash_table_insert(ctx->defs, &instr->dest.dest.ssa,
 		                        result);
 	}
@@ -2270,7 +2214,7 @@ static void visit_store_ssbo(struct ac_nir_context *ctx,
 	if (components_32bit > 1)
 		data_type = LLVMVectorType(ctx->ac.f32, components_32bit);
 
-	base_data = to_float(&ctx->ac, src_data);
+	base_data = ac_to_float(&ctx->ac, src_data);
 	base_data = trim_vector(&ctx->ac, base_data, instr->num_components);
 	base_data = LLVMBuildBitCast(ctx->ac.builder, base_data,
 				     data_type, "");
@@ -3065,7 +3009,7 @@ visit_store_var(struct ac_nir_context *ctx,
 {
 	LLVMValueRef temp_ptr, value;
 	int idx = instr->variables[0]->var->data.driver_location;
-	LLVMValueRef src = to_float(&ctx->ac, get_src(ctx, instr->src[0]));
+	LLVMValueRef src = ac_to_float(&ctx->ac, get_src(ctx, instr->src[0]));
 	int writemask = instr->const_index[0];
 	LLVMValueRef indir_index;
 	unsigned const_index;
@@ -3250,7 +3194,7 @@ static LLVMValueRef adjust_sample_index_using_fmask(struct ac_llvm_context *ctx,
 
 	res = ac_build_image_opcode(ctx, &args);
 
-	res = to_integer(ctx, res);
+	res = ac_to_integer(ctx, res);
 	LLVMValueRef four = LLVMConstInt(ctx->i32, 4, false);
 	LLVMValueRef F = LLVMConstInt(ctx->i32, 0xf, false);
 
@@ -3395,7 +3339,7 @@ static LLVMValueRef visit_image_load(struct ac_nir_context *ctx,
 					 params, 5, 0);
 
 		res = trim_vector(&ctx->ac, res, instr->dest.ssa.num_components);
-		res = to_integer(&ctx->ac, res);
+		res = ac_to_integer(&ctx->ac, res);
 	} else {
 		bool is_da = glsl_sampler_type_is_array(type) ||
 			     glsl_get_sampler_dim(type) == GLSL_SAMPLER_DIM_CUBE;
@@ -3428,7 +3372,7 @@ static LLVMValueRef visit_image_load(struct ac_nir_context *ctx,
 		res = ac_build_intrinsic(&ctx->ac, intrinsic_name, ctx->ac.v4f32,
 					 params, 7, AC_FUNC_ATTR_READONLY);
 	}
-	return to_integer(&ctx->ac, res);
+	return ac_to_integer(&ctx->ac, res);
 }
 
 static void visit_image_store(struct ac_nir_context *ctx,
@@ -3446,7 +3390,7 @@ static void visit_image_store(struct ac_nir_context *ctx,
 		glc = i1true;
 
 	if (glsl_get_sampler_dim(type) == GLSL_SAMPLER_DIM_BUF) {
-		params[0] = to_float(&ctx->ac, get_src(ctx, instr->src[2])); /* data */
+		params[0] = ac_to_float(&ctx->ac, get_src(ctx, instr->src[2])); /* data */
 		params[1] = get_sampler_desc(ctx, instr->variables[0], AC_DESC_BUFFER, true, true);
 		params[2] = LLVMBuildExtractElement(ctx->ac.builder, get_src(ctx, instr->src[0]),
 						    ctx->ac.i32_0, ""); /* vindex */
@@ -3461,7 +3405,7 @@ static void visit_image_store(struct ac_nir_context *ctx,
 		LLVMValueRef da = is_da ? i1true : i1false;
 		LLVMValueRef slc = i1false;
 
-		params[0] = to_float(&ctx->ac, get_src(ctx, instr->src[2]));
+		params[0] = ac_to_float(&ctx->ac, get_src(ctx, instr->src[2]));
 		params[1] = get_image_coords(ctx, instr); /* coords */
 		params[2] = get_sampler_desc(ctx, instr->variables[0], AC_DESC_IMAGE, true, true);
 		params[3] = LLVMConstInt(ctx->ac.i32, 15, false); /* dmask */
@@ -3711,7 +3655,7 @@ static LLVMValueRef visit_var_atomic(struct nir_to_llvm_context *ctx,
 			return NULL;
 		}
 
-		result = LLVMBuildAtomicRMW(ctx->builder, op, ptr, to_integer(&ctx->ac, src),
+		result = LLVMBuildAtomicRMW(ctx->builder, op, ptr, ac_to_integer(&ctx->ac, src),
 					    LLVMAtomicOrderingSequentiallyConsistent,
 					    false);
 	}
@@ -3798,8 +3742,8 @@ static LLVMValueRef visit_interp(struct nir_to_llvm_context *ctx,
 	}
 
 	if (instr->intrinsic == nir_intrinsic_interp_var_at_offset) {
-		src_c0 = to_float(&ctx->ac, LLVMBuildExtractElement(ctx->builder, src0, ctx->i32zero, ""));
-		src_c1 = to_float(&ctx->ac, LLVMBuildExtractElement(ctx->builder, src0, ctx->i32one, ""));
+		src_c0 = ac_to_float(&ctx->ac, LLVMBuildExtractElement(ctx->builder, src0, ctx->i32zero, ""));
+		src_c1 = ac_to_float(&ctx->ac, LLVMBuildExtractElement(ctx->builder, src0, ctx->i32one, ""));
 	} else if (instr->intrinsic == nir_intrinsic_interp_var_at_sample) {
 		LLVMValueRef sample_position;
 		LLVMValueRef halfval = LLVMConstReal(ctx->f32, 0.5f);
@@ -4430,9 +4374,9 @@ static void tex_fetch_ptrs(struct ac_nir_context *ctx,
 static LLVMValueRef apply_round_slice(struct ac_llvm_context *ctx,
 				      LLVMValueRef coord)
 {
-	coord = to_float(ctx, coord);
+	coord = ac_to_float(ctx, coord);
 	coord = ac_build_intrinsic(ctx, "llvm.rint.f32", ctx->f32, &coord, 1, 0);
-	coord = to_integer(ctx, coord);
+	coord = ac_to_integer(ctx, coord);
 	return coord;
 }
 
@@ -4558,8 +4502,8 @@ static void visit_tex(struct ac_nir_context *ctx, nir_tex_instr *instr)
 
 	/* Pack depth comparison value */
 	if (instr->is_shadow && comparator) {
-		LLVMValueRef z = to_float(&ctx->ac,
-		                          llvm_extract_elem(&ctx->ac, comparator, 0));
+		LLVMValueRef z = ac_to_float(&ctx->ac,
+		                             llvm_extract_elem(&ctx->ac, comparator, 0));
 
 		/* TC-compatible HTILE promotes Z16 and Z24 to Z32_FLOAT,
 		 * so the depth comparison value isn't clamped for Z16 and
@@ -4591,8 +4535,8 @@ static void visit_tex(struct ac_nir_context *ctx, nir_tex_instr *instr)
 		}
 
 		for (unsigned i = 0; i < num_deriv_comp; i++) {
-			derivs[i] = to_float(&ctx->ac, llvm_extract_elem(&ctx->ac, ddx, i));
-			derivs[num_deriv_comp + i] = to_float(&ctx->ac, llvm_extract_elem(&ctx->ac, ddy, i));
+			derivs[i] = ac_to_float(&ctx->ac, llvm_extract_elem(&ctx->ac, ddx, i));
+			derivs[num_deriv_comp + i] = ac_to_float(&ctx->ac, llvm_extract_elem(&ctx->ac, ddy, i));
 		}
 	}
 
@@ -4600,7 +4544,7 @@ static void visit_tex(struct ac_nir_context *ctx, nir_tex_instr *instr)
 		if (instr->is_array && instr->op != nir_texop_lod)
 			coords[3] = apply_round_slice(&ctx->ac, coords[3]);
 		for (chan = 0; chan < instr->coord_components; chan++)
-			coords[chan] = to_float(&ctx->ac, coords[chan]);
+			coords[chan] = ac_to_float(&ctx->ac, coords[chan]);
 		if (instr->coord_components == 3)
 			coords[3] = LLVMGetUndef(ctx->ac.f32);
 		ac_prepare_cube_coords(&ctx->ac,
@@ -4735,7 +4679,7 @@ static void visit_tex(struct ac_nir_context *ctx, nir_tex_instr *instr)
 write_result:
 	if (result) {
 		assert(instr->dest.is_ssa);
-		result = to_integer(&ctx->ac, result);
+		result = ac_to_integer(&ctx->ac, result);
 		_mesa_hash_table_insert(ctx->defs, &instr->dest.ssa, result);
 	}
 }
@@ -4964,7 +4908,7 @@ handle_vs_input_decl(struct nir_to_llvm_context *ctx,
 		for (unsigned chan = 0; chan < 4; chan++) {
 			LLVMValueRef llvm_chan = LLVMConstInt(ctx->i32, chan, false);
 			ctx->inputs[radeon_llvm_reg_index_soa(idx, chan)] =
-				to_integer(&ctx->ac, LLVMBuildExtractElement(ctx->builder,
+				ac_to_integer(&ctx->ac, LLVMBuildExtractElement(ctx->builder,
 							input, llvm_chan, ""));
 		}
 	}
@@ -5320,7 +5264,7 @@ setup_shared(struct ac_nir_context *ctx,
 static LLVMValueRef
 emit_float_saturate(struct ac_llvm_context *ctx, LLVMValueRef v, float lo, float hi)
 {
-	v = to_float(ctx, v);
+	v = ac_to_float(ctx, v);
 	v = emit_intrin_2f_param(ctx, "llvm.maxnum.f32", ctx->f32, v, LLVMConstReal(ctx->f32, lo));
 	return emit_intrin_2f_param(ctx, "llvm.minnum.f32", ctx->f32, v, LLVMConstReal(ctx->f32, hi));
 }
@@ -5454,7 +5398,7 @@ si_llvm_init_export_args(struct nir_to_llvm_context *ctx,
 			LLVMValueRef max_alpha = !is_int10 ? max_rgb : LLVMConstInt(ctx->i32, 3, 0);
 
 			for (unsigned chan = 0; chan < 4; chan++) {
-				val[chan] = to_integer(&ctx->ac, values[chan]);
+				val[chan] = ac_to_integer(&ctx->ac, values[chan]);
 				val[chan] = emit_minmax_int(&ctx->ac, LLVMIntULT, val[chan], chan == 3 ? max_alpha : max_rgb);
 			}
 
@@ -5474,7 +5418,7 @@ si_llvm_init_export_args(struct nir_to_llvm_context *ctx,
 
 			/* Clamp. */
 			for (unsigned chan = 0; chan < 4; chan++) {
-				val[chan] = to_integer(&ctx->ac, values[chan]);
+				val[chan] = ac_to_integer(&ctx->ac, values[chan]);
 				val[chan] = emit_minmax_int(&ctx->ac, LLVMIntSLT, val[chan], chan == 3 ? max_alpha : max_rgb);
 				val[chan] = emit_minmax_int(&ctx->ac, LLVMIntSGT, val[chan], chan == 3 ? min_alpha : min_rgb);
 			}
@@ -5494,7 +5438,7 @@ si_llvm_init_export_args(struct nir_to_llvm_context *ctx,
 		memcpy(&args->out[0], values, sizeof(values[0]) * 4);
 
 	for (unsigned i = 0; i < 4; ++i)
-		args->out[i] = to_float(&ctx->ac, args->out[i]);
+		args->out[i] = ac_to_float(&ctx->ac, args->out[i]);
 }
 
 static void
@@ -5521,7 +5465,7 @@ handle_vs_outputs_post(struct nir_to_llvm_context *ctx,
 
 		i = VARYING_SLOT_CLIP_DIST0;
 		for (j = 0; j < ctx->num_output_clips + ctx->num_output_culls; j++)
-			slots[j] = to_float(&ctx->ac, LLVMBuildLoad(ctx->builder,
+			slots[j] = ac_to_float(&ctx->ac, LLVMBuildLoad(ctx->builder,
 							       ctx->nir->outputs[radeon_llvm_reg_index_soa(i, j)], ""));
 
 		for (i = ctx->num_output_clips + ctx->num_output_culls; i < 8; i++)
@@ -5611,8 +5555,8 @@ handle_vs_outputs_post(struct nir_to_llvm_context *ctx,
 			continue;
 
 		for (unsigned j = 0; j < 4; j++)
-			values[j] = to_float(&ctx->ac, LLVMBuildLoad(ctx->builder,
-					      ctx->nir->outputs[radeon_llvm_reg_index_soa(i, j)], ""));
+			values[j] = ac_to_float(&ctx->ac, LLVMBuildLoad(ctx->builder,
+					        ctx->nir->outputs[radeon_llvm_reg_index_soa(i, j)], ""));
 
 		if (i == VARYING_SLOT_LAYER) {
 			target = V_008DFC_SQ_EXP_PARAM + param_count;
@@ -6040,20 +5984,20 @@ handle_fs_outputs_post(struct nir_to_llvm_context *ctx)
 
 		if (i == FRAG_RESULT_DEPTH) {
 			ctx->shader_info->fs.writes_z = true;
-			depth = to_float(&ctx->ac, LLVMBuildLoad(ctx->builder,
+			depth = ac_to_float(&ctx->ac, LLVMBuildLoad(ctx->builder,
 							    ctx->nir->outputs[radeon_llvm_reg_index_soa(i, 0)], ""));
 		} else if (i == FRAG_RESULT_STENCIL) {
 			ctx->shader_info->fs.writes_stencil = true;
-			stencil = to_float(&ctx->ac, LLVMBuildLoad(ctx->builder,
+			stencil = ac_to_float(&ctx->ac, LLVMBuildLoad(ctx->builder,
 							      ctx->nir->outputs[radeon_llvm_reg_index_soa(i, 0)], ""));
 		} else if (i == FRAG_RESULT_SAMPLE_MASK) {
 			ctx->shader_info->fs.writes_sample_mask = true;
-			samplemask = to_float(&ctx->ac, LLVMBuildLoad(ctx->builder,
+			samplemask = ac_to_float(&ctx->ac, LLVMBuildLoad(ctx->builder,
 								  ctx->nir->outputs[radeon_llvm_reg_index_soa(i, 0)], ""));
 		} else {
 			bool last = false;
 			for (unsigned j = 0; j < 4; j++)
-				values[j] = to_float(&ctx->ac, LLVMBuildLoad(ctx->builder,
+				values[j] = ac_to_float(&ctx->ac, LLVMBuildLoad(ctx->builder,
 									ctx->nir->outputs[radeon_llvm_reg_index_soa(i, j)], ""));
 
 			if (!ctx->shader_info->fs.writes_z && !ctx->shader_info->fs.writes_stencil && !ctx->shader_info->fs.writes_sample_mask)
@@ -6597,7 +6541,7 @@ ac_gs_copy_shader_emit(struct nir_to_llvm_context *ctx)
 						   AC_FUNC_ATTR_LEGACY);
 
 			LLVMBuildStore(ctx->builder,
-				       to_float(&ctx->ac, value), ctx->nir->outputs[radeon_llvm_reg_index_soa(i, j)]);
+				       ac_to_float(&ctx->ac, value), ctx->nir->outputs[radeon_llvm_reg_index_soa(i, j)]);
 		}
 		idx += slot_inc;
 	}
-- 
2.9.4



More information about the mesa-dev mailing list