Chromium Code Reviews| 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 |