All of lore.kernel.org
 help / color / mirror / Atom feed
* Add constant folding for new opcodes
@ 2014-05-29 19:43 Tobias Klausmann
  2014-05-29 19:43 ` [PATCH 1/4] nvc0/ir: clear subop when folding constant expressions Tobias Klausmann
  0 siblings, 1 reply; 10+ messages in thread
From: Tobias Klausmann @ 2014-05-29 19:43 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	mesa-dev-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	imirkin-FrUbXkNCsVf2fBVCVOL8/A

Hi,
please review the following 4 patches:

1b1cfc6 nvc0/ir: Handle OP_BFIND when folding constant expressions
d2d2727 nvc0/ir: Handle OP_POPCNT when folding constant expressions
86a1ee6 nvc0/ir: Handle reverse subop for OP_EXTBF when folding constant 
expressions
84563bf nvc0/ir: clear subop when folding constant expressions

src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 39 
+++++++++++++++++++++++++++++++++++++--
1 file changed, 37 insertions(+), 2 deletions(-)

Thanks,
Tobias Klausmann

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/4] nvc0/ir: clear subop when folding constant expressions
  2014-05-29 19:43 Add constant folding for new opcodes Tobias Klausmann
@ 2014-05-29 19:43 ` Tobias Klausmann
  2014-05-29 19:43   ` [PATCH 2/4] nvc0/ir: Handle reverse subop for OP_EXTBF " Tobias Klausmann
                     ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Tobias Klausmann @ 2014-05-29 19:43 UTC (permalink / raw)
  To: nouveau, mesa-dev, imirkin

Some operations (e.g. OP_MUL/OP_MAD/OP_EXTBF might have a subop set.
After folding, make sure that it is cleared

Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de>
---
 src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
index 1a2c2e6..58092f4 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
@@ -563,6 +563,7 @@ ConstantFolding::expr(Instruction *i,
    } else {
       i->op = i->saturate ? OP_SAT : OP_MOV; /* SAT handled by unary() */
    }
+   i->subOp = 0;
 }
 
 void
-- 
1.8.4.5

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/4] nvc0/ir: Handle reverse subop for OP_EXTBF when folding constant expressions
  2014-05-29 19:43 ` [PATCH 1/4] nvc0/ir: clear subop when folding constant expressions Tobias Klausmann
@ 2014-05-29 19:43   ` Tobias Klausmann
  2014-05-29 19:47     ` Ilia Mirkin
       [not found]   ` <1401392636-17704-1-git-send-email-tobias.johannes.klausmann-AqjdNwhu20eELgA04lAiVw@public.gmane.org>
  2014-05-29 19:43   ` [PATCH 4/4] nvc0/ir: Handle OP_BFIND " Tobias Klausmann
  2 siblings, 1 reply; 10+ messages in thread
From: Tobias Klausmann @ 2014-05-29 19:43 UTC (permalink / raw)
  To: nouveau, mesa-dev, imirkin

Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de>
---
 src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
index 58092f4..93f7c2a 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
@@ -529,8 +529,18 @@ ConstantFolding::expr(Instruction *i,
          lshift = 32 - width - offset;
       }
       switch (i->dType) {
-      case TYPE_S32: res.data.s32 = (a->data.s32 << lshift) >> rshift; break;
-      case TYPE_U32: res.data.u32 = (a->data.u32 << lshift) >> rshift; break;
+      case TYPE_S32: {
+         res.data.s32 = (res.data.s32 << lshift) >> rshift;
+         if (i->subOp == NV50_IR_SUBOP_EXTBF_REV)
+            res.data.s32 = util_bitreverse(res.data.s32);
+         break;
+      }
+      case TYPE_U32: {
+         res.data.u32 = (res.data.u32 << lshift) >> rshift;
+         if (i->subOp == NV50_IR_SUBOP_EXTBF_REV)
+            res.data.u32 = util_bitreverse(res.data.u32);
+         break;
+      }
       default:
          return;
       }
