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

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

Issue 1862993002: [arm] Implement Float(32|64)(Min|Max) using vsel. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 8 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') | test/cctest/test-assembler-arm.cc » ('j') | 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 1267 matching lines...) Expand 10 before | Expand all | Expand 10 after
1278 VisitRRR(this, kArmVdivF64, node); 1278 VisitRRR(this, kArmVdivF64, node);
1279 } 1279 }
1280 1280
1281 1281
1282 void InstructionSelector::VisitFloat64Mod(Node* node) { 1282 void InstructionSelector::VisitFloat64Mod(Node* node) {
1283 ArmOperandGenerator g(this); 1283 ArmOperandGenerator g(this);
1284 Emit(kArmVmodF64, g.DefineAsFixed(node, d0), g.UseFixed(node->InputAt(0), d0), 1284 Emit(kArmVmodF64, g.DefineAsFixed(node, d0), g.UseFixed(node->InputAt(0), d0),
1285 g.UseFixed(node->InputAt(1), d1))->MarkAsCall(); 1285 g.UseFixed(node->InputAt(1), d1))->MarkAsCall();
1286 } 1286 }
1287 1287
1288 void InstructionSelector::VisitFloat32Max(Node* node) {
1289 DCHECK(IsSupported(ARMv8));
1290 VisitRRR(this, kArmFloat32Max, node);
1291 }
1288 1292
1289 void InstructionSelector::VisitFloat32Max(Node* node) { UNREACHABLE(); } 1293 void InstructionSelector::VisitFloat64Max(Node* node) {
1294 DCHECK(IsSupported(ARMv8));
1295 VisitRRR(this, kArmFloat64Max, node);
1296 }
1290 1297
1298 void InstructionSelector::VisitFloat32Min(Node* node) {
1299 DCHECK(IsSupported(ARMv8));
1300 VisitRRR(this, kArmFloat32Min, node);
1301 }
1291 1302
1292 void InstructionSelector::VisitFloat64Max(Node* node) { UNREACHABLE(); } 1303 void InstructionSelector::VisitFloat64Min(Node* node) {
1293 1304 DCHECK(IsSupported(ARMv8));
1294 1305 VisitRRR(this, kArmFloat64Min, node);
1295 void InstructionSelector::VisitFloat32Min(Node* node) { UNREACHABLE(); } 1306 }
1296
1297
1298 void InstructionSelector::VisitFloat64Min(Node* node) { UNREACHABLE(); }
1299
1300 1307
1301 void InstructionSelector::VisitFloat32Abs(Node* node) { 1308 void InstructionSelector::VisitFloat32Abs(Node* node) {
1302 VisitRR(this, kArmVabsF32, node); 1309 VisitRR(this, kArmVabsF32, node);
1303 } 1310 }
1304 1311
1305 1312
1306 void InstructionSelector::VisitFloat64Abs(Node* node) { 1313 void InstructionSelector::VisitFloat64Abs(Node* node) {
1307 VisitRR(this, kArmVabsF64, node); 1314 VisitRR(this, kArmVabsF64, node);
1308 } 1315 }
1309 1316
(...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after
1819 } 1826 }
1820 if (CpuFeatures::IsSupported(ARMv8)) { 1827 if (CpuFeatures::IsSupported(ARMv8)) {
1821 flags |= MachineOperatorBuilder::kFloat32RoundDown | 1828 flags |= MachineOperatorBuilder::kFloat32RoundDown |
1822 MachineOperatorBuilder::kFloat64RoundDown | 1829 MachineOperatorBuilder::kFloat64RoundDown |
1823 MachineOperatorBuilder::kFloat32RoundUp | 1830 MachineOperatorBuilder::kFloat32RoundUp |
1824 MachineOperatorBuilder::kFloat64RoundUp | 1831 MachineOperatorBuilder::kFloat64RoundUp |
1825 MachineOperatorBuilder::kFloat32RoundTruncate | 1832 MachineOperatorBuilder::kFloat32RoundTruncate |
1826 MachineOperatorBuilder::kFloat64RoundTruncate | 1833 MachineOperatorBuilder::kFloat64RoundTruncate |
1827 MachineOperatorBuilder::kFloat64RoundTiesAway | 1834 MachineOperatorBuilder::kFloat64RoundTiesAway |
1828 MachineOperatorBuilder::kFloat32RoundTiesEven | 1835 MachineOperatorBuilder::kFloat32RoundTiesEven |
1829 MachineOperatorBuilder::kFloat64RoundTiesEven; 1836 MachineOperatorBuilder::kFloat64RoundTiesEven |
1837 MachineOperatorBuilder::kFloat32Min |
1838 MachineOperatorBuilder::kFloat32Max |
1839 MachineOperatorBuilder::kFloat64Min |
1840 MachineOperatorBuilder::kFloat64Max;
1830 } 1841 }
1831 return flags; 1842 return flags;
1832 } 1843 }
1833 1844
1834 } // namespace compiler 1845 } // namespace compiler
1835 } // namespace internal 1846 } // namespace internal
1836 } // namespace v8 1847 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/arm/instruction-scheduler-arm.cc ('k') | test/cctest/test-assembler-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698