testAndOrXor.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft Corporation and contributors. 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. var o = SIMD.Int32x4.and(m, n); // and
  18. equal(0x0, SIMD.Int32x4.extractLane(o, 0));
  19. equal(0x0, SIMD.Int32x4.extractLane(o, 1));
  20. equal(0x0, SIMD.Int32x4.extractLane(o, 2));
  21. equal(0x0, SIMD.Int32x4.extractLane(o, 3));
  22. }
  23. function testOr() {
  24. var m = SIMD.Int32x4(0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA);
  25. var n = SIMD.Int32x4(0x55555555, 0x55555555, 0x55555555, 0x55555555);
  26. var o = SIMD.Int32x4.or(m, n); // or
  27. equal(-1, SIMD.Int32x4.extractLane(o, 0));
  28. equal(-1, SIMD.Int32x4.extractLane(o, 1));
  29. equal(-1, SIMD.Int32x4.extractLane(o, 2));
  30. equal(-1, SIMD.Int32x4.extractLane(o, 3));
  31. }
  32. function testXor() {
  33. var m = SIMD.Int32x4(0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA, 0xAAAAAAAA);
  34. var n = SIMD.Int32x4(0x55555555, 0x55555555, 0x55555555, 0x55555555);
  35. n = SIMD.Int32x4.replaceLane(n, 0, 0xAAAAAAAA);
  36. n = SIMD.Int32x4.replaceLane(n, 1, 0xAAAAAAAA);
  37. n = SIMD.Int32x4.replaceLane(n, 2, 0xAAAAAAAA);
  38. n = SIMD.Int32x4.replaceLane(n, 3, 0xAAAAAAAA);
  39. equal(-1431655766, SIMD.Int32x4.extractLane(n, 0));
  40. equal(-1431655766, SIMD.Int32x4.extractLane(n, 1));
  41. equal(-1431655766, SIMD.Int32x4.extractLane(n, 2));
  42. equal(-1431655766, SIMD.Int32x4.extractLane(n, 3));
  43. var o = SIMD.Int32x4.xor(m, n); // xor
  44. equal(0x0, SIMD.Int32x4.extractLane(o, 0));
  45. equal(0x0, SIMD.Int32x4.extractLane(o, 1));
  46. equal(0x0, SIMD.Int32x4.extractLane(o, 2));
  47. equal(0x0, SIMD.Int32x4.extractLane(o, 3));
  48. }
  49. testAnd();
  50. testAnd();
  51. testAnd();
  52. testAnd();
  53. testOr();
  54. testOr();
  55. testOr();
  56. testOr();
  57. testXor();
  58. testXor();
  59. testXor();
  60. testXor();
  61. print("PASS");