-- 
1.8.4.5

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/4] nvc0/ir: Handle OP_POPCNT when folding constant expressions
       [not found]   ` <1401392636-17704-1-git-send-email-tobias.johannes.klausmann-AqjdNwhu20eELgA04lAiVw@public.gmane.org>
@ 2014-05-29 19:43     ` Tobias Klausmann
  2014-05-29 19:53       ` Ilia Mirkin
  0 siblings, 1 reply; 10+ messages in thread
From: Tobias Klausmann @ 2014-05-29 19:43 UTC (permalink / raw)
  To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	mesa-dev-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	imirkin-FrUbXkNCsVf2fBVCVOL8/A

Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann-AqjdNwhu20eELgA04lAiVw@public.gmane.org>
---
 src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
index 93f7c2a..68b9a6d 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
@@ -546,6 +546,16 @@ ConstantFolding::expr(Instruction *i,
       }
       break;
    }
+   case OP_POPCNT: {
+      switch (i->dType) {
+      case TYPE_S32:
+      case TYPE_U32:
+         res.data.u32 = util_bitcount(a->data.u32 & b->data.u32); break;
+      default:
+        return;
+      }
+      break;
+   }
    default:
       return;
    }
-- 
1.8.4.5

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 4/4] nvc0/ir: Handle OP_BFIND when folding constant expressions
  2014-05-29 19:43 ` [PATCH 1/4] nvc0/ir: clear subop when folding constant expressions Tobias Klausmann
  2014-05-29 19:43   ` [PATCH 2/4] nvc0/ir: Handle reverse subop for OP_EXTBF " Tobias Klausmann
       [not found]   ` <1401392636-17704-1-git-send-email-tobias.johannes.klausmann-AqjdNwhu20eELgA04lAiVw@public.gmane.org>
@ 2014-05-29 19:43   ` Tobias Klausmann
  2014-05-29 19:58     ` Ilia Mirkin
  2 siblings, 1 reply; 10+ messages in thread
From: Tobias Klausmann @ 2014-05-29 19:43 UTC (permalink / raw)
  To: nouveau, mesa-dev, imirkin

Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de>
---
 src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
index 68b9a6d..a56756c 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
@@ -556,6 +556,20 @@ ConstantFolding::expr(Instruction *i,
       }
       break;
    }
+   case OP_BFIND: {
+      int shift = 0;
+      if (i->subOp == NV50_IR_SUBOP_BFIND_SAMT)
+         shift = 32 - (b->data.u32 & 0xff);
+      switch (i->dType) {
+      case TYPE_S32:
+         res.data.s32 = util_last_bit_signed(a->data.s32 >> shift)- 1; break;
+      case TYPE_U32:
+         res.data.u32 = util_last_bit(a->data.u32 >> shift) -1; break;
+      default:
+         return;
+      }
+      break;
+   }
    default:
       return;
    }
