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

Side by Side Diff: src/IceInstMIPS32.h

Issue 2047043002: Subzero, MIPS32: Floating point comparison (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Ready for review Created 4 years, 3 months 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
« no previous file with comments | « no previous file | src/IceInstMIPS32.cpp » ('j') | src/IceTargetLoweringMIPS32.cpp » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 /// OperandMips32 extends the Operand hierarchy. 48 /// OperandMips32 extends the Operand hierarchy.
49 // 49 //
50 class OperandMIPS32 : public Operand { 50 class OperandMIPS32 : public Operand {
51 OperandMIPS32() = delete; 51 OperandMIPS32() = delete;
52 OperandMIPS32(const OperandMIPS32 &) = delete; 52 OperandMIPS32(const OperandMIPS32 &) = delete;
53 OperandMIPS32 &operator=(const OperandMIPS32 &) = delete; 53 OperandMIPS32 &operator=(const OperandMIPS32 &) = delete;
54 54
55 public: 55 public:
56 enum OperandKindMIPS32 { 56 enum OperandKindMIPS32 {
57 k__Start = Operand::kTarget, 57 k__Start = Operand::kTarget,
58 kFCC,
58 kMem, 59 kMem,
59 }; 60 };
60 61
61 using Operand::dump; 62 using Operand::dump;
62 void dump(const Cfg *, Ostream &Str) const override { 63 void dump(const Cfg *, Ostream &Str) const override {
63 if (BuildDefs::dump()) 64 if (BuildDefs::dump())
64 Str << "<OperandMIPS32>"; 65 Str << "<OperandMIPS32>";
65 } 66 }
66 67
67 protected: 68 protected:
68 OperandMIPS32(OperandKindMIPS32 Kind, Type Ty) 69 OperandMIPS32(OperandKindMIPS32 Kind, Type Ty)
69 : Operand(static_cast<OperandKind>(Kind), Ty) {} 70 : Operand(static_cast<OperandKind>(Kind), Ty) {}
70 }; 71 };
71 72
73 class OperandMIPS32FCC : public OperandMIPS32 {
74 OperandMIPS32FCC() = delete;
75 OperandMIPS32FCC(const OperandMIPS32FCC &) = delete;
76 OperandMIPS32FCC &operator=(const OperandMIPS32FCC &) = delete;
77
78 public:
79 enum FCC { FCC0 = 0, FCC1, FCC2, FCC3, FCC4, FCC5, FCC6, FCC7 };
80 static OperandMIPS32FCC *create(Cfg *Func, Type Ty,
81 OperandMIPS32FCC::FCC FCC) {
82 return new (Func->allocate<OperandMIPS32FCC>())
83 OperandMIPS32FCC(Func, Ty, FCC);
84 }
85
86 void emit(const Cfg *Func) const override {
87 Ostream &Str = Func->getContext()->getStrEmit();
Jim Stichnoth 2016/09/12 14:14:40 Add the usual pattern at the beginning of emit() a
obucinac 2016/09/12 19:16:15 Done.
88
89 Str << "$fcc" << (uint16_t)FCC;
Jim Stichnoth 2016/09/12 14:14:40 static_cast<>
obucinac 2016/09/12 19:16:16 Done.
90 }
91
92 static bool classof(const Operand *Operand) {
93 return Operand->getKind() == static_cast<OperandKind>(kFCC);
94 }
95
96 void dump(const Cfg *Func, Ostream &Str) const override {
97 (void)Func;
98 (void)Str;
99 }
100
101 private:
102 OperandMIPS32FCC(Cfg *Func, Type Ty, OperandMIPS32FCC::FCC FCC)
Jim Stichnoth 2016/09/12 14:14:40 Optional: s/Func// Then you can remove the void-ca
obucinac 2016/09/12 19:16:16 Done.
103 : OperandMIPS32(kFCC, Ty), FCC(FCC) {
Jim Stichnoth 2016/09/12 14:14:41 I don't think the Type makes much sense here, espe
obucinac 2016/09/12 19:16:15 Done.
104 (void)Func;
105 };
106
107 OperandMIPS32FCC::FCC FCC;
Jim Stichnoth 2016/09/12 14:14:40 const
obucinac 2016/09/12 19:16:15 Done.
108 };
109
72 class OperandMIPS32Mem : public OperandMIPS32 { 110 class OperandMIPS32Mem : public OperandMIPS32 {
73 OperandMIPS32Mem() = delete; 111 OperandMIPS32Mem() = delete;
74 OperandMIPS32Mem(const OperandMIPS32Mem &) = delete; 112 OperandMIPS32Mem(const OperandMIPS32Mem &) = delete;
75 OperandMIPS32Mem &operator=(const OperandMIPS32Mem &) = delete; 113 OperandMIPS32Mem &operator=(const OperandMIPS32Mem &) = delete;
76 114
77 public: 115 public:
78 /// Memory operand addressing mode. 116 /// Memory operand addressing mode.
79 /// The enum value also carries the encoding. 117 /// The enum value also carries the encoding.
80 // TODO(jvoung): unify with the assembler. 118 // TODO(jvoung): unify with the assembler.
81 enum AddrMode { Offset }; 119 enum AddrMode { Offset };
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 enum InstKindMIPS32 { 184 enum InstKindMIPS32 {
147 k__Start = Inst::Target, 185 k__Start = Inst::Target,
148 Add, 186 Add,
149 Add_d, 187 Add_d,
150 Add_s, 188 Add_s,
151 Addiu, 189 Addiu,
152 Addu, 190 Addu,
153 And, 191 And,
154 Andi, 192 Andi,
155 Br, 193 Br,
194 C_eq_d,
195 C_eq_s,
196 C_ole_d,
197 C_ole_s,
198 C_olt_d,
199 C_olt_s,
200 C_ueq_d,
201 C_ueq_s,
202 C_ule_d,
203 C_ule_s,
204 C_ult_d,
205 C_ult_s,
206 C_un_d,
207 C_un_s,
156 Call, 208 Call,
157 Cvt_d_l, 209 Cvt_d_l,
158 Cvt_d_s, 210 Cvt_d_s,
159 Cvt_d_w, 211 Cvt_d_w,
160 Cvt_s_d, 212 Cvt_s_d,
161 Cvt_s_l, 213 Cvt_s_l,
162 Cvt_s_w, 214 Cvt_s_w,
163 Div, 215 Div,
164 Div_d, 216 Div_d,
165 Div_s, 217 Div_s,
166 Divu, 218 Divu,
167 La, 219 La,
168 Label, 220 Label,
169 Ldc1, 221 Ldc1,
170 Lui, 222 Lui,
171 Lw, 223 Lw,
172 Lwc1, 224 Lwc1,
173 Mfc1, 225 Mfc1,
174 Mfhi, 226 Mfhi,
175 Mflo, 227 Mflo,
176 Mov, // actually a pseudo op for addi rd, rs, 0 228 Mov, // actually a pseudo op for addi rd, rs, 0
177 Mov_d, 229 Mov_d,
178 Mov_s, 230 Mov_s,
231 Movf,
232 Movt,
179 Mtc1, 233 Mtc1,
180 Mthi, 234 Mthi,
181 Mtlo, 235 Mtlo,
182 Mul, 236 Mul,
183 Mul_d, 237 Mul_d,
184 Mul_s, 238 Mul_s,
185 Mult, 239 Mult,
186 Multu, 240 Multu,
187 Or, 241 Or,
188 Ori, 242 Ori,
(...skipping 606 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 Operand *getCallTarget() const { return getSrc(0); } 849 Operand *getCallTarget() const { return getSrc(0); }
796 void emit(const Cfg *Func) const override; 850 void emit(const Cfg *Func) const override;
797 void emitIAS(const Cfg *Func) const override; 851 void emitIAS(const Cfg *Func) const override;
798 void dump(const Cfg *Func) const override; 852 void dump(const Cfg *Func) const override;
799 static bool classof(const Inst *Inst) { return isClassof(Inst, Call); } 853 static bool classof(const Inst *Inst) { return isClassof(Inst, Call); }
800 854
801 private: 855 private:
802 InstMIPS32Call(Cfg *Func, Variable *Dest, Operand *CallTarget); 856 InstMIPS32Call(Cfg *Func, Variable *Dest, Operand *CallTarget);
803 }; 857 };
804 858
859 template <InstMIPS32::InstKindMIPS32 K>
Jim Stichnoth 2016/09/12 14:14:40 You may want to consider defining a single InstMIP
obucinac 2016/09/12 19:16:15 I would like to leave it as it is, for the consist
860 class InstMIPS32FPCmp : public InstMIPS32 {
861 InstMIPS32FPCmp() = delete;
862 InstMIPS32FPCmp(const InstMIPS32FPCmp &) = delete;
863 InstMIPS32Call &operator=(const InstMIPS32FPCmp &) = delete;
864
865 public:
866 static InstMIPS32FPCmp *create(Cfg *Func, Variable *Src0, Variable *Src1) {
867 return new (Func->allocate<InstMIPS32FPCmp>())
868 InstMIPS32FPCmp(Func, Src0, Src1);
869 }
870
871 void emit(const Cfg *Func) const override {
872 if (!BuildDefs::dump())
873 return;
874 Ostream &Str = Func->getContext()->getStrEmit();
875 assert(getSrcSize() == 2);
876 Str << "\t" << Opcode << "\t";
877 getSrc(0)->emit(Func);
878 Str << ", ";
879 getSrc(1)->emit(Func);
880 }
881
882 void emitIAS(const Cfg *Func) const override {
883 (void)Func;
884 llvm_unreachable("Not yet implemented");
885 }
886
887 void dump(const Cfg *Func) const override {
888 (void)Func;
889 if (!BuildDefs::dump())
890 return;
891 Ostream &Str = Func->getContext()->getStrDump();
892 dumpOpcode(Str, Opcode, getSrc(0)->getType());
893 Str << " ";
894 dumpSources(Func);
895 }
896
897 static bool classof(const Inst *Inst) { return isClassof(Inst, Call); }
898
899 private:
900 InstMIPS32FPCmp(Cfg *Func, Variable *Src0, Variable *Src1)
901 : InstMIPS32(Func, K, 2, nullptr) {
902 addSource(Src0);
903 addSource(Src1);
904 };
905
906 static const char *Opcode;
907 };
908
805 template <InstMIPS32::InstKindMIPS32 K, bool Signed = false> 909 template <InstMIPS32::InstKindMIPS32 K, bool Signed = false>
806 class InstMIPS32Imm16 : public InstMIPS32 { 910 class InstMIPS32Imm16 : public InstMIPS32 {
807 InstMIPS32Imm16() = delete; 911 InstMIPS32Imm16() = delete;
808 InstMIPS32Imm16(const InstMIPS32Imm16 &) = delete; 912 InstMIPS32Imm16(const InstMIPS32Imm16 &) = delete;
809 InstMIPS32Imm16 &operator=(const InstMIPS32Imm16 &) = delete; 913 InstMIPS32Imm16 &operator=(const InstMIPS32Imm16 &) = delete;
810 914
811 public: 915 public:
812 static InstMIPS32Imm16 *create(Cfg *Func, Variable *Dest, Operand *Source, 916 static InstMIPS32Imm16 *create(Cfg *Func, Variable *Dest, Operand *Source,
813 uint32_t Imm) { 917 uint32_t Imm) {
814 return new (Func->allocate<InstMIPS32Imm16>()) 918 return new (Func->allocate<InstMIPS32Imm16>())
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
866 } 970 }
867 971
868 InstMIPS32Imm16(Cfg *Func, Variable *Dest, uint32_t Imm) 972 InstMIPS32Imm16(Cfg *Func, Variable *Dest, uint32_t Imm)
869 : InstMIPS32(Func, K, 0, Dest), Imm(Imm) {} 973 : InstMIPS32(Func, K, 0, Dest), Imm(Imm) {}
870 974
871 static const char *Opcode; 975 static const char *Opcode;
872 976
873 const uint32_t Imm; 977 const uint32_t Imm;
874 }; 978 };
875 979
980 /// Conditional mov
981 template <InstMIPS32::InstKindMIPS32 K>
982 class InstMIPS32MovConditional : public InstMIPS32 {
983 InstMIPS32MovConditional() = delete;
984 InstMIPS32MovConditional(const InstMIPS32MovConditional &) = delete;
985 InstMIPS32MovConditional &
986 operator=(const InstMIPS32MovConditional &) = delete;
987
988 public:
989 static InstMIPS32MovConditional *create(Cfg *Func, Variable *Dest,
990 Variable *Src, Operand *FCC) {
991 return new (Func->allocate<InstMIPS32MovConditional>())
992 InstMIPS32MovConditional(Func, Dest, Src, FCC);
993 }
994
995 void emit(const Cfg *Func) const override {
996 if (!BuildDefs::dump())
997 return;
998 Ostream &Str = Func->getContext()->getStrEmit();
999 assert(getSrcSize() == 2);
1000 Str << "\t" << Opcode << "\t";
1001 getDest()->emit(Func);
1002 Str << ", ";
1003 getSrc(0)->emit(Func);
1004 Str << ", ";
1005 getSrc(1)->emit(Func);
1006 }
1007
1008 void emitIAS(const Cfg *Func) const override {
1009 (void)Func;
1010 llvm_unreachable("Not yet implemented");
1011 }
1012
1013 void dump(const Cfg *Func) const override {
1014 if (!BuildDefs::dump())
1015 return;
1016 Ostream &Str = Func->getContext()->getStrDump();
1017 dumpDest(Func);
1018 Str << " = ";
1019 dumpOpcode(Str, Opcode, getDest()->getType());
1020 Str << " ";
1021 dumpSources(Func);
1022 }
1023 static bool classof(const Inst *Inst) { return isClassof(Inst, K); }
1024
1025 private:
1026 InstMIPS32MovConditional(Cfg *Func, Variable *Dest, Variable *Src,
1027 Operand *FCC)
1028 : InstMIPS32(Func, K, 2, Dest) {
1029 addSource(Src);
1030 addSource(FCC);
1031 }
1032
1033 static const char *Opcode;
1034 };
1035
876 using InstMIPS32Add = InstMIPS32ThreeAddrGPR<InstMIPS32::Add>; 1036 using InstMIPS32Add = InstMIPS32ThreeAddrGPR<InstMIPS32::Add>;
877 using InstMIPS32Add_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Add_d>; 1037 using InstMIPS32Add_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Add_d>;
878 using InstMIPS32Add_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Add_s>; 1038 using InstMIPS32Add_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Add_s>;
879 using InstMIPS32Addu = InstMIPS32ThreeAddrGPR<InstMIPS32::Addu>; 1039 using InstMIPS32Addu = InstMIPS32ThreeAddrGPR<InstMIPS32::Addu>;
880 using InstMIPS32Addiu = InstMIPS32Imm16<InstMIPS32::Addiu, true>; 1040 using InstMIPS32Addiu = InstMIPS32Imm16<InstMIPS32::Addiu, true>;
881 using InstMIPS32And = InstMIPS32ThreeAddrGPR<InstMIPS32::And>; 1041 using InstMIPS32And = InstMIPS32ThreeAddrGPR<InstMIPS32::And>;
882 using InstMIPS32Andi = InstMIPS32Imm16<InstMIPS32::Andi>; 1042 using InstMIPS32Andi = InstMIPS32Imm16<InstMIPS32::Andi>;
1043 using InstMIPS32C_eq_d = InstMIPS32FPCmp<InstMIPS32::C_eq_d>;
1044 using InstMIPS32C_eq_s = InstMIPS32FPCmp<InstMIPS32::C_eq_s>;
1045 using InstMIPS32C_ole_d = InstMIPS32FPCmp<InstMIPS32::C_ole_d>;
1046 using InstMIPS32C_ole_s = InstMIPS32FPCmp<InstMIPS32::C_ole_s>;
1047 using InstMIPS32C_olt_d = InstMIPS32FPCmp<InstMIPS32::C_olt_d>;
1048 using InstMIPS32C_olt_s = InstMIPS32FPCmp<InstMIPS32::C_olt_s>;
1049 using InstMIPS32C_ueq_d = InstMIPS32FPCmp<InstMIPS32::C_ueq_d>;
1050 using InstMIPS32C_ueq_s = InstMIPS32FPCmp<InstMIPS32::C_ueq_s>;
1051 using InstMIPS32C_ule_d = InstMIPS32FPCmp<InstMIPS32::C_ule_d>;
1052 using InstMIPS32C_ule_s = InstMIPS32FPCmp<InstMIPS32::C_ule_s>;
1053 using InstMIPS32C_ult_d = InstMIPS32FPCmp<InstMIPS32::C_ult_d>;
1054 using InstMIPS32C_ult_s = InstMIPS32FPCmp<InstMIPS32::C_ult_s>;
1055 using InstMIPS32C_un_d = InstMIPS32FPCmp<InstMIPS32::C_un_d>;
1056 using InstMIPS32C_un_s = InstMIPS32FPCmp<InstMIPS32::C_un_s>;
883 using InstMIPS32Cvt_d_s = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_d_s>; 1057 using InstMIPS32Cvt_d_s = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_d_s>;
884 using InstMIPS32Cvt_d_l = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_d_l>; 1058 using InstMIPS32Cvt_d_l = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_d_l>;
885 using InstMIPS32Cvt_d_w = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_d_w>; 1059 using InstMIPS32Cvt_d_w = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_d_w>;
886 using InstMIPS32Cvt_s_d = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_s_d>; 1060 using InstMIPS32Cvt_s_d = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_s_d>;
887 using InstMIPS32Cvt_s_l = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_s_l>; 1061 using InstMIPS32Cvt_s_l = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_s_l>;
888 using InstMIPS32Cvt_s_w = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_s_w>; 1062 using InstMIPS32Cvt_s_w = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_s_w>;
889 using InstMIPS32Div = InstMIPS32ThreeAddrGPR<InstMIPS32::Div>; 1063 using InstMIPS32Div = InstMIPS32ThreeAddrGPR<InstMIPS32::Div>;
890 using InstMIPS32Div_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Div_d>; 1064 using InstMIPS32Div_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Div_d>;
891 using InstMIPS32Div_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Div_s>; 1065 using InstMIPS32Div_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Div_s>;
892 using InstMIPS32Divu = InstMIPS32ThreeAddrGPR<InstMIPS32::Divu>; 1066 using InstMIPS32Divu = InstMIPS32ThreeAddrGPR<InstMIPS32::Divu>;
893 using InstMIPS32La = InstMIPS32UnaryopGPR<InstMIPS32::La>; 1067 using InstMIPS32La = InstMIPS32UnaryopGPR<InstMIPS32::La>;
894 using InstMIPS32Ldc1 = InstMIPS32Load<InstMIPS32::Ldc1>; 1068 using InstMIPS32Ldc1 = InstMIPS32Load<InstMIPS32::Ldc1>;
895 using InstMIPS32Lui = InstMIPS32UnaryopGPR<InstMIPS32::Lui>; 1069 using InstMIPS32Lui = InstMIPS32UnaryopGPR<InstMIPS32::Lui>;
896 using InstMIPS32Lw = InstMIPS32Load<InstMIPS32::Lw>; 1070 using InstMIPS32Lw = InstMIPS32Load<InstMIPS32::Lw>;
897 using InstMIPS32Lwc1 = InstMIPS32Load<InstMIPS32::Lwc1>; 1071 using InstMIPS32Lwc1 = InstMIPS32Load<InstMIPS32::Lwc1>;
898 using InstMIPS32Mfc1 = InstMIPS32TwoAddrGPR<InstMIPS32::Mfc1>; 1072 using InstMIPS32Mfc1 = InstMIPS32TwoAddrGPR<InstMIPS32::Mfc1>;
899 using InstMIPS32Mfhi = InstMIPS32UnaryopGPR<InstMIPS32::Mfhi>; 1073 using InstMIPS32Mfhi = InstMIPS32UnaryopGPR<InstMIPS32::Mfhi>;
900 using InstMIPS32Mflo = InstMIPS32UnaryopGPR<InstMIPS32::Mflo>; 1074 using InstMIPS32Mflo = InstMIPS32UnaryopGPR<InstMIPS32::Mflo>;
901 using InstMIPS32Mov_d = InstMIPS32TwoAddrFPR<InstMIPS32::Mov_d>; 1075 using InstMIPS32Mov_d = InstMIPS32TwoAddrFPR<InstMIPS32::Mov_d>;
902 using InstMIPS32Mov_s = InstMIPS32TwoAddrFPR<InstMIPS32::Mov_s>; 1076 using InstMIPS32Mov_s = InstMIPS32TwoAddrFPR<InstMIPS32::Mov_s>;
1077 using InstMIPS32Movf = InstMIPS32MovConditional<InstMIPS32::Movf>;
1078 using InstMIPS32Movt = InstMIPS32MovConditional<InstMIPS32::Movt>;
903 using InstMIPS32Mtc1 = InstMIPS32TwoAddrGPR<InstMIPS32::Mtc1>; 1079 using InstMIPS32Mtc1 = InstMIPS32TwoAddrGPR<InstMIPS32::Mtc1>;
904 using InstMIPS32Mthi = InstMIPS32UnaryopGPR<InstMIPS32::Mthi>; 1080 using InstMIPS32Mthi = InstMIPS32UnaryopGPR<InstMIPS32::Mthi>;
905 using InstMIPS32Mtlo = InstMIPS32UnaryopGPR<InstMIPS32::Mtlo>; 1081 using InstMIPS32Mtlo = InstMIPS32UnaryopGPR<InstMIPS32::Mtlo>;
906 using InstMIPS32Mul = InstMIPS32ThreeAddrGPR<InstMIPS32::Mul>; 1082 using InstMIPS32Mul = InstMIPS32ThreeAddrGPR<InstMIPS32::Mul>;
907 using InstMIPS32Mul_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Mul_d>; 1083 using InstMIPS32Mul_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Mul_d>;
908 using InstMIPS32Mul_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Mul_s>; 1084 using InstMIPS32Mul_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Mul_s>;
909 using InstMIPS32Mult = InstMIPS32ThreeAddrGPR<InstMIPS32::Mult>; 1085 using InstMIPS32Mult = InstMIPS32ThreeAddrGPR<InstMIPS32::Mult>;
910 using InstMIPS32Multu = InstMIPS32ThreeAddrGPR<InstMIPS32::Multu>; 1086 using InstMIPS32Multu = InstMIPS32ThreeAddrGPR<InstMIPS32::Multu>;
911 using InstMIPS32Or = InstMIPS32ThreeAddrGPR<InstMIPS32::Or>; 1087 using InstMIPS32Or = InstMIPS32ThreeAddrGPR<InstMIPS32::Or>;
912 using InstMIPS32Ori = InstMIPS32Imm16<InstMIPS32::Ori>; 1088 using InstMIPS32Ori = InstMIPS32Imm16<InstMIPS32::Ori>;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
983 template <> void InstMIPS32Mtlo::emit(const Cfg *Func) const; 1159 template <> void InstMIPS32Mtlo::emit(const Cfg *Func) const;
984 template <> void InstMIPS32Mthi::emit(const Cfg *Func) const; 1160 template <> void InstMIPS32Mthi::emit(const Cfg *Func) const;
985 template <> void InstMIPS32Mult::emit(const Cfg *Func) const; 1161 template <> void InstMIPS32Mult::emit(const Cfg *Func) const;
986 template <> void InstMIPS32Multu::emit(const Cfg *Func) const; 1162 template <> void InstMIPS32Multu::emit(const Cfg *Func) const;
987 template <> void InstMIPS32Lui::emit(const Cfg *Func) const; 1163 template <> void InstMIPS32Lui::emit(const Cfg *Func) const;
988 1164
989 } // end of namespace MIPS32 1165 } // end of namespace MIPS32
990 } // end of namespace Ice 1166 } // end of namespace Ice
991 1167
992 #endif // SUBZERO_SRC_ICEINSTMIPS32_H 1168 #endif // SUBZERO_SRC_ICEINSTMIPS32_H
OLDNEW
« no previous file with comments | « no previous file | src/IceInstMIPS32.cpp » ('j') | src/IceTargetLoweringMIPS32.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698