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

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

Issue 1375253002: [WIP][turbofan] Instruction scheduler for Turbofan. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years 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
(Empty)
1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "src/compiler/instruction-scheduler.h"
6
7 namespace v8 {
8 namespace internal {
9 namespace compiler {
10
11 int InstructionScheduler::GetTargetInstructionFlags(
12 const Instruction* instr) const {
13 switch (instr->arch_opcode()) {
14 case kArmAdd:
15 case kArmAnd:
16 case kArmBic:
17 case kArmClz:
18 case kArmCmp:
19 case kArmCmn:
20 case kArmTst:
21 case kArmTeq:
22 case kArmOrr:
23 case kArmEor:
24 case kArmSub:
25 case kArmRsb:
26 case kArmMul:
27 case kArmMla:
28 case kArmMls:
29 case kArmSmmul:
30 case kArmSmmla:
31 case kArmUmull:
32 case kArmSdiv:
33 case kArmUdiv:
34 case kArmMov:
35 case kArmMvn:
36 case kArmBfc:
37 case kArmUbfx:
38 case kArmSxtb:
39 case kArmSxth:
40 case kArmSxtab:
41 case kArmSxtah:
42 case kArmUxtb:
43 case kArmUxth:
44 case kArmUxtab:
45 case kArmUxtah:
46 case kArmVcmpF32:
47 case kArmVaddF32:
48 case kArmVsubF32:
49 case kArmVmulF32:
50 case kArmVmlaF32:
51 case kArmVmlsF32:
52 case kArmVdivF32:
53 case kArmVabsF32:
54 case kArmVnegF32:
55 case kArmVsqrtF32:
56 case kArmVcmpF64:
57 case kArmVaddF64:
58 case kArmVsubF64:
59 case kArmVmulF64:
60 case kArmVmlaF64:
61 case kArmVmlsF64:
62 case kArmVdivF64:
63 case kArmVmodF64:
64 case kArmVabsF64:
65 case kArmVnegF64:
66 case kArmVsqrtF64:
67 case kArmVrintmF32:
68 case kArmVrintmF64:
69 case kArmVrintpF32:
70 case kArmVrintpF64:
71 case kArmVrintzF32:
72 case kArmVrintzF64:
73 case kArmVrintaF64:
74 case kArmVrintnF32:
75 case kArmVrintnF64:
76 case kArmVcvtF32F64:
77 case kArmVcvtF64F32:
78 case kArmVcvtF64S32:
79 case kArmVcvtF64U32:
80 case kArmVcvtS32F64:
81 case kArmVcvtU32F64:
82 case kArmVmovLowU32F64:
83 case kArmVmovLowF64U32:
84 case kArmVmovHighU32F64:
85 case kArmVmovHighF64U32:
86 case kArmVmovF64U32U32:
87 return kNoOpcodeFlags;
88
89 case kArmVldrF32:
90 case kArmVldrF64:
91 case kArmLdrb:
92 case kArmLdrsb:
93 case kArmLdrh:
94 case kArmLdrsh:
95 case kArmLdr:
96 return kIsLoadOperation;
97
98 case kArmVstrF32:
99 case kArmVstrF64:
100 case kArmStrb:
101 case kArmStrh:
102 case kArmStr:
103 case kArmPush:
104 case kArmPoke:
105 return kHasSideEffect;
106
107 #define CASE(Name) case k##Name:
108 COMMON_ARCH_OPCODE_LIST(CASE)
109 #undef CASE
110 // Already covered in architecture independent code.
111 UNREACHABLE();
112 }
113 }
114
115
116 int InstructionScheduler::GetInstructionLatency(const Instruction* instr) {
117 // TODO(all): Add instruction cost modeling.
118 return 1;
119 }
120
121 } // namespace compiler
122 } // namespace internal
123 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698