Home | History | Annotate | Download | only in mips

Lines Matching defs:REGISTER

53 // the register initialization to depend on the particular initialization
56 // "initialization". Also, the Register objects cannot be const as this
70 // Implementation of Register and FPURegister.
72 // Core register.
73 struct Register {
77 static const int kCpRegister = 23; // cp (s7) is the 23rd register.
81 static int ToAllocationIndex(Register reg) {
89 static Register FromAllocationIndex(int index) {
92 from_code(kCpRegister) : // Last index is always the 'cp' register.
117 static Register from_code(int code) {
118 Register r = { code };
123 bool is(Register reg) const { return code_ == reg.code_; }
137 #define REGISTER(N, C) \
139 const Register N = { C }
141 REGISTER(no_reg, -1);
143 REGISTER(zero_reg, 0);
145 REGISTER(at, 1);
147 REGISTER(v0, 2);
148 REGISTER(v1, 3);
150 REGISTER(a0, 4);
151 REGISTER(a1, 5);
152 REGISTER(a2, 6);
153 REGISTER(a3, 7);
156 REGISTER(t0, 8);
157 REGISTER(t1, 9);
158 REGISTER(t2, 10);
159 REGISTER(t3, 11);
160 REGISTER(t4, 12);
161 REGISTER(t5, 13);
162 REGISTER(t6, 14);
163 REGISTER(t7, 15);
164 // s0 - s7: Subroutine register variables. Subroutines that write to these
167 REGISTER(s0, 16);
168 REGISTER(s1, 17);
169 REGISTER(s2, 18);
170 REGISTER(s3, 19);
171 REGISTER(s4, 20);
172 REGISTER(s5, 21);
173 REGISTER(s6, 22);
174 REGISTER(s7, 23);
175 REGISTER(t8, 24);
176 REGISTER(t9, 25);
178 REGISTER(k0, 26);
179 REGISTER(k1, 27);
181 REGISTER(gp, 28);
183 REGISTER(sp, 29);
185 REGISTER(fp, 30);
187 REGISTER(ra, 31);
189 #undef REGISTER
192 int ToNumber(Register reg);
194 Register ToRegister(int num);
196 // Coprocessor register.
204 // A few double registers are reserved: one as a scratch register and one to
207 // f30: scratch register.
264 // in pairs, starting with the even numbered register. So a double operation
267 // (priviledged) Status Register FR bit to 1. This is used by the N32 ABI,
309 // Register aliases.
310 // cp is assumed to be a callee saved register.
311 // Defined using #define instead of "static const Register&" because Clang
362 // Register.
363 INLINE(explicit Operand(Register rm));
365 // Return true if this is a register operand.
373 Register rm() const { return rm_; }
376 Register rm_;
389 explicit MemOperand(Register rn, int32_t offset = 0);
558 // optimization, where jump-through-register instruction that usually
576 // register.
621 Register nop_rt_reg = (type == 0) ? zero_reg : at;
633 void beq(Register rs, Register rt, int16_t offset);
634 void beq(Register rs, Register rt, Label* L) {
637 void bgez(Register rs, int16_t offset);
638 void bgezal(Register rs, int16_t offset);
639 void bgtz(Register rs, int16_t offset);
640 void blez(Register rs, int16_t offset);
641 void bltz(Register rs, int16_t offset);
642 void bltzal(Register rs, int16_t offset);
643 void bne(Register rs, Register rt, int16_t offset);
644 void bne(Register rs, Register rt, Label* L) {
654 void jalr(Register rs, Register rd = ra);
655 void jr(Register target);
656 void j_or_jr(int32_t target, Register rs);
657 void jal_or_jalr(int32_t target, Register rs);
663 void addu(Register rd, Register rs, Register rt);
664 void subu(Register rd, Register rs, Register rt);
665 void mult(Register rs, Register rt);
666 void multu(Register rs, Register rt);
667 void div(Register rs, Register rt);
668 void divu(Register rs, Register rt);
669 void mul(Register rd, Register rs, Register rt);
671 void addiu(Register rd, Register rs, int32_t j);
674 void and_(Register rd, Register rs, Register rt);
675 void or_(Register rd, Register rs, Register rt);
676 void xor_(Register rd, Register rs, Register rt);
677 void nor(Register rd, Register rs, Register rt);
679 void andi(Register rd, Register rs, int32_t j);
680 void ori(Register rd, Register rs, int32_t j);
681 void xori(Register rd, Register rs, int32_t j);
682 void lui(Register rd, int32_t j);
688 void sll(Register rd, Register rt, uint16_t sa, bool coming_from_nop = false);
689 void sllv(Register rd, Register rt, Register rs);
690 void srl(Register rd, Register rt, uint16_t sa);
691 void srlv(Register rd, Register rt, Register rs);
692 void sra(Register rt, Register rd, uint16_t sa);
693 void srav(Register rt, Register rd, Register rs);
694 void rotr(Register rd, Register rt, uint16_t sa);
695 void rotrv(Register rd, Register rt, Register rs);
700 void lb(Register rd, const MemOperand& rs);
701 void lbu(Register rd, const MemOperand& rs);
702 void lh(Register rd, const MemOperand& rs);
703 void lhu(Register rd, const MemOperand& rs);
704 void lw(Register rd, const MemOperand& rs);
705 void lwl(Register rd, const MemOperand& rs);
706 void lwr(Register rd, const MemOperand& rs);
707 void sb(Register rd, const MemOperand& rs);
708 void sh(Register rd, const MemOperand& rs);
709 void sw(Register rd, const MemOperand& rs);
710 void swl(Register rd, const MemOperand& rs);
711 void swr(Register rd, const MemOperand& rs);
719 void tge(Register rs, Register rt, uint16_t code);
720 void tgeu(Register rs, Register rt, uint16_t code);
721 void tlt(Register rs, Register rt, uint16_t code);
722 void tltu(Register rs, Register rt, uint16_t code);
723 void teq(Register rs, Register rt, uint16_t code);
724 void tne(Register rs, Register rt, uint16_t code);
726 // Move from HI/LO register.
727 void mfhi(Register rd);
728 void mflo(Register rd);
731 void slt(Register rd, Register rs, Register rt);
732 void sltu(Register rd, Register rs, Register rt);
733 void slti(Register rd, Register rs, int32_t j);
734 void sltiu(Register rd, Register rs, int32_t j);
737 void movz(Register rd, Register rs, Register rt);
738 void movn(Register rd, Register rs, Register rt);
739 void movt(Register rd, Register rs, uint16_t cc = 0);
740 void movf(Register rd, Register rs, uint16_t cc = 0);
743 void clz(Register rd, Register rs);
744 void ins_(Register rt, Register rs, uint16_t pos, uint16_t size);
745 void ext_(Register rt, Register rs, uint16_t pos, uint16_t size);
756 void mtc1(Register rt, FPURegister fs);
757 void mfc1(Register rt, FPURegister fs);
759 void ctc1(Register rt, FPUControlRegister fs);
760 void cfc1(Register rt, FPUControlRegister fs);
941 Register GetRtReg(Instr instr);
942 static Register GetRsReg(Instr instr);
943 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,