[Mesa-dev] PATCH: R600 + SI: Add support for lds atomic add
Tom Stellard
tom at stellard.net
Thu Aug 22 08:36:03 PDT 2013
On Thu, Aug 22, 2013 at 10:03:56AM +0200, Michel Dänzer wrote:
> On Mit, 2013-08-21 at 11:30 -0700, Tom Stellard wrote:
> >
> > The attached patches fix some LDS bugs on SI and add support for atomic
> > add for R600 and SI.
> >
> > Please Review.
>
> About patch 4:
>
> > diff --git a/lib/Target/R600/SIInstrInfo.td b/lib/Target/R600/SIInstrInfo.td
> > index ecc4718..09d5f01 100644
> > --- a/lib/Target/R600/SIInstrInfo.td
> > +++ b/lib/Target/R600/SIInstrInfo.td
> > @@ -362,6 +362,18 @@ class DS_Store_Helper <bits<8> op, string asm, RegisterClass regClass> : DS <
> > let vdst = 0;
> > }
> >
> > +class DS_1A1D_RET <bits<8> op, string asm, RegisterClass rc> : DS <
> > + op,
> > + (outs rc:$vdst),
> > + (ins i1imm:$gds, VReg_32:$addr, VReg_32:$data0, i8imm:$offset0,
> > + i8imm:$offset1),
> > + asm#" $gds, $vdst, $addr, $data0, $offset0, $offset1, [M0]",
> > + []> {
> > + let mayStore = 1;
> > + let mayLoad = 1;
> > + let data1 = 0;
> > +}
> > +
>
> I recently noticed in the ISA documentation that DS instructions using a
> single address use a single 16 bit offset field instead of two 8 bit
> fields. I've been meaning to update the existing code for
> DS_READ/WRITE_B32 accordingly.
>
I noticed that too, I can make that change.
>
> > diff --git a/lib/Target/R600/SIInstructions.td b/lib/Target/R600/SIInstructions.td
> > index 136f69c..31a5ad2 100644
> > --- a/lib/Target/R600/SIInstructions.td
> > +++ b/lib/Target/R600/SIInstructions.td
> > diff --git a/lib/Target/R600/SILowerControlFlow.cpp b/lib/Target/R600/SILowerControlFlow.cpp
> > index 09cf25b..a6c43bb 100644
> > --- a/lib/Target/R600/SILowerControlFlow.cpp
> > +++ b/lib/Target/R600/SILowerControlFlow.cpp
> > @@ -488,6 +488,7 @@ bool SILowerControlFlowPass::runOnMachineFunction(MachineFunction &MF) {
> > NeedWQM = true;
> > // Fall through
> > case AMDGPU::DS_WRITE_B32:
> > + case AMDGPU::DS_ADD_U32_RTN:
> > NeedM0 = true;
> > break;
>
> I guess at some point we might want to use an InstrFlag for checking for
> DS instructions.
>
>
I'll fix this too.
-Tom
More information about the mesa-dev
mailing list