OLD | NEW |
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/compiler/instruction-selector-impl.h" | 6 #include "src/compiler/instruction-selector-impl.h" |
7 #include "src/compiler/node-matchers.h" | 7 #include "src/compiler/node-matchers.h" |
8 #include "src/compiler/node-properties.h" | 8 #include "src/compiler/node-properties.h" |
9 #include "src/ppc/frames-ppc.h" | 9 #include "src/ppc/frames-ppc.h" |
10 | 10 |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 // Shared routine for multiple binary operations. | 167 // Shared routine for multiple binary operations. |
168 template <typename Matcher> | 168 template <typename Matcher> |
169 void VisitBinop(InstructionSelector* selector, Node* node, | 169 void VisitBinop(InstructionSelector* selector, Node* node, |
170 InstructionCode opcode, ImmediateMode operand_mode) { | 170 InstructionCode opcode, ImmediateMode operand_mode) { |
171 FlagsContinuation cont; | 171 FlagsContinuation cont; |
172 VisitBinop<Matcher>(selector, node, opcode, operand_mode, &cont); | 172 VisitBinop<Matcher>(selector, node, opcode, operand_mode, &cont); |
173 } | 173 } |
174 | 174 |
175 } // namespace | 175 } // namespace |
176 | 176 |
177 void InstructionSelector::VisitStackSlot(Node* node) { | |
178 StackSlotRepresentation rep = StackSlotRepresentationOf(node->op()); | |
179 int slot = frame_->AllocateSpillSlot(rep.size()); | |
180 OperandGenerator g(this); | |
181 | |
182 Emit(kArchStackSlot, g.DefineAsRegister(node), | |
183 sequence()->AddImmediate(Constant(slot)), 0, nullptr); | |
184 } | |
185 | 177 |
186 void InstructionSelector::VisitLoad(Node* node) { | 178 void InstructionSelector::VisitLoad(Node* node) { |
187 LoadRepresentation load_rep = LoadRepresentationOf(node->op()); | 179 LoadRepresentation load_rep = LoadRepresentationOf(node->op()); |
188 PPCOperandGenerator g(this); | 180 PPCOperandGenerator g(this); |
189 Node* base = node->InputAt(0); | 181 Node* base = node->InputAt(0); |
190 Node* offset = node->InputAt(1); | 182 Node* offset = node->InputAt(1); |
191 ArchOpcode opcode = kArchNop; | 183 ArchOpcode opcode = kArchNop; |
192 ImmediateMode mode = kInt16Imm; | 184 ImmediateMode mode = kInt16Imm; |
193 switch (load_rep.representation()) { | 185 switch (load_rep.representation()) { |
194 case MachineRepresentation::kFloat32: | 186 case MachineRepresentation::kFloat32: |
(...skipping 2004 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2199 // static | 2191 // static |
2200 MachineOperatorBuilder::AlignmentRequirements | 2192 MachineOperatorBuilder::AlignmentRequirements |
2201 InstructionSelector::AlignmentRequirements() { | 2193 InstructionSelector::AlignmentRequirements() { |
2202 return MachineOperatorBuilder::AlignmentRequirements:: | 2194 return MachineOperatorBuilder::AlignmentRequirements:: |
2203 FullUnalignedAccessSupport(); | 2195 FullUnalignedAccessSupport(); |
2204 } | 2196 } |
2205 | 2197 |
2206 } // namespace compiler | 2198 } // namespace compiler |
2207 } // namespace internal | 2199 } // namespace internal |
2208 } // namespace v8 | 2200 } // namespace v8 |
OLD | NEW |