testNeg.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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 testNeg() {
  13. print("Int8x16 neg");
  14. var a = SIMD.Int8x16(-16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1);
  15. var c = SIMD.Int8x16.neg(a);
  16. equal(16, SIMD.Int8x16.extractLane(c, 0));
  17. equal(15, SIMD.Int8x16.extractLane(c, 1));
  18. equal(14, SIMD.Int8x16.extractLane(c, 2));
  19. equal(13, SIMD.Int8x16.extractLane(c, 3));
  20. equal(12, SIMD.Int8x16.extractLane(c, 4));
  21. equal(11, SIMD.Int8x16.extractLane(c, 5));
  22. equal(10, SIMD.Int8x16.extractLane(c, 6));
  23. equal(9, SIMD.Int8x16.extractLane(c, 7));
  24. equal(8, SIMD.Int8x16.extractLane(c, 8));
  25. equal(7, SIMD.Int8x16.extractLane(c, 9));
  26. equal(6, SIMD.Int8x16.extractLane(c, 10));
  27. equal(5, SIMD.Int8x16.extractLane(c, 11));
  28. equal(4, SIMD.Int8x16.extractLane(c, 12));
  29. equal(3, SIMD.Int8x16.extractLane(c, 13));
  30. equal(2, SIMD.Int8x16.extractLane(c, 14));
  31. equal(1, SIMD.Int8x16.extractLane(c, 15));
  32. c = SIMD.Int8x16.neg(SIMD.Int8x16(16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1));
  33. equal(-16, SIMD.Int8x16.extractLane(c, 0));
  34. equal(-15, SIMD.Int8x16.extractLane(c, 1));
  35. equal(-14, SIMD.Int8x16.extractLane(c, 2));
  36. equal(-13, SIMD.Int8x16.extractLane(c, 3));
  37. equal(-12, SIMD.Int8x16.extractLane(c, 4));
  38. equal(-11, SIMD.Int8x16.extractLane(c, 5));
  39. equal(-10, SIMD.Int8x16.extractLane(c, 6));
  40. equal(-9, SIMD.Int8x16.extractLane(c, 7));
  41. equal(-8, SIMD.Int8x16.extractLane(c, 8));
  42. equal(-7, SIMD.Int8x16.extractLane(c, 9));
  43. equal(-6, SIMD.Int8x16.extractLane(c, 10));
  44. equal(-5, SIMD.Int8x16.extractLane(c, 11));
  45. equal(-4, SIMD.Int8x16.extractLane(c, 12));
  46. equal(-3, SIMD.Int8x16.extractLane(c, 13));
  47. equal(-2, SIMD.Int8x16.extractLane(c, 14));
  48. equal(-1, SIMD.Int8x16.extractLane(c, 15));
  49. var m = SIMD.Int8x16(1, 2, 4, 8, 16, 32, 64, 128, -1, -2, -4, -8, -16, -32, -64, -127);
  50. var n = SIMD.Int8x16(-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16);
  51. m = SIMD.Int8x16.neg(m);
  52. n = SIMD.Int8x16.neg(n);
  53. equal(-1, SIMD.Int8x16.extractLane(m, 0));
  54. equal(-2, SIMD.Int8x16.extractLane(m, 1));
  55. equal(-4, SIMD.Int8x16.extractLane(m, 2));
  56. equal(-8, SIMD.Int8x16.extractLane(m, 3));
  57. equal(-16, SIMD.Int8x16.extractLane(m, 4));
  58. equal(-32, SIMD.Int8x16.extractLane(m, 5));
  59. equal(-64, SIMD.Int8x16.extractLane(m, 6));
  60. equal(-128, SIMD.Int8x16.extractLane(m, 7));
  61. equal(1, SIMD.Int8x16.extractLane(m, 8));
  62. equal(2, SIMD.Int8x16.extractLane(m, 9));
  63. equal(4, SIMD.Int8x16.extractLane(m, 10));
  64. equal(8, SIMD.Int8x16.extractLane(m, 11));
  65. equal(16, SIMD.Int8x16.extractLane(m, 12));
  66. equal(32, SIMD.Int8x16.extractLane(m, 13));
  67. equal(64, SIMD.Int8x16.extractLane(m, 14));
  68. equal(127, SIMD.Int8x16.extractLane(m, 15));
  69. equal(1, SIMD.Int8x16.extractLane(n, 0));
  70. equal(2, SIMD.Int8x16.extractLane(n, 1));
  71. equal(3, SIMD.Int8x16.extractLane(n, 2));
  72. equal(4, SIMD.Int8x16.extractLane(n, 3));
  73. equal(5, SIMD.Int8x16.extractLane(n, 4));
  74. equal(6, SIMD.Int8x16.extractLane(n, 5));
  75. equal(7, SIMD.Int8x16.extractLane(n, 6));
  76. equal(8, SIMD.Int8x16.extractLane(n, 7));
  77. equal(9, SIMD.Int8x16.extractLane(n, 8));
  78. equal(10, SIMD.Int8x16.extractLane(n, 9));
  79. equal(11, SIMD.Int8x16.extractLane(n, 10));
  80. equal(12, SIMD.Int8x16.extractLane(n, 11));
  81. equal(13, SIMD.Int8x16.extractLane(n, 12));
  82. equal(14, SIMD.Int8x16.extractLane(n, 13));
  83. equal(15, SIMD.Int8x16.extractLane(n, 14));
  84. equal(16, SIMD.Int8x16.extractLane(n, 15));
  85. }
  86. testNeg();
  87. testNeg();
  88. testNeg();
  89. testNeg();
  90. testNeg();
  91. testNeg();
  92. testNeg();
  93. testNeg();