add missing unit test for 128-bit ops
Change-Id: I233398bf34411231d44613d89aed28935fe30a28
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/340796
Commit-Queue: Herb Derby <herb@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
diff --git a/tests/SkVMTest.cpp b/tests/SkVMTest.cpp
index 1e7b3d1..4725997 100644
--- a/tests/SkVMTest.cpp
+++ b/tests/SkVMTest.cpp
@@ -2363,6 +2363,58 @@
}
}
+DEF_TEST(SkVM_128bit, r) {
+ float floats[4*63];
+ uint8_t packed[4*63];
+
+ for (int i = 0; i < 4*63; i++) {
+ floats[i] = i * (1/255.0f);
+ }
+
+ skvm::PixelFormat rgba_ffff,
+ rgba_8888;
+ skvm::SkColorType_to_PixelFormat(kRGBA_F32_SkColorType , &rgba_ffff);
+ skvm::SkColorType_to_PixelFormat(kRGBA_8888_SkColorType, &rgba_8888);
+
+ { // Convert RGBA F32 to RGBA 8888, testing 128-bit loads.
+ skvm::Builder b;
+ {
+ skvm::Arg dst = b.arg( 4),
+ src = b.arg(16);
+
+ skvm::Color c = b.load(rgba_ffff, src);
+ b.store(rgba_8888, dst, c);
+ }
+ test_jit_and_interpreter(b.done(), [&](const skvm::Program& program){
+ memset(packed, 0, sizeof(packed));
+ program.eval(63, packed, floats);
+ for (int i = 0; i < 4*63; i++) {
+ REPORTER_ASSERT(r, packed[i] == i);
+ }
+ });
+ }
+
+
+ { // Convert RGBA 8888 to RGBA F32, testing 128-bit stores.
+ skvm::Builder b;
+ {
+ skvm::Arg dst = b.arg(16),
+ src = b.arg( 4);
+
+ skvm::Color c = b.load(rgba_8888, src);
+ b.store(rgba_ffff, dst, c);
+ }
+ test_jit_and_interpreter(b.done(), [&](const skvm::Program& program){
+ memset(floats, 0, sizeof(floats));
+ program.eval(63, floats, packed);
+ for (int i = 0; i < 4*63; i++) {
+ REPORTER_ASSERT(r, floats[i] == i * (1/255.0f));
+ }
+ });
+ }
+
+}
+
DEF_TEST(SkVM_is_NaN_is_finite, r) {
skvm::Builder b;
{