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

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

Issue 2668013003: [Turbofan] Add more integer SIMD operations for ARM. (Closed)
Patch Set: Fix compile. Created 3 years, 10 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') | src/compiler/code-generator-impl.h » ('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 2172 matching lines...) Expand 10 before | Expand all | Expand 10 after
2183 V(Float32x4NotEqual) \ 2183 V(Float32x4NotEqual) \
2184 V(Int32x4Add) \ 2184 V(Int32x4Add) \
2185 V(Int32x4Sub) \ 2185 V(Int32x4Sub) \
2186 V(Int32x4Mul) \ 2186 V(Int32x4Mul) \
2187 V(Int32x4Min) \ 2187 V(Int32x4Min) \
2188 V(Int32x4Max) \ 2188 V(Int32x4Max) \
2189 V(Int32x4Equal) \ 2189 V(Int32x4Equal) \
2190 V(Int32x4NotEqual) \ 2190 V(Int32x4NotEqual) \
2191 V(Int32x4GreaterThan) \ 2191 V(Int32x4GreaterThan) \
2192 V(Int32x4GreaterThanOrEqual) \ 2192 V(Int32x4GreaterThanOrEqual) \
2193 V(Uint32x4Min) \
2194 V(Uint32x4Max) \
2193 V(Uint32x4GreaterThan) \ 2195 V(Uint32x4GreaterThan) \
2194 V(Uint32x4GreaterThanOrEqual) \ 2196 V(Uint32x4GreaterThanOrEqual) \
2195 V(Int16x8Add) \ 2197 V(Int16x8Add) \
2198 V(Int16x8AddSaturate) \
2196 V(Int16x8Sub) \ 2199 V(Int16x8Sub) \
2200 V(Int16x8SubSaturate) \
2197 V(Int16x8Mul) \ 2201 V(Int16x8Mul) \
2198 V(Int16x8Min) \ 2202 V(Int16x8Min) \
2199 V(Int16x8Max) \ 2203 V(Int16x8Max) \
2200 V(Int16x8Equal) \ 2204 V(Int16x8Equal) \
2201 V(Int16x8NotEqual) \ 2205 V(Int16x8NotEqual) \
2202 V(Int16x8GreaterThan) \ 2206 V(Int16x8GreaterThan) \
2203 V(Int16x8GreaterThanOrEqual) \ 2207 V(Int16x8GreaterThanOrEqual) \
2208 V(Uint16x8AddSaturate) \
2209 V(Uint16x8SubSaturate) \
2210 V(Uint16x8Min) \
2211 V(Uint16x8Max) \
2204 V(Uint16x8GreaterThan) \ 2212 V(Uint16x8GreaterThan) \
2205 V(Uint16x8GreaterThanOrEqual) \ 2213 V(Uint16x8GreaterThanOrEqual) \
2206 V(Int8x16Add) \ 2214 V(Int8x16Add) \
2215 V(Int8x16AddSaturate) \
2207 V(Int8x16Sub) \ 2216 V(Int8x16Sub) \
2217 V(Int8x16SubSaturate) \
2208 V(Int8x16Mul) \ 2218 V(Int8x16Mul) \
2209 V(Int8x16Min) \ 2219 V(Int8x16Min) \
2210 V(Int8x16Max) \ 2220 V(Int8x16Max) \
2211 V(Int8x16Equal) \ 2221 V(Int8x16Equal) \
2212 V(Int8x16NotEqual) \ 2222 V(Int8x16NotEqual) \
2213 V(Int8x16GreaterThan) \ 2223 V(Int8x16GreaterThan) \
2214 V(Int8x16GreaterThanOrEqual) \ 2224 V(Int8x16GreaterThanOrEqual) \
2225 V(Uint8x16AddSaturate) \
2226 V(Uint8x16SubSaturate) \
2227 V(Uint8x16Min) \
2228 V(Uint8x16Max) \
2215 V(Uint8x16GreaterThan) \ 2229 V(Uint8x16GreaterThan) \
2216 V(Uint8x16GreaterThanOrEqual) 2230 V(Uint8x16GreaterThanOrEqual)
2217 2231
2232 #define SIMD_SHIFT_OP_LIST(V) \
2233 V(Int32x4ShiftLeftByScalar) \
2234 V(Int32x4ShiftRightByScalar) \
2235 V(Uint32x4ShiftRightByScalar) \
2236 V(Int16x8ShiftLeftByScalar) \
2237 V(Int16x8ShiftRightByScalar) \
2238 V(Uint16x8ShiftRightByScalar) \
2239 V(Int8x16ShiftLeftByScalar) \
2240 V(Int8x16ShiftRightByScalar) \
2241 V(Uint8x16ShiftRightByScalar)
2242
2218 #define SIMD_VISIT_SPLAT(Type) \ 2243 #define SIMD_VISIT_SPLAT(Type) \
2219 void InstructionSelector::VisitCreate##Type(Node* node) { \ 2244 void InstructionSelector::VisitCreate##Type(Node* node) { \
2220 VisitRR(this, kArm##Type##Splat, node); \ 2245 VisitRR(this, kArm##Type##Splat, node); \
2221 } 2246 }
2222 SIMD_TYPE_LIST(SIMD_VISIT_SPLAT) 2247 SIMD_TYPE_LIST(SIMD_VISIT_SPLAT)
2223 #undef SIMD_VISIT_SPLAT 2248 #undef SIMD_VISIT_SPLAT
2224 2249
2225 #define SIMD_VISIT_EXTRACT_LANE(Type) \ 2250 #define SIMD_VISIT_EXTRACT_LANE(Type) \
2226 void InstructionSelector::Visit##Type##ExtractLane(Node* node) { \ 2251 void InstructionSelector::Visit##Type##ExtractLane(Node* node) { \
2227 VisitRRI(this, kArm##Type##ExtractLane, node); \ 2252 VisitRRI(this, kArm##Type##ExtractLane, node); \
(...skipping 15 matching lines...) Expand all
2243 SIMD_UNOP_LIST(SIMD_VISIT_UNOP) 2268 SIMD_UNOP_LIST(SIMD_VISIT_UNOP)
2244 #undef SIMD_VISIT_UNOP 2269 #undef SIMD_VISIT_UNOP
2245 2270
2246 #define SIMD_VISIT_BINOP(Name) \ 2271 #define SIMD_VISIT_BINOP(Name) \
2247 void InstructionSelector::Visit##Name(Node* node) { \ 2272 void InstructionSelector::Visit##Name(Node* node) { \
2248 VisitRRR(this, kArm##Name, node); \ 2273 VisitRRR(this, kArm##Name, node); \
2249 } 2274 }
2250 SIMD_BINOP_LIST(SIMD_VISIT_BINOP) 2275 SIMD_BINOP_LIST(SIMD_VISIT_BINOP)
2251 #undef SIMD_VISIT_BINOP 2276 #undef SIMD_VISIT_BINOP
2252 2277
2278 #define SIMD_VISIT_SHIFT_OP(Name) \
2279 void InstructionSelector::Visit##Name(Node* node) { \
2280 VisitRRI(this, kArm##Name, node); \
2281 }
2282 SIMD_SHIFT_OP_LIST(SIMD_VISIT_SHIFT_OP)
2283 #undef SIMD_VISIT_SHIFT_OP
2284
2253 void InstructionSelector::VisitSimd32x4Select(Node* node) { 2285 void InstructionSelector::VisitSimd32x4Select(Node* node) {
2254 ArmOperandGenerator g(this); 2286 ArmOperandGenerator g(this);
2255 Emit(kArmSimd32x4Select, g.DefineAsRegister(node), 2287 Emit(kArmSimd32x4Select, g.DefineAsRegister(node),
2256 g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1)), 2288 g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1)),
2257 g.UseRegister(node->InputAt(2))); 2289 g.UseRegister(node->InputAt(2)));
2258 } 2290 }
2259 2291
2260 // static 2292 // static
2261 MachineOperatorBuilder::Flags 2293 MachineOperatorBuilder::Flags
2262 InstructionSelector::SupportedMachineOperatorFlags() { 2294 InstructionSelector::SupportedMachineOperatorFlags() {
(...skipping 27 matching lines...) Expand all
2290 Vector<MachineType> req_aligned = Vector<MachineType>::New(2); 2322 Vector<MachineType> req_aligned = Vector<MachineType>::New(2);
2291 req_aligned[0] = MachineType::Float32(); 2323 req_aligned[0] = MachineType::Float32();
2292 req_aligned[1] = MachineType::Float64(); 2324 req_aligned[1] = MachineType::Float64();
2293 return MachineOperatorBuilder::AlignmentRequirements:: 2325 return MachineOperatorBuilder::AlignmentRequirements::
2294 SomeUnalignedAccessUnsupported(req_aligned, req_aligned); 2326 SomeUnalignedAccessUnsupported(req_aligned, req_aligned);
2295 } 2327 }
2296 2328
2297 } // namespace compiler 2329 } // namespace compiler
2298 } // namespace internal 2330 } // namespace internal
2299 } // namespace v8 2331 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/arm/instruction-scheduler-arm.cc ('k') | src/compiler/code-generator-impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698