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 |