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

Side by Side Diff: src/compiler/arm/instruction-selector-arm.cc

Issue 2050563002: [arm] BitcastF32U32 uses float registers. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 6 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
« no previous file with comments | « src/compiler/arm/instruction-scheduler-arm.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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/base/adapters.h" 5 #include "src/base/adapters.h"
6 #include "src/base/bits.h" 6 #include "src/base/bits.h"
7 #include "src/compiler/instruction-selector-impl.h" 7 #include "src/compiler/instruction-selector-impl.h"
8 #include "src/compiler/node-matchers.h" 8 #include "src/compiler/node-matchers.h"
9 #include "src/compiler/node-properties.h" 9 #include "src/compiler/node-properties.h"
10 10
(...skipping 1193 matching lines...) Expand 10 before | Expand all | Expand 10 after
1204 } 1204 }
1205 1205
1206 void InstructionSelector::VisitTruncateFloat64ToWord32(Node* node) { 1206 void InstructionSelector::VisitTruncateFloat64ToWord32(Node* node) {
1207 VisitRR(this, kArchTruncateDoubleToI, node); 1207 VisitRR(this, kArchTruncateDoubleToI, node);
1208 } 1208 }
1209 1209
1210 void InstructionSelector::VisitRoundFloat64ToInt32(Node* node) { 1210 void InstructionSelector::VisitRoundFloat64ToInt32(Node* node) {
1211 VisitRR(this, kArmVcvtS32F64, node); 1211 VisitRR(this, kArmVcvtS32F64, node);
1212 } 1212 }
1213 1213
1214
1215 void InstructionSelector::VisitBitcastFloat32ToInt32(Node* node) { 1214 void InstructionSelector::VisitBitcastFloat32ToInt32(Node* node) {
1216 VisitRR(this, kArmVmovU32F32, node); 1215 VisitRR(this, kArmVmovU32F32, node);
1217 } 1216 }
1218 1217
1219
1220 void InstructionSelector::VisitBitcastInt32ToFloat32(Node* node) { 1218 void InstructionSelector::VisitBitcastInt32ToFloat32(Node* node) {
1221 ArmOperandGenerator g(this); 1219 VisitRR(this, kArmVmovF32U32, node);
1222 Emit(kArmVmovLowF64U32, g.DefineAsRegister(node),
1223 ImmediateOperand(ImmediateOperand::INLINE, 0),
1224 g.UseRegister(node->InputAt(0)));
1225 } 1220 }
1226 1221
1227
1228 void InstructionSelector::VisitFloat32Add(Node* node) { 1222 void InstructionSelector::VisitFloat32Add(Node* node) {
1229 ArmOperandGenerator g(this); 1223 ArmOperandGenerator g(this);
1230 Float32BinopMatcher m(node); 1224 Float32BinopMatcher m(node);
1231 if (m.left().IsFloat32Mul() && CanCover(node, m.left().node())) { 1225 if (m.left().IsFloat32Mul() && CanCover(node, m.left().node())) {
1232 Float32BinopMatcher mleft(m.left().node()); 1226 Float32BinopMatcher mleft(m.left().node());
1233 Emit(kArmVmlaF32, g.DefineSameAsFirst(node), 1227 Emit(kArmVmlaF32, g.DefineSameAsFirst(node),
1234 g.UseRegister(m.right().node()), g.UseRegister(mleft.left().node()), 1228 g.UseRegister(m.right().node()), g.UseRegister(mleft.left().node()),
1235 g.UseRegister(mleft.right().node())); 1229 g.UseRegister(mleft.right().node()));
1236 return; 1230 return;
1237 } 1231 }
(...skipping 759 matching lines...) Expand 10 before | Expand all | Expand 10 after
1997 // static 1991 // static
1998 MachineOperatorBuilder::AlignmentRequirements 1992 MachineOperatorBuilder::AlignmentRequirements
1999 InstructionSelector::AlignmentRequirements() { 1993 InstructionSelector::AlignmentRequirements() {
2000 return MachineOperatorBuilder::AlignmentRequirements:: 1994 return MachineOperatorBuilder::AlignmentRequirements::
2001 FullUnalignedAccessSupport(); 1995 FullUnalignedAccessSupport();
2002 } 1996 }
2003 1997
2004 } // namespace compiler 1998 } // namespace compiler
2005 } // namespace internal 1999 } // namespace internal
2006 } // namespace v8 2000 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/arm/instruction-scheduler-arm.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698