-- 
1.8.4.5

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/4] nvc0/ir: Handle reverse subop for OP_EXTBF when folding constant expressions
  2014-05-29 19:43   ` [PATCH 2/4] nvc0/ir: Handle reverse subop for OP_EXTBF " Tobias Klausmann
@ 2014-05-29 19:47     ` Ilia Mirkin
       [not found]       ` <CAKb7UvgLpfeM6HL7skM-OXCYjNz8=uD=1fhQb5xLndszw3u0zQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 10+ messages in thread
From: Ilia Mirkin @ 2014-05-29 19:47 UTC (permalink / raw)
  To: Tobias Klausmann
  Cc: nouveau@lists.freedesktop.org, mesa-dev@lists.freedesktop.org

Can you verify that you tested how the HW handles this, as well as
exactly how you did it (i.e. how did you modify the code + piglit
test, what the results were, etc)

On Thu, May 29, 2014 at 3:43 PM, Tobias Klausmann
<tobias.johannes.klausmann@mni.thm.de> wrote:
> Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de>
> ---
>  src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 14 ++++++++++++--
>  1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
> index 58092f4..93f7c2a 100644
> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
> @@ -529,8 +529,18 @@ ConstantFolding::expr(Instruction *i,
>           lshift = 32 - width - offset;
>        }
>        switch (i->dType) {
> -      case TYPE_S32: res.data.s32 = (a->data.s32 << lshift) >> rshift; break;
> -      case TYPE_U32: res.data.u32 = (a->data.u32 << lshift) >> rshift; break;
> +      case TYPE_S32: {
> +         res.data.s32 = (res.data.s32 << lshift) >> rshift;
> +         if (i->subOp == NV50_IR_SUBOP_EXTBF_REV)
> +            res.data.s32 = util_bitreverse(res.data.s32);
> +         break;
> +      }
> +      case TYPE_U32: {
> +         res.data.u32 = (res.data.u32 << lshift) >> rshift;
> +         if (i->subOp == NV50_IR_SUBOP_EXTBF_REV)
> +            res.data.u32 = util_bitreverse(res.data.u32);
> +         break;
> +      }
>        default:
>           return;
>        }
> --
> 1.8.4.5
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 3/4] nvc0/ir: Handle OP_POPCNT when folding constant expressions
  2014-05-29 19:43     ` [PATCH 3/4] nvc0/ir: Handle OP_POPCNT " Tobias Klausmann
@ 2014-05-29 19:53       ` Ilia Mirkin
  0 siblings, 0 replies; 10+ messages in thread
From: Ilia Mirkin @ 2014-05-29 19:53 UTC (permalink / raw)
  To: Tobias Klausmann
  Cc: nouveau@lists.freedesktop.org, mesa-dev@lists.freedesktop.org

On Thu, May 29, 2014 at 3:43 PM, Tobias Klausmann
<tobias.johannes.klausmann@mni.thm.de> wrote:
> Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de>
> ---
>  src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
> index 93f7c2a..68b9a6d 100644
> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
> @@ -546,6 +546,16 @@ ConstantFolding::expr(Instruction *i,
>        }
>        break;
>     }
> +   case OP_POPCNT: {
> +      switch (i->dType) {
> +      case TYPE_S32:
> +      case TYPE_U32:
> +         res.data.u32 = util_bitcount(a->data.u32 & b->data.u32); break;
> +      default:
> +        return;
> +      }
> +      break;
> +   }

Why does the data type matter? I think you can handle this like AND is
handled -- just always do it.

Also, please add support for a single-argument version of POPCNT. This
will happen as a result of lowering for sm50 (maxwell), for which it's
a 1-arg instruction. Basically you need to add a case to opnd() which
checks that there's only one argument and does it accordingly. [The
existing function assumes a float op, and it'd be a pain to modify
it.]

>     default:
>        return;
>     }
> --
> 1.8.4.5
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/4] nvc0/ir: Handle reverse subop for OP_EXTBF when folding constant expressions
       [not found]       ` <CAKb7UvgLpfeM6HL7skM-OXCYjNz8=uD=1fhQb5xLndszw3u0zQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2014-05-29 19:53         ` Tobias Klausmann
       [not found]           ` <53879054.9090405-AqjdNwhu20eELgA04lAiVw@public.gmane.org>
  0 siblings, 1 reply; 10+ messages in thread
From: Tobias Klausmann @ 2014-05-29 19:53 UTC (permalink / raw)
  To: Ilia Mirkin
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	mesa-dev-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org

Tested with:
MESA_EXTENSION_OVERRIDE=GL_ARB_gpu_shader5 ./shader_runner 
../tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-bitfieldReverse.shader_test 
-> green output, so this should be ok

the test was not change though...


