testConstructor.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  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 testConstructor() {
  13. print("Constructor");
  14. equal(SIMD.Int32x4, undefined);
  15. equal(SIMD.Int32x4(1, 2, 3, 4), undefined);
  16. var a = SIMD.Int32x4("2014/10/10", -0, 2147483648, 2147483647);
  17. print("a.x: " + SIMD.Int32x4.extractLane(a, 0));
  18. print("a.y: " + SIMD.Int32x4.extractLane(a, 1));
  19. print("a.z: " + SIMD.Int32x4.extractLane(a, 2));
  20. print("a.w: " + SIMD.Int32x4.extractLane(a, 3));
  21. var b = SIMD.Int32x4(4, 3, 2, 1);
  22. var c = SIMD.Int32x4.check(b);
  23. equal(c, b);
  24. equal(SIMD.Int32x4.extractLane(c, 0), SIMD.Int32x4.extractLane(b, 0));
  25. equal(SIMD.Int32x4.extractLane(c, 1), SIMD.Int32x4.extractLane(b, 1));
  26. equal(SIMD.Int32x4.extractLane(c, 2), SIMD.Int32x4.extractLane(b, 2));
  27. equal(SIMD.Int32x4.extractLane(c, 3), SIMD.Int32x4.extractLane(b, 3));
  28. try {
  29. var m = SIMD.Int32x4.check(1)
  30. }
  31. catch (e) {
  32. print("Type Error");
  33. }
  34. }
  35. function testFromFloat32x4() {
  36. var m = SIMD.Float32x4(1.0, 2.2, 3.6, 4.8);
  37. var n = SIMD.Int32x4.fromFloat32x4(m);
  38. print("FromFloat32x4");
  39. equal(1, SIMD.Int32x4.extractLane(n, 0));
  40. equal(2, SIMD.Int32x4.extractLane(n, 1));
  41. equal(3, SIMD.Int32x4.extractLane(n, 2));
  42. equal(4, SIMD.Int32x4.extractLane(n, 3));
  43. }
  44. function testFromFloat32x4Bits() {
  45. var m = SIMD.Float32x4.fromInt32x4Bits(SIMD.Int32x4(0x3F800000, 0x40000000, 0x40400000, 0x40800000));
  46. var n = SIMD.Int32x4.fromFloat32x4Bits(m);
  47. print("FromFloat32x4Bits");
  48. equal(1, SIMD.Int32x4.extractLane(n, 0));
  49. equal(2, SIMD.Int32x4.extractLane(n, 1));
  50. equal(3, SIMD.Int32x4.extractLane(n, 2));
  51. equal(4, SIMD.Int32x4.extractLane(n, 3));
  52. var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0);
  53. var b = SIMD.Int32x4.fromFloat32x4Bits(a);
  54. equal(0x3F800000, SIMD.Int32x4.extractLane(b, 0));
  55. equal(0x40000000, SIMD.Int32x4.extractLane(b, 1));
  56. equal(0x40400000, SIMD.Int32x4.extractLane(b, 2));
  57. equal(0x40800000, SIMD.Int32x4.extractLane(b, 3));
  58. }
  59. function testFromInt8x16Bits() {
  60. var m = SIMD.Int8x16.fromInt32x4Bits(SIMD.Int32x4(0x3F800000, 0x40000000, 0x40400000, 0x40800000));
  61. var n = SIMD.Int32x4.fromInt8x16Bits(m);
  62. WScript.Echo("FromInt8x16Bits");
  63. equal(0x3F800000, SIMD.Int32x4.extractLane(n, 0));
  64. equal(0x40000000, SIMD.Int32x4.extractLane(n, 1));
  65. equal(0x40400000, SIMD.Int32x4.extractLane(n, 2));
  66. equal(0x40800000, SIMD.Int32x4.extractLane(n, 3));
  67. var a = SIMD.Int8x16(1, 2, 3, 4, 5, 6, 7, 8);
  68. var b = SIMD.Int32x4.fromInt8x16Bits(a);
  69. equal(0x04030201, SIMD.Int32x4.extractLane(b, 0));
  70. equal(0x08070605, SIMD.Int32x4.extractLane(b, 1));
  71. equal(0x00000000, SIMD.Int32x4.extractLane(b, 2));
  72. equal(0x00000000, SIMD.Int32x4.extractLane(b, 3));
  73. var c = SIMD.Int8x16(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
  74. var d = SIMD.Int32x4.fromInt8x16Bits(c);
  75. equal(0x04030201, SIMD.Int32x4.extractLane(d, 0));
  76. equal(0x08070605, SIMD.Int32x4.extractLane(d, 1));
  77. equal(0x0C0B0A09, SIMD.Int32x4.extractLane(d, 2));
  78. equal(0x000F0E0D, SIMD.Int32x4.extractLane(d, 3));
  79. }
  80. function testFromInt16x8Bits() {
  81. var m = SIMD.Int16x8.fromInt32x4Bits(SIMD.Int32x4(0x3F800000, 0x40000000, 0x40400000, 0x40800000));
  82. var n = SIMD.Int32x4.fromInt16x8Bits(m);
  83. WScript.Echo("FromInt16x8Bits");
  84. equal(0x3F800000, SIMD.Int32x4.extractLane(n, 0));
  85. equal(0x40000000, SIMD.Int32x4.extractLane(n, 1));
  86. equal(0x40400000, SIMD.Int32x4.extractLane(n, 2));
  87. equal(0x40800000, SIMD.Int32x4.extractLane(n, 3));
  88. var a = SIMD.Int16x8(1, 2, 3, 4, 5, 6, 7, 8);
  89. var b = SIMD.Int32x4.fromInt16x8Bits(a);
  90. equal(0x00020001, SIMD.Int32x4.extractLane(b, 0));
  91. equal(0x00040003, SIMD.Int32x4.extractLane(b, 1));
  92. equal(0x00060005, SIMD.Int32x4.extractLane(b, 2));
  93. equal(0x00080007, SIMD.Int32x4.extractLane(b, 3));
  94. }
  95. function testFromUint32x4Bits() {
  96. var m = SIMD.Uint32x4.fromInt32x4Bits(SIMD.Int32x4(0x3F800000, 0x40000000, 0x40400000, 0x40800000));
  97. var n = SIMD.Int32x4.fromUint32x4Bits(m);
  98. WScript.Echo("FromUint32x4Bits");
  99. equal(0x3F800000, SIMD.Int32x4.extractLane(n, 0));
  100. equal(0x40000000, SIMD.Int32x4.extractLane(n, 1));
  101. equal(0x40400000, SIMD.Int32x4.extractLane(n, 2));
  102. equal(0x40800000, SIMD.Int32x4.extractLane(n, 3));
  103. var a = SIMD.Uint32x4(1, 2, 3, 4);
  104. var b = SIMD.Int32x4.fromUint32x4Bits(a);
  105. equal(0x00000001, SIMD.Int32x4.extractLane(b, 0));
  106. equal(0x00000002, SIMD.Int32x4.extractLane(b, 1));
  107. equal(0x00000003, SIMD.Int32x4.extractLane(b, 2));
  108. equal(0x00000004, SIMD.Int32x4.extractLane(b, 3));
  109. }
  110. function testFromUint16x8Bits() {
  111. var m = SIMD.Uint16x8.fromInt32x4Bits(SIMD.Int32x4(0x3F800000, 0x40000000, 0x40400000, 0x40800000));
  112. var n = SIMD.Int32x4.fromUint16x8Bits(m);
  113. WScript.Echo("FromUint16x8Bits");
  114. equal(0x3F800000, SIMD.Int32x4.extractLane(n, 0));
  115. equal(0x40000000, SIMD.Int32x4.extractLane(n, 1));
  116. equal(0x40400000, SIMD.Int32x4.extractLane(n, 2));
  117. equal(0x40800000, SIMD.Int32x4.extractLane(n, 3));
  118. var a = SIMD.Uint16x8(1, 2, 3, 4, 5, 6, 7, 8);
  119. var b = SIMD.Int32x4.fromUint16x8Bits(a);
  120. equal(0x00020001, SIMD.Int32x4.extractLane(b, 0));
  121. equal(0x00040003, SIMD.Int32x4.extractLane(b, 1));
  122. equal(0x00060005, SIMD.Int32x4.extractLane(b, 2));
  123. equal(0x00080007, SIMD.Int32x4.extractLane(b, 3));
  124. }
  125. function testFromUint8x16Bits() {
  126. var m = SIMD.Uint8x16.fromInt32x4Bits(SIMD.Int32x4(0x3F800000, 0x40000000, 0x40400000, 0x40800000));
  127. var n = SIMD.Int32x4.fromUint8x16Bits(m);
  128. WScript.Echo("FromUint8x16Bits");
  129. equal(0x3F800000, SIMD.Int32x4.extractLane(n, 0));
  130. equal(0x40000000, SIMD.Int32x4.extractLane(n, 1));
  131. equal(0x40400000, SIMD.Int32x4.extractLane(n, 2));
  132. equal(0x40800000, SIMD.Int32x4.extractLane(n, 3));
  133. var a = SIMD.Uint8x16(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
  134. var b = SIMD.Int32x4.fromUint8x16Bits(a);
  135. equal(0x04030201, SIMD.Int32x4.extractLane(b, 0));
  136. equal(0x08070605, SIMD.Int32x4.extractLane(b, 1));
  137. equal(0x0C0B0A09, SIMD.Int32x4.extractLane(b, 2));
  138. equal(0x100F0E0D, SIMD.Int32x4.extractLane(b, 3));
  139. }
  140. testConstructor();
  141. testFromFloat32x4();
  142. testFromFloat32x4Bits();
  143. testConstructor();
  144. testFromFloat32x4();
  145. testFromFloat32x4Bits();
  146. testConstructor();
  147. testFromFloat32x4();
  148. testFromFloat32x4Bits();
  149. testConstructor();
  150. testFromFloat32x4();
  151. testFromFloat32x4Bits();
  152. testConstructor();
  153. testFromFloat32x4();
  154. testFromFloat32x4Bits();
  155. testConstructor();
  156. testFromFloat32x4();
  157. testFromFloat32x4Bits();
  158. testFromInt8x16Bits();
  159. testFromInt8x16Bits();
  160. testFromInt8x16Bits();
  161. testFromInt16x8Bits();
  162. testFromInt16x8Bits();
  163. testFromInt16x8Bits();
  164. testFromUint32x4Bits();
  165. testFromUint32x4Bits();
  166. testFromUint32x4Bits();
  167. testFromUint16x8Bits();
  168. testFromUint16x8Bits();
  169. testFromUint16x8Bits();
  170. testFromUint8x16Bits();
  171. testFromUint8x16Bits();
  172. testFromUint8x16Bits();