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

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: Addressed issues and add support for a few other platforms. 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 kArmVrintmF64:
68 case kArmVrintpF64:
69 case kArmVrintzF64:
70 case kArmVrintaF64:
71 case kArmVrintnF64:
72 case kArmVcvtF32F64:
73 case kArmVcvtF64F32:
74 case kArmVcvtF64S32:
75 case kArmVcvtF64U32:
76 case kArmVcvtS32F64:
77 case kArmVcvtU32F64:
78 case kArmVmovLowU32F64:
79 case kArmVmovLowF64U32:
80 case kArmVmovHighU32F64:
81 case kArmVmovHighF64U32:
82 case kArmVmovF64U32U32:
83 return kNoOpcodeFlags;
84
85 case kArmVldrF32:
86 case kArmVldrF64:
87 case kArmLdrb:
88 case kArmLdrsb:
89 case kArmLdrh:
90 case kArmLdrsh:
91 case kArmLdr:
92 return kIsLoadOperation;
93
94 case kArmVstrF32:
95 case kArmVstrF64:
96 case kArmStrb:
97 case kArmStrh:
98 case kArmStr:
99 case kArmPush:
100 case kArmPoke:
101 return kHasSideEffect;
102
103 #define CASE(Name) case k##Name:
104 COMMON_ARCH_OPCODE_LIST(CASE)
105 #undef CASE
106 // Already covered in architecture independent code.
107 UNREACHABLE();
108 }
109 }
110
111
112 int InstructionScheduler::GetInstructionLatency(const Instruction* instr) {
113 // TODO(all): Add instruction cost modeling.
114 return 1;
115 }
116
117 } // namespace compiler
118 } // namespace internal
119 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698