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

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

Issue 2170343002: [turbofan] Change Float64Max/Float64Min to JavaScript semantics. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: mips/mips64 ports. Created 4 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
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 1372 matching lines...) Expand 10 before | Expand all | Expand 10 after
1383 VisitRRR(this, kArmVdivF64, node); 1383 VisitRRR(this, kArmVdivF64, node);
1384 } 1384 }
1385 1385
1386 1386
1387 void InstructionSelector::VisitFloat64Mod(Node* node) { 1387 void InstructionSelector::VisitFloat64Mod(Node* node) {
1388 ArmOperandGenerator g(this); 1388 ArmOperandGenerator g(this);
1389 Emit(kArmVmodF64, g.DefineAsFixed(node, d0), g.UseFixed(node->InputAt(0), d0), 1389 Emit(kArmVmodF64, g.DefineAsFixed(node, d0), g.UseFixed(node->InputAt(0), d0),
1390 g.UseFixed(node->InputAt(1), d1))->MarkAsCall(); 1390 g.UseFixed(node->InputAt(1), d1))->MarkAsCall();
1391 } 1391 }
1392 1392
1393 void InstructionSelector::VisitFloat32Max(Node* node) {
1394 DCHECK(IsSupported(ARMv8));
1395 VisitRRR(this, kArmFloat32Max, node);
1396 }
1397
1398 void InstructionSelector::VisitFloat64Max(Node* node) { 1393 void InstructionSelector::VisitFloat64Max(Node* node) {
1399 DCHECK(IsSupported(ARMv8));
1400 VisitRRR(this, kArmFloat64Max, node); 1394 VisitRRR(this, kArmFloat64Max, node);
1401 } 1395 }
1402 1396
1403 void InstructionSelector::VisitFloat64SilenceNaN(Node* node) { 1397 void InstructionSelector::VisitFloat64SilenceNaN(Node* node) {
1404 VisitRR(this, kArmFloat64SilenceNaN, node); 1398 VisitRR(this, kArmFloat64SilenceNaN, node);
1405 } 1399 }
1406 1400
1407 void InstructionSelector::VisitFloat32Min(Node* node) {
1408 DCHECK(IsSupported(ARMv8));
1409 VisitRRR(this, kArmFloat32Min, node);
1410 }
1411
1412 void InstructionSelector::VisitFloat64Min(Node* node) { 1401 void InstructionSelector::VisitFloat64Min(Node* node) {
1413 DCHECK(IsSupported(ARMv8));
1414 VisitRRR(this, kArmFloat64Min, node); 1402 VisitRRR(this, kArmFloat64Min, node);
1415 } 1403 }
1416 1404
1417 void InstructionSelector::VisitFloat32Abs(Node* node) { 1405 void InstructionSelector::VisitFloat32Abs(Node* node) {
1418 VisitRR(this, kArmVabsF32, node); 1406 VisitRR(this, kArmVabsF32, node);
1419 } 1407 }
1420 1408
1421 1409
1422 void InstructionSelector::VisitFloat64Abs(Node* node) { 1410 void InstructionSelector::VisitFloat64Abs(Node* node) {
1423 VisitRR(this, kArmVabsF64, node); 1411 VisitRR(this, kArmVabsF64, node);
(...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after
2167 if (CpuFeatures::IsSupported(ARMv8)) { 2155 if (CpuFeatures::IsSupported(ARMv8)) {
2168 flags |= MachineOperatorBuilder::kFloat32RoundDown | 2156 flags |= MachineOperatorBuilder::kFloat32RoundDown |
2169 MachineOperatorBuilder::kFloat64RoundDown | 2157 MachineOperatorBuilder::kFloat64RoundDown |
2170 MachineOperatorBuilder::kFloat32RoundUp | 2158 MachineOperatorBuilder::kFloat32RoundUp |
2171 MachineOperatorBuilder::kFloat64RoundUp | 2159 MachineOperatorBuilder::kFloat64RoundUp |
2172 MachineOperatorBuilder::kFloat32RoundTruncate | 2160 MachineOperatorBuilder::kFloat32RoundTruncate |
2173 MachineOperatorBuilder::kFloat64RoundTruncate | 2161 MachineOperatorBuilder::kFloat64RoundTruncate |
2174 MachineOperatorBuilder::kFloat64RoundTiesAway | 2162 MachineOperatorBuilder::kFloat64RoundTiesAway |
2175 MachineOperatorBuilder::kFloat32RoundTiesEven | 2163 MachineOperatorBuilder::kFloat32RoundTiesEven |
2176 MachineOperatorBuilder::kFloat64RoundTiesEven | 2164 MachineOperatorBuilder::kFloat64RoundTiesEven |
2177 MachineOperatorBuilder::kFloat32Min |
2178 MachineOperatorBuilder::kFloat32Max |
2179 MachineOperatorBuilder::kFloat64Min |
2180 MachineOperatorBuilder::kFloat64Max |
2181 MachineOperatorBuilder::kFloat32Neg | 2165 MachineOperatorBuilder::kFloat32Neg |
2182 MachineOperatorBuilder::kFloat64Neg; 2166 MachineOperatorBuilder::kFloat64Neg;
2183 } 2167 }
2184 return flags; 2168 return flags;
2185 } 2169 }
2186 2170
2187 // static 2171 // static
2188 MachineOperatorBuilder::AlignmentRequirements 2172 MachineOperatorBuilder::AlignmentRequirements
2189 InstructionSelector::AlignmentRequirements() { 2173 InstructionSelector::AlignmentRequirements() {
2190 return MachineOperatorBuilder::AlignmentRequirements:: 2174 return MachineOperatorBuilder::AlignmentRequirements::
2191 FullUnalignedAccessSupport(); 2175 FullUnalignedAccessSupport();
2192 } 2176 }
2193 2177
2194 } // namespace compiler 2178 } // namespace compiler
2195 } // namespace internal 2179 } // namespace internal
2196 } // namespace v8 2180 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/arm/instruction-scheduler-arm.cc ('k') | src/compiler/arm64/code-generator-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698