ac: convert nir_op_f2f32 src to a float
authorTimothy Arceri <tarceri@itsqueeze.com>
Fri, 9 Feb 2018 06:17:31 +0000 (17:17 +1100)
committerTimothy Arceri <tarceri@itsqueeze.com>
Fri, 9 Feb 2018 23:46:28 +0000 (10:46 +1100)
Fixes the following piglit test:

./bin/arb_vertex_attrib_64bit-check-explicit-location -auto -fbo

Where we would end up with the nir such as:

vec1 64 ssa_11 = pack_64_2x32_split ssa_9, ssa_10
vec1 32 ssa_12 = f2f32 ssa_2

And our pack_64_2x32_split nir to llvm code always produces
a 64bit integer as output.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/amd/common/ac_nir_to_llvm.c

index 396627bf1b7ac299a17724b9f09fcc77af515dd1..cd128054962d3c201a9403bd21066cfc3c94d20e 100644 (file)
@@ -1957,6 +1957,7 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
                result = LLVMBuildFPExt(ctx->ac.builder, src[0], ac_to_float_type(&ctx->ac, def_type), "");
                break;
        case nir_op_f2f32:
+               src[0] = ac_to_float(&ctx->ac, src[0]);
                result = LLVMBuildFPTrunc(ctx->ac.builder, src[0], ac_to_float_type(&ctx->ac, def_type), "");
                break;
        case nir_op_u2u32: