testShuffle.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. {
  8. print("Correct");
  9. }
  10. else
  11. {
  12. print(">> Fail!");
  13. }
  14. }
  15. function testSwizzle() {
  16. print("Float32x4 Shuffle");
  17. var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0);
  18. var xyxy = SIMD.Float32x4.swizzle(a, false, true, 0, 1);
  19. var zwzw = SIMD.Float32x4.swizzle(a, 2, 3, ["2"], 3);
  20. var xxxx = SIMD.Float32x4.swizzle(a, 0, 0, 0, 0);
  21. equal(1.0, SIMD.Float32x4.extractLane(xyxy, false));
  22. equal(2.0, SIMD.Float32x4.extractLane(xyxy, true));
  23. equal(1.0, SIMD.Float32x4.extractLane(xyxy, ["2"]));
  24. equal(2.0, SIMD.Float32x4.extractLane(xyxy, 3));
  25. equal(3.0, SIMD.Float32x4.extractLane(zwzw, 0));
  26. equal(4.0, SIMD.Float32x4.extractLane(zwzw, 1));
  27. equal(3.0, SIMD.Float32x4.extractLane(zwzw, 2));
  28. equal(4.0, SIMD.Float32x4.extractLane(zwzw, 3));
  29. equal(1.0, SIMD.Float32x4.extractLane(xxxx, 0));
  30. equal(1.0, SIMD.Float32x4.extractLane(xxxx, 1));
  31. equal(1.0, SIMD.Float32x4.extractLane(xxxx, 2));
  32. equal(1.0, SIMD.Float32x4.extractLane(xxxx, 3));
  33. }
  34. function testShuffle() {
  35. print("Float32x4 ShuffleMix");
  36. var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0);
  37. var b = SIMD.Float32x4(5.0, 6.0, 7.0, 8.0);
  38. var xyxy = SIMD.Float32x4.shuffle(a, b, 0, 1, 4, 5);
  39. var zwzw = SIMD.Float32x4.shuffle(a, b, 2, 3, 6, 7);
  40. var xxxx = SIMD.Float32x4.shuffle(a, b, 0, 0, 4, 4);
  41. equal(1.0, SIMD.Float32x4.extractLane(xyxy, 0));
  42. equal(2.0, SIMD.Float32x4.extractLane(xyxy, 1));
  43. equal(5.0, SIMD.Float32x4.extractLane(xyxy, 2));
  44. equal(6.0, SIMD.Float32x4.extractLane(xyxy, 3));
  45. equal(3.0, SIMD.Float32x4.extractLane(zwzw, 0));
  46. equal(4.0, SIMD.Float32x4.extractLane(zwzw, 1));
  47. equal(7.0, SIMD.Float32x4.extractLane(zwzw, 2));
  48. equal(8.0, SIMD.Float32x4.extractLane(zwzw, 3));
  49. equal(1.0, SIMD.Float32x4.extractLane(xxxx, 0));
  50. equal(1.0, SIMD.Float32x4.extractLane(xxxx, 1));
  51. equal(5.0, SIMD.Float32x4.extractLane(xxxx, 2));
  52. equal(5.0, SIMD.Float32x4.extractLane(xxxx, 3));
  53. }
  54. testSwizzle();
  55. testSwizzle();
  56. testSwizzle();
  57. testSwizzle();
  58. testSwizzle();
  59. testSwizzle();
  60. testSwizzle();
  61. testSwizzle();
  62. testShuffle();
  63. testShuffle();
  64. testShuffle();
  65. testShuffle();
  66. testShuffle();
  67. testShuffle();
  68. testShuffle();
  69. testShuffle();