2
0

testWithLane.js 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  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 testWithX() {
  13. print("Int8x16 replaceLane 0");
  14. var a = SIMD.Int8x16(16, 9, 4, 1, 16, 9, 4, 1, 16, 9, 4, 1, 16, 9, 4, 1);
  15. var c = SIMD.Int8x16.replaceLane(a, false, 20);
  16. equal(20, SIMD.Int8x16.extractLane(c, false));
  17. equal(9, SIMD.Int8x16.extractLane(c, true));
  18. equal(4, SIMD.Int8x16.extractLane(c, ["2"]));
  19. equal(1, SIMD.Int8x16.extractLane(c, 3));
  20. equal(16, SIMD.Int8x16.extractLane(c, 4));
  21. equal(9, SIMD.Int8x16.extractLane(c, 5));
  22. equal(4, SIMD.Int8x16.extractLane(c, 6));
  23. equal(1, SIMD.Int8x16.extractLane(c, 7));
  24. equal(16, SIMD.Int8x16.extractLane(c, 8));
  25. equal(9, SIMD.Int8x16.extractLane(c, 9));
  26. equal(4, SIMD.Int8x16.extractLane(c, 10));
  27. equal(1, SIMD.Int8x16.extractLane(c, 11));
  28. equal(16, SIMD.Int8x16.extractLane(c, 12));
  29. equal(9, SIMD.Int8x16.extractLane(c, 13));
  30. equal(4, SIMD.Int8x16.extractLane(c, 14));
  31. equal(1, SIMD.Int8x16.extractLane(c, 15));
  32. var m = SIMD.Int8x16(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4);
  33. var n = SIMD.Int8x16.replaceLane(m, 0, 20);
  34. equal(20, SIMD.Int8x16.extractLane(n, 0));
  35. equal(2, SIMD.Int8x16.extractLane(n, 1));
  36. equal(3, SIMD.Int8x16.extractLane(n, 2));
  37. equal(4, SIMD.Int8x16.extractLane(n, 3));
  38. equal(1, SIMD.Int8x16.extractLane(n, 4));
  39. equal(2, SIMD.Int8x16.extractLane(n, 5));
  40. equal(3, SIMD.Int8x16.extractLane(n, 6));
  41. equal(4, SIMD.Int8x16.extractLane(n, 7));
  42. equal(1, SIMD.Int8x16.extractLane(n, 8));
  43. equal(2, SIMD.Int8x16.extractLane(n, 9));
  44. equal(3, SIMD.Int8x16.extractLane(n, 10));
  45. equal(4, SIMD.Int8x16.extractLane(n, 11));
  46. equal(1, SIMD.Int8x16.extractLane(n, 12));
  47. equal(2, SIMD.Int8x16.extractLane(n, 13));
  48. equal(3, SIMD.Int8x16.extractLane(n, 14));
  49. equal(4, SIMD.Int8x16.extractLane(n, 15));
  50. }
  51. function testWithY() {
  52. print("Int8x16 replaceLane 1");
  53. var a = SIMD.Int8x16(16, 9, 4, 1, 16, 9, 4, 1, 16, 9, 4, 1, 16, 9, 4, 1);
  54. var c = SIMD.Int8x16.replaceLane(a, true, 20);
  55. equal(16, SIMD.Int8x16.extractLane(c, 0));
  56. equal(20, SIMD.Int8x16.extractLane(c, 1));
  57. equal(4, SIMD.Int8x16.extractLane(c, 2));
  58. equal(1, SIMD.Int8x16.extractLane(c, 3));
  59. equal(16, SIMD.Int8x16.extractLane(c, 4));
  60. equal(9, SIMD.Int8x16.extractLane(c, 5));
  61. equal(4, SIMD.Int8x16.extractLane(c, 6));
  62. equal(1, SIMD.Int8x16.extractLane(c, 7));
  63. equal(16, SIMD.Int8x16.extractLane(c, 8));
  64. equal(9, SIMD.Int8x16.extractLane(c, 9));
  65. equal(4, SIMD.Int8x16.extractLane(c, 10));
  66. equal(1, SIMD.Int8x16.extractLane(c, 11));
  67. equal(16, SIMD.Int8x16.extractLane(c, 12));
  68. equal(9, SIMD.Int8x16.extractLane(c, 13));
  69. equal(4, SIMD.Int8x16.extractLane(c, 14));
  70. equal(1, SIMD.Int8x16.extractLane(c, 15));
  71. var m = SIMD.Int8x16(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4);
  72. var n = SIMD.Int8x16.replaceLane(m, 1, 20);
  73. equal(1, SIMD.Int8x16.extractLane(n, 0));
  74. equal(20, SIMD.Int8x16.extractLane(n, 1));
  75. equal(3, SIMD.Int8x16.extractLane(n, 2));
  76. equal(4, SIMD.Int8x16.extractLane(n, 3));
  77. equal(1, SIMD.Int8x16.extractLane(n, 4));
  78. equal(2, SIMD.Int8x16.extractLane(n, 5));
  79. equal(3, SIMD.Int8x16.extractLane(n, 6));
  80. equal(4, SIMD.Int8x16.extractLane(n, 7));
  81. equal(1, SIMD.Int8x16.extractLane(n, 8));
  82. equal(2, SIMD.Int8x16.extractLane(n, 9));
  83. equal(3, SIMD.Int8x16.extractLane(n, 10));
  84. equal(4, SIMD.Int8x16.extractLane(n, 11));
  85. equal(1, SIMD.Int8x16.extractLane(n, 12));
  86. equal(2, SIMD.Int8x16.extractLane(n, 13));
  87. equal(3, SIMD.Int8x16.extractLane(n, 14));
  88. equal(4, SIMD.Int8x16.extractLane(n, 15));
  89. }
  90. function testWithZ() {
  91. print("Int8x16 replaceLane 2");
  92. var a = SIMD.Int8x16(16, 9, 4, 1, 16, 9, 4, 1, 16, 9, 4, 1, 16, 9, 4, 1);
  93. var c = SIMD.Int8x16.replaceLane(a, ["2"], 20);
  94. equal(16, SIMD.Int8x16.extractLane(c, 0));
  95. equal(9, SIMD.Int8x16.extractLane(c, 1));
  96. equal(20, SIMD.Int8x16.extractLane(c, 2));
  97. equal(1, SIMD.Int8x16.extractLane(c, 3));
  98. equal(16, SIMD.Int8x16.extractLane(c, 4));
  99. equal(9, SIMD.Int8x16.extractLane(c, 5));
  100. equal(4, SIMD.Int8x16.extractLane(c, 6));
  101. equal(1, SIMD.Int8x16.extractLane(c, 7));
  102. equal(16, SIMD.Int8x16.extractLane(c, 8));
  103. equal(9, SIMD.Int8x16.extractLane(c, 9));
  104. equal(4, SIMD.Int8x16.extractLane(c, 10));
  105. equal(1, SIMD.Int8x16.extractLane(c, 11));
  106. equal(16, SIMD.Int8x16.extractLane(c, 12));
  107. equal(9, SIMD.Int8x16.extractLane(c, 13));
  108. equal(4, SIMD.Int8x16.extractLane(c, 14));
  109. equal(1, SIMD.Int8x16.extractLane(c, 15));
  110. var m = SIMD.Int8x16(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4);
  111. var n = SIMD.Int8x16.replaceLane(m, 2, 20);
  112. equal(1, SIMD.Int8x16.extractLane(n, 0));
  113. equal(2, SIMD.Int8x16.extractLane(n, 1));
  114. equal(20, SIMD.Int8x16.extractLane(n, 2));
  115. equal(4, SIMD.Int8x16.extractLane(n, 3));
  116. equal(1, SIMD.Int8x16.extractLane(n, 4));
  117. equal(2, SIMD.Int8x16.extractLane(n, 5));
  118. equal(3, SIMD.Int8x16.extractLane(n, 6));
  119. equal(4, SIMD.Int8x16.extractLane(n, 7));
  120. equal(1, SIMD.Int8x16.extractLane(n, 8));
  121. equal(2, SIMD.Int8x16.extractLane(n, 9));
  122. equal(3, SIMD.Int8x16.extractLane(n, 10));
  123. equal(4, SIMD.Int8x16.extractLane(n, 11));
  124. equal(1, SIMD.Int8x16.extractLane(n, 12));
  125. equal(2, SIMD.Int8x16.extractLane(n, 13));
  126. equal(3, SIMD.Int8x16.extractLane(n, 14));
  127. equal(4, SIMD.Int8x16.extractLane(n, 15));
  128. }
  129. function testWithW() {
  130. print("Int8x16 replaceLane 3");
  131. var a = SIMD.Int8x16(16, 9, 4, 1, 16, 9, 4, 1, 16, 9, 4, 1, 16, 9, 4, 1);
  132. var c = SIMD.Int8x16.replaceLane(a, 3, 20);
  133. equal(16, SIMD.Int8x16.extractLane(c, 0));
  134. equal(9, SIMD.Int8x16.extractLane(c, 1));
  135. equal(4, SIMD.Int8x16.extractLane(c, 2));
  136. equal(20, SIMD.Int8x16.extractLane(c, 3));
  137. equal(16, SIMD.Int8x16.extractLane(c, 4));
  138. equal(9, SIMD.Int8x16.extractLane(c, 5));
  139. equal(4, SIMD.Int8x16.extractLane(c, 6));
  140. equal(1, SIMD.Int8x16.extractLane(c, 7));
  141. equal(16, SIMD.Int8x16.extractLane(c, 8));
  142. equal(9, SIMD.Int8x16.extractLane(c, 9));
  143. equal(4, SIMD.Int8x16.extractLane(c, 10));
  144. equal(1, SIMD.Int8x16.extractLane(c, 11));
  145. equal(16, SIMD.Int8x16.extractLane(c, 12));
  146. equal(9, SIMD.Int8x16.extractLane(c, 13));
  147. equal(4, SIMD.Int8x16.extractLane(c, 14));
  148. equal(1, SIMD.Int8x16.extractLane(c, 15));
  149. var m = SIMD.Int8x16(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4);
  150. var n = SIMD.Int8x16.replaceLane(m, 8, 20);
  151. equal(1, SIMD.Int8x16.extractLane(n, 0));
  152. equal(2, SIMD.Int8x16.extractLane(n, 1));
  153. equal(3, SIMD.Int8x16.extractLane(n, 2));
  154. equal(20, SIMD.Int8x16.extractLane(n, 8));
  155. equal(1, SIMD.Int8x16.extractLane(n, 4));
  156. equal(2, SIMD.Int8x16.extractLane(n, 5));
  157. equal(3, SIMD.Int8x16.extractLane(n, 6));
  158. equal(4, SIMD.Int8x16.extractLane(n, 7));
  159. equal(20, SIMD.Int8x16.extractLane(n, 8));
  160. equal(2, SIMD.Int8x16.extractLane(n, 9));
  161. equal(3, SIMD.Int8x16.extractLane(n, 10));
  162. equal(4, SIMD.Int8x16.extractLane(n, 11));
  163. equal(1, SIMD.Int8x16.extractLane(n, 12));
  164. equal(2, SIMD.Int8x16.extractLane(n, 13));
  165. equal(3, SIMD.Int8x16.extractLane(n, 14));
  166. equal(4, SIMD.Int8x16.extractLane(n, 15));
  167. }
  168. function testReplaceLane() {
  169. print("Int8x16 replaceLane 4-15");
  170. var a = SIMD.Int8x16(16, 9, 4, 1, 16, 9, 4, 1, 16, 9, 4, 1, 16, 9, 4, 1);
  171. for (var i = 4; i < 16; ++i)
  172. {
  173. var c = SIMD.Int8x16.replaceLane(a, i, 20);
  174. equal(20, SIMD.Int8x16.extractLane(c, i));
  175. for(var j = 0; j < 16; ++j)
  176. {
  177. if(j != i)
  178. {
  179. equal(SIMD.Int8x16.extractLane(a, j), SIMD.Int8x16.extractLane(c, j));
  180. }
  181. }
  182. }
  183. }
  184. testWithX();
  185. testWithX();
  186. testWithX();
  187. testWithX();
  188. testWithX();
  189. testWithX();
  190. testWithX();
  191. testWithX();
  192. testWithY();
  193. testWithY();
  194. testWithY();
  195. testWithY();
  196. testWithY();
  197. testWithY();
  198. testWithY();
  199. testWithY();
  200. testWithZ();
  201. testWithZ();
  202. testWithZ();
  203. testWithZ();
  204. testWithZ();
  205. testWithZ();
  206. testWithZ();
  207. testWithZ();
  208. testWithW();
  209. testWithW();
  210. testWithW();
  211. testWithW();
  212. testWithW();
  213. testWithW();
  214. testWithW();
  215. testWithW();
  216. testReplaceLane();