[Mesa-dev] PATCH: R600 + SI: Add support for lds atomic add

Michel Dänzer michel at daenzer.net
Thu Aug 22 01:03:56 PDT 2013


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.


> 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.


The patches look good to me regardless though.


-- 
Earthling Michel Dänzer           |                   http://www.amd.com
Libre software enthusiast         |          Debian, X and DRI developer




More information about the llvm-commits mailing list