SparcRegisterInfo.td revision c6e743049983dca1c6904610fa3cb78bda39d67c
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===- SparcV8RegisterInfo.td - SparcV8 Register defs ------*- tablegen -*-===//
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
5d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)// This file was developed by the LLVM research group and is distributed under
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the University of Illinois Open Source License. See LICENSE.TXT for details.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 
8ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch//===----------------------------------------------------------------------===//
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)//===----------------------------------------------------------------------===//
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  Declarations that describe the SparcV8 register file 
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SparcReg<string n> : Register<n> {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  field bits<5> Num;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  let Namespace = "V8";
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)include "../SparcRegisterInfo.td"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Register classes.
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)//
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// FIXME: the register order should be defined in terms of the preferred
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// allocation order...
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def IntRegs : RegisterClass<i32, 64, [L0, L1, L2, L3, L4, L5, L6, L7,
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     I0, I1, I2, I3, I4, I5,
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     G1, G2, G3, G4, G5, G6, G7,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     O0, O1, O2, O3, O4, O5, O7,
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     // Non-allocatable regs
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     O6, I6, I7, G0]> {
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  let Methods = [{
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    iterator allocation_order_end(MachineFunction &MF) const {
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return end()-4;  // Don't allocate special registers
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }];
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def FPRegs : RegisterClass<f32, 32, [F0, F1, F2, F3, F4, F5, F6, F7, F8,
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  F9, F10, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22,
414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  F23, F24, F25, F26, F27, F28, F29, F30, F31]>;
424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)def DFPRegs : RegisterClass<f64, 64, [D0, D1, D2, D3, D4, D5, D6, D7,
444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  D8, D9, D10, D11, D12, D13, D14, D15]>;
454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)