Home | History | Annotate | Download | only in mips

Lines Matching refs:REGISTER

54 // the register initialization to depend on the particular initialization
57 // "initialization". Also, the Register objects cannot be const as this
71 // Implementation of Register and FPURegister.
73 // Core register.
74 struct Register {
78 static const int kCpRegister = 23; // cp (s7) is the 23rd register.
92 static int ToAllocationIndex(Register reg) {
100 static Register FromAllocationIndex(int index) {
103 from_code(kCpRegister) : // Last index is always the 'cp' register.
128 static Register from_code(int code) {
129 Register r = { code };
134 bool is(Register reg) const { return code_ == reg.code_; }
148 #define REGISTER(N, C) \
150 const Register N = { C }
152 REGISTER(no_reg, -1);
154 REGISTER(zero_reg, 0);
156 REGISTER(at, 1);
158 REGISTER(v0, 2);
159 REGISTER(v1, 3);
161 REGISTER(a0, 4);
162 REGISTER(a1, 5);
163 REGISTER(a2, 6);
164 REGISTER(a3, 7);
167 REGISTER(t0, 8);
168 REGISTER(t1, 9);
169 REGISTER(t2, 10);
170 REGISTER(t3, 11);
171 REGISTER(t4, 12);
172 REGISTER(t5, 13);
173 REGISTER(t6, 14);
174 REGISTER(t7, 15);
175 // s0 - s7: Subroutine register variables. Subroutines that write to these
178 REGISTER(s0, 16);
179 REGISTER(s1, 17);
180 REGISTER(s2, 18);
181 REGISTER(s3, 19);
182 REGISTER(s4, 20);
183 REGISTER(s5, 21);
184 REGISTER(s6, 22);
185 REGISTER(s7, 23);
186 REGISTER(t8, 24);
187 REGISTER(t9, 25);
189 REGISTER(k0, 26);
190 REGISTER(k1, 27);
192 REGISTER(gp, 28);
194 REGISTER(sp, 29);
196 REGISTER(fp, 30);
198 REGISTER(ra, 31);
200 #undef REGISTER
203 int ToNumber(Register reg);
205 Register ToRegister(int num);
207 // Coprocessor register.
215 // A few double registers are reserved: one as a scratch register and one to
218 // f30: scratch register.
275 // in pairs, starting with the even numbered register. So a double operation
278 // (priviledged) Status Register FR bit to 1. This is used by the N32 ABI,
320 // Register aliases.
321 // cp is assumed to be a callee saved register.
322 // Defined using #define instead of "static const Register&" because Clang
373 // Register.
374 INLINE(explicit Operand(Register rm));
376 // Return true if this is a register operand.
384 Register rm() const { return rm_; }
387 Register rm_;
406 explicit MemOperand(Register rn, int32_t offset = 0);
407 explicit MemOperand(Register rn, int32_t unit, int32_t multiplier,
547 // optimization, where jump-through-register instruction that usually
565 // register.
610 Register nop_rt_reg = (type == 0) ? zero_reg : at;
622 void beq(Register rs, Register rt, int16_t offset);
623 void beq(Register rs, Register rt, Label* L) {
626 void bgez(Register rs, int16_t offset);
627 void bgezal(Register rs, int16_t offset);
628 void bgtz(Register rs, int16_t offset);
629 void blez(Register rs, int16_t offset);
630 void bltz(Register rs, int16_t offset);
631 void bltzal(Register rs, int16_t offset);
632 void bne(Register rs, Register rt, int16_t offset);
633 void bne(Register rs, Register rt, Label* L) {
643 void jalr(Register rs, Register rd = ra);
644 void jr(Register target);
645 void j_or_jr(int32_t target, Register rs);
646 void jal_or_jalr(int32_t target, Register rs);
652 void addu(Register rd, Register rs, Register rt);
653 void subu(Register rd, Register rs, Register rt);
654 void mult(Register rs, Register rt);
655 void multu(Register rs, Register rt);
656 void div(Register rs, Register rt);
657 void divu(Register rs, Register rt);
658 void mul(Register rd, Register rs, Register rt);
660 void addiu(Register rd, Register rs, int32_t j);
663 void and_(Register rd, Register rs, Register rt);
664 void or_(Register rd, Register rs, Register rt);
665 void xor_(Register rd, Register rs, Register rt);
666 void nor(Register rd, Register rs, Register rt);
668 void andi(Register rd, Register rs, int32_t j);
669 void ori(Register rd, Register rs, int32_t j);
670 void xori(Register rd, Register rs, int32_t j);
671 void lui(Register rd, int32_t j);
677 void sll(Register rd, Register rt, uint16_t sa, bool coming_from_nop = false);
678 void sllv(Register rd, Register rt, Register rs);
679 void srl(Register rd, Register rt, uint16_t sa);
680 void srlv(Register rd, Register rt, Register rs);
681 void sra(Register rt, Register rd, uint16_t sa);
682 void srav(Register rt, Register rd, Register rs);
683 void rotr(Register rd, Register rt, uint16_t sa);
684 void rotrv(Register rd, Register rt, Register rs);
689 void lb(Register rd, const MemOperand& rs);
690 void lbu(Register rd, const MemOperand& rs);
691 void lh(Register rd, const MemOperand& rs);
692 void lhu(Register rd, const MemOperand& rs);
693 void lw(Register rd, const MemOperand& rs);
694 void lwl(Register rd, const MemOperand& rs);
695 void lwr(Register rd, const MemOperand& rs);
696 void sb(Register rd, const MemOperand& rs);
697 void sh(Register rd, const MemOperand& rs);
698 void sw(Register rd, const MemOperand& rs);
699 void swl(Register rd, const MemOperand& rs);
700 void swr(Register rd, const MemOperand& rs);
713 void tge(Register rs, Register rt, uint16_t code);
714 void tgeu(Register rs, Register rt, uint16_t code);
715 void tlt(Register rs, Register rt, uint16_t code);
716 void tltu(Register rs, Register rt, uint16_t code);
717 void teq(Register rs, Register rt, uint16_t code);
718 void tne(Register rs, Register rt, uint16_t code);
720 // Move from HI/LO register.
721 void mfhi(Register rd);
722 void mflo(Register rd);
725 void slt(Register rd, Register rs, Register rt);
726 void sltu(Register rd, Register rs, Register rt);
727 void slti(Register rd, Register rs, int32_t j);
728 void sltiu(Register rd, Register rs, int32_t j);
731 void movz(Register rd, Register rs, Register rt);
732 void movn(Register rd, Register rs, Register rt);
733 void movt(Register rd, Register rs, uint16_t cc = 0);
734 void movf(Register rd, Register rs, uint16_t cc = 0);
737 void clz(Register rd, Register rs);
738 void ins_(Register rt, Register rs, uint16_t pos, uint16_t size);
739 void ext_(Register rt, Register rs, uint16_t pos, uint16_t size);
750 void mtc1(Register rt, FPURegister fs);
751 void mfc1(Register rt, FPURegister fs);
753 void ctc1(Register rt, FPUControlRegister fs);
754 void cfc1(Register rt, FPUControlRegister fs);
935 static Register GetRtReg(Instr instr);
936 static Register GetRsReg(Instr instr);
937 static Register GetRdReg(Instr instr);
1086 // Using the same structure to refer to Register and FPURegister would spare a
1091 Register rs,
1092 Register rt,
1093 Register rd,
1098 Register rs,
1099 Register rt,
1120 Register rt,
1127 Register rt,
1133 Register rs,
1134 Register rt,
1137 Register rs,
1141 Register r1,