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

Unified Diff: src/IceInstARM32.h

Issue 1152703006: Subzero ARM: lowerLoad and lowerStore. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: typo in comments Created 5 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/IceInstARM32.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/IceInstARM32.h
diff --git a/src/IceInstARM32.h b/src/IceInstARM32.h
index 9e0bb650c54bf5900bacfad9f54ce6c2f539112d..3f5f6bd7461f27084431cee2e81163c9d9b570c9 100644
--- a/src/IceInstARM32.h
+++ b/src/IceInstARM32.h
@@ -91,7 +91,7 @@ public:
// general Constant operands like ConstantRelocatable, since a relocatable
// can potentially take up too many bits.
static OperandARM32Mem *create(Cfg *Func, Type Ty, Variable *Base,
- ConstantInteger32 *ImmOffset = nullptr,
+ ConstantInteger32 *ImmOffset,
AddrMode Mode = Offset) {
return new (Func->allocate<OperandARM32Mem>())
OperandARM32Mem(Func, Ty, Base, ImmOffset, Mode);
@@ -277,6 +277,7 @@ public:
Push,
Ret,
Sbc,
+ Str,
Sub,
Umull
};
@@ -763,6 +764,31 @@ private:
~InstARM32Ret() override {}
};
+// Store instruction. It's important for liveness that there is no Dest
+// operand (OperandARM32Mem instead of Dest Variable).
+class InstARM32Str : public InstARM32Pred {
+ InstARM32Str() = delete;
+ InstARM32Str(const InstARM32Str &) = delete;
+ InstARM32Str &operator=(const InstARM32Str &) = delete;
+
+public:
+ // Value must be a register.
+ static InstARM32Str *create(Cfg *Func, Variable *Value, OperandARM32Mem *Mem,
+ CondARM32::Cond Predicate) {
+ return new (Func->allocate<InstARM32Str>())
+ InstARM32Str(Func, Value, Mem, Predicate);
+ }
+ void emit(const Cfg *Func) const override;
+ void emitIAS(const Cfg *Func) const override;
+ void dump(const Cfg *Func) const override;
+ static bool classof(const Inst *Inst) { return isClassof(Inst, Str); }
+
+private:
+ InstARM32Str(Cfg *Func, Variable *Value, OperandARM32Mem *Mem,
+ CondARM32::Cond Predicate);
+ ~InstARM32Str() override {}
+};
+
// Unsigned Multiply Long: d.lo, d.hi := x * y
class InstARM32Umull : public InstARM32Pred {
InstARM32Umull() = delete;
« no previous file with comments | « no previous file | src/IceInstARM32.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698