testAndOrXor.js 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. this.WScript.LoadScriptFile("..\\UnitTestFramework\\SimdJsHelpers.js");
  6. function testAnd() {
  7. var m = SIMD.Int32x4(0xAAAAAAAA, 0xAAAAAAAA, -1431655766, 0xAAAAAAAA);
  8. var n = SIMD.Int32x4(0x55555555, 0x55555555, 0x55555555, 0x55555555);
  9. equal(-1431655766, SIMD.Int32x4.extractLane(m, 0));
  10. equal(-1431655766, SIMD.Int32x4.extractLane(m, 1));
  11. equal(-1431655766, SIMD.Int32x4.extractLane(m, 2));
  12. equal(-1431655766, SIMD.Int32x4.extractLane(m, 3));
  13. equal(0x55555555, SIMD.Int32x4.extractLane(n, 0));
  14. equal(0x55555555, SIMD.Int32x4.extractLane(n, 1));
  15. equal(0x55555555, SIMD.Int32x4.extractLane(n, 2));
  16. equal(0x55555555, SIMD.Int32x4.extractLane(n, 3));
  17. equal(true, n.flagX);
  18. equal(true, n.flagY);
  19. equal(true, n.flagZ);
  20. equal(true, n.flagW);
  21. var o = SIMD.Int32x4.and(m, n); // and
  22. equal(0x0, SIMD.Int32x4.extractLane(o, 0));
  23. equal(0x0, SIMD.Int32x4.extractLane(o, 1));
  24. equal(0x0, SIMD.Int32x4.extractLane(o, 2));
  25. equal(0x0, SIMD.Int32x4.extractLane(o, 3));
  26. equal(false, o.flagX);
  27. equal(false, o.flagY);
  28. equal(false, o.flagZ);
  29. equal(false, o.flagW);
  30. }
  31. function testOr() {
  32. var m = SIMD.Int32x4(0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA);
  33. var n = SIMD.Int32x4(0x55555555, 0x55555555, 0x55555555, 0x55555555);
  34. var o = SIMD.Int32x4.or(m, n); // or
  35. equal(-1, SIMD.Int32x4.extractLane(o, 0));
  36. equal(-1, SIMD.Int32x4.extractLane(o, 1));
  37. equal(-1, SIMD.Int32x4.extractLane(o, 2));
  38. equal(-1, SIMD.Int32x4.extractLane(o, 3));
  39. equal(true, o.flagX);
  40. equal(true, o.flagY);
  41. equal(true, o.flagZ);
  42. equal(true, o.flagW);
  43. }
  44. function testXor() {
  45. var m = SIMD.Int32x4(0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA);
  46. var n = SIMD.Int32x4(0x55555555, 0x55555555, 0x55555555, 0x55555555);
  47. n = SIMD.Int32x4.replaceLane(n, 0, 0xAAAAAAAA);
  48. n = SIMD.Int32x4.replaceLane(n, 1, 0xAAAAAAAA);
  49. n = SIMD.Int32x4.replaceLane(n, 2, 0xAAAAAAAA);
  50. n = SIMD.Int32x4.replaceLane(n, 3, 0xAAAAAAAA);
  51. equal(-1431655766, SIMD.Int32x4.extractLane(n, 0));
  52. equal(-1431655766, SIMD.Int32x4.extractLane(n, 1));
  53. equal(-1431655766, SIMD.Int32x4.extractLane(n, 2));
  54. equal(-1431655766, SIMD.Int32x4.extractLane(n, 3));
  55. var o = SIMD.Int32x4.xor(m, n); // xor
  56. equal(0x0, SIMD.Int32x4.extractLane(o, 0));
  57. equal(0x0, SIMD.Int32x4.extractLane(o, 1));
  58. equal(0x0, SIMD.Int32x4.extractLane(o, 2));
  59. equal(0x0, SIMD.Int32x4.extractLane(o, 3));
  60. equal(false, o.flagX);
  61. equal(false, o.flagY);
  62. equal(false, o.flagZ);
  63. equal(false, o.flagW);
  64. }
  65. testAnd();
  66. testAnd();
  67. testAnd();
  68. testAnd();
  69. testOr();
  70. testOr();
  71. testOr();
  72. testOr();
  73. testXor();
  74. testXor();
  75. testXor();
  76. testXor();
  77. print("PASS");