On 29.05.2014 21:47, Ilia Mirkin wrote:
> Can you verify that you tested how the HW handles this, as well as
> exactly how you did it (i.e. how did you modify the code + piglit
> test, what the results were, etc)
>
> On Thu, May 29, 2014 at 3:43 PM, Tobias Klausmann
> <tobias.johannes.klausmann-AqjdNwhu20eELgA04lAiVw@public.gmane.org> wrote:
>> Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann-AqjdNwhu20eELgA04lAiVw@public.gmane.org>
>> ---
>>   src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 14 ++++++++++++--
>>   1 file changed, 12 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
>> index 58092f4..93f7c2a 100644
>> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
>> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
>> @@ -529,8 +529,18 @@ ConstantFolding::expr(Instruction *i,
>>            lshift = 32 - width - offset;
>>         }
>>         switch (i->dType) {
>> -      case TYPE_S32: res.data.s32 = (a->data.s32 << lshift) >> rshift; break;
>> -      case TYPE_U32: res.data.u32 = (a->data.u32 << lshift) >> rshift; break;
>> +      case TYPE_S32: {
>> +         res.data.s32 = (res.data.s32 << lshift) >> rshift;
>> +         if (i->subOp == NV50_IR_SUBOP_EXTBF_REV)
>> +            res.data.s32 = util_bitreverse(res.data.s32);
>> +         break;
>> +      }
>> +      case TYPE_U32: {
>> +         res.data.u32 = (res.data.u32 << lshift) >> rshift;
>> +         if (i->subOp == NV50_IR_SUBOP_EXTBF_REV)
>> +            res.data.u32 = util_bitreverse(res.data.u32);
>> +         break;
>> +      }
>>         default:
>>            return;
>>         }
>> --
>> 1.8.4.5
>>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/4] nvc0/ir: Handle reverse subop for OP_EXTBF when folding constant expressions
       [not found]           ` <53879054.9090405-AqjdNwhu20eELgA04lAiVw@public.gmane.org>
@ 2014-05-29 19:56             ` Ilia Mirkin
  0 siblings, 0 replies; 10+ messages in thread
From: Ilia Mirkin @ 2014-05-29 19:56 UTC (permalink / raw)
  To: Tobias Klausmann
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	mesa-dev-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org

I think you misunderstood my suggestion. This code won't actually get
executed when running that test. What I was suggesting was to change
the shift/width argument passed to extbf when converting BREV, which
should in turn cause the test to start failing. The way in which you
need to modify the expected value the test generates will dictate
whether the bit reverse happens before or after the bitfield
extraction.

On Thu, May 29, 2014 at 3:53 PM, Tobias Klausmann
<tobias.johannes.klausmann-AqjdNwhu20eELgA04lAiVw@public.gmane.org> wrote:
> Tested with:
> MESA_EXTENSION_OVERRIDE=GL_ARB_gpu_shader5 ./shader_runner
> ../tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-bitfieldReverse.shader_test
> -> green output, so this should be ok
>
> the test was not change though...
>
>
>
> On 29.05.2014 21:47, Ilia Mirkin wrote:
>>
>> Can you verify that you tested how the HW handles this, as well as
>> exactly how you did it (i.e. how did you modify the code + piglit
>> test, what the results were, etc)
>>
>> On Thu, May 29, 2014 at 3:43 PM, Tobias Klausmann
>> <tobias.johannes.klausmann-AqjdNwhu20eELgA04lAiVw@public.gmane.org> wrote:
>>>
>>> Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann-AqjdNwhu20eELgA04lAiVw@public.gmane.org>
>>> ---
>>>   src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 14
>>> ++++++++++++--
>>>   1 file changed, 12 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
>>> b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
>>> index 58092f4..93f7c2a 100644
>>> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
>>> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
>>> @@ -529,8 +529,18 @@ ConstantFolding::expr(Instruction *i,
>>>            lshift = 32 - width - offset;
>>>         }
>>>         switch (i->dType) {
>>> -      case TYPE_S32: res.data.s32 = (a->data.s32 << lshift) >> rshift;
>>> break;
>>> -      case TYPE_U32: res.data.u32 = (a->data.u32 << lshift) >> rshift;
>>> break;
>>> +      case TYPE_S32: {
>>> +         res.data.s32 = (res.data.s32 << lshift) >> rshift;
>>> +         if (i->subOp == NV50_IR_SUBOP_EXTBF_REV)
>>> +            res.data.s32 = util_bitreverse(res.data.s32);
>>> +         break;
>>> +      }
>>> +      case TYPE_U32: {
>>> +         res.data.u32 = (res.data.u32 << lshift) >> rshift;
>>> +         if (i->subOp == NV50_IR_SUBOP_EXTBF_REV)
>>> +            res.data.u32 = util_bitreverse(res.data.u32);
>>> +         break;
>>> +      }
>>>         default:
>>>            return;
>>>         }
>>> --
>>> 1.8.4.5
>>>
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 4/4] nvc0/ir: Handle OP_BFIND when folding constant expressions
  2014-05-29 19:43   ` [PATCH 4/4] nvc0/ir: Handle OP_BFIND " Tobias Klausmann
@ 2014-05-29 19:58     ` Ilia Mirkin
  0 siblings, 0 replies; 10+ messages in thread
