OLD | NEW |
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
2 // All Rights Reserved. | 2 // All Rights Reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions | 5 // modification, are permitted provided that the following conditions |
6 // are met: | 6 // are met: |
7 // | 7 // |
8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
10 // | 10 // |
(...skipping 2054 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2065 } | 2065 } |
2066 | 2066 |
2067 | 2067 |
2068 void Assembler::ldrsh(Register dst, const MemOperand& src, Condition cond) { | 2068 void Assembler::ldrsh(Register dst, const MemOperand& src, Condition cond) { |
2069 addrmod3(cond | L | B7 | S6 | H | B4, dst, src); | 2069 addrmod3(cond | L | B7 | S6 | H | B4, dst, src); |
2070 } | 2070 } |
2071 | 2071 |
2072 | 2072 |
2073 void Assembler::ldrd(Register dst1, Register dst2, | 2073 void Assembler::ldrd(Register dst1, Register dst2, |
2074 const MemOperand& src, Condition cond) { | 2074 const MemOperand& src, Condition cond) { |
2075 DCHECK(IsEnabled(ARMv7)); | |
2076 DCHECK(src.rm().is(no_reg)); | 2075 DCHECK(src.rm().is(no_reg)); |
2077 DCHECK(!dst1.is(lr)); // r14. | 2076 DCHECK(!dst1.is(lr)); // r14. |
2078 DCHECK_EQ(0, dst1.code() % 2); | 2077 DCHECK_EQ(0, dst1.code() % 2); |
2079 DCHECK_EQ(dst1.code() + 1, dst2.code()); | 2078 DCHECK_EQ(dst1.code() + 1, dst2.code()); |
2080 addrmod3(cond | B7 | B6 | B4, dst1, src); | 2079 addrmod3(cond | B7 | B6 | B4, dst1, src); |
2081 } | 2080 } |
2082 | 2081 |
2083 | 2082 |
2084 void Assembler::strd(Register src1, Register src2, | 2083 void Assembler::strd(Register src1, Register src2, |
2085 const MemOperand& dst, Condition cond) { | 2084 const MemOperand& dst, Condition cond) { |
2086 DCHECK(dst.rm().is(no_reg)); | 2085 DCHECK(dst.rm().is(no_reg)); |
2087 DCHECK(!src1.is(lr)); // r14. | 2086 DCHECK(!src1.is(lr)); // r14. |
2088 DCHECK_EQ(0, src1.code() % 2); | 2087 DCHECK_EQ(0, src1.code() % 2); |
2089 DCHECK_EQ(src1.code() + 1, src2.code()); | 2088 DCHECK_EQ(src1.code() + 1, src2.code()); |
2090 DCHECK(IsEnabled(ARMv7)); | |
2091 addrmod3(cond | B7 | B6 | B5 | B4, src1, dst); | 2089 addrmod3(cond | B7 | B6 | B5 | B4, src1, dst); |
2092 } | 2090 } |
2093 | 2091 |
2094 | 2092 |
2095 // Preload instructions. | 2093 // Preload instructions. |
2096 void Assembler::pld(const MemOperand& address) { | 2094 void Assembler::pld(const MemOperand& address) { |
2097 // Instruction details available in ARM DDI 0406C.b, A8.8.128. | 2095 // Instruction details available in ARM DDI 0406C.b, A8.8.128. |
2098 // 1111(31-28) | 0111(27-24) | U(23) | R(22) | 01(21-20) | Rn(19-16) | | 2096 // 1111(31-28) | 0111(27-24) | U(23) | R(22) | 01(21-20) | Rn(19-16) | |
2099 // 1111(15-12) | imm5(11-07) | type(6-5) | 0(4)| Rm(3-0) | | 2097 // 1111(15-12) | imm5(11-07) | type(6-5) | 0(4)| Rm(3-0) | |
2100 DCHECK(address.rm().is(no_reg)); | 2098 DCHECK(address.rm().is(no_reg)); |
(...skipping 2161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4262 DCHECK(is_uint12(offset)); | 4260 DCHECK(is_uint12(offset)); |
4263 instr_at_put(pc, SetLdrRegisterImmediateOffset(instr, offset)); | 4261 instr_at_put(pc, SetLdrRegisterImmediateOffset(instr, offset)); |
4264 } | 4262 } |
4265 } | 4263 } |
4266 | 4264 |
4267 | 4265 |
4268 } // namespace internal | 4266 } // namespace internal |
4269 } // namespace v8 | 4267 } // namespace v8 |
4270 | 4268 |
4271 #endif // V8_TARGET_ARCH_ARM | 4269 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |