[Mesa-dev] [PATCH v2] nv50/ir: optimize shl(a, 0) to a
Ilia Mirkin
imirkin at alum.mit.edu
Sun Apr 30 14:09:04 UTC 2017
On Apr 30, 2017 8:14 AM, "Karol Herbst" <karolherbst at gmail.com> wrote:
2017-04-30 2:28 GMT+02:00 Ilia Mirkin <imirkin at alum.mit.edu>:
> Maybe in a separate change. I'd want to double check on all gens. I think
> the thing I suggested is sufficient.
>
well, if I just fixup the op, I kind of have to fix the mod as well.
And if I use getOp, it could also return a OP_CVT, so I have to do the
check.
I don't see how I can only use getOp, but not fixing the mod?
Perhaps this all doesn't work the way I remember. Will try to look during
the week.
> On Apr 29, 2017 8:09 PM, "Karol Herbst" <karolherbst at gmail.com> wrote:
>
> 2017-04-30 0:28 GMT+02:00 Ilia Mirkin <imirkin at alum.mit.edu>:
>> On Sat, Apr 29, 2017 at 6:09 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
>>>
>>> v2: handle potential mods on src0
>>>
>>> Signed-off-by: Karol Herbst <karolherbst at gmail.com>
>>> Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
>>> Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
>>> ---
>>> src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 7 +++++++
>>> 1 file changed, 7 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..82da0d3e48 100644
>>> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
>>> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
>>> @@ -1284,6 +1284,13 @@ ConstantFolding::opnd(Instruction *i,
>>> ImmediateValue &imm0, int s)
>>>
>>> case OP_SHL:
>>> {
>>> + if (s == 1 && imm0.isInteger(0)) {
>>> + i->op = i->src(0).mod.getOp();
>>> + if (i->op != OP_CVT)
>>> + i->src(0).mod = 0;
>>
>> Is this necessary? Presumably if the op != 0, then op == OP_CVT...
>>
>
> yeah, no idea. I just thought I do it right when I actually depend on
> the getOp magic. But we can't emit any mods to begin with, so maybe we
> should just drop the mod handling and be done with it?
>
>>> + i->setSrc(1, NULL);
>>> + break;
>>> + }
>>> if (s != 1 || i->src(0).mod != Modifier(0))
>>> break;
>>> // try to concatenate shifts
>>> --
>>> 2.12.2
>>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170430/f9e6d33c/attachment.html>
More information about the mesa-dev
mailing list