On Mit, 2013-02-13 at 10:16 +0100, Christian König wrote: > Am 12.02.2013 21:49, schrieb Michel Dänzer: > > On Die, 2013-02-12 at 18:13 +0100, Christian König wrote: > >> From: Christian König <christian.koe...@amd.com> > >> > >> Mark all the operands that can also have an immediate. > >> > >> Signed-off-by: Christian König <christian.koe...@amd.com> > >> --- > >> lib/Target/R600/SIInstrFormats.td | 32 +++++----- > >> lib/Target/R600/SIInstructions.td | 128 > >> ++++++++++++++++++------------------- > >> lib/Target/R600/SIRegisterInfo.td | 10 ++- > >> 3 files changed, 87 insertions(+), 83 deletions(-) > >> > >> diff --git a/lib/Target/R600/SIInstrFormats.td > >> b/lib/Target/R600/SIInstrFormats.td > >> index a7a3558..473d3dc 100644 > >> --- a/lib/Target/R600/SIInstrFormats.td > >> +++ b/lib/Target/R600/SIInstrFormats.td > >> @@ -22,25 +22,25 @@ > >> > >> //===----------------------------------------------------------------------===// > >> > >> class VOP3_32 <bits<9> op, string opName, list<dag> pattern> > >> - : VOP3 <op, (outs VReg_32:$dst), (ins AllReg_32:$src0, VReg_32:$src1, > >> VReg_32:$src2, i32imm:$src3, i32imm:$src4, i32imm:$src5, i32imm:$src6), > >> opName, pattern>; > >> + : VOP3 <op, (outs VReg_32:$dst), (ins VSrc_32:$src0, VReg_32:$src1, > >> VReg_32:$src2, i32imm:$src3, i32imm:$src4, i32imm:$src5, i32imm:$src6), > >> opName, pattern>; > > Note that I think all source operands can use inline constants, even > > several different ones. Also, the same SGPR can be used for several > > source operands. The only limitation is that at most one actual SGPR or > > literal constant can be used by the VALU. Not sure how to model the > > latter more accurately, but I think the former might be relatively > > straightforward. > > Yeah agree. My idea is that we handle the constraints (only one literal > or SGPR in a VOP* encoding) after the initial selection, e.g. change > VOP3 to have three VSrc_* operands and in a post selection pass pull in > the inline constants and handle multiple SGPR/literals.
Sounds good. > > BTW, please rebase this series on top of the output modifier fix I > > pushed to the LLVM trunk, it added a couple more uses of SREG_LIT_0, > > which I'm not sure how to properly merge with your changes. > > Which repository is that? I'm currently still working on Toms > (git://people.freedesktop.org/~tstellar/llvm) master branch. The main LLVM repository, http://llvm.org/git/llvm.git / https://llvm.org/svn/llvm-project/llvm/trunk . See Tom's post about stabilizing his tree from January 31st. -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Debian, X and DRI developer _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev