search for: op_shl

Displaying 11 results from an estimated 11 matches for "op_shl".

2017 Apr 29
5
[PATCH v2] nv50/ir: optimize shl(a, 0) to a
...eau/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; + i->setSrc(1, NULL); + break; + } if (s != 1 || i->src(0).mod != Modifier(0)) bre...
2017 Apr 29
3
[PATCH] nv50/ir: optimmize shl(a, 0) to a
...eau/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; // try to concatenate shifts -- 2.12.2
2015 May 09
2
[PATCH 3/4] nvc0/ir: optimize set & 1.0 to produce boolean-float sets
...t;setCond = reverseCondCode(cmp->setCond); > + } > + i->op = OP_MOV; > + i->setSrc(s, NULL); > + if (t) { > + i->setSrc(0, i->getSrc(t)); > + i->setSrc(t, NULL); > + } > + } > + break; > + > case OP_SHL: > { > if (s != 1 || i->src(0).mod != Modifier(0)) > diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nv50.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nv50.cpp > index 178a167..70180eb 100644 > --- a/src/gallium/drivers/nouveau/codegen/nv50...
2014 Jan 13
20
[PATCH 00/19] nv50: add sampler2DMS/GP support to get OpenGL 3.2
OK, so there's a bunch of stuff in here. The geometry stuff is based on the work started by Bryan Cain and Christoph Bumiller. Patches 01-12: Add support for geometry shaders and fix related issues Patches 13-14: Make it possible for fb clears to operate on texture attachments with an explicit layer set (as is allowed in gl 3.2). Patches 15-17: Make ARB_texture_multisample work
2017 Apr 29
0
[PATCH] nv50/ir: optimmize shl(a, 0) to a
....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...
2017 Apr 29
0
[PATCH v2] nv50/ir: optimize shl(a, 0) to a
....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... > + i->setSrc(1, N...
2017 Apr 30
0
[PATCH v2] nv50/ir: optimize shl(a, 0) to a
...ef0391..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... >...
2017 Apr 30
0
[PATCH v2] nv50/ir: optimize shl(a, 0) to a
...;> --- 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 !=...
2014 Aug 08
2
[PATCH 1/3] nvc0/ir: add base tex offset for fermi indirect tex case
Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu> --- .../drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp index f010767..4a9e48f 100644 ---
2016 Jan 14
0
[PATCH] nv50/ir: rebase indirect temp arrays to 0, so that we use less lmem space
...l, Value *ptr); + void adjustTempIndex(int arrayId, int &idx, int &idx2d) const; Value *applySrcMod(Value *, int s, int c); Symbol *makeSym(uint file, int fileIndex, int idx, int c, uint32_t addr); @@ -1679,11 +1698,23 @@ Converter::shiftAddress(Value *index) return mkOp2v(OP_SHL, TYPE_U32, getSSA(4, FILE_ADDRESS), index, mkImm(4)); } +void +Converter::adjustTempIndex(int arrayId, int &idx, int &idx2d) const +{ + std::map<int, tgsi::Source::TempBase>::const_iterator it = + code->indirectTempBases.find(arrayId); + if (it == code->indirectTempB...
2015 May 09
5
[PATCH 1/4] nvc0/ir: avoid jumping to a sched instruction
Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu> --- Pretty sure there's nothing wrong with it, but it looks odd in the code. src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp | 2 ++ src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gm107.cpp | 7 +++++-- src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp | 2 ++ 3 files changed, 9 insertions(+), 2 deletions(-)