testMul.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. function equal(a, b) {
  6. if (a == b) {
  7. print("Correct");
  8. } else {
  9. print(">> Fail!");
  10. }
  11. }
  12. function testMul() {
  13. print("Int8x16 mul");
  14. var a = SIMD.Int8x16(0xFF, 0xFF, 0x80, 0x0, 0xFF, 0xFF, 0x80, 0x0, 0xFF, 0xFF, 0x80, 0x0, 0xFF, 0xFF, 0x80, 0x0);
  15. var b = SIMD.Int8x16(0x1, 0xFF, 0x80, 0xFF, 0x1, 0xFF, 0x80, 0xFF, 0x1, 0xFF, 0x80, 0xFF, 0x1, 0xFF, 0x80, 0xFF);
  16. var c = SIMD.Int8x16.mul(a, b);
  17. equal(-1, SIMD.Int8x16.extractLane(c, 0));
  18. equal(0x1, SIMD.Int8x16.extractLane(c, 1));
  19. equal(0x0, SIMD.Int8x16.extractLane(c, 2));
  20. equal(0x0, SIMD.Int8x16.extractLane(c, 3));
  21. equal(-1, SIMD.Int8x16.extractLane(c, 4));
  22. equal(0x1, SIMD.Int8x16.extractLane(c, 5));
  23. equal(0x0, SIMD.Int8x16.extractLane(c, 6));
  24. equal(0x0, SIMD.Int8x16.extractLane(c, 7));
  25. equal(-1, SIMD.Int8x16.extractLane(c, 8));
  26. equal(0x1, SIMD.Int8x16.extractLane(c, 9));
  27. equal(0x0, SIMD.Int8x16.extractLane(c, 10));
  28. equal(0x0, SIMD.Int8x16.extractLane(c, 11));
  29. equal(-1, SIMD.Int8x16.extractLane(c, 12));
  30. equal(0x1, SIMD.Int8x16.extractLane(c, 13));
  31. equal(0x0, SIMD.Int8x16.extractLane(c, 14));
  32. equal(0x0, SIMD.Int8x16.extractLane(c, 15));
  33. var d = SIMD.Int8x16(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
  34. var e = SIMD.Int8x16(16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1);
  35. var f = SIMD.Int8x16.mul(d, e);
  36. equal(16, SIMD.Int8x16.extractLane(f, 0));
  37. equal(30, SIMD.Int8x16.extractLane(f, 1));
  38. equal(42, SIMD.Int8x16.extractLane(f, 2));
  39. equal(52, SIMD.Int8x16.extractLane(f, 3));
  40. equal(60, SIMD.Int8x16.extractLane(f, 4));
  41. equal(66, SIMD.Int8x16.extractLane(f, 5));
  42. equal(70, SIMD.Int8x16.extractLane(f, 6));
  43. equal(72, SIMD.Int8x16.extractLane(f, 7));
  44. equal(72, SIMD.Int8x16.extractLane(f, 8));
  45. equal(70, SIMD.Int8x16.extractLane(f, 9));
  46. equal(66, SIMD.Int8x16.extractLane(f, 10));
  47. equal(60, SIMD.Int8x16.extractLane(f, 11));
  48. equal(52, SIMD.Int8x16.extractLane(f, 12));
  49. equal(42, SIMD.Int8x16.extractLane(f, 13));
  50. equal(30, SIMD.Int8x16.extractLane(f, 14));
  51. equal(16, SIMD.Int8x16.extractLane(f, 15));
  52. }
  53. testMul();
  54. testMul();
  55. testMul();
  56. testMul();
  57. testMul();
  58. testMul();
  59. testMul();
  60. testMul();