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

Side by Side Diff: src/IceInstMIPS32.h

Issue 2024183002: Subzero, MIPS32: Floating point load/store and format conversion instructions (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Unimeplemented instructions removed Created 4 years, 6 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') | no next file with comments »
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 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 k__Start = Inst::Target, 120 k__Start = Inst::Target,
121 Add, 121 Add,
122 Add_d, 122 Add_d,
123 Add_s, 123 Add_s,
124 Addiu, 124 Addiu,
125 Addu, 125 Addu,
126 And, 126 And,
127 Andi, 127 Andi,
128 Br, 128 Br,
129 Call, 129 Call,
130 Cvt_d_l,
131 Cvt_d_s,
132 Cvt_d_w,
133 Cvt_s_d,
134 Cvt_s_l,
135 Cvt_s_w,
130 Div, 136 Div,
131 Div_d, 137 Div_d,
132 Div_s, 138 Div_s,
133 Divu, 139 Divu,
134 La, 140 La,
135 Label, 141 Label,
142 Ldc1,
136 Lui, 143 Lui,
144 Lw,
145 Lwc1,
137 Mfc1, 146 Mfc1,
138 Mfhi, 147 Mfhi,
139 Mflo, 148 Mflo,
140 Mov, // actually a pseudo op for addi rd, rs, 0 149 Mov, // actually a pseudo op for addi rd, rs, 0
141 Mov_d, 150 Mov_d,
142 Mov_s, 151 Mov_s,
143 Mtc1, 152 Mtc1,
144 Mthi, 153 Mthi,
145 Mtlo, 154 Mtlo,
146 Mul, 155 Mul,
147 Mul_d, 156 Mul_d,
148 Mul_s, 157 Mul_s,
149 Mult, 158 Mult,
150 Multu, 159 Multu,
151 Or, 160 Or,
152 Ori, 161 Ori,
153 Ret, 162 Ret,
163 Sdc1,
154 Sll, 164 Sll,
155 Sllv, 165 Sllv,
156 Slt, 166 Slt,
157 Slti, 167 Slti,
158 Sltiu, 168 Sltiu,
159 Sltu, 169 Sltu,
160 Sra, 170 Sra,
161 Srav, 171 Srav,
162 Srl, 172 Srl,
163 Srlv, 173 Srlv,
164 Sub, 174 Sub,
165 Sub_d, 175 Sub_d,
166 Sub_s, 176 Sub_s,
167 Subu, 177 Subu,
168 Sw, 178 Sw,
179 Swc1,
180 Trunc_l_d,
181 Trunc_l_s,
182 Trunc_w_d,
183 Trunc_w_s,
169 Xor, 184 Xor,
170 Xori 185 Xori
171 }; 186 };
172 187
173 static const char *getWidthString(Type Ty); 188 static const char *getWidthString(Type Ty);
174 189
175 void dump(const Cfg *Func) const override; 190 void dump(const Cfg *Func) const override;
176 191
177 void dumpOpcode(Ostream &Str, const char *Opcode, Type Ty) const { 192 void dumpOpcode(Ostream &Str, const char *Opcode, Type Ty) const {
178 Str << Opcode << "." << Ty; 193 Str << Opcode << "." << Ty;
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 const uint32_t Imm; 716 const uint32_t Imm;
702 }; 717 };
703 718
704 using InstMIPS32Add = InstMIPS32ThreeAddrGPR<InstMIPS32::Add>; 719 using InstMIPS32Add = InstMIPS32ThreeAddrGPR<InstMIPS32::Add>;
705 using InstMIPS32Add_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Add_d>; 720 using InstMIPS32Add_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Add_d>;
706 using InstMIPS32Add_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Add_s>; 721 using InstMIPS32Add_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Add_s>;
707 using InstMIPS32Addu = InstMIPS32ThreeAddrGPR<InstMIPS32::Addu>; 722 using InstMIPS32Addu = InstMIPS32ThreeAddrGPR<InstMIPS32::Addu>;
708 using InstMIPS32Addiu = InstMIPS32Imm16<InstMIPS32::Addiu, true>; 723 using InstMIPS32Addiu = InstMIPS32Imm16<InstMIPS32::Addiu, true>;
709 using InstMIPS32And = InstMIPS32ThreeAddrGPR<InstMIPS32::And>; 724 using InstMIPS32And = InstMIPS32ThreeAddrGPR<InstMIPS32::And>;
710 using InstMIPS32Andi = InstMIPS32Imm16<InstMIPS32::Andi>; 725 using InstMIPS32Andi = InstMIPS32Imm16<InstMIPS32::Andi>;
726 using InstMIPS32Cvt_d_s = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_d_s>;
727 using InstMIPS32Cvt_d_l = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_d_l>;
728 using InstMIPS32Cvt_d_w = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_d_w>;
729 using InstMIPS32Cvt_s_d = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_s_d>;
730 using InstMIPS32Cvt_s_l = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_s_l>;
731 using InstMIPS32Cvt_s_w = InstMIPS32TwoAddrFPR<InstMIPS32::Cvt_s_w>;
711 using InstMIPS32Div = InstMIPS32ThreeAddrGPR<InstMIPS32::Div>; 732 using InstMIPS32Div = InstMIPS32ThreeAddrGPR<InstMIPS32::Div>;
712 using InstMIPS32Div_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Div_d>; 733 using InstMIPS32Div_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Div_d>;
713 using InstMIPS32Div_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Div_s>; 734 using InstMIPS32Div_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Div_s>;
714 using InstMIPS32Divu = InstMIPS32ThreeAddrGPR<InstMIPS32::Divu>; 735 using InstMIPS32Divu = InstMIPS32ThreeAddrGPR<InstMIPS32::Divu>;
736 using InstMIPS32La = InstMIPS32UnaryopGPR<InstMIPS32::La>;
737 using InstMIPS32Ldc1 = InstMIPS32Memory<InstMIPS32::Ldc1>;
715 using InstMIPS32Lui = InstMIPS32Imm16<InstMIPS32::Lui>; 738 using InstMIPS32Lui = InstMIPS32Imm16<InstMIPS32::Lui>;
716 using InstMIPS32La = InstMIPS32UnaryopGPR<InstMIPS32::La>; 739 using InstMIPS32Lw = InstMIPS32Memory<InstMIPS32::Lwc1>;
740 using InstMIPS32Lwc1 = InstMIPS32Memory<InstMIPS32::Lwc1>;
717 using InstMIPS32Mfc1 = InstMIPS32TwoAddrGPR<InstMIPS32::Mfc1>; 741 using InstMIPS32Mfc1 = InstMIPS32TwoAddrGPR<InstMIPS32::Mfc1>;
718 using InstMIPS32Mfhi = InstMIPS32UnaryopGPR<InstMIPS32::Mfhi>; 742 using InstMIPS32Mfhi = InstMIPS32UnaryopGPR<InstMIPS32::Mfhi>;
719 using InstMIPS32Mflo = InstMIPS32UnaryopGPR<InstMIPS32::Mflo>; 743 using InstMIPS32Mflo = InstMIPS32UnaryopGPR<InstMIPS32::Mflo>;
720 using InstMIPS32Mov_d = InstMIPS32TwoAddrFPR<InstMIPS32::Mov_d>; 744 using InstMIPS32Mov_d = InstMIPS32TwoAddrFPR<InstMIPS32::Mov_d>;
721 using InstMIPS32Mov_s = InstMIPS32TwoAddrFPR<InstMIPS32::Mov_s>; 745 using InstMIPS32Mov_s = InstMIPS32TwoAddrFPR<InstMIPS32::Mov_s>;
722 using InstMIPS32Mtc1 = InstMIPS32TwoAddrGPR<InstMIPS32::Mtc1>; 746 using InstMIPS32Mtc1 = InstMIPS32TwoAddrGPR<InstMIPS32::Mtc1>;
723 using InstMIPS32Mthi = InstMIPS32UnaryopGPR<InstMIPS32::Mthi>; 747 using InstMIPS32Mthi = InstMIPS32UnaryopGPR<InstMIPS32::Mthi>;
724 using InstMIPS32Mtlo = InstMIPS32UnaryopGPR<InstMIPS32::Mtlo>; 748 using InstMIPS32Mtlo = InstMIPS32UnaryopGPR<InstMIPS32::Mtlo>;
725 using InstMIPS32Mul = InstMIPS32ThreeAddrGPR<InstMIPS32::Mul>; 749 using InstMIPS32Mul = InstMIPS32ThreeAddrGPR<InstMIPS32::Mul>;
726 using InstMIPS32Mul_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Mul_d>; 750 using InstMIPS32Mul_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Mul_d>;
727 using InstMIPS32Mul_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Mul_s>; 751 using InstMIPS32Mul_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Mul_s>;
728 using InstMIPS32Mult = InstMIPS32ThreeAddrGPR<InstMIPS32::Mult>; 752 using InstMIPS32Mult = InstMIPS32ThreeAddrGPR<InstMIPS32::Mult>;
729 using InstMIPS32Multu = InstMIPS32ThreeAddrGPR<InstMIPS32::Multu>; 753 using InstMIPS32Multu = InstMIPS32ThreeAddrGPR<InstMIPS32::Multu>;
730 using InstMIPS32Or = InstMIPS32ThreeAddrGPR<InstMIPS32::Or>; 754 using InstMIPS32Or = InstMIPS32ThreeAddrGPR<InstMIPS32::Or>;
731 using InstMIPS32Ori = InstMIPS32Imm16<InstMIPS32::Ori>; 755 using InstMIPS32Ori = InstMIPS32Imm16<InstMIPS32::Ori>;
756 using InstMIPS32Sdc1 = InstMIPS32Memory<InstMIPS32::Sdc1>;
732 using InstMIPS32Sll = InstMIPS32Imm16<InstMIPS32::Sll>; 757 using InstMIPS32Sll = InstMIPS32Imm16<InstMIPS32::Sll>;
733 using InstMIPS32Sllv = InstMIPS32ThreeAddrGPR<InstMIPS32::Sllv>; 758 using InstMIPS32Sllv = InstMIPS32ThreeAddrGPR<InstMIPS32::Sllv>;
734 using InstMIPS32Slt = InstMIPS32ThreeAddrGPR<InstMIPS32::Slt>; 759 using InstMIPS32Slt = InstMIPS32ThreeAddrGPR<InstMIPS32::Slt>;
735 using InstMIPS32Slti = InstMIPS32Imm16<InstMIPS32::Slti>; 760 using InstMIPS32Slti = InstMIPS32Imm16<InstMIPS32::Slti>;
736 using InstMIPS32Sltiu = InstMIPS32Imm16<InstMIPS32::Sltiu>; 761 using InstMIPS32Sltiu = InstMIPS32Imm16<InstMIPS32::Sltiu>;
737 using InstMIPS32Sltu = InstMIPS32ThreeAddrGPR<InstMIPS32::Sltu>; 762 using InstMIPS32Sltu = InstMIPS32ThreeAddrGPR<InstMIPS32::Sltu>;
738 using InstMIPS32Sra = InstMIPS32Imm16<InstMIPS32::Sra>; 763 using InstMIPS32Sra = InstMIPS32Imm16<InstMIPS32::Sra>;
739 using InstMIPS32Srav = InstMIPS32ThreeAddrGPR<InstMIPS32::Srav>; 764 using InstMIPS32Srav = InstMIPS32ThreeAddrGPR<InstMIPS32::Srav>;
740 using InstMIPS32Srl = InstMIPS32Imm16<InstMIPS32::Srl>; 765 using InstMIPS32Srl = InstMIPS32Imm16<InstMIPS32::Srl>;
741 using InstMIPS32Srlv = InstMIPS32ThreeAddrGPR<InstMIPS32::Srlv>; 766 using InstMIPS32Srlv = InstMIPS32ThreeAddrGPR<InstMIPS32::Srlv>;
742 using InstMIPS32Sub = InstMIPS32ThreeAddrGPR<InstMIPS32::Sub>; 767 using InstMIPS32Sub = InstMIPS32ThreeAddrGPR<InstMIPS32::Sub>;
743 using InstMIPS32Sub_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Sub_d>; 768 using InstMIPS32Sub_d = InstMIPS32ThreeAddrFPR<InstMIPS32::Sub_d>;
744 using InstMIPS32Sub_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Sub_s>; 769 using InstMIPS32Sub_s = InstMIPS32ThreeAddrFPR<InstMIPS32::Sub_s>;
745 using InstMIPS32Subu = InstMIPS32ThreeAddrGPR<InstMIPS32::Subu>; 770 using InstMIPS32Subu = InstMIPS32ThreeAddrGPR<InstMIPS32::Subu>;
746 using InstMIPS32Sw = InstMIPS32Memory<InstMIPS32::Sw>; 771 using InstMIPS32Sw = InstMIPS32Memory<InstMIPS32::Sw>;
772 using InstMIPS32Swc1 = InstMIPS32Memory<InstMIPS32::Swc1>;
773 using InstMIPS32Trunc_l_d = InstMIPS32TwoAddrFPR<InstMIPS32::Trunc_l_d>;
774 using InstMIPS32Trunc_l_s = InstMIPS32TwoAddrFPR<InstMIPS32::Trunc_l_s>;
775 using InstMIPS32Trunc_w_d = InstMIPS32TwoAddrFPR<InstMIPS32::Trunc_w_d>;
776 using InstMIPS32Trunc_w_s = InstMIPS32TwoAddrFPR<InstMIPS32::Trunc_w_s>;
747 using InstMIPS32Ori = InstMIPS32Imm16<InstMIPS32::Ori>; 777 using InstMIPS32Ori = InstMIPS32Imm16<InstMIPS32::Ori>;
748 using InstMIPS32Xor = InstMIPS32ThreeAddrGPR<InstMIPS32::Xor>; 778 using InstMIPS32Xor = InstMIPS32ThreeAddrGPR<InstMIPS32::Xor>;
749 using InstMIPS32Xori = InstMIPS32Imm16<InstMIPS32::Xori>; 779 using InstMIPS32Xori = InstMIPS32Imm16<InstMIPS32::Xori>;
750 780
751 /// Handles (some of) vmov's various formats. 781 /// Handles (some of) vmov's various formats.
752 class InstMIPS32Mov final : public InstMIPS32 { 782 class InstMIPS32Mov final : public InstMIPS32 {
753 InstMIPS32Mov() = delete; 783 InstMIPS32Mov() = delete;
754 InstMIPS32Mov(const InstMIPS32Mov &) = delete; 784 InstMIPS32Mov(const InstMIPS32Mov &) = delete;
755 InstMIPS32Mov &operator=(const InstMIPS32Mov &) = delete; 785 InstMIPS32Mov &operator=(const InstMIPS32Mov &) = delete;
756 786
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 template <> void InstMIPS32Mfhi::emit(const Cfg *Func) const; 825 template <> void InstMIPS32Mfhi::emit(const Cfg *Func) const;
796 template <> void InstMIPS32Mtlo::emit(const Cfg *Func) const; 826 template <> void InstMIPS32Mtlo::emit(const Cfg *Func) const;
797 template <> void InstMIPS32Mthi::emit(const Cfg *Func) const; 827 template <> void InstMIPS32Mthi::emit(const Cfg *Func) const;
798 template <> void InstMIPS32Mult::emit(const Cfg *Func) const; 828 template <> void InstMIPS32Mult::emit(const Cfg *Func) const;
799 template <> void InstMIPS32Multu::emit(const Cfg *Func) const; 829 template <> void InstMIPS32Multu::emit(const Cfg *Func) const;
800 830
801 } // end of namespace MIPS32 831 } // end of namespace MIPS32
802 } // end of namespace Ice 832 } // end of namespace Ice
803 833
804 #endif // SUBZERO_SRC_ICEINSTMIPS32_H 834 #endif // SUBZERO_SRC_ICEINSTMIPS32_H
OLDNEW
« no previous file with comments | « no previous file | src/IceInstMIPS32.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698