search for: isindirect

Displaying 19 results from an estimated 19 matches for "isindirect".

Did you mean: indirect
2016 Mar 16
0
[PATCH mesa 2/6] nouveau: codegen: Slightly refactor Source::scanInstruction() dst handling
...info->numBarriers = 1; if (insn.dstCount()) { - if (insn.getDst(0).getFile() == TGSI_FILE_OUTPUT) { - Instruction::DstRegister dst = insn.getDst(0); + Instruction::DstRegister dst = insn.getDst(0); + if (dst.getFile() == TGSI_FILE_OUTPUT) { if (dst.isIndirect(0)) for (unsigned i = 0; i < info->numOutputs; ++i) info->out[i].mask = 0xf; @@ -1280,11 +1280,11 @@ bool Source::scanInstruction(const struct tgsi_full_instruction *inst) if (isEdgeFlagPassthrough(insn)) info->io.edgeFlagIn = insn.get...
2016 Mar 16
2
[PATCH mesa 5/6] nouveau: codegen: Add support for OpenCL global memory buffers
...Id(i->src(1), 2); > srcId(i->src(0).getIndirect(0), 10); > - if (i->src(0).getFile() == FILE_MEMORY_BUFFER && > + if ((i->src(0).getFile() == FILE_MEMORY_BUFFER || > + i->src(0).getFile() == FILE_MEMORY_GLOBAL) && > i->src(0).isIndirect(0) && > i->getIndirect(0, 0)->reg.size == 8) > code[1] |= 1 << 23; > @@ -1690,8 +1698,15 @@ CodeEmitterGK110::emitLOAD(const Instruction *i) > int32_t offset = SDATA(i->src(0)).offset; > > switch (i->src(0).getFile()) { > -...
2016 Mar 16
13
[PATCH mesa 1/6] tgsi_build: Fix return of uninitialized memory in tgsi_*_instruction_memory
tgsi_default_instruction_memory / tgsi_build_instruction_memory were returning uninitialized memory for tgsi_instruction_memory.Texture and tgsi_instruction_memory.Format. Note 0 means not set, and thus is a correct default initializer for these. Fixes: 3243b6fc97 ("tgsi: add Texture and Format to tgsi_instruction_memory") Cc: Nicolai Hähnle <nicolai.haehnle at amd.com>
2016 Jan 14
0
[PATCH] nv50/ir: only use FILE_LOCAL_MEMORY for temp arrays that use indirection
...749d 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp @@ -96,6 +96,13 @@ public: return tgsi_util_get_src_register_swizzle(&reg, chan); } + int getArrayId() const + { + if (isIndirect(0)) + return fsr->Indirect.ArrayID; + return 0; + } + nv50_ir::Modifier getMod(int chan) const; SrcRegister getIndirect(int dim) const @@ -155,6 +162,13 @@ public: return SrcRegister(fdr->Indirect); } + int getArrayId() const +...
2016 Mar 16
0
[PATCH mesa 5/6] nouveau: codegen: Add support for OpenCL global memory buffers
...t Instruction *i) srcId(i->src(1), 2); srcId(i->src(0).getIndirect(0), 10); - if (i->src(0).getFile() == FILE_MEMORY_BUFFER && + if ((i->src(0).getFile() == FILE_MEMORY_BUFFER || + i->src(0).getFile() == FILE_MEMORY_GLOBAL) && i->src(0).isIndirect(0) && i->getIndirect(0, 0)->reg.size == 8) code[1] |= 1 << 23; @@ -1690,8 +1698,15 @@ CodeEmitterGK110::emitLOAD(const Instruction *i) int32_t offset = SDATA(i->src(0)).offset; switch (i->src(0).getFile()) { - case FILE_MEMORY_BUFFER: code[1] = 0...
2016 Mar 16
0
[PATCH mesa 5/6] nouveau: codegen: Add support for OpenCL global memory buffers
...>> srcId(i->src(0).getIndirect(0), 10); >> - if (i->src(0).getFile() == FILE_MEMORY_BUFFER && >> + if ((i->src(0).getFile() == FILE_MEMORY_BUFFER || >> + i->src(0).getFile() == FILE_MEMORY_GLOBAL) && >> i->src(0).isIndirect(0) && >> i->getIndirect(0, 0)->reg.size == 8) >> code[1] |= 1 << 23; >> @@ -1690,8 +1698,15 @@ CodeEmitterGK110::emitLOAD(const Instruction *i) >> int32_t offset = SDATA(i->src(0)).offset; >> >> switch (i->src(...
2016 Mar 16
2
[PATCH mesa 6/6] nouveau: codegen: Disable more old resource handling code
...itch (tgsi.getSrc(0).getFile()) { > + case TGSI_FILE_BUFFER: > + case TGSI_FILE_MEMORY: > for (c = 0; c < 4; ++c) { > if (!dst0[c]) > continue; > @@ -2295,9 +2300,12 @@ Converter::handleLOAD(Value *dst0[4]) > if (tgsi.getSrc(0).isIndirect(0)) > ld->setIndirect(0, 1, fetchSrc(tgsi.getSrc(0).getIndirect(0), 0, 0)); > } > - return; > + break; > + default: > + assert(!"Unsupported srcFile for LOAD"); > } > > +/* Keep this around for now as reference when...
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
2016 Mar 16
0
[PATCH mesa 6/6] nouveau: codegen: Disable more old resource handling code
...getFile() == TGSI_FILE_MEMORY) { + switch (tgsi.getSrc(0).getFile()) { + case TGSI_FILE_BUFFER: + case TGSI_FILE_MEMORY: for (c = 0; c < 4; ++c) { if (!dst0[c]) continue; @@ -2295,9 +2300,12 @@ Converter::handleLOAD(Value *dst0[4]) if (tgsi.getSrc(0).isIndirect(0)) ld->setIndirect(0, 1, fetchSrc(tgsi.getSrc(0).getIndirect(0), 0, 0)); } - return; + break; + default: + assert(!"Unsupported srcFile for LOAD"); } +/* Keep this around for now as reference when adding img support getResourceCoords(off,...
2016 Mar 16
2
[PATCH mesa 4/6] nouveau: codegen: s/FILE_MEMORY_GLOBAL/FILE_MEMORY_BUFFER/
...odeEmitterGK110::emitSTORE(const Instruction *i) > > srcId(i->src(1), 2); > srcId(i->src(0).getIndirect(0), 10); > - if (i->src(0).getFile() == FILE_MEMORY_GLOBAL && > + if (i->src(0).getFile() == FILE_MEMORY_BUFFER && > i->src(0).isIndirect(0) && > i->getIndirect(0, 0)->reg.size == 8) > code[1] |= 1 << 23; > @@ -1690,7 +1690,7 @@ CodeEmitterGK110::emitLOAD(const Instruction *i) > int32_t offset = SDATA(i->src(0)).offset; > > switch (i->src(0).getFile()) { > - case...
2016 Mar 16
0
[PATCH mesa 6/6] nouveau: codegen: Disable more old resource handling code
...()) { >> + case TGSI_FILE_BUFFER: >> + case TGSI_FILE_MEMORY: >> for (c = 0; c < 4; ++c) { >> if (!dst0[c]) >> continue; >> @@ -2295,9 +2300,12 @@ Converter::handleLOAD(Value *dst0[4]) >> if (tgsi.getSrc(0).isIndirect(0)) >> ld->setIndirect(0, 1, fetchSrc(tgsi.getSrc(0).getIndirect(0), 0, 0)); >> } >> - return; >> + break; >> + default: >> + assert(!"Unsupported srcFile for LOAD"); >> } >> >> +/* Keep t...
2016 Mar 16
0
[PATCH mesa 4/6] nouveau: codegen: s/FILE_MEMORY_GLOBAL/FILE_MEMORY_BUFFER/
...002; @@ -1678,7 +1678,7 @@ CodeEmitterGK110::emitSTORE(const Instruction *i) srcId(i->src(1), 2); srcId(i->src(0).getIndirect(0), 10); - if (i->src(0).getFile() == FILE_MEMORY_GLOBAL && + if (i->src(0).getFile() == FILE_MEMORY_BUFFER && i->src(0).isIndirect(0) && i->getIndirect(0, 0)->reg.size == 8) code[1] |= 1 << 23; @@ -1690,7 +1690,7 @@ CodeEmitterGK110::emitLOAD(const Instruction *i) int32_t offset = SDATA(i->src(0)).offset; switch (i->src(0).getFile()) { - case FILE_MEMORY_GLOBAL: code[1] = 0x...
2016 Mar 16
0
[PATCH mesa 4/6] nouveau: codegen: s/FILE_MEMORY_GLOBAL/FILE_MEMORY_BUFFER/
...const Instruction *i) >> >> srcId(i->src(1), 2); >> srcId(i->src(0).getIndirect(0), 10); >> - if (i->src(0).getFile() == FILE_MEMORY_GLOBAL && >> + if (i->src(0).getFile() == FILE_MEMORY_BUFFER && >> i->src(0).isIndirect(0) && >> i->getIndirect(0, 0)->reg.size == 8) >> code[1] |= 1 << 23; >> @@ -1690,7 +1690,7 @@ CodeEmitterGK110::emitLOAD(const Instruction *i) >> int32_t offset = SDATA(i->src(0)).offset; >> >> switch (i->src(0...
2016 Mar 17
4
[PATCH mesa v2 1/3] nouveau: codegen: Disable more old resource handling code
Commit c3083c7082 ("nv50/ir: add support for BUFFER accesses") disabled / commented out some of the old resource handling code, but not all of it. Effectively all of it is dead already, if we ever enter the old code paths in handeLOAD / handleSTORE / handleATOM we will get an exception due to trying to access the now always zero-sized resources vector. Disable all the dead code.
2017 Sep 07
2
RFC: Introduce DW_OP_LLVM_memory to describe variables in memory with dbg.value
...don't know if an expression describes an address or a value. We have code like this in buildDbgValueForSpill: // If the DBG_VALUE already was a memory location, add an extra // DW_OP_deref. Otherwise just turning this from a register into a // memory/indirect location is sufficient. if (IsIndirect) Expr = DIExpression::prepend(Expr, DIExpression::WithDeref); We modify DBG_VALUEs for spills in several other places in codegen and they don't all correctly insert DW_OP_deref. The load chain representation should make it easy to just modify the offset on the front or add a new load depen...
2016 Mar 17
4
[PATCH mesa v2 1/2] nouveau: codegen: Use FILE_MEMORY_BUFFER for buffers
Some of the lowering steps we currently do for FILE_MEMORY_GLOBAL only apply to buffers, making it impossible to use FILE_MEMORY_GLOBAL for OpenCL global buffers. This commits changes the buffer code to use FILE_MEMORY_BUFFER at the ir_from_tgsi and lowering steps, freeing use of FILE_MEMORY_GLOBAL for use with OpenCL global buffers. Note that after lowering buffer accesses use the
2017 Sep 07
2
RFC: Introduce DW_OP_LLVM_memory to describe variables in memory with dbg.value
...address or a value. We have code like this in >> buildDbgValueForSpill: >> // If the DBG_VALUE already was a memory location, add an extra >> // DW_OP_deref. Otherwise just turning this from a register into a >> // memory/indirect location is sufficient. >> if (IsIndirect) >> Expr = DIExpression::prepend(Expr, DIExpression::WithDeref); >> > > Sure - this goes back to my adding the "indirect" flag to support C++ > non-trivial pass by value in C++, before we had all the more general > expression support, etc. (hilariously, what wa...
2015 May 17
14
[PATCH 00/12] Tessellation support for nvc0
This is enough to enable tessellation support on nvc0. It seems to work a lot better on my GF108 than GK208. I suspect that there's some sort of scheduling shenanigans that need to be adjusted for kepler+. Or perhaps some shader header things. Even with the GF108, I still get occasional blue triangles in Heaven, but I get a *ton* of them on the GK208 -- seemingly the same issue, but it's
2017 Sep 06
4
RFC: Introduce DW_OP_LLVM_memory to describe variables in memory with dbg.value
On Wed, Sep 6, 2017 at 10:01 AM, David Blaikie <dblaikie at gmail.com> wrote: > On Tue, Sep 5, 2017 at 1:00 PM Reid Kleckner via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> LLVM SSA values obviously do not have an address that we can take and >> they don’t live in registers, so neither the default memory location model >> nor DW_OP_regN make sense