| 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 4729 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4740 NeonSplitCode(reg_type, dst_code, &vd, &d, &op_encoding); | 4740 NeonSplitCode(reg_type, dst_code, &vd, &d, &op_encoding); |
| 4741 int vm, m; | 4741 int vm, m; |
| 4742 NeonSplitCode(reg_type, src_code, &vm, &m, &op_encoding); | 4742 NeonSplitCode(reg_type, src_code, &vm, &m, &op_encoding); |
| 4743 | 4743 |
| 4744 int sz = static_cast<int>(size); | 4744 int sz = static_cast<int>(size); |
| 4745 return 0x1E7U * B23 | d * B22 | 0x3 * B20 | sz * B18 | vd * B12 | m * B5 | | 4745 return 0x1E7U * B23 | d * B22 | 0x3 * B20 | sz * B18 | vd * B12 | m * B5 | |
| 4746 vm | op_encoding; | 4746 vm | op_encoding; |
| 4747 } | 4747 } |
| 4748 | 4748 |
| 4749 void Assembler::vzip(NeonSize size, DwVfpRegister src1, DwVfpRegister src2) { | 4749 void Assembler::vzip(NeonSize size, DwVfpRegister src1, DwVfpRegister src2) { |
| 4750 DCHECK(IsEnabled(NEON)); | 4750 if (size == Neon32) { // vzip.32 Dd, Dm is a pseudo-op for vtrn.32 Dd, Dm. |
| 4751 // vzip.<size>(Dn, Dm) SIMD zip (interleave). | 4751 vtrn(size, src1, src2); |
| 4752 // Instruction details available in ARM DDI 0406C.b, A8-1102. | 4752 } else { |
| 4753 emit(EncodeNeonSizedOp(VZIP, NEON_D, size, src1.code(), src2.code())); | 4753 DCHECK(IsEnabled(NEON)); |
| 4754 // vzip.<size>(Dn, Dm) SIMD zip (interleave). |
| 4755 // Instruction details available in ARM DDI 0406C.b, A8-1102. |
| 4756 emit(EncodeNeonSizedOp(VZIP, NEON_D, size, src1.code(), src2.code())); |
| 4757 } |
| 4754 } | 4758 } |
| 4755 | 4759 |
| 4756 void Assembler::vzip(NeonSize size, QwNeonRegister src1, QwNeonRegister src2) { | 4760 void Assembler::vzip(NeonSize size, QwNeonRegister src1, QwNeonRegister src2) { |
| 4757 DCHECK(IsEnabled(NEON)); | 4761 DCHECK(IsEnabled(NEON)); |
| 4758 // vzip.<size>(Qn, Qm) SIMD zip (interleave). | 4762 // vzip.<size>(Qn, Qm) SIMD zip (interleave). |
| 4759 // Instruction details available in ARM DDI 0406C.b, A8-1102. | 4763 // Instruction details available in ARM DDI 0406C.b, A8-1102. |
| 4760 emit(EncodeNeonSizedOp(VZIP, NEON_Q, size, src1.code(), src2.code())); | 4764 emit(EncodeNeonSizedOp(VZIP, NEON_Q, size, src1.code(), src2.code())); |
| 4761 } | 4765 } |
| 4762 | 4766 |
| 4763 void Assembler::vuzp(NeonSize size, DwVfpRegister src1, DwVfpRegister src2) { | 4767 void Assembler::vuzp(NeonSize size, DwVfpRegister src1, DwVfpRegister src2) { |
| 4764 DCHECK(IsEnabled(NEON)); | 4768 if (size == Neon32) { // vuzp.32 Dd, Dm is a pseudo-op for vtrn.32 Dd, Dm. |
| 4765 // vuzp.<size>(Dn, Dm) SIMD un-zip (de-interleave). | 4769 vtrn(size, src1, src2); |
| 4766 // Instruction details available in ARM DDI 0406C.b, A8-1100. | 4770 } else { |
| 4767 emit(EncodeNeonSizedOp(VUZP, NEON_D, size, src1.code(), src2.code())); | 4771 DCHECK(IsEnabled(NEON)); |
| 4772 // vuzp.<size>(Dn, Dm) SIMD un-zip (de-interleave). |
| 4773 // Instruction details available in ARM DDI 0406C.b, A8-1100. |
| 4774 emit(EncodeNeonSizedOp(VUZP, NEON_D, size, src1.code(), src2.code())); |
| 4775 } |
| 4768 } | 4776 } |
| 4769 | 4777 |
| 4770 void Assembler::vuzp(NeonSize size, QwNeonRegister src1, QwNeonRegister src2) { | 4778 void Assembler::vuzp(NeonSize size, QwNeonRegister src1, QwNeonRegister src2) { |
| 4771 DCHECK(IsEnabled(NEON)); | 4779 DCHECK(IsEnabled(NEON)); |
| 4772 // vuzp.<size>(Qn, Qm) SIMD un-zip (de-interleave). | 4780 // vuzp.<size>(Qn, Qm) SIMD un-zip (de-interleave). |
| 4773 // Instruction details available in ARM DDI 0406C.b, A8-1100. | 4781 // Instruction details available in ARM DDI 0406C.b, A8-1100. |
| 4774 emit(EncodeNeonSizedOp(VUZP, NEON_Q, size, src1.code(), src2.code())); | 4782 emit(EncodeNeonSizedOp(VUZP, NEON_Q, size, src1.code(), src2.code())); |
| 4775 } | 4783 } |
| 4776 | 4784 |
| 4777 void Assembler::vrev16(NeonSize size, QwNeonRegister dst, QwNeonRegister src) { | 4785 void Assembler::vrev16(NeonSize size, QwNeonRegister dst, QwNeonRegister src) { |
| (...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5409 } | 5417 } |
| 5410 | 5418 |
| 5411 void PatchingAssembler::FlushICache(Isolate* isolate) { | 5419 void PatchingAssembler::FlushICache(Isolate* isolate) { |
| 5412 Assembler::FlushICache(isolate, buffer_, buffer_size_ - kGap); | 5420 Assembler::FlushICache(isolate, buffer_, buffer_size_ - kGap); |
| 5413 } | 5421 } |
| 5414 | 5422 |
| 5415 } // namespace internal | 5423 } // namespace internal |
| 5416 } // namespace v8 | 5424 } // namespace v8 |
| 5417 | 5425 |
| 5418 #endif // V8_TARGET_ARCH_ARM | 5426 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |