[Mesa-dev] [PATCH] nv50/ir: optimmize shl(a, 0) to a

Karol Herbst karolherbst at gmail.com
Sat Apr 29 20:19:17 UTC 2017


2017-04-29 21:03 GMT+02:00 Ilia Mirkin <imirkin at alum.mit.edu>:
> On Sat, Apr 29, 2017 at 12:46 PM, Karol Herbst <karolherbst at gmail.com> wrote:
>> helps two alien isolation shaders
>>
>> shader-db:
>> total instructions in shared programs : 4251497 -> 4251494 (-0.00%)
>> total gprs used in shared programs    : 513962 -> 513962 (0.00%)
>> total local used in shared programs   : 29797 -> 29797 (0.00%)
>> total bytes used in shared programs   : 38960264 -> 38960232 (-0.00%)
>>
>>                 local        gpr       inst      bytes
>>     helped           0           0           2           2
>>       hurt           0           0           0           0
>>
>> Signed-off-by: Karol Herbst <karolherbst at gmail.com>
>> ---
>>  src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 5 +++++
>>  1 file changed, 5 insertions(+)
>>
>> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
>> index 015def0391..a2446e4df8 100644
>> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
>> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
>> @@ -1284,6 +1284,11 @@ ConstantFolding::opnd(Instruction *i, ImmediateValue &imm0, int s)
>>
>>     case OP_SHL:
>>     {
>> +      if (s == 1 && imm0.isInteger(0)) {
>> +         i->op = OP_MOV;
>> +         i->setSrc(1, NULL);
>> +         break;
>> +      }
>>        if (s != 1 || i->src(0).mod != Modifier(0))
>>           break;
>
> Interesting. This suggests that src(0) may have modifiers, although I
> can't imagine what that'd be. Perhaps it can take a neg? In that case,
> you need to fix the OP_MOV above -- should probably do it anyways,
> i.e. i->op = i->src(0).mod.getOp() or something. With that, this is
>

I looked through the emitter and there seem to be no flags. Envydis
and nvdisasm seem to think the same.
Will fix it up nethertheless.

> Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
>
> Separately, I just noticed that we don't appear to have any 0 << x or
> 0 >> y or EXTBF or anything like that. I doubt it comes up too often
> though.
>
>>        // try to concatenate shifts
>> --
>> 2.12.2
>>


More information about the mesa-dev mailing list