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

Side by Side Diff: src/wasm/wasm-opcodes.h

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 #ifndef V8_WASM_OPCODES_H_ 5 #ifndef V8_WASM_OPCODES_H_
6 #define V8_WASM_OPCODES_H_ 6 #define V8_WASM_OPCODES_H_
7 7
8 #include "src/globals.h" 8 #include "src/globals.h"
9 #include "src/machine-type.h" 9 #include "src/machine-type.h"
10 #include "src/runtime/runtime.h" 10 #include "src/runtime/runtime.h"
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 V(I32AsmjsUConvertF64, 0xe3, i_d) 283 V(I32AsmjsUConvertF64, 0xe3, i_d)
284 284
285 #define FOREACH_SIMD_0_OPERAND_OPCODE(V) \ 285 #define FOREACH_SIMD_0_OPERAND_OPCODE(V) \
286 V(F32x4Splat, 0xe500, s_f) \ 286 V(F32x4Splat, 0xe500, s_f) \
287 V(F32x4Abs, 0xe503, s_s) \ 287 V(F32x4Abs, 0xe503, s_s) \
288 V(F32x4Neg, 0xe504, s_s) \ 288 V(F32x4Neg, 0xe504, s_s) \
289 V(F32x4Sqrt, 0xe505, s_s) \ 289 V(F32x4Sqrt, 0xe505, s_s) \
290 V(F32x4RecipApprox, 0xe506, s_s) \ 290 V(F32x4RecipApprox, 0xe506, s_s) \
291 V(F32x4RecipSqrtApprox, 0xe507, s_s) \ 291 V(F32x4RecipSqrtApprox, 0xe507, s_s) \
292 V(F32x4Add, 0xe508, s_ss) \ 292 V(F32x4Add, 0xe508, s_ss) \
293 V(F32x4AddHoriz, 0xe5b9, s_ss) \
georgia.kouveli 2017/04/20 14:53:06 Perhaps pairwise add would be a better name than h
bbudge 2017/04/21 20:18:58 Intel and MIPS naming is horizontal, though they a
293 V(F32x4Sub, 0xe509, s_ss) \ 294 V(F32x4Sub, 0xe509, s_ss) \
294 V(F32x4Mul, 0xe50a, s_ss) \ 295 V(F32x4Mul, 0xe50a, s_ss) \
295 V(F32x4Div, 0xe50b, s_ss) \ 296 V(F32x4Div, 0xe50b, s_ss) \
296 V(F32x4Min, 0xe50c, s_ss) \ 297 V(F32x4Min, 0xe50c, s_ss) \
297 V(F32x4Max, 0xe50d, s_ss) \ 298 V(F32x4Max, 0xe50d, s_ss) \
298 V(F32x4MinNum, 0xe50e, s_ss) \ 299 V(F32x4MinNum, 0xe50e, s_ss) \
299 V(F32x4MaxNum, 0xe50f, s_ss) \ 300 V(F32x4MaxNum, 0xe50f, s_ss) \
300 V(F32x4RecipRefine, 0xe592, s_ss) \ 301 V(F32x4RecipRefine, 0xe592, s_ss) \
301 V(F32x4RecipSqrtRefine, 0xe593, s_ss) \ 302 V(F32x4RecipSqrtRefine, 0xe593, s_ss) \
302 V(F32x4Eq, 0xe510, s1x4_ss) \ 303 V(F32x4Eq, 0xe510, s1x4_ss) \
303 V(F32x4Ne, 0xe511, s1x4_ss) \ 304 V(F32x4Ne, 0xe511, s1x4_ss) \
304 V(F32x4Lt, 0xe512, s1x4_ss) \ 305 V(F32x4Lt, 0xe512, s1x4_ss) \
305 V(F32x4Le, 0xe513, s1x4_ss) \ 306 V(F32x4Le, 0xe513, s1x4_ss) \
306 V(F32x4Gt, 0xe514, s1x4_ss) \ 307 V(F32x4Gt, 0xe514, s1x4_ss) \
307 V(F32x4Ge, 0xe515, s1x4_ss) \ 308 V(F32x4Ge, 0xe515, s1x4_ss) \
308 V(F32x4SConvertI32x4, 0xe519, s_s) \ 309 V(F32x4SConvertI32x4, 0xe519, s_s) \
309 V(F32x4UConvertI32x4, 0xe51a, s_s) \ 310 V(F32x4UConvertI32x4, 0xe51a, s_s) \
310 V(I32x4Splat, 0xe51b, s_i) \ 311 V(I32x4Splat, 0xe51b, s_i) \
311 V(I32x4Neg, 0xe51e, s_s) \ 312 V(I32x4Neg, 0xe51e, s_s) \
312 V(I32x4Add, 0xe51f, s_ss) \ 313 V(I32x4Add, 0xe51f, s_ss) \
314 V(I32x4AddHoriz, 0xe5ba, s_ss) \
313 V(I32x4Sub, 0xe520, s_ss) \ 315 V(I32x4Sub, 0xe520, s_ss) \
314 V(I32x4Mul, 0xe521, s_ss) \ 316 V(I32x4Mul, 0xe521, s_ss) \
315 V(I32x4MinS, 0xe522, s_ss) \ 317 V(I32x4MinS, 0xe522, s_ss) \
316 V(I32x4MaxS, 0xe523, s_ss) \ 318 V(I32x4MaxS, 0xe523, s_ss) \
317 V(I32x4Eq, 0xe526, s1x4_ss) \ 319 V(I32x4Eq, 0xe526, s1x4_ss) \
318 V(I32x4Ne, 0xe527, s1x4_ss) \ 320 V(I32x4Ne, 0xe527, s1x4_ss) \
319 V(I32x4LtS, 0xe528, s1x4_ss) \ 321 V(I32x4LtS, 0xe528, s1x4_ss) \
320 V(I32x4LeS, 0xe529, s1x4_ss) \ 322 V(I32x4LeS, 0xe529, s1x4_ss) \
321 V(I32x4GtS, 0xe52a, s1x4_ss) \ 323 V(I32x4GtS, 0xe52a, s1x4_ss) \
322 V(I32x4GeS, 0xe52b, s1x4_ss) \ 324 V(I32x4GeS, 0xe52b, s1x4_ss) \
323 V(I32x4SConvertF32x4, 0xe52f, s_s) \ 325 V(I32x4SConvertF32x4, 0xe52f, s_s) \
324 V(I32x4UConvertF32x4, 0xe537, s_s) \ 326 V(I32x4UConvertF32x4, 0xe537, s_s) \
325 V(I32x4SConvertI16x8Low, 0xe594, s_s) \ 327 V(I32x4SConvertI16x8Low, 0xe594, s_s) \
326 V(I32x4SConvertI16x8High, 0xe595, s_s) \ 328 V(I32x4SConvertI16x8High, 0xe595, s_s) \
327 V(I32x4UConvertI16x8Low, 0xe596, s_s) \ 329 V(I32x4UConvertI16x8Low, 0xe596, s_s) \
328 V(I32x4UConvertI16x8High, 0xe597, s_s) \ 330 V(I32x4UConvertI16x8High, 0xe597, s_s) \
329 V(I32x4MinU, 0xe530, s_ss) \ 331 V(I32x4MinU, 0xe530, s_ss) \
330 V(I32x4MaxU, 0xe531, s_ss) \ 332 V(I32x4MaxU, 0xe531, s_ss) \
331 V(I32x4LtU, 0xe533, s1x4_ss) \ 333 V(I32x4LtU, 0xe533, s1x4_ss) \
332 V(I32x4LeU, 0xe534, s1x4_ss) \ 334 V(I32x4LeU, 0xe534, s1x4_ss) \
333 V(I32x4GtU, 0xe535, s1x4_ss) \ 335 V(I32x4GtU, 0xe535, s1x4_ss) \
334 V(I32x4GeU, 0xe536, s1x4_ss) \ 336 V(I32x4GeU, 0xe536, s1x4_ss) \
335 V(I16x8Splat, 0xe538, s_i) \ 337 V(I16x8Splat, 0xe538, s_i) \
336 V(I16x8Neg, 0xe53b, s_s) \ 338 V(I16x8Neg, 0xe53b, s_s) \
337 V(I16x8Add, 0xe53c, s_ss) \ 339 V(I16x8Add, 0xe53c, s_ss) \
338 V(I16x8AddSaturateS, 0xe53d, s_ss) \ 340 V(I16x8AddSaturateS, 0xe53d, s_ss) \
341 V(I16x8AddHoriz, 0xe5bb, s_ss) \
339 V(I16x8Sub, 0xe53e, s_ss) \ 342 V(I16x8Sub, 0xe53e, s_ss) \
340 V(I16x8SubSaturateS, 0xe53f, s_ss) \ 343 V(I16x8SubSaturateS, 0xe53f, s_ss) \
341 V(I16x8Mul, 0xe540, s_ss) \ 344 V(I16x8Mul, 0xe540, s_ss) \
342 V(I16x8MinS, 0xe541, s_ss) \ 345 V(I16x8MinS, 0xe541, s_ss) \
343 V(I16x8MaxS, 0xe542, s_ss) \ 346 V(I16x8MaxS, 0xe542, s_ss) \
344 V(I16x8Eq, 0xe545, s1x8_ss) \ 347 V(I16x8Eq, 0xe545, s1x8_ss) \
345 V(I16x8Ne, 0xe546, s1x8_ss) \ 348 V(I16x8Ne, 0xe546, s1x8_ss) \
346 V(I16x8LtS, 0xe547, s1x8_ss) \ 349 V(I16x8LtS, 0xe547, s1x8_ss) \
347 V(I16x8LeS, 0xe548, s1x8_ss) \ 350 V(I16x8LeS, 0xe548, s1x8_ss) \
348 V(I16x8GtS, 0xe549, s1x8_ss) \ 351 V(I16x8GtS, 0xe549, s1x8_ss) \
349 V(I16x8GeS, 0xe54a, s1x8_ss) \ 352 V(I16x8GeS, 0xe54a, s1x8_ss) \
350 V(I16x8AddSaturateU, 0xe54e, s_ss) \ 353 V(I16x8AddSaturateU, 0xe54e, s_ss) \
351 V(I16x8SubSaturateU, 0xe54f, s_ss) \ 354 V(I16x8SubSaturateU, 0xe54f, s_ss) \
352 V(I16x8MinU, 0xe550, s_ss) \ 355 V(I16x8MinU, 0xe550, s_ss) \
353 V(I16x8MaxU, 0xe551, s_ss) \ 356 V(I16x8MaxU, 0xe551, s_ss) \
354 V(I16x8LtU, 0xe553, s1x8_ss) \ 357 V(I16x8LtU, 0xe553, s1x8_ss) \
355 V(I16x8LeU, 0xe554, s1x8_ss) \ 358 V(I16x8LeU, 0xe554, s1x8_ss) \
356 V(I16x8GtU, 0xe555, s1x8_ss) \ 359 V(I16x8GtU, 0xe555, s1x8_ss) \
357 V(I16x8GeU, 0xe556, s1x8_ss) \ 360 V(I16x8GeU, 0xe556, s1x8_ss) \
358 V(I16x8SConvertI32x4, 0xe598, s_ss) \ 361 V(I16x8SConvertI32x4, 0xe598, s_ss) \
359 V(I16x8UConvertI32x4, 0xe599, s_ss) \ 362 V(I16x8UConvertI32x4, 0xe599, s_ss) \
360 V(I16x8SConvertI8x16Low, 0xe59a, s_s) \ 363 V(I16x8SConvertI8x16Low, 0xe59a, s_s) \
361 V(I16x8SConvertI8x16High, 0xe59b, s_s) \ 364 V(I16x8SConvertI8x16High, 0xe59b, s_s) \
362 V(I16x8UConvertI8x16Low, 0xe59c, s_s) \ 365 V(I16x8UConvertI8x16Low, 0xe59c, s_s) \
363 V(I16x8UConvertI8x16High, 0xe59d, s_s) \ 366 V(I16x8UConvertI8x16High, 0xe59d, s_s) \
364 V(I8x16Splat, 0xe557, s_i) \ 367 V(I8x16Splat, 0xe557, s_i) \
365 V(I8x16Neg, 0xe55a, s_s) \ 368 V(I8x16Neg, 0xe55a, s_s) \
366 V(I8x16Add, 0xe55b, s_ss) \ 369 V(I8x16Add, 0xe55b, s_ss) \
367 V(I8x16AddSaturateS, 0xe55c, s_ss) \ 370 V(I8x16AddSaturateS, 0xe55c, s_ss) \
371 V(I8x16AddHoriz, 0xe5bc, s_ss) \
368 V(I8x16Sub, 0xe55d, s_ss) \ 372 V(I8x16Sub, 0xe55d, s_ss) \
369 V(I8x16SubSaturateS, 0xe55e, s_ss) \ 373 V(I8x16SubSaturateS, 0xe55e, s_ss) \
370 V(I8x16Mul, 0xe55f, s_ss) \ 374 V(I8x16Mul, 0xe55f, s_ss) \
371 V(I8x16MinS, 0xe560, s_ss) \ 375 V(I8x16MinS, 0xe560, s_ss) \
372 V(I8x16MaxS, 0xe561, s_ss) \ 376 V(I8x16MaxS, 0xe561, s_ss) \
373 V(I8x16Eq, 0xe564, s1x16_ss) \ 377 V(I8x16Eq, 0xe564, s1x16_ss) \
374 V(I8x16Ne, 0xe565, s1x16_ss) \ 378 V(I8x16Ne, 0xe565, s1x16_ss) \
375 V(I8x16LtS, 0xe566, s1x16_ss) \ 379 V(I8x16LtS, 0xe566, s1x16_ss) \
376 V(I8x16LeS, 0xe567, s1x16_ss) \ 380 V(I8x16LeS, 0xe567, s1x16_ss) \
377 V(I8x16GtS, 0xe568, s1x16_ss) \ 381 V(I8x16GtS, 0xe568, s1x16_ss) \
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 default: 779 default:
776 return "<unknown>"; 780 return "<unknown>";
777 } 781 }
778 } 782 }
779 }; 783 };
780 } // namespace wasm 784 } // namespace wasm
781 } // namespace internal 785 } // namespace internal
782 } // namespace v8 786 } // namespace v8
783 787
784 #endif // V8_WASM_OPCODES_H_ 788 #endif // V8_WASM_OPCODES_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698