testAddSub.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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 testAdd() {
  13. print("Int8x16 add");
  14. var a = SIMD.Int8x16(0xFF, 0xFF, 0x7f, 0x0, 0xFF, 0xFF, 0x7f, 0x0, 0xFF, 0xFF, 0x7f, 0x0, 0xFF, 0xFF, 0x7f, 0x0);
  15. var b = SIMD.Int8x16(0x1, 0xFF, 0x1, 0xFF, 0x1, 0xFF, 0x1, 0xFF, 0x1, 0xFF, 0x1, 0xFF, 0x1, 0xFF, 0x1, 0xFF);
  16. var c = SIMD.Int8x16.add(a, b);
  17. equal(0x0, SIMD.Int8x16.extractLane(c, 0));
  18. equal(-2, SIMD.Int8x16.extractLane(c, 1));
  19. equal(-0x80, SIMD.Int8x16.extractLane(c, 2));
  20. equal(-1, SIMD.Int8x16.extractLane(c, 3));
  21. equal(0x0, SIMD.Int8x16.extractLane(c, 4));
  22. equal(-2, SIMD.Int8x16.extractLane(c, 5));
  23. equal(-0x80, SIMD.Int8x16.extractLane(c, 6));
  24. equal(-1, SIMD.Int8x16.extractLane(c, 7));
  25. equal(0x0, SIMD.Int8x16.extractLane(c, 8));
  26. equal(-2, SIMD.Int8x16.extractLane(c, 9));
  27. equal(-0x80, SIMD.Int8x16.extractLane(c, 10));
  28. equal(-1, SIMD.Int8x16.extractLane(c, 11));
  29. equal(0x0, SIMD.Int8x16.extractLane(c, 12));
  30. equal(-2, SIMD.Int8x16.extractLane(c, 13));
  31. equal(-0x80, SIMD.Int8x16.extractLane(c, 14));
  32. equal(-1, SIMD.Int8x16.extractLane(c, 15));
  33. var m = SIMD.Int8x16(4, 3, 2, 1, 4, 3, 2, 1, 4, 3, 2, 1, 4, 3, 2, 1);
  34. var n = SIMD.Int8x16(10, 20, 30, 40, 10, 20, 30, 40, 10, 20, 30, 40, 10, 20, 30, 40);
  35. var f = SIMD.Int8x16.add(m, n);
  36. equal(14, SIMD.Int8x16.extractLane(f, 0));
  37. equal(23, SIMD.Int8x16.extractLane(f, 1));
  38. equal(32, SIMD.Int8x16.extractLane(f, 2));
  39. equal(41, SIMD.Int8x16.extractLane(f, 3));
  40. equal(14, SIMD.Int8x16.extractLane(f, 4));
  41. equal(23, SIMD.Int8x16.extractLane(f, 5));
  42. equal(32, SIMD.Int8x16.extractLane(f, 6));
  43. equal(41, SIMD.Int8x16.extractLane(f, 7));
  44. equal(14, SIMD.Int8x16.extractLane(f, 8));
  45. equal(23, SIMD.Int8x16.extractLane(f, 9));
  46. equal(32, SIMD.Int8x16.extractLane(f, 10));
  47. equal(41, SIMD.Int8x16.extractLane(f, 11));
  48. equal(14, SIMD.Int8x16.extractLane(f, 12));
  49. equal(23, SIMD.Int8x16.extractLane(f, 13));
  50. equal(32, SIMD.Int8x16.extractLane(f, 14));
  51. equal(41, SIMD.Int8x16.extractLane(f, 15));
  52. }
  53. function testSub() {
  54. print("Int8x16 sub");
  55. var a = SIMD.Int8x16(0xFF, 0xFF, 0x80, 0x0, 0xFF, 0xFF, 0x80, 0x0, 0xFF, 0xFF, 0x80, 0x0, 0xFF, 0xFF, 0x80, 0x0);
  56. var b = SIMD.Int8x16(0x1, 0xFF, 0x1, 0xFF, 0x1, 0xFF, 0x1, 0xFF, 0x1, 0xFF, 0x1, 0xFF, 0x1, 0xFF, 0x1, 0xFF);
  57. var c = SIMD.Int8x16.sub(a, b);
  58. equal(-2, SIMD.Int8x16.extractLane(c, 0));
  59. equal(0x0, SIMD.Int8x16.extractLane(c, 1));
  60. equal(0x7f, SIMD.Int8x16.extractLane(c, 2));
  61. equal(0x1, SIMD.Int8x16.extractLane(c, 3));
  62. equal(-2, SIMD.Int8x16.extractLane(c, 4));
  63. equal(0x0, SIMD.Int8x16.extractLane(c, 5));
  64. equal(0x7f, SIMD.Int8x16.extractLane(c, 6));
  65. equal(0x1, SIMD.Int8x16.extractLane(c, 7));
  66. equal(-2, SIMD.Int8x16.extractLane(c, 8));
  67. equal(0x0, SIMD.Int8x16.extractLane(c, 9));
  68. equal(0x7f, SIMD.Int8x16.extractLane(c, 10));
  69. equal(0x1, SIMD.Int8x16.extractLane(c, 11));
  70. equal(-2, SIMD.Int8x16.extractLane(c, 12));
  71. equal(0x0, SIMD.Int8x16.extractLane(c, 13));
  72. equal(0x7f, SIMD.Int8x16.extractLane(c, 14));
  73. equal(0x1, SIMD.Int8x16.extractLane(c, 15));
  74. var d = SIMD.Int8x16(4, 3, 2, 1, 4, 3, 2, 1, 4, 3, 2, 1, 4, 3, 2, 1);
  75. var e = SIMD.Int8x16(10, 20, 30, 40, 10, 20, 30, 40, 10, 20, 30, 40, 10, 20, 30, 40);
  76. var f = SIMD.Int8x16.sub(d, e);
  77. equal(-6, SIMD.Int8x16.extractLane(f, 0));
  78. equal(-17, SIMD.Int8x16.extractLane(f, 1));
  79. equal(-28, SIMD.Int8x16.extractLane(f, 2));
  80. equal(-39, SIMD.Int8x16.extractLane(f, 3));
  81. equal(-6, SIMD.Int8x16.extractLane(f, 4));
  82. equal(-17, SIMD.Int8x16.extractLane(f, 5));
  83. equal(-28, SIMD.Int8x16.extractLane(f, 6));
  84. equal(-39, SIMD.Int8x16.extractLane(f, 7));
  85. equal(-6, SIMD.Int8x16.extractLane(f, 8));
  86. equal(-17, SIMD.Int8x16.extractLane(f, 9));
  87. equal(-28, SIMD.Int8x16.extractLane(f, 10));
  88. equal(-39, SIMD.Int8x16.extractLane(f, 11));
  89. equal(-6, SIMD.Int8x16.extractLane(f, 12));
  90. equal(-17, SIMD.Int8x16.extractLane(f, 13));
  91. equal(-28, SIMD.Int8x16.extractLane(f, 14));
  92. equal(-39, SIMD.Int8x16.extractLane(f, 15));
  93. }
  94. testAdd();
  95. testAdd();
  96. testAdd();
  97. testAdd();
  98. testAdd();
  99. testAdd();
  100. testAdd();
  101. testSub();
  102. testSub();
  103. testSub();
  104. testSub();
  105. testSub();
  106. testSub();
  107. testSub();