[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