From: Jason Ekstrand Date: Thu, 11 Oct 2018 03:04:17 +0000 (-0500) Subject: intel/vec4: Fix nir_op_b2[fi] with 64-bit result X-Git-Tag: upstream/19.0.0~2229 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0e0dc596a2c008c32def103e175fcd5b7116f38f;p=platform%2Fupstream%2Fmesa.git intel/vec4: Fix nir_op_b2[fi] with 64-bit result This is valid NIR but you can't actually hit this case today. GLSL IR doesn't have a bool to double opcode; it does f2d(b2f(x)). In SPIR-V we don't have any to/from bool conversion opcodes at all. However, the next commit will make us start generating it so we should be ready. Reviewed-by: Ian Romanick --- diff --git a/src/intel/compiler/brw_vec4_nir.cpp b/src/intel/compiler/brw_vec4_nir.cpp index eaf1754..5ccfd1f 100644 --- a/src/intel/compiler/brw_vec4_nir.cpp +++ b/src/intel/compiler/brw_vec4_nir.cpp @@ -1586,7 +1586,12 @@ vec4_visitor::nir_emit_alu(nir_alu_instr *instr) case nir_op_b2i: case nir_op_b2f: - emit(MOV(dst, negate(op[0]))); + if (nir_dest_bit_size(instr->dest.dest) > 32) { + assert(dst.type == BRW_REGISTER_TYPE_DF); + emit_conversion_to_double(dst, negate(op[0]), false); + } else { + emit(MOV(dst, negate(op[0]))); + } break; case nir_op_f2b: