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

Unified Diff: src/IceAssemblerARM32.h

Issue 1516863003: Add various forms of LDREX/STREX to ARM integrated assembler. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Update Dart files and fix nits. Created 5 years 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
Index: src/IceAssemblerARM32.h
diff --git a/src/IceAssemblerARM32.h b/src/IceAssemblerARM32.h
index cf95eb1e97b4e8a7b7f4ef7aa8de4a843f1a60f5..9970171c81537c6b2d5308d5c8995ebe573932e2 100644
--- a/src/IceAssemblerARM32.h
+++ b/src/IceAssemblerARM32.h
@@ -223,6 +223,15 @@ public:
ldr(OpRt, OpAddress, Cond, TInfo);
}
+ void ldrex(const Operand *OpRt, const Operand *OpAddress,
+ CondARM32::Cond Cond, const TargetInfo &TInfo);
+
+ void ldrex(const Operand *OpRt, const Operand *OpAddress,
+ CondARM32::Cond Cond, const TargetLowering *Lowering) {
+ const TargetInfo TInfo(Lowering);
+ ldrex(OpRt, OpAddress, Cond, TInfo);
+ }
+
void lsl(const Operand *OpRd, const Operand *OpRn, const Operand *OpSrc1,
bool SetFlags, CondARM32::Cond Cond);
@@ -276,6 +285,15 @@ public:
str(OpRt, OpAddress, Cond, TInfo);
}
+ void strex(const Operand *OpRd, const Operand *OpRt, const Operand *OpAddress,
+ CondARM32::Cond Cond, const TargetInfo &TInfo);
+
+ void strex(const Operand *OpRd, const Operand *OpRt, const Operand *OpAddress,
+ CondARM32::Cond Cond, const TargetLowering *Lowering) {
+ const TargetInfo TInfo(Lowering);
+ strex(OpRd, OpRt, OpAddress, Cond, TInfo);
+ }
+
void sub(const Operand *OpRd, const Operand *OpRn, const Operand *OpSrc1,
bool SetFlags, CondARM32::Cond Cond);
@@ -371,6 +389,12 @@ private:
const Operand *OpAddress, const TargetInfo &TInfo,
const char *InstName);
+ // Emit cccc00011xxlnnnndddd11111001tttt where cccc=Cond, xx encodes type
+ // size, l=IsLoad, nnnn=Rn (as defined by OpAddress), and tttt=Rt.
+ void emitMemExOp(CondARM32::Cond, Type Ty, bool IsLoad, const Operand *OpRd,
+ IValueT Rt, const Operand *OpAddress,
+ const TargetInfo &TInfo, const char *InstName);
+
// Pattern cccc100aaaalnnnnrrrrrrrrrrrrrrrr where cccc=Cond,
// aaaa<<21=AddressMode, l=IsLoad, nnnn=BaseReg, and
// rrrrrrrrrrrrrrrr is bitset of Registers.

Powered by Google App Engine
This is Rietveld 408576698