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

Side by Side Diff: src/IceInstMIPS32.h

Issue 2259983004: [SubZero] Generate ELF output for MIPS (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Removed Dart comment 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
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
11 /// \brief Declares the InstMIPS32 and OperandMIPS32 classes and their 11 /// \brief Declares the InstMIPS32 and OperandMIPS32 classes and their
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 Sw, 192 Sw,
193 Swc1, 193 Swc1,
194 Trunc_l_d, 194 Trunc_l_d,
195 Trunc_l_s, 195 Trunc_l_s,
196 Trunc_w_d, 196 Trunc_w_d,
197 Trunc_w_s, 197 Trunc_w_s,
198 Xor, 198 Xor,
199 Xori 199 Xori
200 }; 200 };
201 201
202 static constexpr size_t InstSize = sizeof(uint32_t);
203
202 static const char *getWidthString(Type Ty); 204 static const char *getWidthString(Type Ty);
203 205
204 void dump(const Cfg *Func) const override; 206 void dump(const Cfg *Func) const override;
205 207
206 void dumpOpcode(Ostream &Str, const char *Opcode, Type Ty) const { 208 void dumpOpcode(Ostream &Str, const char *Opcode, Type Ty) const {
207 Str << Opcode << "." << Ty; 209 Str << Opcode << "." << Ty;
208 } 210 }
209 211
210 // TODO(rkotler): while branching is not implemented 212 // TODO(rkotler): while branching is not implemented
211 bool repointEdges(CfgNode *, CfgNode *) override { return true; } 213 bool repointEdges(CfgNode *, CfgNode *) override { return true; }
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 } 670 }
669 671
670 const CfgNode *getTargetTrue() const { return TargetTrue; } 672 const CfgNode *getTargetTrue() const { return TargetTrue; }
671 const CfgNode *getTargetFalse() const { return TargetFalse; } 673 const CfgNode *getTargetFalse() const { return TargetFalse; }
672 674
673 bool isUnconditionalBranch() const override { 675 bool isUnconditionalBranch() const override {
674 return Predicate == CondMIPS32::AL; 676 return Predicate == CondMIPS32::AL;
675 } 677 }
676 bool repointEdges(CfgNode *OldNode, CfgNode *NewNode) override; 678 bool repointEdges(CfgNode *OldNode, CfgNode *NewNode) override;
677 void emit(const Cfg *Func) const override; 679 void emit(const Cfg *Func) const override;
678 void emitIAS(const Cfg *Func) const override { (void)Func; }; 680 void emitIAS(const Cfg *Func) const override;
679 void dump(const Cfg *Func) const override; 681 void dump(const Cfg *Func) const override;
680 static bool classof(const Inst *Instr) { return isClassof(Instr, Br); } 682 static bool classof(const Inst *Instr) { return isClassof(Instr, Br); }
681 683
682 private: 684 private:
683 InstMIPS32Br(Cfg *Func, const CfgNode *TargetTrue, const CfgNode *TargetFalse, 685 InstMIPS32Br(Cfg *Func, const CfgNode *TargetTrue, const CfgNode *TargetFalse,
684 const InstMIPS32Label *Label, const CondMIPS32::Cond Cond); 686 const InstMIPS32Label *Label, const CondMIPS32::Cond Cond);
685 687
686 InstMIPS32Br(Cfg *Func, const CfgNode *TargetTrue, const CfgNode *TargetFalse, 688 InstMIPS32Br(Cfg *Func, const CfgNode *TargetTrue, const CfgNode *TargetFalse,
687 Operand *Src0, const InstMIPS32Label *Label, 689 Operand *Src0, const InstMIPS32Label *Label,
688 const CondMIPS32::Cond Cond); 690 const CondMIPS32::Cond Cond);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 getDest()->emit(Func); 746 getDest()->emit(Func);
745 if (getSrcSize() > 0) { 747 if (getSrcSize() > 0) {
746 Str << ", "; 748 Str << ", ";
747 getSrc(0)->emit(Func); 749 getSrc(0)->emit(Func);
748 } 750 }
749 Str << ", "; 751 Str << ", ";
750 if (Signed) 752 if (Signed)
751 Str << (int32_t)Imm; 753 Str << (int32_t)Imm;
752 else 754 else
753 Str << Imm; 755 Str << Imm;
754 Str << "\n";
755 } 756 }
756 757
757 void emitIAS(const Cfg *Func) const override { 758 void emitIAS(const Cfg *Func) const override {
758 (void)Func; 759 (void)Func;
759 llvm_unreachable("Not yet implemented"); 760 llvm_unreachable("Not yet implemented");
760 } 761 }
761 void dump(const Cfg *Func) const override { 762 void dump(const Cfg *Func) const override {
762 if (!BuildDefs::dump()) 763 if (!BuildDefs::dump())
763 return; 764 return;
764 Ostream &Str = Func->getContext()->getStrDump(); 765 Ostream &Str = Func->getContext()->getStrDump();
765 Str << " "; 766 Str << " ";
766 Str << "\t" << Opcode << "\t"; 767 Str << "\t" << Opcode << "\t";
767 dumpDest(Func); 768 dumpDest(Func);
768 Str << ", "; 769 Str << ", ";
769 dumpSources(Func); 770 dumpSources(Func);
770 if (Signed) 771 if (Signed)
771 Str << (int32_t)Imm; 772 Str << (int32_t)Imm;
772 else 773 else
773 Str << Imm; 774 Str << Imm;
774 Str << "\n";
775 } 775 }
776 776
777 static bool classof(const Inst *Inst) { return isClassof(Inst, K); } 777 static bool classof(const Inst *Inst) { return isClassof(Inst, K); }
778 778
779 private: 779 private:
780 InstMIPS32Imm16(Cfg *Func, Variable *Dest, Operand *Source, uint32_t Imm) 780 InstMIPS32Imm16(Cfg *Func, Variable *Dest, Operand *Source, uint32_t Imm)
781 : InstMIPS32(Func, K, 1, Dest), Imm(Imm) { 781 : InstMIPS32(Func, K, 1, Dest), Imm(Imm) {
782 addSource(Source); 782 addSource(Source);
783 } 783 }
784 784
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
900 template <> void InstMIPS32Mtlo::emit(const Cfg *Func) const; 900 template <> void InstMIPS32Mtlo::emit(const Cfg *Func) const;
901 template <> void InstMIPS32Mthi::emit(const Cfg *Func) const; 901 template <> void InstMIPS32Mthi::emit(const Cfg *Func) const;
902 template <> void InstMIPS32Mult::emit(const Cfg *Func) const; 902 template <> void InstMIPS32Mult::emit(const Cfg *Func) const;
903 template <> void InstMIPS32Multu::emit(const Cfg *Func) const; 903 template <> void InstMIPS32Multu::emit(const Cfg *Func) const;
904 template <> void InstMIPS32Lui::emit(const Cfg *Func) const; 904 template <> void InstMIPS32Lui::emit(const Cfg *Func) const;
905 905
906 } // end of namespace MIPS32 906 } // end of namespace MIPS32
907 } // end of namespace Ice 907 } // end of namespace Ice
908 908
909 #endif // SUBZERO_SRC_ICEINSTMIPS32_H 909 #endif // SUBZERO_SRC_ICEINSTMIPS32_H
OLDNEW
« no previous file with comments | « src/IceAssemblerMIPS32.cpp ('k') | src/IceInstMIPS32.cpp » ('j') | src/IceInstMIPS32.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698