[llvm] r177829 - Use direct types in Sparc def : Pat patterns.

Chris Lattner clattner at apple.com
Sat Mar 23 18:36:30 PDT 2013


Does this patch make sense?  SLLri does require its input to be a
GPR, not just anything that is i32.

-Chris

On Mar 23, 2013, at 1:35 PM, Jakob Stoklund Olesen <stoklund at 2pi.dk> wrote:

> Author: stoklund
> Date: Sat Mar 23 15:35:05 2013
> New Revision: 177829
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=177829&view=rev
> Log:
> Use direct types in Sparc def : Pat patterns.
> 
> The SelectionDAG graph has MVT type labels, not register classes, so
> this makes it clearer what is happening.
> 
> This notation is also robust against adding more types to the IntRegs
> register class.
> 
> Modified:
>    llvm/trunk/lib/Target/Sparc/SparcInstrInfo.td
> 
> Modified: llvm/trunk/lib/Target/Sparc/SparcInstrInfo.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/SparcInstrInfo.td?rev=177829&r1=177828&r2=177829&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Sparc/SparcInstrInfo.td (original)
> +++ llvm/trunk/lib/Target/Sparc/SparcInstrInfo.td Sat Mar 23 15:35:05 2013
> @@ -774,8 +774,8 @@ let Predicates = [HasV9] in {
> def POPCrr : F3_1<2, 0b101110, 
>                   (outs IntRegs:$dst), (ins IntRegs:$src),
>                   "popc $src, $dst", []>, Requires<[HasV9]>;
> -def : Pat<(ctpop IntRegs:$src),
> -          (POPCrr (SLLri IntRegs:$src, 0))>;
> +def : Pat<(ctpop i32:$src),
> +          (POPCrr (SLLri i32:$src, 0))>;
> 
> //===----------------------------------------------------------------------===//
> // Non-Instruction Patterns
> @@ -789,10 +789,10 @@ def : Pat<(i32 imm:$val),
>           (ORri (SETHIi (HI22 imm:$val)), (LO10 imm:$val))>;
> 
> // subc
> -def : Pat<(subc IntRegs:$b, IntRegs:$c),
> -          (SUBCCrr IntRegs:$b, IntRegs:$c)>;
> -def : Pat<(subc IntRegs:$b, simm13:$val),
> -          (SUBCCri IntRegs:$b, imm:$val)>;
> +def : Pat<(subc i32:$b, i32:$c),
> +          (SUBCCrr i32:$b, i32:$c)>;
> +def : Pat<(subc i32:$b, simm13:$val),
> +          (SUBCCri i32:$b, imm:$val)>;
> 
> // Global addresses, constant pool entries
> def : Pat<(SPhi tglobaladdr:$in), (SETHIi tglobaladdr:$in)>;
> @@ -801,10 +801,10 @@ def : Pat<(SPhi tconstpool:$in), (SETHIi
> def : Pat<(SPlo tconstpool:$in), (ORri G0, tconstpool:$in)>;
> 
> // Add reg, lo.  This is used when taking the addr of a global/constpool entry.
> -def : Pat<(add IntRegs:$r, (SPlo tglobaladdr:$in)),
> -          (ADDri IntRegs:$r, tglobaladdr:$in)>;
> -def : Pat<(add IntRegs:$r, (SPlo tconstpool:$in)),
> -          (ADDri IntRegs:$r, tconstpool:$in)>;
> +def : Pat<(add i32:$r, (SPlo tglobaladdr:$in)),
> +          (ADDri i32:$r, tglobaladdr:$in)>;
> +def : Pat<(add i32:$r, (SPlo tconstpool:$in)),
> +          (ADDri i32:$r, tconstpool:$in)>;
> 
> // Calls: 
> def : Pat<(call tglobaladdr:$dst),
> 
> 
> _______________________________________________
> 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