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) { |