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

Unified Diff: src/arm64/assembler-arm64.h

Issue 1990073002: Add {lda,stl}x?r{,b,h} instructions to ARM64 assembler/disassembler (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: typo Created 4 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/arm64/assembler-arm64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/arm64/assembler-arm64.h
diff --git a/src/arm64/assembler-arm64.h b/src/arm64/assembler-arm64.h
index fac7a703bb2c25bff45b4ee1b508ad36707227d2..1f711ebc846174e96853831761a1ae16f728e892 100644
--- a/src/arm64/assembler-arm64.h
+++ b/src/arm64/assembler-arm64.h
@@ -1401,6 +1401,42 @@ class Assembler : public AssemblerBase {
// Load literal to register.
void ldr(const CPURegister& rt, const Immediate& imm);
+ // Load-acquire word.
+ void ldar(const Register& rt, const Register& rn);
+
+ // Load-acquire exclusive word.
+ void ldaxr(const Register& rt, const Register& rn);
+
+ // Store-release word.
+ void stlr(const Register& rt, const Register& rn);
+
+ // Store-release exclusive word.
+ void stlxr(const Register& rs, const Register& rt, const Register& rn);
+
+ // Load-acquire byte.
+ void ldarb(const Register& rt, const Register& rn);
+
+ // Load-acquire exclusive byte.
+ void ldaxrb(const Register& rt, const Register& rn);
+
+ // Store-release byte.
+ void stlrb(const Register& rt, const Register& rn);
+
+ // Store-release exclusive byte.
+ void stlxrb(const Register& rs, const Register& rt, const Register& rn);
+
+ // Load-acquire half-word.
+ void ldarh(const Register& rt, const Register& rn);
+
+ // Load-acquire exclusive half-word.
+ void ldaxrh(const Register& rt, const Register& rn);
+
+ // Store-release half-word.
+ void stlrh(const Register& rt, const Register& rn);
+
+ // Store-release exclusive half-word.
+ void stlxrh(const Register& rs, const Register& rt, const Register& rn);
+
// Move instructions. The default shift of -1 indicates that the move
// instruction will calculate an appropriate 16-bit immediate and left shift
// that is equal to the 64-bit immediate argument. If an explicit left shift
@@ -1695,6 +1731,11 @@ class Assembler : public AssemblerBase {
return rt2.code() << Rt2_offset;
}
+ static Instr Rs(CPURegister rs) {
+ DCHECK(rs.code() != kSPRegInternalCode);
+ return rs.code() << Rs_offset;
+ }
+
// These encoding functions allow the stack pointer to be encoded, and
// disallow the zero register.
static Instr RdSP(Register rd) {
« no previous file with comments | « no previous file | src/arm64/assembler-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698