[Mesa-dev] [PATCH 1/4] nv50: add target->hasDualIssueing()

Patrick Baggett baggett.patrick at gmail.com
Sat Aug 13 17:49:11 UTC 2016


On Sat, Aug 13, 2016 at 10:43 AM, Tobias Klausmann
<tobias.johannes.klausmann at mni.thm.de> wrote:
>
>
>
> On 13.08.2016 12:02, Karol Herbst wrote:
>>
>> Signed-off-by: Karol Herbst <karolherbst at gmail.com>
>> ---
>>   src/gallium/drivers/nouveau/codegen/nv50_ir_target.h        | 1 +
>>   src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp | 7 ++++++-
>>   src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.h   | 1 +
>>   3 files changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_target.h b/src/gallium/drivers/nouveau/codegen/nv50_ir_target.h
>> index 4a701f7..485ca16 100644
>> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_target.h
>> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_target.h
>> @@ -222,6 +222,7 @@ public:
>>                                const Value *) const = 0;
>>        // whether @insn can be issued together with @next (order matters)
>> +   virtual bool hasDualIssueing() const { return false; }
>>      virtual bool canDualIssue(const Instruction *insn,
>>                                const Instruction *next) const { return false; }
>>      virtual int getLatency(const Instruction *) const { return 1; }
>> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp
>> index 04ac288..faf2121 100644
>> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp
>> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp
>> @@ -605,12 +605,17 @@ int TargetNVC0::getThroughput(const Instruction *i) const
>>      }
>>   }
>>   +bool TargetNVC0::hasDualIssueing() const

The correct spelling is "issuing". English can be so silly at times...

>> +{
>> +   return getChipset() >= 0xe4;
>> +}
>> +
>>   bool TargetNVC0::canDualIssue(const Instruction *a, const Instruction *b) const
>>   {
>>      const OpClass clA = operationClass[a->op];
>>      const OpClass clB = operationClass[b->op];
>>   -   if (getChipset() >= 0xe4) {
>> +   if (hasDualIssueing()) {
>>         // not texturing
>>         // not if the 2nd instruction isn't necessarily executed
>>         if (clA == OPCLASS_TEXTURE || clA == OPCLASS_FLOW)
>> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.h b/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.h
>> index 7d11cd9..3d55da7 100644
>> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.h
>> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.h
>> @@ -57,6 +57,7 @@ public:
>>      virtual bool isPostMultiplySupported(operation, float, int& e) const;
>>      virtual bool mayPredicate(const Instruction *, const Value *) const;
>>   +   virtual bool hasDualIssueing() const;
>>      virtual bool canDualIssue(const Instruction *, const Instruction *) const;
>>      virtual int getLatency(const Instruction *) const;
>>      virtual int getThroughput(const Instruction *) const;
>
>
> Reviewed-by: Tobias Klausmann <tobias.johannes.klausmann at mni.thm.de>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list