testAndOrXor.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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 testAnd() {
  13. print("Int8x16 and");
  14. var m = SIMD.Int8x16(0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA);
  15. var n = SIMD.Int8x16(0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55);
  16. equal(-86, SIMD.Int8x16.extractLane(m, 0));
  17. equal(-86, SIMD.Int8x16.extractLane(m, 1));
  18. equal(-86, SIMD.Int8x16.extractLane(m, 2));
  19. equal(-86, SIMD.Int8x16.extractLane(m, 3));
  20. equal(-86, SIMD.Int8x16.extractLane(m, 4));
  21. equal(-86, SIMD.Int8x16.extractLane(m, 5));
  22. equal(-86, SIMD.Int8x16.extractLane(m, 6));
  23. equal(-86, SIMD.Int8x16.extractLane(m, 7));
  24. equal(-86, SIMD.Int8x16.extractLane(m, 8));
  25. equal(-86, SIMD.Int8x16.extractLane(m, 9));
  26. equal(-86, SIMD.Int8x16.extractLane(m, 10));
  27. equal(-86, SIMD.Int8x16.extractLane(m, 11));
  28. equal(-86, SIMD.Int8x16.extractLane(m, 12));
  29. equal(-86, SIMD.Int8x16.extractLane(m, 13));
  30. equal(-86, SIMD.Int8x16.extractLane(m, 14));
  31. equal(-86, SIMD.Int8x16.extractLane(m, 15));
  32. equal(0x55, SIMD.Int8x16.extractLane(n, 0));
  33. equal(0x55, SIMD.Int8x16.extractLane(n, 1));
  34. equal(0x55, SIMD.Int8x16.extractLane(n, 2));
  35. equal(0x55, SIMD.Int8x16.extractLane(n, 3));
  36. equal(0x55, SIMD.Int8x16.extractLane(n, 4));
  37. equal(0x55, SIMD.Int8x16.extractLane(n, 5));
  38. equal(0x55, SIMD.Int8x16.extractLane(n, 6));
  39. equal(0x55, SIMD.Int8x16.extractLane(n, 7));
  40. equal(0x55, SIMD.Int8x16.extractLane(n, 8));
  41. equal(0x55, SIMD.Int8x16.extractLane(n, 9));
  42. equal(0x55, SIMD.Int8x16.extractLane(n, 10));
  43. equal(0x55, SIMD.Int8x16.extractLane(n, 11));
  44. equal(0x55, SIMD.Int8x16.extractLane(n, 12));
  45. equal(0x55, SIMD.Int8x16.extractLane(n, 13));
  46. equal(0x55, SIMD.Int8x16.extractLane(n, 14));
  47. equal(0x55, SIMD.Int8x16.extractLane(n, 15));
  48. var o = SIMD.Int8x16.and(m, n); // and
  49. equal(0x0, SIMD.Int8x16.extractLane(o, 0));
  50. equal(0x0, SIMD.Int8x16.extractLane(o, 1));
  51. equal(0x0, SIMD.Int8x16.extractLane(o, 2));
  52. equal(0x0, SIMD.Int8x16.extractLane(o, 3));
  53. equal(0x0, SIMD.Int8x16.extractLane(o, 4));
  54. equal(0x0, SIMD.Int8x16.extractLane(o, 5));
  55. equal(0x0, SIMD.Int8x16.extractLane(o, 6));
  56. equal(0x0, SIMD.Int8x16.extractLane(o, 7));
  57. equal(0x0, SIMD.Int8x16.extractLane(o, 8));
  58. equal(0x0, SIMD.Int8x16.extractLane(o, 9));
  59. equal(0x0, SIMD.Int8x16.extractLane(o, 10));
  60. equal(0x0, SIMD.Int8x16.extractLane(o, 11));
  61. equal(0x0, SIMD.Int8x16.extractLane(o, 12));
  62. equal(0x0, SIMD.Int8x16.extractLane(o, 13));
  63. equal(0x0, SIMD.Int8x16.extractLane(o, 14));
  64. equal(0x0, SIMD.Int8x16.extractLane(o, 15));
  65. }
  66. function testOr() {
  67. print("Int8x16 or");
  68. var m = SIMD.Int8x16(0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA);
  69. var n = SIMD.Int8x16(0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55);
  70. var o = SIMD.Int8x16.or(m, n); // or
  71. equal(-1, SIMD.Int8x16.extractLane(o, 0));
  72. equal(-1, SIMD.Int8x16.extractLane(o, 1));
  73. equal(-1, SIMD.Int8x16.extractLane(o, 2));
  74. equal(-1, SIMD.Int8x16.extractLane(o, 3));
  75. equal(-1, SIMD.Int8x16.extractLane(o, 4));
  76. equal(-1, SIMD.Int8x16.extractLane(o, 5));
  77. equal(-1, SIMD.Int8x16.extractLane(o, 6));
  78. equal(-1, SIMD.Int8x16.extractLane(o, 7));
  79. equal(-1, SIMD.Int8x16.extractLane(o, 8));
  80. equal(-1, SIMD.Int8x16.extractLane(o, 9));
  81. equal(-1, SIMD.Int8x16.extractLane(o, 10));
  82. equal(-1, SIMD.Int8x16.extractLane(o, 11));
  83. equal(-1, SIMD.Int8x16.extractLane(o, 12));
  84. equal(-1, SIMD.Int8x16.extractLane(o, 13));
  85. equal(-1, SIMD.Int8x16.extractLane(o, 14));
  86. equal(-1, SIMD.Int8x16.extractLane(o, 15));
  87. }
  88. function testXor() {
  89. var m = SIMD.Int8x16(0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA)
  90. var o = SIMD.Int8x16.xor(m, m); // xor
  91. equal(0x0, SIMD.Int8x16.extractLane(o, 0));
  92. equal(0x0, SIMD.Int8x16.extractLane(o, 1));
  93. equal(0x0, SIMD.Int8x16.extractLane(o, 2));
  94. equal(0x0, SIMD.Int8x16.extractLane(o, 3));
  95. equal(0x0, SIMD.Int8x16.extractLane(o, 4));
  96. equal(0x0, SIMD.Int8x16.extractLane(o, 5));
  97. equal(0x0, SIMD.Int8x16.extractLane(o, 6));
  98. equal(0x0, SIMD.Int8x16.extractLane(o, 7));
  99. equal(0x0, SIMD.Int8x16.extractLane(o, 8));
  100. equal(0x0, SIMD.Int8x16.extractLane(o, 9));
  101. equal(0x0, SIMD.Int8x16.extractLane(o, 10));
  102. equal(0x0, SIMD.Int8x16.extractLane(o, 11));
  103. equal(0x0, SIMD.Int8x16.extractLane(o, 12));
  104. equal(0x0, SIMD.Int8x16.extractLane(o, 13));
  105. equal(0x0, SIMD.Int8x16.extractLane(o, 14));
  106. equal(0x0, SIMD.Int8x16.extractLane(o, 15));
  107. }
  108. testAnd();
  109. testAnd();
  110. testAnd();
  111. testAnd();
  112. testOr();
  113. testOr();
  114. testOr();
  115. testOr();
  116. testXor();
  117. testXor();
  118. testXor();
  119. testXor();