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