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

Side by Side Diff: src/IceTargetLoweringX8632.h

Issue 1616483003: Merged addProlog and addEpilog on x86. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 4 years, 11 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/IceTargetLoweringX8632.cpp » ('j') | src/IceTargetLoweringX8664.cpp » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 //===- subzero/src/IceTargetLoweringX8632.h - x86-32 lowering ---*- C++ -*-===// 1 //===- subzero/src/IceTargetLoweringX8632.h - x86-32 lowering ---*- 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 16 matching lines...) Expand all
27 #include "IceTargetLoweringX8632Traits.h" 27 #include "IceTargetLoweringX8632Traits.h"
28 28
29 namespace Ice { 29 namespace Ice {
30 namespace X8632 { 30 namespace X8632 {
31 31
32 class TargetX8632 final : public ::Ice::X8632::TargetX86Base<X8632::Traits> { 32 class TargetX8632 final : public ::Ice::X8632::TargetX86Base<X8632::Traits> {
33 TargetX8632() = delete; 33 TargetX8632() = delete;
34 TargetX8632(const TargetX8632 &) = delete; 34 TargetX8632(const TargetX8632 &) = delete;
35 TargetX8632 &operator=(const TargetX8632 &) = delete; 35 TargetX8632 &operator=(const TargetX8632 &) = delete;
36 36
37 void emitSandboxedReturn() override;
37 void emitJumpTable(const Cfg *Func, 38 void emitJumpTable(const Cfg *Func,
38 const InstJumpTable *JumpTable) const override; 39 const InstJumpTable *JumpTable) const override;
39 40
40 public: 41 public:
41 ~TargetX8632() = default; 42 ~TargetX8632() = default;
42 43
43 static std::unique_ptr<::Ice::TargetLowering> create(Cfg *Func) { 44 static std::unique_ptr<::Ice::TargetLowering> create(Cfg *Func) {
44 return makeUnique<TargetX8632>(Func); 45 return makeUnique<TargetX8632>(Func);
45 } 46 }
46 47
47 std::unique_ptr<::Ice::Assembler> createAssembler() const override { 48 std::unique_ptr<::Ice::Assembler> createAssembler() const override {
48 return makeUnique<X8632::AssemblerX8632>(); 49 return makeUnique<X8632::AssemblerX8632>();
49 } 50 }
50 51
51 protected: 52 protected:
52 void _add_sp(Operand *Adjustment); 53 void _add_sp(Operand *Adjustment);
53 void _mov_sp(Operand *NewValue); 54 void _mov_sp(Operand *NewValue);
54 Traits::X86OperandMem *_sandbox_mem_reference(X86OperandMem *) { 55 Traits::X86OperandMem *_sandbox_mem_reference(X86OperandMem *) {
55 llvm::report_fatal_error("sandbox mem reference for x86-32."); 56 llvm::report_fatal_error("sandbox mem reference for x86-32.");
56 } 57 }
57 void _sub_sp(Operand *Adjustment); 58 void _sub_sp(Operand *Adjustment);
59 void _link_bp();
60 void _unlink_bp();
61 void _push_reg(Variable *Reg);
58 62
59 void initSandbox() {} 63 void initSandbox() {}
60 void lowerIndirectJump(Variable *JumpTarget); 64 void lowerIndirectJump(Variable *JumpTarget);
65 void emitGetIP(CfgNode *Node);
61 Inst *emitCallToTarget(Operand *CallTarget, Variable *ReturnReg) override; 66 Inst *emitCallToTarget(Operand *CallTarget, Variable *ReturnReg) override;
62 Variable *moveReturnValueToRegister(Operand *Value, Type ReturnType) override; 67 Variable *moveReturnValueToRegister(Operand *Value, Type ReturnType) override;
63 void addProlog(CfgNode *Node) override;
64 void addEpilog(CfgNode *Node) override;
65 68
66 private: 69 private:
67 ENABLE_MAKE_UNIQUE; 70 ENABLE_MAKE_UNIQUE;
68 friend class X8632::TargetX86Base<X8632::Traits>; 71 friend class X8632::TargetX86Base<X8632::Traits>;
69 72
70 Operand *createNaClReadTPSrcOperand() { 73 Operand *createNaClReadTPSrcOperand() {
71 Constant *Zero = Ctx->getConstantZero(IceType_i32); 74 Constant *Zero = Ctx->getConstantZero(IceType_i32);
72 return Traits::X86OperandMem::create(Func, IceType_i32, nullptr, Zero, 75 return Traits::X86OperandMem::create(Func, IceType_i32, nullptr, Zero,
73 nullptr, 0, 76 nullptr, 0,
74 Traits::X86OperandMem::SegReg_GS); 77 Traits::X86OperandMem::SegReg_GS);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 explicit TargetHeaderX8632(GlobalContext *Ctx); 118 explicit TargetHeaderX8632(GlobalContext *Ctx);
116 119
117 private: 120 private:
118 ~TargetHeaderX8632() = default; 121 ~TargetHeaderX8632() = default;
119 }; 122 };
120 123
121 } // end of namespace X8632 124 } // end of namespace X8632
122 } // end of namespace Ice 125 } // end of namespace Ice
123 126
124 #endif // SUBZERO_SRC_ICETARGETLOWERINGX8632_H 127 #endif // SUBZERO_SRC_ICETARGETLOWERINGX8632_H
OLDNEW
« no previous file with comments | « no previous file | src/IceTargetLoweringX8632.cpp » ('j') | src/IceTargetLoweringX8664.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698