[PATCH] R600/SI: Set isAllocatable = 0 on special register classes.
Tom Stellard
tom at stellard.net
Thu Oct 9 06:34:31 PDT 2014
On Thu, Oct 09, 2014 at 12:02:37AM +0000, Matt Arsenault wrote:
> I'm not sure if this fixes any real problems.
> copyPhysReg already has a comment that SCC should never be copied,
> so set CopyCost = -1.
>
I don't think setting isAllocatable = 0; will work for any of these classes,
because there are instructions defined to use virtual registers from these
classes which need to have them be allocated.
-Tom
> These all seem obviously not allocatable, but I'm not sure about VCC
> since most instructions that use it can also use an arbitrary SGPR
> pair instead.
>
> http://reviews.llvm.org/D5686
>
> Files:
> lib/Target/R600/SIRegisterInfo.td
> Index: lib/Target/R600/SIRegisterInfo.td
> ===================================================================
> --- lib/Target/R600/SIRegisterInfo.td
> +++ lib/Target/R600/SIRegisterInfo.td
> @@ -170,11 +170,23 @@
> //===----------------------------------------------------------------------===//
>
> // Special register classes for predicates and the M0 register
> -def SCCReg : RegisterClass<"AMDGPU", [i32, i1], 32, (add SCC)>;
> +def SCCReg : RegisterClass<"AMDGPU", [i32, i1], 32, (add SCC)> {
> + let CopyCost = -1;
> + let isAllocatable = 0;
> +}
> +
> +// XXX - Should this be isAllocatable = 0?
> def VCCReg : RegisterClass<"AMDGPU", [i64, i1], 64, (add VCC)>;
> -def EXECReg : RegisterClass<"AMDGPU", [i64, i1], 64, (add EXEC)>;
> +
> +def EXECReg : RegisterClass<"AMDGPU", [i64, i1], 64, (add EXEC)> {
> + let isAllocatable = 0;
> +}
> +
> +// XXX - Seems like this should be isAllocatable = 0, but that seems
> +// to break tests.
> def M0Reg : RegisterClass<"AMDGPU", [i32], 32, (add M0)>;
>
> +
> // Register class for all scalar registers (SGPRs + Special Registers)
> def SReg_32 : RegisterClass<"AMDGPU", [f32, i32], 32,
> (add SGPR_32, M0Reg, VCC_LO, VCC_HI, EXEC_LO, EXEC_HI, FLAT_SCR_LO, FLAT_SCR_HI)
> _______________________________________________
> 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