From: Ilia Mirkin @ 2014-05-29 19:58 UTC (permalink / raw)
  To: Tobias Klausmann
  Cc: nouveau@lists.freedesktop.org, mesa-dev@lists.freedesktop.org

How did you test this? I'm like 99% sure it's wrong. (But I'm avoiding
saying how it's wrong so that you don't just fix it to match what I
say, but instead work it out yourself by doing the tests that you
should have been doing in the first place. Or prove me wrong.)

On Thu, May 29, 2014 at 3:43 PM, Tobias Klausmann
<tobias.johannes.klausmann@mni.thm.de> wrote:
> Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de>
> ---
>  src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
>
> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
> index 68b9a6d..a56756c 100644
> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
> @@ -556,6 +556,20 @@ ConstantFolding::expr(Instruction *i,
>        }
>        break;
>     }
> +   case OP_BFIND: {
> +      int shift = 0;
> +      if (i->subOp == NV50_IR_SUBOP_BFIND_SAMT)
> +         shift = 32 - (b->data.u32 & 0xff);
> +      switch (i->dType) {
> +      case TYPE_S32:
> +         res.data.s32 = util_last_bit_signed(a->data.s32 >> shift)- 1; break;
> +      case TYPE_U32:
> +         res.data.u32 = util_last_bit(a->data.u32 >> shift) -1; break;
> +      default:
> +         return;
> +      }
> +      break;
> +   }
>     default:
>        return;
>     }
> --
> 1.8.4.5
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2014-05-29 19:58 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-29 19:43 Add constant folding for new opcodes Tobias Klausmann
2014-05-29 19:43 ` [PATCH 1/4] nvc0/ir: clear subop when folding constant expressions Tobias Klausmann
2014-05-29 19:43   ` [PATCH 2/4] nvc0/ir: Handle reverse subop for OP_EXTBF " Tobias Klausmann
2014-05-29 19:47     ` Ilia Mirkin
     [not found]       ` <CAKb7UvgLpfeM6HL7skM-OXCYjNz8=uD=1fhQb5xLndszw3u0zQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-05-29 19:53         ` Tobias Klausmann
     [not found]           ` <53879054.9090405-AqjdNwhu20eELgA04lAiVw@public.gmane.org>
2014-05-29 19:56             ` Ilia Mirkin
     [not found]   ` <1401392636-17704-1-git-send-email-tobias.johannes.klausmann-AqjdNwhu20eELgA04lAiVw@public.gmane.org>
2014-05-29 19:43     ` [PATCH 3/4] nvc0/ir: Handle OP_POPCNT " Tobias Klausmann
2014-05-29 19:53       ` Ilia Mirkin
2014-05-29 19:43   ` [PATCH 4/4] nvc0/ir: Handle OP_BFIND " Tobias Klausmann
2014-05-29 19:58     ` Ilia Mirkin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.