i965/nir: Use signed integer type for booleans
FS instructions with NIR on i965: total instructions in shared programs: 2663561 -> 2619051 (-1.67%) instructions in affected programs: 1612965 -> 1568455 (-2.76%) helped: 5455 HURT: 12 FS instructions with NIR on g4x: total instructions in shared programs: 2352633 -> 2307908 (-1.90%) instructions in affected programs: 1441842 -> 1397117 (-3.10%) helped: 5463 HURT: 11 FS instructions with NIR on ilk: total instructions in shared programs: 3997305 -> 3934278 (-1.58%) instructions in affected programs: 2189409 -> 2126382 (-2.88%) helped: 8969 HURT: 22 FS instructions with NIR on hsw (snb and ivb were similar): total instructions in shared programs: 4109389 -> 4109242 (-0.00%) instructions in affected programs: 109869 -> 109722 (-0.13%) helped: 339 HURT: 190 No SIMD16 programs were gained or lost on any platform Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
@@ -522,7 +522,7 @@ fs_visitor::nir_emit_if(nir_if *if_stmt)
|
||||
/* first, put the condition into f0 */
|
||||
fs_inst *inst = emit(MOV(reg_null_d,
|
||||
retype(get_nir_src(if_stmt->condition),
|
||||
BRW_REGISTER_TYPE_UD)));
|
||||
BRW_REGISTER_TYPE_D)));
|
||||
inst->conditional_mod = BRW_CONDITIONAL_NZ;
|
||||
|
||||
emit(IF(BRW_PREDICATE_NORMAL));
|
||||
@@ -598,9 +598,9 @@ static brw_reg_type
|
||||
brw_type_for_nir_type(nir_alu_type type)
|
||||
{
|
||||
switch (type) {
|
||||
case nir_type_bool:
|
||||
case nir_type_unsigned:
|
||||
return BRW_REGISTER_TYPE_UD;
|
||||
case nir_type_bool:
|
||||
case nir_type_int:
|
||||
return BRW_REGISTER_TYPE_D;
|
||||
case nir_type_float:
|
||||
@@ -1279,7 +1279,7 @@ fs_visitor::nir_emit_alu(nir_alu_instr *instr)
|
||||
fs_reg masked = vgrf(glsl_type::int_type);
|
||||
emit(AND(masked, result, fs_reg(1)));
|
||||
masked.negate = true;
|
||||
emit(MOV(result, masked));
|
||||
emit(MOV(retype(result, BRW_REGISTER_TYPE_D), masked));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user