Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(61)

Side by Side Diff: runtime/vm/intermediate_language_arm.cc

Issue 19806005: Increases the number of ARM floating-point registers. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM. 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM.
6 #if defined(TARGET_ARCH_ARM) 6 #if defined(TARGET_ARCH_ARM)
7 7
8 #include "vm/intermediate_language.h" 8 #include "vm/intermediate_language.h"
9 9
10 #include "lib/error.h" 10 #include "lib/error.h"
(...skipping 2929 matching lines...) Expand 10 before | Expand all | Expand 10 after
2940 default: UNREACHABLE(); 2940 default: UNREACHABLE();
2941 } 2941 }
2942 } 2942 }
2943 2943
2944 2944
2945 LocationSummary* Float32x4ShuffleInstr::MakeLocationSummary() const { 2945 LocationSummary* Float32x4ShuffleInstr::MakeLocationSummary() const {
2946 const intptr_t kNumInputs = 1; 2946 const intptr_t kNumInputs = 1;
2947 const intptr_t kNumTemps = 0; 2947 const intptr_t kNumTemps = 0;
2948 LocationSummary* summary = 2948 LocationSummary* summary =
2949 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); 2949 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
2950 summary->set_in(0, Location::RequiresFpuRegister()); 2950 summary->set_in(0, Location::FpuRegisterLocation(Q5));
regis 2013/07/23 17:38:04 Please, add a comment about which one of the instr
zra 2013/07/23 18:24:14 Done.
2951 summary->set_out(Location::RequiresFpuRegister()); 2951 summary->set_out(Location::FpuRegisterLocation(Q6));
2952 return summary; 2952 return summary;
2953 } 2953 }
2954 2954
2955 2955
2956 void Float32x4ShuffleInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 2956 void Float32x4ShuffleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
2957 QRegister value = locs()->in(0).fpu_reg(); 2957 QRegister value = locs()->in(0).fpu_reg();
2958 QRegister result = locs()->out().fpu_reg(); 2958 QRegister result = locs()->out().fpu_reg();
2959 DRegister dresult0 = EvenDRegisterOf(result); 2959 DRegister dresult0 = EvenDRegisterOf(result);
2960 SRegister sresult0 = EvenSRegisterOf(dresult0); 2960 SRegister sresult0 = EvenSRegisterOf(dresult0);
2961 2961
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
3002 3002
3003 LocationSummary* Float32x4ConstructorInstr::MakeLocationSummary() const { 3003 LocationSummary* Float32x4ConstructorInstr::MakeLocationSummary() const {
3004 const intptr_t kNumInputs = 4; 3004 const intptr_t kNumInputs = 4;
3005 const intptr_t kNumTemps = 0; 3005 const intptr_t kNumTemps = 0;
3006 LocationSummary* summary = 3006 LocationSummary* summary =
3007 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); 3007 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
3008 summary->set_in(0, Location::RequiresFpuRegister()); 3008 summary->set_in(0, Location::RequiresFpuRegister());
3009 summary->set_in(1, Location::RequiresFpuRegister()); 3009 summary->set_in(1, Location::RequiresFpuRegister());
3010 summary->set_in(2, Location::RequiresFpuRegister()); 3010 summary->set_in(2, Location::RequiresFpuRegister());
3011 summary->set_in(3, Location::RequiresFpuRegister()); 3011 summary->set_in(3, Location::RequiresFpuRegister());
3012 summary->set_out(Location::RequiresFpuRegister()); 3012 summary->set_out(Location::FpuRegisterLocation(Q6));
regis 2013/07/23 17:38:04 ditto
zra 2013/07/23 18:24:14 Done.
3013 return summary; 3013 return summary;
3014 } 3014 }
3015 3015
3016 3016
3017 void Float32x4ConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 3017 void Float32x4ConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
3018 QRegister q0 = locs()->in(0).fpu_reg(); 3018 QRegister q0 = locs()->in(0).fpu_reg();
3019 QRegister q1 = locs()->in(1).fpu_reg(); 3019 QRegister q1 = locs()->in(1).fpu_reg();
3020 QRegister q2 = locs()->in(2).fpu_reg(); 3020 QRegister q2 = locs()->in(2).fpu_reg();
3021 QRegister q3 = locs()->in(3).fpu_reg(); 3021 QRegister q3 = locs()->in(3).fpu_reg();
3022 QRegister r = locs()->out().fpu_reg(); 3022 QRegister r = locs()->out().fpu_reg();
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
3172 } 3172 }
3173 3173
3174 3174
3175 LocationSummary* Float32x4WithInstr::MakeLocationSummary() const { 3175 LocationSummary* Float32x4WithInstr::MakeLocationSummary() const {
3176 const intptr_t kNumInputs = 2; 3176 const intptr_t kNumInputs = 2;
3177 const intptr_t kNumTemps = 0; 3177 const intptr_t kNumTemps = 0;
3178 LocationSummary* summary = 3178 LocationSummary* summary =
3179 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); 3179 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
3180 summary->set_in(0, Location::RequiresFpuRegister()); 3180 summary->set_in(0, Location::RequiresFpuRegister());
3181 summary->set_in(1, Location::RequiresFpuRegister()); 3181 summary->set_in(1, Location::RequiresFpuRegister());
3182 summary->set_out(Location::RequiresFpuRegister()); 3182 summary->set_out(Location::FpuRegisterLocation(Q6));
regis 2013/07/23 17:38:04 ditto
zra 2013/07/23 18:24:14 Done.
3183 return summary; 3183 return summary;
3184 } 3184 }
3185 3185
3186 3186
3187 void Float32x4WithInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 3187 void Float32x4WithInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
3188 QRegister replacement = locs()->in(0).fpu_reg(); 3188 QRegister replacement = locs()->in(0).fpu_reg();
3189 QRegister value = locs()->in(1).fpu_reg(); 3189 QRegister value = locs()->in(1).fpu_reg();
3190 QRegister result = locs()->out().fpu_reg(); 3190 QRegister result = locs()->out().fpu_reg();
3191 3191
3192 DRegister dresult0 = EvenDRegisterOf(result); 3192 DRegister dresult0 = EvenDRegisterOf(result);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
3239 void Uint32x4BoolConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 3239 void Uint32x4BoolConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
3240 UNIMPLEMENTED(); 3240 UNIMPLEMENTED();
3241 } 3241 }
3242 3242
3243 3243
3244 LocationSummary* Uint32x4GetFlagInstr::MakeLocationSummary() const { 3244 LocationSummary* Uint32x4GetFlagInstr::MakeLocationSummary() const {
3245 const intptr_t kNumInputs = 1; 3245 const intptr_t kNumInputs = 1;
3246 const intptr_t kNumTemps = 0; 3246 const intptr_t kNumTemps = 0;
3247 LocationSummary* summary = 3247 LocationSummary* summary =
3248 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); 3248 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
3249 summary->set_in(0, Location::RequiresFpuRegister()); 3249 summary->set_in(0, Location::FpuRegisterLocation(Q6));
3250 summary->set_out(Location::RequiresRegister()); 3250 summary->set_out(Location::RequiresRegister());
3251 return summary; 3251 return summary;
3252 } 3252 }
3253 3253
3254 3254
3255 void Uint32x4GetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 3255 void Uint32x4GetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
3256 QRegister value = locs()->in(0).fpu_reg(); 3256 QRegister value = locs()->in(0).fpu_reg();
3257 Register result = locs()->out().reg(); 3257 Register result = locs()->out().reg();
3258 3258
3259 DRegister dvalue0 = EvenDRegisterOf(value); 3259 DRegister dvalue0 = EvenDRegisterOf(value);
(...skipping 848 matching lines...) Expand 10 before | Expand all | Expand 10 after
4108 compiler->GenerateCall(token_pos(), 4108 compiler->GenerateCall(token_pos(),
4109 &label, 4109 &label,
4110 PcDescriptors::kOther, 4110 PcDescriptors::kOther,
4111 locs()); 4111 locs());
4112 __ Drop(2); // Discard type arguments and receiver. 4112 __ Drop(2); // Discard type arguments and receiver.
4113 } 4113 }
4114 4114
4115 } // namespace dart 4115 } // namespace dart
4116 4116
4117 #endif // defined TARGET_ARCH_ARM 4117 #endif // defined TARGET_ARCH_ARM
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698