Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(554)

Side by Side Diff: src/IceInstMIPS32.h

Issue 2504253002: [Subzero][MIPS] Implements atomic intrinsics for MIPS32 (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698