freedreno: Use the NIR lowering for isign.
I think this will save an instruction and hopefully not increase any other costs (possibly the immediate -1 and 1?), but I haven't actually tested. Reviewed-by: Kristian H. Kristensen <hoegsberg@chromium.org>
This commit is contained in:
parent
8f3694e1ab
commit
338d399fd0
2 changed files with 1 additions and 14 deletions
|
|
@ -563,20 +563,6 @@ emit_alu(struct ir3_context *ctx, nir_alu_instr *alu)
|
|||
case nir_op_ishr:
|
||||
dst[0] = ir3_ASHR_B(b, src[0], 0, src[1], 0);
|
||||
break;
|
||||
case nir_op_isign: {
|
||||
/* maybe this would be sane to lower in nir.. */
|
||||
struct ir3_instruction *neg, *pos;
|
||||
|
||||
neg = ir3_CMPS_S(b, src[0], 0, create_immed(b, 0), 0);
|
||||
neg->cat2.condition = IR3_COND_LT;
|
||||
|
||||
pos = ir3_CMPS_S(b, src[0], 0, create_immed(b, 0), 0);
|
||||
pos->cat2.condition = IR3_COND_GT;
|
||||
|
||||
dst[0] = ir3_SUB_U(b, pos, 0, neg, 0);
|
||||
|
||||
break;
|
||||
}
|
||||
case nir_op_isub:
|
||||
dst[0] = ir3_SUB_U(b, src[0], 0, src[1], 0);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ static const nir_shader_compiler_options options = {
|
|||
.lower_fmod32 = true,
|
||||
.lower_fmod64 = true,
|
||||
.lower_fdiv = true,
|
||||
.lower_isign = true,
|
||||
.lower_ldexp = true,
|
||||
.fuse_ffma = true,
|
||||
.native_integers = true,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue