OLD | NEW |
---|---|
1 //===- subzero/src/IceInstMIPS32.h - MIPS32 machine instrs --*- C++ -*-----===// | 1 //===- subzero/src/IceInstMIPS32.h - MIPS32 machine instrs --*- C++ -*-----===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 /// | 9 /// |
10 /// \file | 10 /// \file |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
217 Cvt_s_d, | 217 Cvt_s_d, |
218 Cvt_s_l, | 218 Cvt_s_l, |
219 Cvt_s_w, | 219 Cvt_s_w, |
220 Div, | 220 Div, |
221 Div_d, | 221 Div_d, |
222 Div_s, | 222 Div_s, |
223 Divu, | 223 Divu, |
224 La, | 224 La, |
225 Label, | 225 Label, |
226 Ldc1, | 226 Ldc1, |
227 Ll, | |
227 Lui, | 228 Lui, |
228 Lw, | 229 Lw, |
229 Lwc1, | 230 Lwc1, |
230 Mfc1, | 231 Mfc1, |
231 Mfhi, | 232 Mfhi, |
232 Mflo, | 233 Mflo, |
233 Mov, // actually a pseudo op for addi rd, rs, 0 | 234 Mov, // actually a pseudo op for addi rd, rs, 0 |
234 Mov_d, | 235 Mov_d, |
235 Mov_s, | 236 Mov_s, |
236 Movf, | 237 Movf, |
237 Movn, | 238 Movn, |
238 Movn_d, | 239 Movn_d, |
239 Movn_s, | 240 Movn_s, |
240 Movt, | 241 Movt, |
241 Movz, | 242 Movz, |
242 Movz_d, | 243 Movz_d, |
243 Movz_s, | 244 Movz_s, |
244 Mtc1, | 245 Mtc1, |
245 Mthi, | 246 Mthi, |
246 Mtlo, | 247 Mtlo, |
247 Mul, | 248 Mul, |
248 Mul_d, | 249 Mul_d, |
249 Mul_s, | 250 Mul_s, |
250 Mult, | 251 Mult, |
251 Multu, | 252 Multu, |
252 Nor, | 253 Nor, |
253 Or, | 254 Or, |
254 Ori, | 255 Ori, |
255 Ret, | 256 Ret, |
257 Sc, | |
256 Sdc1, | 258 Sdc1, |
257 Sll, | 259 Sll, |
258 Sllv, | 260 Sllv, |
259 Slt, | 261 Slt, |
260 Slti, | 262 Slti, |
261 Sltiu, | 263 Sltiu, |
262 Sltu, | 264 Sltu, |
263 Sra, | 265 Sra, |
264 Srav, | 266 Srav, |
265 Srl, | 267 Srl, |
266 Srlv, | 268 Srlv, |
267 Sqrt_d, | 269 Sqrt_d, |
268 Sqrt_s, | 270 Sqrt_s, |
269 Sub, | 271 Sub, |
270 Sub_d, | 272 Sub_d, |
271 Sub_s, | 273 Sub_s, |
272 Subu, | 274 Subu, |
273 Sw, | 275 Sw, |
274 Swc1, | 276 Swc1, |
277 Sync, | |
275 Teq, | 278 Teq, |
276 Trunc_l_d, | 279 Trunc_l_d, |
277 Trunc_l_s, | 280 Trunc_l_s, |
278 Trunc_w_d, | 281 Trunc_w_d, |
279 Trunc_w_s, | 282 Trunc_w_s, |
280 Xor, | 283 Xor, |
281 Xori | 284 Xori |
282 }; | 285 }; |
283 | 286 |
284 static constexpr size_t InstSize = sizeof(uint32_t); | 287 static constexpr size_t InstSize = sizeof(uint32_t); |
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
591 OperandMIPS32Mem *Mem, RelocOp Reloc = RO_No) { | 594 OperandMIPS32Mem *Mem, RelocOp Reloc = RO_No) { |
592 return new (Func->allocate<InstMIPS32Load>()) | 595 return new (Func->allocate<InstMIPS32Load>()) |
593 InstMIPS32Load(Func, Value, Mem, Reloc); | 596 InstMIPS32Load(Func, Value, Mem, Reloc); |
594 } | 597 } |
595 | 598 |
596 void emit(const Cfg *Func) const override { | 599 void emit(const Cfg *Func) const override { |
597 if (!BuildDefs::dump()) | 600 if (!BuildDefs::dump()) |
598 return; | 601 return; |
599 Ostream &Str = Func->getContext()->getStrEmit(); | 602 Ostream &Str = Func->getContext()->getStrEmit(); |
600 const Type Ty = getDest()->getType(); | 603 const Type Ty = getDest()->getType(); |
601 switch (Ty) { | 604 |
602 case IceType_i1: | 605 if (getKind() == static_cast<InstKind>(Ll)) { |
603 case IceType_i8: | 606 Str << "\t" << Opcode << "\t"; |
604 Str << "\t" | 607 } else { |
605 << "lb" | 608 switch (Ty) { |
606 << "\t"; | 609 case IceType_i1: |
607 break; | 610 case IceType_i8: |
608 case IceType_i16: | 611 Str << "\t" |
Jim Stichnoth
2016/11/17 05:35:39
While you're at it...
Instead of
Str << "\t" <<
sagar.thakur
2016/11/17 10:57:28
Done.
| |
609 Str << "\t" | 612 << "lb" |
610 << "lh" | 613 << "\t"; |
611 << "\t"; | 614 break; |
612 break; | 615 case IceType_i16: |
613 case IceType_i32: | 616 Str << "\t" |
614 Str << "\t" | 617 << "lh" |
615 << "lw" | 618 << "\t"; |
616 << "\t"; | 619 break; |
617 break; | 620 case IceType_i32: |
618 case IceType_f32: | 621 Str << "\t" |
619 Str << "\t" | 622 << "lw" |
620 << "lwc1" | 623 << "\t"; |
621 << "\t"; | 624 break; |
622 break; | 625 case IceType_f32: |
623 case IceType_f64: | 626 Str << "\t" |
624 Str << "\t" | 627 << "lwc1" |
625 << "ldc1" | 628 << "\t"; |
626 << "\t"; | 629 break; |
627 break; | 630 case IceType_f64: |
628 default: | 631 Str << "\t" |
629 llvm_unreachable("InstMIPS32Load unknown type"); | 632 << "ldc1" |
633 << "\t"; | |
634 break; | |
635 default: | |
636 llvm_unreachable("InstMIPS32Load unknown type"); | |
637 } | |
630 } | 638 } |
631 getDest()->emit(Func); | 639 getDest()->emit(Func); |
632 Str << ", "; | 640 Str << ", "; |
633 emitRelocOp(Str, Reloc); | 641 emitRelocOp(Str, Reloc); |
634 getSrc(0)->emit(Func); | 642 getSrc(0)->emit(Func); |
635 } | 643 } |
636 | 644 |
637 void emitIAS(const Cfg *Func) const override { | 645 void emitIAS(const Cfg *Func) const override { |
638 (void)Func; | 646 (void)Func; |
639 llvm_unreachable("Not yet implemented"); | 647 llvm_unreachable("Not yet implemented"); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
676 return new (Func->allocate<InstMIPS32Store>()) | 684 return new (Func->allocate<InstMIPS32Store>()) |
677 InstMIPS32Store(Func, Value, Mem, Reloc); | 685 InstMIPS32Store(Func, Value, Mem, Reloc); |
678 } | 686 } |
679 | 687 |
680 void emit(const Cfg *Func) const override { | 688 void emit(const Cfg *Func) const override { |
681 if (!BuildDefs::dump()) | 689 if (!BuildDefs::dump()) |
682 return; | 690 return; |
683 Ostream &Str = Func->getContext()->getStrEmit(); | 691 Ostream &Str = Func->getContext()->getStrEmit(); |
684 assert(getSrcSize() == 2); | 692 assert(getSrcSize() == 2); |
685 const Type Ty = getSrc(0)->getType(); | 693 const Type Ty = getSrc(0)->getType(); |
686 switch (Ty) { | 694 |
687 case IceType_i1: | 695 if (getKind() == static_cast<InstKind>(Sc)) { |
688 case IceType_i8: | 696 Str << "\t" << Opcode << "\t"; |
689 Str << "\t" | 697 } else { |
690 << "sb" | 698 switch (Ty) { |
691 << "\t"; | 699 case IceType_i1: |
692 break; | 700 case IceType_i8: |
693 case IceType_i16: | 701 Str << "\t" |
694 Str << "\t" | 702 << "sb" |
695 << "sh" | 703 << "\t"; |
696 << "\t"; | 704 break; |
697 break; | 705 case IceType_i16: |
698 case IceType_i32: | 706 Str << "\t" |
699 Str << "\t" | 707 << "sh" |
700 << "sw" | 708 << "\t"; |
701 << "\t"; | 709 break; |
702 break; | 710 case IceType_i32: |
703 case IceType_f32: | 711 Str << "\t" |
704 Str << "\t" | 712 << "sw" |
705 << "swc1" | 713 << "\t"; |
706 << "\t"; | 714 break; |
707 break; | 715 case IceType_f32: |
708 case IceType_f64: | 716 Str << "\t" |
709 Str << "\t" | 717 << "swc1" |
710 << "sdc1" | 718 << "\t"; |
711 << "\t"; | 719 break; |
712 break; | 720 case IceType_f64: |
713 default: | 721 Str << "\t" |
714 llvm_unreachable("InstMIPS32Store unknown type"); | 722 << "sdc1" |
723 << "\t"; | |
724 break; | |
725 default: | |
726 llvm_unreachable("InstMIPS32Store unknown type"); | |
727 } | |
715 } | 728 } |
716 getSrc(0)->emit(Func); | 729 getSrc(0)->emit(Func); |
717 Str << ", "; | 730 Str << ", "; |
718 emitRelocOp(Str, Reloc); | 731 emitRelocOp(Str, Reloc); |
719 getSrc(1)->emit(Func); | 732 getSrc(1)->emit(Func); |
720 } | 733 } |
721 | 734 |
722 void emitIAS(const Cfg *Func) const override { | 735 void emitIAS(const Cfg *Func) const override { |
723 (void)Func; | 736 (void)Func; |
724 llvm_unreachable("InstMIPS32Store: Not yet implemented"); | 737 llvm_unreachable("InstMIPS32Store: Not yet implemented"); |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
786 | 799 |
787 public: | 800 public: |
788 /// Create an unconditional branch to a node. | 801 /// Create an unconditional branch to a node. |
789 static InstMIPS32Br *create(Cfg *Func, CfgNode *Target) { | 802 static InstMIPS32Br *create(Cfg *Func, CfgNode *Target) { |
790 constexpr CfgNode *NoCondTarget = nullptr; | 803 constexpr CfgNode *NoCondTarget = nullptr; |
791 constexpr InstMIPS32Label *NoLabel = nullptr; | 804 constexpr InstMIPS32Label *NoLabel = nullptr; |
792 return new (Func->allocate<InstMIPS32Br>()) | 805 return new (Func->allocate<InstMIPS32Br>()) |
793 InstMIPS32Br(Func, NoCondTarget, Target, NoLabel, CondMIPS32::AL); | 806 InstMIPS32Br(Func, NoCondTarget, Target, NoLabel, CondMIPS32::AL); |
794 } | 807 } |
795 | 808 |
809 static InstMIPS32Br *create(Cfg *Func, CfgNode *Target, | |
810 const InstMIPS32Label *Label) { | |
811 constexpr CfgNode *NoCondTarget = nullptr; | |
812 return new (Func->allocate<InstMIPS32Br>()) | |
813 InstMIPS32Br(Func, NoCondTarget, Target, Label, CondMIPS32::AL); | |
814 } | |
815 | |
796 /// Create a conditional branch to the false node. | 816 /// Create a conditional branch to the false node. |
797 static InstMIPS32Br *create(Cfg *Func, CfgNode *TargetTrue, | 817 static InstMIPS32Br *create(Cfg *Func, CfgNode *TargetTrue, |
798 CfgNode *TargetFalse, Operand *Src0, | 818 CfgNode *TargetFalse, Operand *Src0, |
799 Operand *Src1, CondMIPS32::Cond Cond) { | 819 Operand *Src1, CondMIPS32::Cond Cond) { |
800 constexpr InstMIPS32Label *NoLabel = nullptr; | 820 constexpr InstMIPS32Label *NoLabel = nullptr; |
801 return new (Func->allocate<InstMIPS32Br>()) | 821 return new (Func->allocate<InstMIPS32Br>()) |
802 InstMIPS32Br(Func, TargetTrue, TargetFalse, Src0, Src1, NoLabel, Cond); | 822 InstMIPS32Br(Func, TargetTrue, TargetFalse, Src0, Src1, NoLabel, Cond); |
803 } | 823 } |
804 | 824 |
805 static InstMIPS32Br *create(Cfg *Func, CfgNode *TargetTrue, | 825 static InstMIPS32Br *create(Cfg *Func, CfgNode *TargetTrue, |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
914 private: | 934 private: |
915 InstMIPS32FPCmp(Cfg *Func, Variable *Src0, Variable *Src1) | 935 InstMIPS32FPCmp(Cfg *Func, Variable *Src0, Variable *Src1) |
916 : InstMIPS32(Func, K, 2, nullptr) { | 936 : InstMIPS32(Func, K, 2, nullptr) { |
917 addSource(Src0); | 937 addSource(Src0); |
918 addSource(Src1); | 938 addSource(Src1); |
919 }; | 939 }; |
920 | 940 |
921 static const char *Opcode; | 941 static const char *Opcode; |
922 }; | 942 }; |
923 | 943 |
944 class InstMIPS32Sync : public InstMIPS32 { | |
945 InstMIPS32Sync() = delete; | |
946 InstMIPS32Sync(const InstMIPS32Sync &) = delete; | |
947 InstMIPS32Sync &operator=(const InstMIPS32Sync &) = delete; | |
948 | |
949 public: | |
950 static InstMIPS32Sync *create(Cfg *Func) { | |
951 return new (Func->allocate<InstMIPS32Sync>()) InstMIPS32Sync(Func); | |
952 } | |
953 | |
954 void emit(const Cfg *Func) const override { | |
955 if (!BuildDefs::dump()) | |
956 return; | |
957 Ostream &Str = Func->getContext()->getStrEmit(); | |
958 Str << "\t" << Opcode << "\t"; | |
959 } | |
960 | |
961 void dump(const Cfg *Func) const override { | |
962 if (!BuildDefs::dump()) | |
963 return; | |
964 Func->getContext()->getStrDump() << "sync\t"; | |
965 } | |
966 | |
967 static bool classof(const Inst *Inst) { | |
968 return isClassof(Inst, InstMIPS32::Sync); | |
969 } | |
970 | |
971 void emitIAS(const Cfg *Func) const override; | |
972 | |
973 private: | |
974 InstMIPS32Sync(Cfg *Func) : InstMIPS32(Func, InstMIPS32::Sync, 0, nullptr) {} | |
975 const char *Opcode = "sync"; | |
Jim Stichnoth
2016/11/17 05:35:39
Opcode is usually a static const char* (which you
sagar.thakur
2016/11/17 10:57:28
Done.
| |
976 }; | |
977 | |
924 // Trap | 978 // Trap |
925 template <InstMIPS32::InstKindMIPS32 K> | 979 template <InstMIPS32::InstKindMIPS32 K> |
926 class InstMIPS32Trap : public InstMIPS32 { | 980 class InstMIPS32Trap : public InstMIPS32 { |
927 InstMIPS32Trap() = delete; | 981 InstMIPS32Trap() = delete; |
928 InstMIPS32Trap(const InstMIPS32Trap &) = delete; | 982 InstMIPS32Trap(const InstMIPS32Trap &) = delete; |
929 InstMIPS32Trap &operator=(const InstMIPS32Trap &) = delete; | 983 InstMIPS32Trap &operator=(const InstMIPS32Trap &) = delete; |
930 | 984 |
931 public: | 985 public: |
932 static InstMIPS32Trap *create(Cfg *Func, Operand *Src0, Operand *Src1, | 986 static InstMIPS32Trap *create(Cfg *Func, Operand *Src0, Operand *Src1, |
933 uint32_t Tcode) { | 987 uint32_t Tcode) { |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1168 using InstMIPS32Cvt_d_w = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_d_w>; | 1222 using InstMIPS32Cvt_d_w = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_d_w>; |
1169 using InstMIPS32Cvt_s_d = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_s_d>; | 1223 using InstMIPS32Cvt_s_d = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_s_d>; |
1170 using InstMIPS32Cvt_s_l = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_s_l>; | 1224 using InstMIPS32Cvt_s_l = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_s_l>; |
1171 using InstMIPS32Cvt_s_w = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_s_w>; | 1225 using InstMIPS32Cvt_s_w = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_s_w>; |
1172 using InstMIPS32Div = InstMIPS32ThreeAddrGPR<InstMIPS32::Div>; | 1226 using InstMIPS32Div = InstMIPS32ThreeAddrGPR<InstMIPS32::Div>; |
1173 using InstMIPS32Div_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Div_d>; | 1227 using InstMIPS32Div_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Div_d>; |
1174 using InstMIPS32Div_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Div_s>; | 1228 using InstMIPS32Div_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Div_s>; |
1175 using InstMIPS32Divu = InstMIPS32ThreeAddrGPR<InstMIPS32::Divu>; | 1229 using InstMIPS32Divu = InstMIPS32ThreeAddrGPR<InstMIPS32::Divu>; |
1176 using InstMIPS32La = InstMIPS32UnaryopGPR<InstMIPS32::La>; | 1230 using InstMIPS32La = InstMIPS32UnaryopGPR<InstMIPS32::La>; |
1177 using InstMIPS32Ldc1 = InstMIPS32Load<InstMIPS32::Ldc1>; | 1231 using InstMIPS32Ldc1 = InstMIPS32Load<InstMIPS32::Ldc1>; |
1232 using InstMIPS32Ll = InstMIPS32Load<InstMIPS32::Ll>; | |
1178 using InstMIPS32Lui = InstMIPS32UnaryopGPR<InstMIPS32::Lui>; | 1233 using InstMIPS32Lui = InstMIPS32UnaryopGPR<InstMIPS32::Lui>; |
1179 using InstMIPS32Lw = InstMIPS32Load<InstMIPS32::Lw>; | 1234 using InstMIPS32Lw = InstMIPS32Load<InstMIPS32::Lw>; |
1180 using InstMIPS32Lwc1 = InstMIPS32Load<InstMIPS32::Lwc1>; | 1235 using InstMIPS32Lwc1 = InstMIPS32Load<InstMIPS32::Lwc1>; |
1181 using InstMIPS32Mfc1 = InstMIPS32TwoAddrGPR<InstMIPS32::Mfc1>; | 1236 using InstMIPS32Mfc1 = InstMIPS32TwoAddrGPR<InstMIPS32::Mfc1>; |
1182 using InstMIPS32Mfhi = InstMIPS32UnaryopGPR<InstMIPS32::Mfhi>; | 1237 using InstMIPS32Mfhi = InstMIPS32UnaryopGPR<InstMIPS32::Mfhi>; |
1183 using InstMIPS32Mflo = InstMIPS32UnaryopGPR<InstMIPS32::Mflo>; | 1238 using InstMIPS32Mflo = InstMIPS32UnaryopGPR<InstMIPS32::Mflo>; |
1184 using InstMIPS32Mov_d = InstMIPS32TwoAddrFPR<InstMIPS32::Mov_d>; | 1239 using InstMIPS32Mov_d = InstMIPS32TwoAddrFPR<InstMIPS32::Mov_d>; |
1185 using InstMIPS32Mov_s = InstMIPS32TwoAddrFPR<InstMIPS32::Mov_s>; | 1240 using InstMIPS32Mov_s = InstMIPS32TwoAddrFPR<InstMIPS32::Mov_s>; |
1186 using InstMIPS32Movf = InstMIPS32MovConditional<InstMIPS32::Movf>; | 1241 using InstMIPS32Movf = InstMIPS32MovConditional<InstMIPS32::Movf>; |
1187 using InstMIPS32Movn = InstMIPS32ThreeAddrGPR<InstMIPS32::Movn>; | 1242 using InstMIPS32Movn = InstMIPS32ThreeAddrGPR<InstMIPS32::Movn>; |
1188 using InstMIPS32Movn_d = InstMIPS32ThreeAddrGPR<InstMIPS32::Movn_d>; | 1243 using InstMIPS32Movn_d = InstMIPS32ThreeAddrGPR<InstMIPS32::Movn_d>; |
1189 using InstMIPS32Movn_s = InstMIPS32ThreeAddrGPR<InstMIPS32::Movn_s>; | 1244 using InstMIPS32Movn_s = InstMIPS32ThreeAddrGPR<InstMIPS32::Movn_s>; |
1190 using InstMIPS32Movt = InstMIPS32MovConditional<InstMIPS32::Movt>; | 1245 using InstMIPS32Movt = InstMIPS32MovConditional<InstMIPS32::Movt>; |
1191 using InstMIPS32Movz = InstMIPS32ThreeAddrGPR<InstMIPS32::Movz>; | 1246 using InstMIPS32Movz = InstMIPS32ThreeAddrGPR<InstMIPS32::Movz>; |
1192 using InstMIPS32Movz_d = InstMIPS32ThreeAddrGPR<InstMIPS32::Movz_d>; | 1247 using InstMIPS32Movz_d = InstMIPS32ThreeAddrGPR<InstMIPS32::Movz_d>; |
1193 using InstMIPS32Movz_s = InstMIPS32ThreeAddrGPR<InstMIPS32::Movz_s>; | 1248 using InstMIPS32Movz_s = InstMIPS32ThreeAddrGPR<InstMIPS32::Movz_s>; |
1194 using InstMIPS32Mtc1 = InstMIPS32TwoAddrGPR<InstMIPS32::Mtc1>; | 1249 using InstMIPS32Mtc1 = InstMIPS32TwoAddrGPR<InstMIPS32::Mtc1>; |
1195 using InstMIPS32Mthi = InstMIPS32UnaryopGPR<InstMIPS32::Mthi>; | 1250 using InstMIPS32Mthi = InstMIPS32UnaryopGPR<InstMIPS32::Mthi>; |
1196 using InstMIPS32Mtlo = InstMIPS32UnaryopGPR<InstMIPS32::Mtlo>; | 1251 using InstMIPS32Mtlo = InstMIPS32UnaryopGPR<InstMIPS32::Mtlo>; |
1197 using InstMIPS32Mul = InstMIPS32ThreeAddrGPR<InstMIPS32::Mul>; | 1252 using InstMIPS32Mul = InstMIPS32ThreeAddrGPR<InstMIPS32::Mul>; |
1198 using InstMIPS32Mul_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Mul_d>; | 1253 using InstMIPS32Mul_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Mul_d>; |
1199 using InstMIPS32Mul_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Mul_s>; | 1254 using InstMIPS32Mul_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Mul_s>; |
1200 using InstMIPS32Mult = InstMIPS32ThreeAddrGPR<InstMIPS32::Mult>; | 1255 using InstMIPS32Mult = InstMIPS32ThreeAddrGPR<InstMIPS32::Mult>; |
1201 using InstMIPS32Multu = InstMIPS32ThreeAddrGPR<InstMIPS32::Multu>; | 1256 using InstMIPS32Multu = InstMIPS32ThreeAddrGPR<InstMIPS32::Multu>; |
1202 using InstMIPS32Nor = InstMIPS32ThreeAddrGPR<InstMIPS32::Nor>; | 1257 using InstMIPS32Nor = InstMIPS32ThreeAddrGPR<InstMIPS32::Nor>; |
1203 using InstMIPS32Or = InstMIPS32ThreeAddrGPR<InstMIPS32::Or>; | 1258 using InstMIPS32Or = InstMIPS32ThreeAddrGPR<InstMIPS32::Or>; |
1204 using InstMIPS32Ori = InstMIPS32Imm16<InstMIPS32::Ori>; | 1259 using InstMIPS32Ori = InstMIPS32Imm16<InstMIPS32::Ori>; |
1260 using InstMIPS32Sc = InstMIPS32Store<InstMIPS32::Sc>; | |
1205 using InstMIPS32Sdc1 = InstMIPS32Store<InstMIPS32::Sdc1>; | 1261 using InstMIPS32Sdc1 = InstMIPS32Store<InstMIPS32::Sdc1>; |
1206 using InstMIPS32Sll = InstMIPS32Imm16<InstMIPS32::Sll>; | 1262 using InstMIPS32Sll = InstMIPS32Imm16<InstMIPS32::Sll>; |
1207 using InstMIPS32Sllv = InstMIPS32ThreeAddrGPR<InstMIPS32::Sllv>; | 1263 using InstMIPS32Sllv = InstMIPS32ThreeAddrGPR<InstMIPS32::Sllv>; |
1208 using InstMIPS32Slt = InstMIPS32ThreeAddrGPR<InstMIPS32::Slt>; | 1264 using InstMIPS32Slt = InstMIPS32ThreeAddrGPR<InstMIPS32::Slt>; |
1209 using InstMIPS32Slti = InstMIPS32Imm16<InstMIPS32::Slti>; | 1265 using InstMIPS32Slti = InstMIPS32Imm16<InstMIPS32::Slti>; |
1210 using InstMIPS32Sltiu = InstMIPS32Imm16<InstMIPS32::Sltiu>; | 1266 using InstMIPS32Sltiu = InstMIPS32Imm16<InstMIPS32::Sltiu>; |
1211 using InstMIPS32Sltu = InstMIPS32ThreeAddrGPR<InstMIPS32::Sltu>; | 1267 using InstMIPS32Sltu = InstMIPS32ThreeAddrGPR<InstMIPS32::Sltu>; |
1212 using InstMIPS32Sqrt_d = InstMIPS32TwoAddrFPR<InstMIPS32::Sqrt_d>; | 1268 using InstMIPS32Sqrt_d = InstMIPS32TwoAddrFPR<InstMIPS32::Sqrt_d>; |
1213 using InstMIPS32Sqrt_s = InstMIPS32TwoAddrFPR<InstMIPS32::Sqrt_s>; | 1269 using InstMIPS32Sqrt_s = InstMIPS32TwoAddrFPR<InstMIPS32::Sqrt_s>; |
1214 using InstMIPS32Sra = InstMIPS32Imm16<InstMIPS32::Sra>; | 1270 using InstMIPS32Sra = InstMIPS32Imm16<InstMIPS32::Sra>; |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1358 template <> void InstMIPS32Trunc_l_s::emitIAS(const Cfg *Func) const; | 1414 template <> void InstMIPS32Trunc_l_s::emitIAS(const Cfg *Func) const; |
1359 template <> void InstMIPS32Trunc_w_d::emitIAS(const Cfg *Func) const; | 1415 template <> void InstMIPS32Trunc_w_d::emitIAS(const Cfg *Func) const; |
1360 template <> void InstMIPS32Trunc_w_s::emitIAS(const Cfg *Func) const; | 1416 template <> void InstMIPS32Trunc_w_s::emitIAS(const Cfg *Func) const; |
1361 template <> void InstMIPS32Xor::emitIAS(const Cfg *Func) const; | 1417 template <> void InstMIPS32Xor::emitIAS(const Cfg *Func) const; |
1362 template <> void InstMIPS32Xori::emitIAS(const Cfg *Func) const; | 1418 template <> void InstMIPS32Xori::emitIAS(const Cfg *Func) const; |
1363 | 1419 |
1364 } // end of namespace MIPS32 | 1420 } // end of namespace MIPS32 |
1365 } // end of namespace Ice | 1421 } // end of namespace Ice |
1366 | 1422 |
1367 #endif // SUBZERO_SRC_ICEINSTMIPS32_H | 1423 #endif // SUBZERO_SRC_ICEINSTMIPS32_H |
OLD | NEW |