[PATCH] R600/SI: Fix definition for s_cselect_b32

Tom Stellard tom at stellard.net
Thu Nov 13 08:19:18 PST 2014


On Fri, Oct 24, 2014 at 02:11:27AM +0000, Matt Arsenault wrote:
> These were directly using the old base instruction
> class, and specifying the wrong register classes
> for operands. The operands can be the other special
> inputs besides SGPRs. The op name was also being
> directly used for the asm string, so this was printed
> without any operands.
> 

LGTM.

> http://reviews.llvm.org/D5954
> 
> Files:
>   lib/Target/R600/SIInstrInfo.td
>   lib/Target/R600/SIInstructions.td

> Index: lib/Target/R600/SIInstrInfo.td
> ===================================================================
> --- lib/Target/R600/SIInstrInfo.td
> +++ lib/Target/R600/SIInstrInfo.td
> @@ -340,6 +340,11 @@
>    opName#" $dst, $src0, $src1", pattern
>  >;
>  
> +class SOP2_SELECT_32 <bits<7> op, string opName, list<dag> pattern> : SOP2 <
> +  op, (outs SReg_32:$dst), (ins SSrc_32:$src0, SSrc_32:$src1, SCCReg:$scc),
> +  opName#" $dst, $src0, $src1 [$scc]", pattern
> +>;
> +
>  class SOP2_64 <bits<7> op, string opName, list<dag> pattern> : SOP2 <
>    op, (outs SReg_64:$dst), (ins SSrc_64:$src0, SSrc_64:$src1),
>    opName#" $dst, $src0, $src1", pattern
> Index: lib/Target/R600/SIInstructions.td
> ===================================================================
> --- lib/Target/R600/SIInstructions.td
> +++ lib/Target/R600/SIInstructions.td
> @@ -214,9 +214,8 @@
>    [(set i32:$dst, (AMDGPUumax i32:$src0, i32:$src1))]
>  >;
>  
> -def S_CSELECT_B32 : SOP2 <
> -  0x0000000a, (outs SReg_32:$dst),
> -  (ins SReg_32:$src0, SReg_32:$src1, SCCReg:$scc), "S_CSELECT_B32",
> +def S_CSELECT_B32 : SOP2_SELECT_32 <
> +  0x0000000a, "S_CSELECT_B32",
>    []
>  >;
>  

> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list