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

Side by Side Diff: src/compiler/wasm-compiler.cc

Issue 2804883008: [WASM SIMD] Implement horizontal add for float and integer types. (Closed)
Patch Set: Fix MIPS. Created 3 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
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 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 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/compiler/wasm-compiler.h" 5 #include "src/compiler/wasm-compiler.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "src/assembler-inl.h" 9 #include "src/assembler-inl.h"
10 #include "src/base/platform/elapsed-timer.h" 10 #include "src/base/platform/elapsed-timer.h"
(...skipping 3181 matching lines...) Expand 10 before | Expand all | Expand 10 after
3192 return graph()->NewNode(jsgraph()->machine()->F32x4Sqrt(), inputs[0]); 3192 return graph()->NewNode(jsgraph()->machine()->F32x4Sqrt(), inputs[0]);
3193 case wasm::kExprF32x4RecipApprox: 3193 case wasm::kExprF32x4RecipApprox:
3194 return graph()->NewNode(jsgraph()->machine()->F32x4RecipApprox(), 3194 return graph()->NewNode(jsgraph()->machine()->F32x4RecipApprox(),
3195 inputs[0]); 3195 inputs[0]);
3196 case wasm::kExprF32x4RecipSqrtApprox: 3196 case wasm::kExprF32x4RecipSqrtApprox:
3197 return graph()->NewNode(jsgraph()->machine()->F32x4RecipSqrtApprox(), 3197 return graph()->NewNode(jsgraph()->machine()->F32x4RecipSqrtApprox(),
3198 inputs[0]); 3198 inputs[0]);
3199 case wasm::kExprF32x4Add: 3199 case wasm::kExprF32x4Add:
3200 return graph()->NewNode(jsgraph()->machine()->F32x4Add(), inputs[0], 3200 return graph()->NewNode(jsgraph()->machine()->F32x4Add(), inputs[0],
3201 inputs[1]); 3201 inputs[1]);
3202 case wasm::kExprF32x4AddHoriz:
3203 return graph()->NewNode(jsgraph()->machine()->F32x4AddHoriz(), inputs[0],
3204 inputs[1]);
3202 case wasm::kExprF32x4Sub: 3205 case wasm::kExprF32x4Sub:
3203 return graph()->NewNode(jsgraph()->machine()->F32x4Sub(), inputs[0], 3206 return graph()->NewNode(jsgraph()->machine()->F32x4Sub(), inputs[0],
3204 inputs[1]); 3207 inputs[1]);
3205 case wasm::kExprF32x4Mul: 3208 case wasm::kExprF32x4Mul:
3206 return graph()->NewNode(jsgraph()->machine()->F32x4Mul(), inputs[0], 3209 return graph()->NewNode(jsgraph()->machine()->F32x4Mul(), inputs[0],
3207 inputs[1]); 3210 inputs[1]);
3208 case wasm::kExprF32x4Div: 3211 case wasm::kExprF32x4Div:
3209 return graph()->NewNode(jsgraph()->machine()->F32x4Div(), inputs[0], 3212 return graph()->NewNode(jsgraph()->machine()->F32x4Div(), inputs[0],
3210 inputs[1]); 3213 inputs[1]);
3211 case wasm::kExprF32x4Min: 3214 case wasm::kExprF32x4Min:
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
3250 return graph()->NewNode(jsgraph()->machine()->I32x4SConvertI16x8Low(), 3253 return graph()->NewNode(jsgraph()->machine()->I32x4SConvertI16x8Low(),
3251 inputs[0]); 3254 inputs[0]);
3252 case wasm::kExprI32x4SConvertI16x8High: 3255 case wasm::kExprI32x4SConvertI16x8High:
3253 return graph()->NewNode(jsgraph()->machine()->I32x4SConvertI16x8High(), 3256 return graph()->NewNode(jsgraph()->machine()->I32x4SConvertI16x8High(),
3254 inputs[0]); 3257 inputs[0]);
3255 case wasm::kExprI32x4Neg: 3258 case wasm::kExprI32x4Neg:
3256 return graph()->NewNode(jsgraph()->machine()->I32x4Neg(), inputs[0]); 3259 return graph()->NewNode(jsgraph()->machine()->I32x4Neg(), inputs[0]);
3257 case wasm::kExprI32x4Add: 3260 case wasm::kExprI32x4Add:
3258 return graph()->NewNode(jsgraph()->machine()->I32x4Add(), inputs[0], 3261 return graph()->NewNode(jsgraph()->machine()->I32x4Add(), inputs[0],
3259 inputs[1]); 3262 inputs[1]);
3263 case wasm::kExprI32x4AddHoriz:
3264 return graph()->NewNode(jsgraph()->machine()->I32x4AddHoriz(), inputs[0],
3265 inputs[1]);
3260 case wasm::kExprI32x4Sub: 3266 case wasm::kExprI32x4Sub:
3261 return graph()->NewNode(jsgraph()->machine()->I32x4Sub(), inputs[0], 3267 return graph()->NewNode(jsgraph()->machine()->I32x4Sub(), inputs[0],
3262 inputs[1]); 3268 inputs[1]);
3263 case wasm::kExprI32x4Mul: 3269 case wasm::kExprI32x4Mul:
3264 return graph()->NewNode(jsgraph()->machine()->I32x4Mul(), inputs[0], 3270 return graph()->NewNode(jsgraph()->machine()->I32x4Mul(), inputs[0],
3265 inputs[1]); 3271 inputs[1]);
3266 case wasm::kExprI32x4MinS: 3272 case wasm::kExprI32x4MinS:
3267 return graph()->NewNode(jsgraph()->machine()->I32x4MinS(), inputs[0], 3273 return graph()->NewNode(jsgraph()->machine()->I32x4MinS(), inputs[0],
3268 inputs[1]); 3274 inputs[1]);
3269 case wasm::kExprI32x4MaxS: 3275 case wasm::kExprI32x4MaxS:
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
3323 return graph()->NewNode(jsgraph()->machine()->I16x8Neg(), inputs[0]); 3329 return graph()->NewNode(jsgraph()->machine()->I16x8Neg(), inputs[0]);
3324 case wasm::kExprI16x8SConvertI32x4: 3330 case wasm::kExprI16x8SConvertI32x4:
3325 return graph()->NewNode(jsgraph()->machine()->I16x8SConvertI32x4(), 3331 return graph()->NewNode(jsgraph()->machine()->I16x8SConvertI32x4(),
3326 inputs[0], inputs[1]); 3332 inputs[0], inputs[1]);
3327 case wasm::kExprI16x8Add: 3333 case wasm::kExprI16x8Add:
3328 return graph()->NewNode(jsgraph()->machine()->I16x8Add(), inputs[0], 3334 return graph()->NewNode(jsgraph()->machine()->I16x8Add(), inputs[0],
3329 inputs[1]); 3335 inputs[1]);
3330 case wasm::kExprI16x8AddSaturateS: 3336 case wasm::kExprI16x8AddSaturateS:
3331 return graph()->NewNode(jsgraph()->machine()->I16x8AddSaturateS(), 3337 return graph()->NewNode(jsgraph()->machine()->I16x8AddSaturateS(),
3332 inputs[0], inputs[1]); 3338 inputs[0], inputs[1]);
3339 case wasm::kExprI16x8AddHoriz:
3340 return graph()->NewNode(jsgraph()->machine()->I16x8AddHoriz(), inputs[0],
3341 inputs[1]);
3333 case wasm::kExprI16x8Sub: 3342 case wasm::kExprI16x8Sub:
3334 return graph()->NewNode(jsgraph()->machine()->I16x8Sub(), inputs[0], 3343 return graph()->NewNode(jsgraph()->machine()->I16x8Sub(), inputs[0],
3335 inputs[1]); 3344 inputs[1]);
3336 case wasm::kExprI16x8SubSaturateS: 3345 case wasm::kExprI16x8SubSaturateS:
3337 return graph()->NewNode(jsgraph()->machine()->I16x8SubSaturateS(), 3346 return graph()->NewNode(jsgraph()->machine()->I16x8SubSaturateS(),
3338 inputs[0], inputs[1]); 3347 inputs[0], inputs[1]);
3339 case wasm::kExprI16x8Mul: 3348 case wasm::kExprI16x8Mul:
3340 return graph()->NewNode(jsgraph()->machine()->I16x8Mul(), inputs[0], 3349 return graph()->NewNode(jsgraph()->machine()->I16x8Mul(), inputs[0],
3341 inputs[1]); 3350 inputs[1]);
3342 case wasm::kExprI16x8MinS: 3351 case wasm::kExprI16x8MinS:
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
3402 return graph()->NewNode(jsgraph()->machine()->I8x16Neg(), inputs[0]); 3411 return graph()->NewNode(jsgraph()->machine()->I8x16Neg(), inputs[0]);
3403 case wasm::kExprI8x16SConvertI16x8: 3412 case wasm::kExprI8x16SConvertI16x8:
3404 return graph()->NewNode(jsgraph()->machine()->I8x16SConvertI16x8(), 3413 return graph()->NewNode(jsgraph()->machine()->I8x16SConvertI16x8(),
3405 inputs[0], inputs[1]); 3414 inputs[0], inputs[1]);
3406 case wasm::kExprI8x16Add: 3415 case wasm::kExprI8x16Add:
3407 return graph()->NewNode(jsgraph()->machine()->I8x16Add(), inputs[0], 3416 return graph()->NewNode(jsgraph()->machine()->I8x16Add(), inputs[0],
3408 inputs[1]); 3417 inputs[1]);
3409 case wasm::kExprI8x16AddSaturateS: 3418 case wasm::kExprI8x16AddSaturateS:
3410 return graph()->NewNode(jsgraph()->machine()->I8x16AddSaturateS(), 3419 return graph()->NewNode(jsgraph()->machine()->I8x16AddSaturateS(),
3411 inputs[0], inputs[1]); 3420 inputs[0], inputs[1]);
3421 case wasm::kExprI8x16AddHoriz:
3422 return graph()->NewNode(jsgraph()->machine()->I8x16AddHoriz(), inputs[0],
3423 inputs[1]);
3412 case wasm::kExprI8x16Sub: 3424 case wasm::kExprI8x16Sub:
3413 return graph()->NewNode(jsgraph()->machine()->I8x16Sub(), inputs[0], 3425 return graph()->NewNode(jsgraph()->machine()->I8x16Sub(), inputs[0],
3414 inputs[1]); 3426 inputs[1]);
3415 case wasm::kExprI8x16SubSaturateS: 3427 case wasm::kExprI8x16SubSaturateS:
3416 return graph()->NewNode(jsgraph()->machine()->I8x16SubSaturateS(), 3428 return graph()->NewNode(jsgraph()->machine()->I8x16SubSaturateS(),
3417 inputs[0], inputs[1]); 3429 inputs[0], inputs[1]);
3418 case wasm::kExprI8x16Mul: 3430 case wasm::kExprI8x16Mul:
3419 return graph()->NewNode(jsgraph()->machine()->I8x16Mul(), inputs[0], 3431 return graph()->NewNode(jsgraph()->machine()->I8x16Mul(), inputs[0],
3420 inputs[1]); 3432 inputs[1]);
3421 case wasm::kExprI8x16MinS: 3433 case wasm::kExprI8x16MinS:
(...skipping 722 matching lines...) Expand 10 before | Expand all | Expand 10 after
4144 wasm::ModuleBytesEnv* module_env, const wasm::WasmFunction* function) { 4156 wasm::ModuleBytesEnv* module_env, const wasm::WasmFunction* function) {
4145 WasmCompilationUnit unit(isolate, module_env, function); 4157 WasmCompilationUnit unit(isolate, module_env, function);
4146 unit.InitializeHandles(); 4158 unit.InitializeHandles();
4147 unit.ExecuteCompilation(); 4159 unit.ExecuteCompilation();
4148 return unit.FinishCompilation(thrower); 4160 return unit.FinishCompilation(thrower);
4149 } 4161 }
4150 4162
4151 } // namespace compiler 4163 } // namespace compiler
4152 } // namespace internal 4164 } // namespace internal
4153 } // namespace v8 4165 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698