testBoolCalls.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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 asmModule(stdlib, imports) {
  7. "use asm";
  8. var b4 = stdlib.SIMD.Bool32x4;
  9. var b8 = stdlib.SIMD.Bool16x8;
  10. var b16 = stdlib.SIMD.Bool8x16;
  11. var b4check = b4.check;
  12. var b8check = b8.check;
  13. var b16check = b16.check;
  14. var b4and = b4.and;
  15. var b8and = b8.and;
  16. var b16and = b16.and;
  17. var b4or = b4.or;
  18. var b8or = b8.or;
  19. var b16or= b16.or;
  20. var b4xor = b4.xor;
  21. var b8xor = b8.xor;
  22. var b16xor= b16.xor;
  23. var b4not = b4.not;
  24. var b8not = b8.not;
  25. var b16not = b16.not;
  26. var b4allTrue = b4.allTrue;
  27. var b8allTrue = b8.allTrue;
  28. var b16allTrue = b16.allTrue;
  29. var b4anyTrue = b4.anyTrue;
  30. var b8anyTrue = b8.anyTrue;
  31. var b16anyTrue = b16.anyTrue;
  32. var g1 = b4(1,1,0,1);
  33. var g2 = b8(1,1,0,1,1,1,0,1);
  34. var g3 = b16(1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1);
  35. function func1(a)
  36. {
  37. a = b4check(a);
  38. var b = b4(0,5,0,0);
  39. b = b4check(ifunc1(a));
  40. return b4check(b);
  41. }
  42. function ifunc1(a)
  43. {
  44. a = b4check(a);
  45. return b4check(a);
  46. }
  47. function func2(a)
  48. { a = b8check(a);
  49. var b = b8(0,5,0,0,0,5,0,0);
  50. b = b8check(ifunc2(a));
  51. return b8check(b);
  52. }
  53. function ifunc2(a)
  54. {
  55. a = b8check(a);
  56. return b8check(a);
  57. }
  58. function func3(a)
  59. { a = b16check(a);
  60. var b = b16(0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0);
  61. b = b16check(ifunc3(a));
  62. return b16check(b);
  63. }
  64. function ifunc3(a)
  65. {
  66. a = b16check(a);
  67. return b16check(a);
  68. }
  69. return {
  70. func1: func1,
  71. func2: func2,
  72. func3: func3,
  73. };
  74. }
  75. var m = asmModule(this, {g1:SIMD.Int8x16(0, 1, 2, 3, 4, 5, -6, -7, -8, 9, 10, 11, 12, 13, 14, 15)});
  76. var b4 = SIMD.Bool32x4;
  77. var b8 = SIMD.Bool16x8;
  78. var b16 = SIMD.Bool8x16;
  79. var ret1 = m.func1(b4(0,1,2,3));
  80. var ret2 = m.func2(b8(0,1,2,3,0,-1,0,-1));
  81. var ret3 = m.func3(b16(0,1,2,3,0,-1,0,-1,0,1,2,3,0,-1,0,-1));
  82. /*
  83. printSimdBaseline(ret1, "SIMD.Bool32x4", "ret1", "func1");
  84. printSimdBaseline(ret2, "SIMD.Bool16x8", "ret2", "func2");
  85. printSimdBaseline(ret3, "SIMD.Bool8x16", "ret3", "func3");
  86. */
  87. equalSimd([false, true, true, true], ret1, SIMD.Bool32x4, "func1")
  88. equalSimd([false, true, true, true, false, true, false, true], ret2, SIMD.Bool16x8, "func2")
  89. equalSimd([false, true, true, true, false, true, false, true, false, true, true, true, false, true, false, true], ret3, SIMD.Bool8x16, "func3")
  90. print("PASS");