summaryrefslogtreecommitdiff
path: root/compiler/utils/mips/assembler_mips.cc
diff options
context:
space:
mode:
author Roland Levillain <rpl@google.com> 2016-03-22 16:19:02 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2016-03-22 16:19:02 +0000
commit2a07b80dfbfb869aabe96c88b10e07d26c0ce137 (patch)
tree1ad4e127e6addcb050cc963a94679292b81e133d /compiler/utils/mips/assembler_mips.cc
parentdb17ce13157bb2d8562d1b09682ee55fe69088e4 (diff)
parent51aff3a6564303cab0b7ac82495b4e2e349c6ff3 (diff)
Merge "MIPS32: Implement UnsafeCASInt and UnsafeCASObject intrinsics."
Diffstat (limited to 'compiler/utils/mips/assembler_mips.cc')
-rw-r--r--compiler/utils/mips/assembler_mips.cc22
1 files changed, 22 insertions, 0 deletions
diff --git a/compiler/utils/mips/assembler_mips.cc b/compiler/utils/mips/assembler_mips.cc
index 7c41813457..a1798c0f70 100644
--- a/compiler/utils/mips/assembler_mips.cc
+++ b/compiler/utils/mips/assembler_mips.cc
@@ -485,6 +485,28 @@ void MipsAssembler::Swr(Register rt, Register rs, uint16_t imm16) {
EmitI(0x2e, rs, rt, imm16);
}
+void MipsAssembler::LlR2(Register rt, Register base, int16_t imm16) {
+ CHECK(!IsR6());
+ EmitI(0x30, base, rt, imm16);
+}
+
+void MipsAssembler::ScR2(Register rt, Register base, int16_t imm16) {
+ CHECK(!IsR6());
+ EmitI(0x38, base, rt, imm16);
+}
+
+void MipsAssembler::LlR6(Register rt, Register base, int16_t imm9) {
+ CHECK(IsR6());
+ CHECK(IsInt<9>(imm9));
+ EmitI(0x1f, base, rt, ((imm9 & 0x1ff) << 7) | 0x36);
+}
+
+void MipsAssembler::ScR6(Register rt, Register base, int16_t imm9) {
+ CHECK(IsR6());
+ CHECK(IsInt<9>(imm9));
+ EmitI(0x1f, base, rt, ((imm9 & 0x1ff) << 7) | 0x26);
+}
+
void MipsAssembler::Slt(Register rd, Register rs, Register rt) {
EmitR(0, rs, rt, rd, 0, 0x2a);
}