| 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::cache_line_size() == 32) { | 111     if (CpuFeatures::dcache_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::cache_line_size() == 32) { | 117     if (CpuFeatures::dcache_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::cache_line_size() == 32) { | 123     if (CpuFeatures::dcache_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::cache_line_size() == 32) { | 127     if (CpuFeatures::dcache_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::cache_line_size() == 32) { | 137     if (CpuFeatures::dcache_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 | 
|---|