Index: src/ppc/macro-assembler-ppc.cc |
diff --git a/src/ppc/macro-assembler-ppc.cc b/src/ppc/macro-assembler-ppc.cc |
index 0945f79dbdad648f7a8e711c5ee92d6712c58b1a..0530f4baab67e2be709c655df370d36651b11b2f 100644 |
--- a/src/ppc/macro-assembler-ppc.cc |
+++ b/src/ppc/macro-assembler-ppc.cc |
@@ -4490,6 +4490,44 @@ void MacroAssembler::LoadDouble(DoubleRegister dst, const MemOperand& mem, |
} |
} |
+void MacroAssembler::LoadDoubleU(DoubleRegister dst, const MemOperand& mem, |
+ Register scratch) { |
+ Register base = mem.ra(); |
+ int offset = mem.offset(); |
+ |
+ if (!is_int16(offset)) { |
+ mov(scratch, Operand(offset)); |
+ lfdux(dst, MemOperand(base, scratch)); |
+ } else { |
+ lfdu(dst, mem); |
+ } |
+} |
+ |
+void MacroAssembler::LoadSingle(DoubleRegister dst, const MemOperand& mem, |
+ Register scratch) { |
+ Register base = mem.ra(); |
+ int offset = mem.offset(); |
+ |
+ if (!is_int16(offset)) { |
+ mov(scratch, Operand(offset)); |
+ lfsx(dst, MemOperand(base, scratch)); |
+ } else { |
+ lfs(dst, mem); |
+ } |
+} |
+ |
+void MacroAssembler::LoadSingleU(DoubleRegister dst, const MemOperand& mem, |
+ Register scratch) { |
+ Register base = mem.ra(); |
+ int offset = mem.offset(); |
+ |
+ if (!is_int16(offset)) { |
+ mov(scratch, Operand(offset)); |
+ lfsux(dst, MemOperand(base, scratch)); |
+ } else { |
+ lfsu(dst, mem); |
+ } |
+} |
void MacroAssembler::StoreDouble(DoubleRegister src, const MemOperand& mem, |
Register scratch) { |
@@ -4504,6 +4542,45 @@ void MacroAssembler::StoreDouble(DoubleRegister src, const MemOperand& mem, |
} |
} |
+void MacroAssembler::StoreDoubleU(DoubleRegister src, const MemOperand& mem, |
+ Register scratch) { |
+ Register base = mem.ra(); |
+ int offset = mem.offset(); |
+ |
+ if (!is_int16(offset)) { |
+ mov(scratch, Operand(offset)); |
+ stfdux(src, MemOperand(base, scratch)); |
+ } else { |
+ stfdu(src, mem); |
+ } |
+} |
+ |
+void MacroAssembler::StoreSingle(DoubleRegister src, const MemOperand& mem, |
+ Register scratch) { |
+ Register base = mem.ra(); |
+ int offset = mem.offset(); |
+ |
+ if (!is_int16(offset)) { |
+ mov(scratch, Operand(offset)); |
+ stfsx(src, MemOperand(base, scratch)); |
+ } else { |
+ stfs(src, mem); |
+ } |
+} |
+ |
+void MacroAssembler::StoreSingleU(DoubleRegister src, const MemOperand& mem, |
+ Register scratch) { |
+ Register base = mem.ra(); |
+ int offset = mem.offset(); |
+ |
+ if (!is_int16(offset)) { |
+ mov(scratch, Operand(offset)); |
+ stfsux(src, MemOperand(base, scratch)); |
+ } else { |
+ stfsu(src, mem); |
+ } |
+} |
+ |
void MacroAssembler::TestJSArrayForAllocationMemento(Register receiver_reg, |
Register scratch_reg, |
Register scratch2_reg, |