diff options
author | Timothy Arceri <[email protected]> | 2017-12-12 16:10:24 +1100 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2017-12-13 13:20:28 +1100 |
commit | a5f9ac29282a39bad3cf1324557b1caaff37b4fb (patch) | |
tree | b5b3cbc013c7e9ecd3a23ab709280ac3740ba77a | |
parent | cab5513b4705a7f29fefe52fefb88952a9a19f4d (diff) |
ac: fix nir_op_f2f64
Without this we get the error "FPExt only operates on FP" when
converting the following:
vec1 32 ssa_5 = b2f ssa_4
vec1 64 ssa_6 = f2f64 ssa_5
Which results in:
%44 = and i32 %43, 1065353216
%45 = fpext i32 %44 to double
With this patch we now get:
%44 = and i32 %43, 1065353216
%45 = bitcast i32 %44 to float
%46 = fpext float %45 to double
Reviewed-by: Nicolai Hähnle <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
-rw-r--r-- | src/amd/common/ac_nir_to_llvm.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index 3d26dd37529..f3602a267de 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -1802,6 +1802,7 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr) result = LLVMBuildUIToFP(ctx->ac.builder, src[0], ac_to_float_type(&ctx->ac, def_type), ""); break; case nir_op_f2f64: + src[0] = ac_to_float(&ctx->ac, src[0]); result = LLVMBuildFPExt(ctx->ac.builder, src[0], ac_to_float_type(&ctx->ac, def_type), ""); break; case nir_op_f2f32: |