OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/arm/codegen-arm.h" | 5 #include "src/arm/codegen-arm.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_ARM | 7 #if V8_TARGET_ARCH_ARM |
8 | 8 |
9 #include "src/arm/simulator-arm.h" | 9 #include "src/arm/simulator-arm.h" |
10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 | 101 |
102 if (CpuFeatures::IsSupported(NEON)) { | 102 if (CpuFeatures::IsSupported(NEON)) { |
103 Label loop, less_256, less_128, less_64, less_32, _16_or_less, _8_or_less; | 103 Label loop, less_256, less_128, less_64, less_32, _16_or_less, _8_or_less; |
104 Label size_less_than_8; | 104 Label size_less_than_8; |
105 __ pld(MemOperand(src, 0)); | 105 __ pld(MemOperand(src, 0)); |
106 | 106 |
107 __ cmp(chars, Operand(8)); | 107 __ cmp(chars, Operand(8)); |
108 __ b(lt, &size_less_than_8); | 108 __ b(lt, &size_less_than_8); |
109 __ cmp(chars, Operand(32)); | 109 __ cmp(chars, Operand(32)); |
110 __ b(lt, &less_32); | 110 __ b(lt, &less_32); |
111 if (CpuFeatures::dcache_line_size() == 32) { | 111 if (CpuFeatures::cache_line_size() == 32) { |
112 __ pld(MemOperand(src, 32)); | 112 __ pld(MemOperand(src, 32)); |
113 } | 113 } |
114 __ cmp(chars, Operand(64)); | 114 __ cmp(chars, Operand(64)); |
115 __ b(lt, &less_64); | 115 __ b(lt, &less_64); |
116 __ pld(MemOperand(src, 64)); | 116 __ pld(MemOperand(src, 64)); |
117 if (CpuFeatures::dcache_line_size() == 32) { | 117 if (CpuFeatures::cache_line_size() == 32) { |
118 __ pld(MemOperand(src, 96)); | 118 __ pld(MemOperand(src, 96)); |
119 } | 119 } |
120 __ cmp(chars, Operand(128)); | 120 __ cmp(chars, Operand(128)); |
121 __ b(lt, &less_128); | 121 __ b(lt, &less_128); |
122 __ pld(MemOperand(src, 128)); | 122 __ pld(MemOperand(src, 128)); |
123 if (CpuFeatures::dcache_line_size() == 32) { | 123 if (CpuFeatures::cache_line_size() == 32) { |
124 __ pld(MemOperand(src, 160)); | 124 __ pld(MemOperand(src, 160)); |
125 } | 125 } |
126 __ pld(MemOperand(src, 192)); | 126 __ pld(MemOperand(src, 192)); |
127 if (CpuFeatures::dcache_line_size() == 32) { | 127 if (CpuFeatures::cache_line_size() == 32) { |
128 __ pld(MemOperand(src, 224)); | 128 __ pld(MemOperand(src, 224)); |
129 } | 129 } |
130 __ cmp(chars, Operand(256)); | 130 __ cmp(chars, Operand(256)); |
131 __ b(lt, &less_256); | 131 __ b(lt, &less_256); |
132 __ sub(chars, chars, Operand(256)); | 132 __ sub(chars, chars, Operand(256)); |
133 | 133 |
134 __ bind(&loop); | 134 __ bind(&loop); |
135 __ pld(MemOperand(src, 256)); | 135 __ pld(MemOperand(src, 256)); |
136 __ vld1(Neon8, NeonListOperand(d0, 4), NeonMemOperand(src, PostIndex)); | 136 __ vld1(Neon8, NeonListOperand(d0, 4), NeonMemOperand(src, PostIndex)); |
137 if (CpuFeatures::dcache_line_size() == 32) { | 137 if (CpuFeatures::cache_line_size() == 32) { |
138 __ pld(MemOperand(src, 256)); | 138 __ pld(MemOperand(src, 256)); |
139 } | 139 } |
140 __ vld1(Neon8, NeonListOperand(d4, 4), NeonMemOperand(src, PostIndex)); | 140 __ vld1(Neon8, NeonListOperand(d4, 4), NeonMemOperand(src, PostIndex)); |
141 __ sub(chars, chars, Operand(64), SetCC); | 141 __ sub(chars, chars, Operand(64), SetCC); |
142 __ vst1(Neon8, NeonListOperand(d0, 4), NeonMemOperand(dest, PostIndex)); | 142 __ vst1(Neon8, NeonListOperand(d0, 4), NeonMemOperand(dest, PostIndex)); |
143 __ vst1(Neon8, NeonListOperand(d4, 4), NeonMemOperand(dest, PostIndex)); | 143 __ vst1(Neon8, NeonListOperand(d4, 4), NeonMemOperand(dest, PostIndex)); |
144 __ b(ge, &loop); | 144 __ b(ge, &loop); |
145 __ add(chars, chars, Operand(256)); | 145 __ add(chars, chars, Operand(256)); |
146 | 146 |
147 __ bind(&less_256); | 147 __ bind(&less_256); |
(...skipping 799 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
947 patcher.masm()->ldr(pc, MemOperand(pc, -4)); | 947 patcher.masm()->ldr(pc, MemOperand(pc, -4)); |
948 patcher.masm()->emit_code_stub_address(stub); | 948 patcher.masm()->emit_code_stub_address(stub); |
949 } | 949 } |
950 } | 950 } |
951 | 951 |
952 | 952 |
953 } // namespace internal | 953 } // namespace internal |
954 } // namespace v8 | 954 } // namespace v8 |
955 | 955 |
956 #endif // V8_TARGET_ARCH_ARM | 956 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |