Displaying 19 results from an estimated 19 matches for "type_s16".
2016 Sep 27
2
[PATCH] nv50/ir: constant fold OP_SPLIT
...if (i->sType == TYPE_U64 || i->sType == TYPE_S64) {
+ shift = 32;
+ type = (i->sType == TYPE_U64) ? TYPE_U32 : TYPE_S32;
+ }
+ if (i->sType == TYPE_U32 || i->sType == TYPE_S32) {
+ shift = 16;
+ type = (i->sType == TYPE_U32) ? TYPE_U16 : TYPE_S16;
+ }
+ if (i->sType == TYPE_U16 || i->sType == TYPE_S16) {
+ shift = 8;
+ type = (i->sType == TYPE_U16) ? TYPE_U8 : TYPE_S8;
+ }
+ if (type != TYPE_NONE) {
+ bld.mkMov(i->getDef(0), bld.mkImm(imm0.reg.data.u64 >> shift), type);
+...
2015 Jan 09
3
[RESEND/PATCH] nv50/ir: Handle OP_CVT when folding constant expressions
...4, 0,
+ UINT32_MAX));
+ else
+ res.data.u32 = util_iround(imm0.reg.data.f64);
+ break;
+ default:
+ return;
+ }
+ i->setSrc(0, bld.mkImm(res.data.u32));
+ break;
+ case TYPE_S16:
+ switch (i->sType) {
+ case TYPE_F32:
+ if (i->saturate)
+ res.data.s16 = util_iround(CLAMP(imm0.reg.data.f32, INT16_MIN,
+ INT16_MAX));
+ else
+ res.data.s16 = util_iround(imm0....
2014 Jul 05
1
[PATCH v4] nv50/ir: Handle OP_CVT when folding constant expressions
...v, 0,
+ UINT32_MAX);
+ }
+ else res.data.u32 = util_iround(imm0.reg.data.f64);
+ break;
+ default:
+ return;
+ }
+ i->setSrc(0, bld.mkImm(res.data.u32));
+ break;
+ case TYPE_S16:
+ switch (i->sType) {
+ case TYPE_F32:
+ if (i->saturate)
+ res.data.s16 = CLAMP(util_iround(imm0.reg.data.f32), INT16_MIN,
+ INT16_MAX);
+ else res.data.s16 = util_iround(imm0.reg.data.f32);
+...
2015 Jan 10
2
[PATCH v2] nv50/ir: Handle OP_CVT when folding constant expressions
...0,
+ UINT32_MAX));
+ else
+ res.data.u32 = util_iround(imm0.reg.data.f32);
+ break;
+ default:
+ return;
+ }
+ i->setSrc(0, bld.mkImm(res.data.u32));
+ break;
+ case TYPE_S16:
+ switch (i->sType) {
+ case TYPE_F32:
+ if (i->saturate)
+ res.data.s16 = util_iround(CLAMP(imm0.reg.data.f32, INT16_MIN,
+ INT16_MAX));
+ else
+ res.data.s16 = util_iround(imm0....
2016 Sep 30
2
[PATCH] nv50/ir: constant fold OP_SPLIT
...64) {
>> + shift = 32;
>> + type = (i->sType == TYPE_U64) ? TYPE_U32 : TYPE_S32;
>> + }
>> + if (i->sType == TYPE_U32 || i->sType == TYPE_S32) {
>> + shift = 16;
>> + type = (i->sType == TYPE_U32) ? TYPE_U16 : TYPE_S16;
>> + }
>> + if (i->sType == TYPE_U16 || i->sType == TYPE_S16) {
>> + shift = 8;
>> + type = (i->sType == TYPE_U16) ? TYPE_U8 : TYPE_S8;
>> + }
> shift = typeSizeOf(i->dType);
>
>> + if (type != TYPE_NONE) {
&...
2014 Jul 03
0
[PATCH] nv50/ir: Handle OP_CVT when folding constant expressions
...sType) {
+ case TYPE_F32: res.data.u32 = util_iround(imm0.reg.data.f32); break;
+ case TYPE_F64: res.data.u32 = util_iround(imm0.reg.data.f64); break;
+ default:
+ return;
+ }
+ i->setSrc(0, bld.mkImm(res.data.u32));
+ break;
+ case TYPE_S16:
+ switch (i->sType) {
+ case TYPE_F32: res.data.s16 = util_iround(imm0.reg.data.f32); break;
+ case TYPE_F64: res.data.s16 = util_iround(imm0.reg.data.f64); break;
+ default:
+ return;
+ }
+ i->setSrc(0, bld.mkImm(res.data.s16));
+...
2014 Jul 06
0
[PATCH v5] nv50/ir: Handle OP_CVT when folding constant expressions
...4, 0,
+ UINT32_MAX));
+ else
+ res.data.u32 = util_iround(imm0.reg.data.f64);
+ break;
+ default:
+ return;
+ }
+ i->setSrc(0, bld.mkImm(res.data.u32));
+ break;
+ case TYPE_S16:
+ switch (i->sType) {
+ case TYPE_F32:
+ if (i->saturate)
+ res.data.s16 = util_iround(CLAMP(imm0.reg.data.f32, INT16_MIN,
+ INT16_MAX));
+ else
+ res.data.s16 = util_iround(imm0....
2014 Jul 03
1
[PATCH v3 1/2] nv50/ir: Add support for the double Type to BuildUtil
Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann at mni.thm.de>
---
.../drivers/nouveau/codegen/nv50_ir_build_util.cpp | 17 +++++++++++++++++
.../drivers/nouveau/codegen/nv50_ir_build_util.h | 2 ++
2 files changed, 19 insertions(+)
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_build_util.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_build_util.cpp
2016 Sep 28
0
[PATCH] nv50/ir: constant fold OP_SPLIT
...|| i->sType == TYPE_S64) {
> + shift = 32;
> + type = (i->sType == TYPE_U64) ? TYPE_U32 : TYPE_S32;
> + }
> + if (i->sType == TYPE_U32 || i->sType == TYPE_S32) {
> + shift = 16;
> + type = (i->sType == TYPE_U32) ? TYPE_U16 : TYPE_S16;
> + }
> + if (i->sType == TYPE_U16 || i->sType == TYPE_S16) {
> + shift = 8;
> + type = (i->sType == TYPE_U16) ? TYPE_U8 : TYPE_S8;
> + }
shift = typeSizeOf(i->dType);
> + if (type != TYPE_NONE) {
> + bld.mkMov(i->ge...
2016 Sep 30
0
[PATCH] nv50/ir: constant fold OP_SPLIT
...shift = 32;
>>> + type = (i->sType == TYPE_U64) ? TYPE_U32 : TYPE_S32;
>>> + }
>>> + if (i->sType == TYPE_U32 || i->sType == TYPE_S32) {
>>> + shift = 16;
>>> + type = (i->sType == TYPE_U32) ? TYPE_U16 : TYPE_S16;
>>> + }
>>> + if (i->sType == TYPE_U16 || i->sType == TYPE_S16) {
>>> + shift = 8;
>>> + type = (i->sType == TYPE_U16) ? TYPE_U8 : TYPE_S8;
>>> + }
>>
>> shift = typeSizeOf(i->dType);
>>
>&...
2015 Jan 11
0
[PATCH] nv50/ir: Handle OP_CVT when folding constant expressions
...assert(!i->saturate);
+ switch (i->sType) {
+ case TYPE_F32:
+ res.data.u32 = util_iround(imm0.reg.data.f32);
+ break;
+ default:
+ return;
+ }
+ i->setSrc(0, bld.mkImm(res.data.u32));
+ break;
+ case TYPE_S16:
+ switch (i->sType) {
+ case TYPE_F32:
+ if (i->saturate)
+ res.data.s16 = util_iround(CLAMP(imm0.reg.data.f32, INT16_MIN,
+ INT16_MAX));
+ else
+ res.data.s16 = util_iround(imm0....
2015 Jan 11
0
[PATCH v2] nv50/ir: Handle OP_CVT when folding constant expressions
...UINT32_MAX));
> + else
> + res.data.u32 = util_iround(imm0.reg.data.f32);
> + break;
> + default:
> + return;
> + }
> + i->setSrc(0, bld.mkImm(res.data.u32));
> + break;
> + case TYPE_S16:
> + switch (i->sType) {
> + case TYPE_F32:
> + if (i->saturate)
> + res.data.s16 = util_iround(CLAMP(imm0.reg.data.f32, INT16_MIN,
> + INT16_MAX));
> + else
> +...
2015 Jan 10
0
[RESEND/PATCH] nv50/ir: Handle OP_CVT when folding constant expressions
...UINT32_MAX));
> + else
> + res.data.u32 = util_iround(imm0.reg.data.f64);
> + break;
> + default:
> + return;
> + }
> + i->setSrc(0, bld.mkImm(res.data.u32));
> + break;
> + case TYPE_S16:
> + switch (i->sType) {
> + case TYPE_F32:
> + if (i->saturate)
> + res.data.s16 = util_iround(CLAMP(imm0.reg.data.f32, INT16_MIN,
> + INT16_MAX));
> + else
> +...
2015 Jan 11
2
[PATCH v2] nv50/ir: Handle OP_CVT when folding constant expressions
On 11.01.2015 20:57, Ilia Mirkin wrote:
> On Sun, Jan 11, 2015 at 2:56 PM, Tobias Klausmann
> <tobias.johannes.klausmann at mni.thm.de> wrote:
>>
>> On 11.01.2015 20:19, Ilia Mirkin wrote:
>>> On Sun, Jan 11, 2015 at 12:27 PM, Tobias Klausmann
>>> <tobias.johannes.klausmann at mni.thm.de> wrote:
>>>>
>>>> On 11.01.2015 01:58,
2015 Jan 11
2
[PATCH v2] nv50/ir: Handle OP_CVT when folding constant expressions
...else
>> + res.data.u32 = util_iround(imm0.reg.data.f32);
>> + break;
>> + default:
>> + return;
>> + }
>> + i->setSrc(0, bld.mkImm(res.data.u32));
>> + break;
>> + case TYPE_S16:
>> + switch (i->sType) {
>> + case TYPE_F32:
>> + if (i->saturate)
>> + res.data.s16 = util_iround(CLAMP(imm0.reg.data.f32, INT16_MIN,
>> + INT16_MAX));
>> +...
2015 Jan 11
2
[PATCH] nv50/ir: Handle OP_CVT when folding constant expressions
On Sun, Jan 11, 2015 at 5:48 PM, Tobias Klausmann
<tobias.johannes.klausmann at mni.thm.de> wrote:
>
>
> On 11.01.2015 23:12, Ilia Mirkin wrote:
>>
>> On Sun, Jan 11, 2015 at 5:08 PM, Tobias Klausmann
>> <tobias.johannes.klausmann at mni.thm.de> wrote:
>>>
>>>
>>> On 11.01.2015 22:54, Ilia Mirkin wrote:
>>>>
2015 Nov 05
7
[PATCH mesa 0/5] nouveau: codegen: Make use of double immediates
Hi All,
This series implements using double immediates in the nouveau codegen code.
This turns the following (nvc0) code:
1: mov u32 $r2 0x00000000 (8)
2: mov u32 $r3 0x3fe00000 (8)
3: add f64 $r0d $r0d $r2d (8)
Into:
1: add f64 $r0d $r0d 0.500000 (8)
This has been tested with the 2 double shader tests which I just send to
the piglet list. On a gk208 (gk110 / SM35)
2014 May 18
1
[PATCH 1/2] nv50/ir: fix s32 x s32 -> high s32 multiply logic
...// full type
- DataType hTy;
+ DataType fTy; // full type
+ switch (mul->sType) {
+ case TYPE_S32: fTy = TYPE_U32; break;
+ case TYPE_S64: fTy = TYPE_U64; break;
+ default: fTy = mul->sType; break;
+ }
+
+ DataType hTy; // half type
switch (fTy) {
- case TYPE_S32: hTy = TYPE_S16; break;
case TYPE_U32: hTy = TYPE_U16; break;
case TYPE_U64: hTy = TYPE_U32; break;
- case TYPE_S64: hTy = TYPE_S32; break;
default:
return false;
}
@@ -59,15 +66,25 @@ expandIntegerMUL(BuildUtil *bld, Instruction *mul)
bld->setPosition(mul, true);
+ Value *s[2...
2015 Aug 19
5
[PATCH 1/2] nvc0/ir: detect AND/SHR pairs and convert into EXTBF
Some shaders appear to extract bits using shift/and combos. Detect
(some) of those and convert to EXTBF instead.
Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
---
.../drivers/nouveau/codegen/nv50_ir_peephole.cpp | 66 +++++++++++++++-------
1 file changed, 46 insertions(+), 20 deletions(-)
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp