Commit 729b5f6c by John Porto

Subzero. Moves code around in preparations for 64-bit lowering.

Specifically, it moves lowerArguments lowerRet addProlog addEpilog from the x86 lowering template to the concrete lowering implementations. BUG= https://code.google.com/p/nativeclient/issues/detail?id=4077 R=stichnot@chromium.org Review URL: https://codereview.chromium.org/1261383002.
parent f6f9825e
...@@ -8,9 +8,8 @@ ...@@ -8,9 +8,8 @@
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
/// ///
/// \file /// \file
/// This file used to house all the X8664 instructions. Subzero has been /// (Note: x86 instructions are templates, and they are defined in
/// modified to use templates for X86 instructions, so all those definitions are /// src/IceInstX86Base.)
/// are in IceInstX86Base.h
/// ///
/// When interacting with the X8664 target (which should only happen in the /// When interacting with the X8664 target (which should only happen in the
/// X8664 TargetLowering) clients have should use the Ice::X8664::Traits::Insts /// X8664 TargetLowering) clients have should use the Ice::X8664::Traits::Insts
......
...@@ -43,6 +43,10 @@ public: ...@@ -43,6 +43,10 @@ public:
protected: protected:
void lowerCall(const InstCall *Instr) override; void lowerCall(const InstCall *Instr) override;
void lowerArguments() override;
void lowerRet(const InstRet *Inst) override;
void addProlog(CfgNode *Node) override;
void addEpilog(CfgNode *Node) override;
private: private:
friend class ::Ice::X86Internal::TargetX86Base<TargetX8632>; friend class ::Ice::X86Internal::TargetX86Base<TargetX8632>;
......
...@@ -40,6 +40,10 @@ public: ...@@ -40,6 +40,10 @@ public:
protected: protected:
void lowerCall(const InstCall *Instr) override; void lowerCall(const InstCall *Instr) override;
void lowerArguments() override;
void lowerRet(const InstRet *Inst) override;
void addProlog(CfgNode *Node) override;
void addEpilog(CfgNode *Node) override;
private: private:
friend class ::Ice::X86Internal::TargetX86Base<TargetX8664>; friend class ::Ice::X86Internal::TargetX86Base<TargetX8664>;
......
...@@ -98,10 +98,7 @@ public: ...@@ -98,10 +98,7 @@ public:
void emit(const ConstantFloat *C) const final; void emit(const ConstantFloat *C) const final;
void emit(const ConstantDouble *C) const final; void emit(const ConstantDouble *C) const final;
void lowerArguments() override;
void initNodeForLowering(CfgNode *Node) override; void initNodeForLowering(CfgNode *Node) override;
void addProlog(CfgNode *Node) override;
void addEpilog(CfgNode *Node) override;
/// Ensure that a 64-bit Variable has been split into 2 32-bit /// Ensure that a 64-bit Variable has been split into 2 32-bit
/// Variables, creating them if necessary. This is needed for all /// Variables, creating them if necessary. This is needed for all
/// I64 operations, and it is needed for pushing F64 arguments for /// I64 operations, and it is needed for pushing F64 arguments for
...@@ -136,7 +133,6 @@ protected: ...@@ -136,7 +133,6 @@ protected:
void lowerInsertElement(const InstInsertElement *Inst) override; void lowerInsertElement(const InstInsertElement *Inst) override;
void lowerLoad(const InstLoad *Inst) override; void lowerLoad(const InstLoad *Inst) override;
void lowerPhi(const InstPhi *Inst) override; void lowerPhi(const InstPhi *Inst) override;
void lowerRet(const InstRet *Inst) override;
void lowerSelect(const InstSelect *Inst) override; void lowerSelect(const InstSelect *Inst) override;
void lowerStore(const InstStore *Inst) override; void lowerStore(const InstStore *Inst) override;
void lowerSwitch(const InstSwitch *Inst) override; void lowerSwitch(const InstSwitch *Inst) override;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment