Add vsrn and vzip unit tests

Part of the vsrn tests are not introduced for now due to HW bug.

Bug: 307590638

Change-Id: I7478afd55a9eb375581dc2ffbf6c3f530276fa84
diff --git a/tests/kelvin_isa/BUILD b/tests/kelvin_isa/BUILD
index 0ea0bc7..5320b6f 100644
--- a/tests/kelvin_isa/BUILD
+++ b/tests/kelvin_isa/BUILD
@@ -221,3 +221,24 @@
         ":kelvin_test",
     ],
 )
+
+kelvin_test(
+    name = "vsrn",
+    srcs = [
+        "vsrn.cc",
+    ],
+    deps = [
+        ":kelvin_test",
+    ],
+)
+
+kelvin_test(
+    name = "vzip",
+    srcs = [
+        "vzip.cc",
+    ],
+    hw_test_size = "small",
+    deps = [
+        ":kelvin_test",
+    ],
+)
diff --git a/tests/kelvin_isa/vsrn.cc b/tests/kelvin_isa/vsrn.cc
new file mode 100644
index 0000000..f0d6a9c
--- /dev/null
+++ b/tests/kelvin_isa/vsrn.cc
@@ -0,0 +1,1306 @@
+/*
+ * Copyright 2023 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "tests/kelvin_isa/kelvin_test.h"
+
+// clang-format off
+#define test_alun_b_vx(op, in0, in1, ref)                          \
+{                                                                  \
+  uint8_t dut[VLENB] __attribute__((aligned(64))) = {0xcc};        \
+  vdup_h_x(v0, in0);                                               \
+  __asm__ __volatile__(ARGS_F_A_A_A(op, v2, v0, %0) : : "r"(in1)); \
+  vst_b_x(v2, dut);                                                \
+  if (ref != dut[0]) {                                             \
+    printf("**error(%d)[%s] %04x %04x : %02x %02x\n",              \
+        __LINE__, op, in0, in1, ref, dut[0]);                      \
+    exit(-1);                                                      \
+  }                                                                \
+}
+
+#define test_alun_h_vx(op, in0, in1, ref)                          \
+{                                                                  \
+  uint16_t dut[VLENH] __attribute__((aligned(64))) = {0xcccc};     \
+  vdup_w_x(v0, in0);                                               \
+  __asm__ __volatile__(ARGS_F_A_A_A(op, v2, v0, %0) : : "r"(in1)); \
+  vst_h_x(v2, dut);                                                \
+  if (ref != dut[0]) {                                             \
+    printf("**error(%d)[%s] %08x %08x : %04x %04x\n",              \
+        __LINE__, op, in0, in1, ref, dut[0]);                      \
+    exit(-1);                                                      \
+  }                                                                \
+}
+
+#define test_aluq_b_vx(op, in0, in1, ref)                          \
+{                                                                  \
+  uint8_t dut[VLENB] __attribute__((aligned(64))) = {0xcc};        \
+  vdup_w_x(v0, in0);                                               \
+  __asm__ __volatile__(ARGS_F_A_A_A(op, v2, v0, %0) : : "r"(in1)); \
+  vst_b_x(v2, dut);                                                \
+  if (ref != dut[0]) {                                             \
+    printf("**error(%d)[%s] %08x %02x : %02x %02x\n",              \
+        __LINE__, op, in0, in1, ref, dut[0]);                      \
+    exit(-1);                                                      \
+  }                                                                \
+}
+
+// clang-format on
+
+void test_vsraqs() {
+  const uint32_t in[16] = {0x0000006e, 0xffffffda, 0x00000097, 0xfffffcde,
+                           0xffffff66, 0xfffffcba, 0x00000006, 0xffffff64,
+                           0x0000019a, 0x000001b2, 0xffffff9e, 0x00000234,
+                           0xffffff7c, 0x00000013, 0xffffff35, 0x000000a3};
+  const uint8_t ref[16] = {0x03, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x01,
+                           0x05, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x05};
+  uint8_t dut[16];
+
+  vld_w_l_xx(v0, in + 0, 4);
+  vld_w_l_xx(v1, in + 4, 4);
+  vld_w_l_xx(v2, in + 8, 4);
+  vld_w_l_xx(v3, in + 12, 4);
+  vsraqsu_b_r_vx(v0, v0, 5);
+  vst_b_l_xx(v0, dut + 0, 16);
+
+  for (int i = 0; i < 16; ++i) {
+    const uint8_t r = ref[i];
+    const uint8_t d = dut[i];
+    if (r != d) {
+      printf("**test_vsraqs(%d) %02x %02x\n", i, r, d);
+      exit(-1);
+    }
+  }
+}
+
+int main() {
+  // TODO(b/307590638): Re-Enable vsransu/vsraqsu tests.
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0x00, 0x7f);
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0x01, 0x66);
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0x02, 0x33);
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0x03, 0x19);
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0x04, 0x0c);
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0x05, 0x06);
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0x06, 0x03);
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0x07, 0x01);
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0x08, 0x00);
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0x09, 0x00);
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0x0a, 0x00);
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0x0b, 0x00);
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0x0c, 0x00);
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0x0d, 0x00);
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0x0e, 0x00);
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0x0f, 0x00);
+  test_alun_b_vx("vsrans.b.vx", 0x00cd, 0xf0, 0x7f);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0x00, 0x7f);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0x01, 0x7f);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0x02, 0x7f);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0x03, 0x7f);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0x04, 0x7f);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0x05, 0x7f);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0x06, 0x7f);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0x07, 0x7f);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0x08, 0x67);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0x09, 0x33);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0x0a, 0x19);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0x0b, 0x0c);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0x0c, 0x06);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0x0d, 0x03);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0x0e, 0x01);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0x0f, 0x00);
+  test_alun_b_vx("vsrans.b.vx", 0x6789, 0xf0, 0x7f);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0x00, 0x80);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0x01, 0x80);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0x02, 0x80);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0x03, 0x80);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0x04, 0x80);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0x05, 0x80);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0x06, 0x80);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0x07, 0x80);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0x08, 0x98);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0x09, 0xcc);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0x0a, 0xe6);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0x0b, 0xf3);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0x0c, 0xf9);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0x0d, 0xfc);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0x0e, 0xfe);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0x0f, 0xff);
+  test_alun_b_vx("vsrans.b.vx", 0x9876, 0xf0, 0x80);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x00, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x01, 0x65d4);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x02, 0x32ea);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x03, 0x1975);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x04, 0x0cba);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x05, 0x065d);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x06, 0x032e);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x07, 0x0197);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x08, 0x00cb);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x09, 0x0065);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x0a, 0x0032);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x0b, 0x0019);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x0c, 0x000c);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x0d, 0x0006);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x0e, 0x0003);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x0f, 0x0001);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x10, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x11, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x12, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x13, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x14, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x15, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x16, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x17, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x18, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x19, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x1a, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x1b, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x1c, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x1d, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x1e, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0x1f, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x0000cba9, 0xe0, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x00, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x01, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x02, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x03, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x04, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x05, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x06, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x07, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x08, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x09, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x0a, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x0b, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x0c, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x0d, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x0e, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x0f, 0x468a);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x10, 0x2345);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x11, 0x11a2);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x12, 0x08d1);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x13, 0x0468);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x14, 0x0234);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x15, 0x011a);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x16, 0x008d);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x17, 0x0046);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x18, 0x0023);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x19, 0x0011);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x1a, 0x0008);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x1b, 0x0004);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x1c, 0x0002);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x1d, 0x0001);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x1e, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0x1f, 0x0000);
+  test_alun_h_vx("vsrans.h.vx", 0x23456789, 0xe0, 0x7fff);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x00, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x00, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x01, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x02, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x03, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x04, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x05, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x06, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x07, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x08, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x09, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x0a, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x0b, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x0c, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x0d, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x0e, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x0f, 0x8000);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x10, 0x9876);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x11, 0xcc3b);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x12, 0xe61d);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x13, 0xf30e);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x14, 0xf987);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x15, 0xfcc3);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x16, 0xfe61);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x17, 0xff30);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x18, 0xff98);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x19, 0xffcc);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x1a, 0xffe6);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x1b, 0xfff3);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x1c, 0xfff9);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x1d, 0xfffc);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x1e, 0xfffe);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0x1f, 0xffff);
+  test_alun_h_vx("vsrans.h.vx", 0x98765432, 0xe0, 0x8000);
+
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0x00, 0x7f);
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0x01, 0x67);
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0x02, 0x33);
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0x03, 0x1a);
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0x04, 0x0d);
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0x05, 0x06);
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0x06, 0x03);
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0x07, 0x02);
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0x08, 0x01);
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0x09, 0x00);
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0x0a, 0x00);
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0x0b, 0x00);
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0x0c, 0x00);
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0x0d, 0x00);
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0x0e, 0x00);
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0x0f, 0x00);
+  test_alun_b_vx("vsrans.b.r.vx", 0x00cd, 0xf0, 0x7f);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0x00, 0x7f);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0x01, 0x7f);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0x02, 0x7f);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0x03, 0x7f);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0x04, 0x7f);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0x05, 0x7f);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0x06, 0x7f);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0x07, 0x7f);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0x08, 0x68);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0x09, 0x34);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0x0a, 0x1a);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0x0b, 0x0d);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0x0c, 0x06);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0x0d, 0x03);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0x0e, 0x02);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0x0f, 0x01);
+  test_alun_b_vx("vsrans.b.r.vx", 0x6789, 0xf0, 0x7f);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0x00, 0x80);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0x01, 0x80);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0x02, 0x80);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0x03, 0x80);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0x04, 0x80);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0x05, 0x80);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0x06, 0x80);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0x07, 0x80);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0x08, 0x98);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0x09, 0xcc);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0x0a, 0xe6);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0x0b, 0xf3);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0x0c, 0xfa);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0x0d, 0xfd);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0x0e, 0xfe);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0x0f, 0xff);
+  test_alun_b_vx("vsrans.b.r.vx", 0x9876, 0xf0, 0x80);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x00, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x01, 0x65d5);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x02, 0x32ea);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x03, 0x1975);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x04, 0x0cbb);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x05, 0x065d);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x06, 0x032f);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x07, 0x0197);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x08, 0x00cc);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x09, 0x0066);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x0a, 0x0033);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x0b, 0x0019);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x0c, 0x000d);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x0d, 0x0006);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x0e, 0x0003);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x0f, 0x0002);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x10, 0x0001);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x11, 0x0000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x12, 0x0000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x13, 0x0000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x14, 0x0000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x15, 0x0000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x16, 0x0000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x17, 0x0000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x18, 0x0000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x19, 0x0000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x1a, 0x0000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x1b, 0x0000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x1c, 0x0000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x1d, 0x0000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x1e, 0x0000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0x1f, 0x0000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x0000cba9, 0xe0, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x00, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x01, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x02, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x03, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x04, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x05, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x06, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x07, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x08, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x09, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x0a, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x0b, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x0c, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x0d, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x0e, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x0f, 0x468b);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x10, 0x2345);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x11, 0x11a3);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x12, 0x08d1);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x13, 0x0469);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x14, 0x0234);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x15, 0x011a);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x16, 0x008d);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x17, 0x0047);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x18, 0x0023);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x19, 0x0012);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x1a, 0x0009);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x1b, 0x0004);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x1c, 0x0002);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x1d, 0x0001);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x1e, 0x0001);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0x1f, 0x0000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x23456789, 0xe0, 0x7fff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x00, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x00, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x01, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x02, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x03, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x04, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x05, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x06, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x07, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x08, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x09, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x0a, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x0b, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x0c, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x0d, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x0e, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x0f, 0x8000);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x10, 0x9876);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x11, 0xcc3b);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x12, 0xe61e);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x13, 0xf30f);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x14, 0xf987);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x15, 0xfcc4);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x16, 0xfe62);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x17, 0xff31);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x18, 0xff98);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x19, 0xffcc);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x1a, 0xffe6);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x1b, 0xfff3);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x1c, 0xfffa);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x1d, 0xfffd);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x1e, 0xfffe);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0x1f, 0xffff);
+  test_alun_h_vx("vsrans.h.r.vx", 0x98765432, 0xe0, 0x8000);
+
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0x00, 0xcd);
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0x01, 0x66);
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0x02, 0x33);
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0x03, 0x19);
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0x04, 0x0c);
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0x05, 0x06);
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0x06, 0x03);
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0x07, 0x01);
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0x08, 0x00);
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0x09, 0x00);
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0x0a, 0x00);
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0x0b, 0x00);
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0x0c, 0x00);
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0x0d, 0x00);
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0x0e, 0x00);
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0x0f, 0x00);
+  test_alun_b_vx("vsransu.b.vx", 0x00cd, 0xf0, 0xcd);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0x00, 0xff);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0x01, 0xff);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0x02, 0xff);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0x03, 0xff);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0x04, 0xff);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0x05, 0xff);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0x06, 0xff);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0x07, 0xcf);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0x08, 0x67);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0x09, 0x33);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0x0a, 0x19);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0x0b, 0x0c);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0x0c, 0x06);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0x0d, 0x03);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0x0e, 0x01);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0x0f, 0x00);
+  test_alun_b_vx("vsransu.b.vx", 0x6789, 0xf0, 0xff);
+
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x00, 0xcba9);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x01, 0x65d4);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x02, 0x32ea);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x03, 0x1975);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x04, 0x0cba);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x05, 0x065d);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x06, 0x032e);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x07, 0x0197);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x08, 0x00cb);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x09, 0x0065);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x0a, 0x0032);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x0b, 0x0019);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x0c, 0x000c);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x0d, 0x0006);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x0e, 0x0003);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x0f, 0x0001);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x10, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x11, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x12, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x13, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x14, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x15, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x16, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x17, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x18, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x19, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x1a, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x1b, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x1c, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x1d, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x1e, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0x1f, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x0000cba9, 0xe0, 0xcba9);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x00, 0xffff);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x01, 0xffff);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x02, 0xffff);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x03, 0xffff);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x04, 0xffff);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x05, 0xffff);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x06, 0xffff);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x07, 0xffff);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x08, 0xffff);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x09, 0xffff);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x0a, 0xffff);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x0b, 0xffff);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x0c, 0xffff);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x0d, 0xffff);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x0e, 0x8d15);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x0f, 0x468a);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x10, 0x2345);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x11, 0x11a2);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x12, 0x08d1);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x13, 0x0468);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x14, 0x0234);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x15, 0x011a);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x16, 0x008d);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x17, 0x0046);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x18, 0x0023);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x19, 0x0011);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x1a, 0x0008);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x1b, 0x0004);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x1c, 0x0002);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x1d, 0x0001);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x1e, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0x1f, 0x0000);
+  test_alun_h_vx("vsransu.h.vx", 0x23456789, 0xe0, 0xffff);
+
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0x00, 0xcd);
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0x01, 0x67);
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0x02, 0x33);
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0x03, 0x1a);
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0x04, 0x0d);
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0x05, 0x06);
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0x06, 0x03);
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0x07, 0x02);
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0x08, 0x01);
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0x09, 0x00);
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0x0a, 0x00);
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0x0b, 0x00);
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0x0c, 0x00);
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0x0d, 0x00);
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0x0e, 0x00);
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0x0f, 0x00);
+  test_alun_b_vx("vsransu.b.r.vx", 0x00cd, 0xf0, 0xcd);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0x00, 0xff);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0x01, 0xff);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0x02, 0xff);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0x03, 0xff);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0x04, 0xff);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0x05, 0xff);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0x06, 0xff);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0x07, 0xcf);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0x08, 0x68);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0x09, 0x34);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0x0a, 0x1a);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0x0b, 0x0d);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0x0c, 0x06);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0x0d, 0x03);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0x0e, 0x02);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0x0f, 0x01);
+  test_alun_b_vx("vsransu.b.r.vx", 0x6789, 0xf0, 0xff);
+
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x00, 0xcba9);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x01, 0x65d5);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x02, 0x32ea);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x03, 0x1975);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x04, 0x0cbb);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x05, 0x065d);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x06, 0x032f);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x07, 0x0197);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x08, 0x00cc);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x09, 0x0066);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x0a, 0x0033);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x0b, 0x0019);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x0c, 0x000d);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x0d, 0x0006);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x0e, 0x0003);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x0f, 0x0002);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x10, 0x0001);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x11, 0x0000);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x12, 0x0000);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x13, 0x0000);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x14, 0x0000);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x15, 0x0000);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x16, 0x0000);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x17, 0x0000);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x18, 0x0000);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x19, 0x0000);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x1a, 0x0000);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x1b, 0x0000);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x1c, 0x0000);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x1d, 0x0000);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x1e, 0x0000);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0x1f, 0x0000);
+  test_alun_h_vx("vsransu.h.r.vx", 0x0000cba9, 0xe0, 0xcba9);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x00, 0xffff);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x01, 0xffff);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x02, 0xffff);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x03, 0xffff);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x04, 0xffff);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x05, 0xffff);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x06, 0xffff);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x07, 0xffff);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x08, 0xffff);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x09, 0xffff);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x0a, 0xffff);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x0b, 0xffff);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x0c, 0xffff);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x0d, 0xffff);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x0e, 0x8d16);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x0f, 0x468b);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x10, 0x2345);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x11, 0x11a3);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x12, 0x08d1);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x13, 0x0469);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x14, 0x0234);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x15, 0x011a);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x16, 0x008d);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x17, 0x0047);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x18, 0x0023);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x19, 0x0012);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x1a, 0x0009);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x1b, 0x0004);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x1c, 0x0002);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x1d, 0x0001);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x1e, 0x0001);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0x1f, 0x0000);
+  test_alun_h_vx("vsransu.h.r.vx", 0x23456789, 0xe0, 0xffff);
+
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x00, 0x12);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x01, 0x09);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x02, 0x04);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x03, 0x02);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x04, 0x01);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x05, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x06, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x07, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x08, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x09, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x0a, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x0b, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x0c, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x0d, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x0e, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x0f, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x10, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x11, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x12, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x13, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x14, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x15, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x16, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x17, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x18, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x19, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x1a, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x1b, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x1c, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x1d, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x1e, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00000012, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x00, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x01, 0x66);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x02, 0x33);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x03, 0x19);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x04, 0x0c);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x05, 0x06);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x06, 0x03);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x07, 0x01);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x08, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x09, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x0a, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x0b, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x0c, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x0d, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x0e, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x0f, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x10, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x11, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x12, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x13, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x14, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x15, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x16, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x17, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x18, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x19, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x1a, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x1b, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x1c, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x1d, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x1e, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x000000cd, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x00, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x01, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x02, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x03, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x04, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x05, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x06, 0x48);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x07, 0x24);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x08, 0x12);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x09, 0x09);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x0a, 0x04);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x0b, 0x02);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x0c, 0x01);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x0d, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x0e, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x0f, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x10, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x11, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x12, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x13, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x14, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x15, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x16, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x17, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x18, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x19, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x1a, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x1b, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x1c, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x1d, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x1e, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x00001234, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x00, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x01, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x02, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x03, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x04, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x05, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x06, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x07, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x08, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x09, 0x55);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x0a, 0x2a);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x0b, 0x15);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x0c, 0x0a);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x0d, 0x05);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x0e, 0x02);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x0f, 0x01);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x10, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x11, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x12, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x13, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x14, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x15, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x16, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x17, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x18, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x19, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x1a, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x1b, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x1c, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x1d, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x1e, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x0000abcd, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x00, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x01, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x02, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x03, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x04, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x05, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x06, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x07, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x08, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x09, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x0a, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x0b, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x0c, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x0d, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x0e, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x0f, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x10, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x11, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x12, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x13, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x14, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x15, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x16, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x17, 0x7f);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x18, 0x67);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x19, 0x33);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x1a, 0x19);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x1b, 0x0c);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x1c, 0x06);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x1d, 0x03);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x1e, 0x01);
+  test_aluq_b_vx("vsraqs.b.vx", 0x6789abcd, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x00, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x01, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x02, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x03, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x04, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x05, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x06, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x07, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x08, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x09, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x0a, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x0b, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x0c, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x0d, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x0e, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x0f, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x10, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x11, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x12, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x13, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x14, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x15, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x16, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x17, 0x80);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x18, 0xba);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x19, 0xdd);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x1a, 0xee);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x1b, 0xf7);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x1c, 0xfb);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x1d, 0xfd);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x1e, 0xfe);
+  test_aluq_b_vx("vsraqs.b.vx", 0xba987654, 0x1f, 0xff);
+
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x00, 0x12);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x01, 0x09);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x02, 0x05);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x03, 0x02);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x04, 0x01);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x05, 0x01);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x06, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x07, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x08, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x09, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x0a, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x0b, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x0c, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x0d, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x0e, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x0f, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x10, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x11, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x12, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x13, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x14, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x15, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x16, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x17, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x18, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x19, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x1a, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x1b, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x1c, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x1d, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x1e, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00000012, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x00, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x01, 0x67);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x02, 0x33);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x03, 0x1a);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x04, 0x0d);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x05, 0x06);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x06, 0x03);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x07, 0x02);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x08, 0x01);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x09, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x0a, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x0b, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x0c, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x0d, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x0e, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x0f, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x10, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x11, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x12, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x13, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x14, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x15, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x16, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x17, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x18, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x19, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x1a, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x1b, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x1c, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x1d, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x1e, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x000000cd, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x00, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x01, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x02, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x03, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x04, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x05, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x06, 0x49);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x07, 0x24);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x08, 0x12);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x09, 0x09);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x0a, 0x05);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x0b, 0x02);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x0c, 0x01);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x0d, 0x01);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x0e, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x0f, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x10, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x11, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x12, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x13, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x14, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x15, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x16, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x17, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x18, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x19, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x1a, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x1b, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x1c, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x1d, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x1e, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x00001234, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x00, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x01, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x02, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x03, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x04, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x05, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x06, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x07, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x08, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x09, 0x56);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x0a, 0x2b);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x0b, 0x15);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x0c, 0x0b);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x0d, 0x05);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x0e, 0x03);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x0f, 0x01);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x10, 0x01);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x11, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x12, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x13, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x14, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x15, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x16, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x17, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x18, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x19, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x1a, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x1b, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x1c, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x1d, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x1e, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x0000abcd, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x00, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x01, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x02, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x03, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x04, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x05, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x06, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x07, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x08, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x09, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x0a, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x0b, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x0c, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x0d, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x0e, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x0f, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x10, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x11, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x12, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x13, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x14, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x15, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x16, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x17, 0x7f);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x18, 0x68);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x19, 0x34);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x1a, 0x1a);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x1b, 0x0d);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x1c, 0x06);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x1d, 0x03);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x1e, 0x02);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0x6789abcd, 0x1f, 0x01);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x00, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x01, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x02, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x03, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x04, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x05, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x06, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x07, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x08, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x09, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x0a, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x0b, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x0c, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x0d, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x0e, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x0f, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x10, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x11, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x12, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x13, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x14, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x15, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x16, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x17, 0x80);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x18, 0xbb);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x19, 0xdd);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x1a, 0xef);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x1b, 0xf7);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x1c, 0xfc);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x1d, 0xfe);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x1e, 0xff);
+  test_aluq_b_vx("vsraqs.b.r.vx", 0xba987654, 0x1f, 0xff);
+
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x00, 0x12);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x01, 0x09);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x02, 0x04);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x03, 0x02);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x04, 0x01);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x05, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x06, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x07, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x08, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x09, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x0a, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x0b, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x0c, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x0d, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x0e, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x0f, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x10, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x11, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x12, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x13, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x14, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x15, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x16, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x17, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x18, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x19, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x1a, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x1b, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x1c, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x1d, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x1e, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00000012, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x00, 0xcd);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x01, 0x66);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x02, 0x33);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x03, 0x19);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x04, 0x0c);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x05, 0x06);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x06, 0x03);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x07, 0x01);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x08, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x09, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x0a, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x0b, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x0c, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x0d, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x0e, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x0f, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x10, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x11, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x12, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x13, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x14, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x15, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x16, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x17, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x18, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x19, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x1a, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x1b, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x1c, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x1d, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x1e, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x000000cd, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x00, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x01, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x02, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x03, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x04, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x05, 0x91);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x06, 0x48);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x07, 0x24);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x08, 0x12);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x09, 0x09);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x0a, 0x04);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x0b, 0x02);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x0c, 0x01);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x0d, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x0e, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x0f, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x10, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x11, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x12, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x13, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x14, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x15, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x16, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x17, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x18, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x19, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x1a, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x1b, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x1c, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x1d, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x1e, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x00001234, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x00, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x01, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x02, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x03, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x04, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x05, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x06, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x07, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x08, 0xab);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x09, 0x55);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x0a, 0x2a);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x0b, 0x15);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x0c, 0x0a);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x0d, 0x05);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x0e, 0x02);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x0f, 0x01);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x10, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x11, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x12, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x13, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x14, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x15, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x16, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x17, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x18, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x19, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x1a, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x1b, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x1c, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x1d, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x1e, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x0000abcd, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x00, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x01, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x02, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x03, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x04, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x05, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x06, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x07, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x08, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x09, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x0a, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x0b, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x0c, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x0d, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x0e, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x0f, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x10, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x11, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x12, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x13, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x14, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x15, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x16, 0xff);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x17, 0xcf);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x18, 0x67);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x19, 0x33);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x1a, 0x19);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x1b, 0x0c);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x1c, 0x06);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x1d, 0x03);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x1e, 0x01);
+  test_aluq_b_vx("vsraqsu.b.vx", 0x6789abcd, 0x1f, 0x00);
+
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x00, 0x12);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x01, 0x09);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x02, 0x05);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x03, 0x02);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x04, 0x01);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x05, 0x01);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x06, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x07, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x08, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x09, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x0a, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x0b, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x0c, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x0d, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x0e, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x0f, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x10, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x11, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x12, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x13, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x14, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x15, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x16, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x17, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x18, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x19, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x1a, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x1b, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x1c, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x1d, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x1e, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00000012, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x00, 0xcd);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x01, 0x67);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x02, 0x33);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x03, 0x1a);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x04, 0x0d);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x05, 0x06);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x06, 0x03);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x07, 0x02);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x08, 0x01);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x09, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x0a, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x0b, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x0c, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x0d, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x0e, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x0f, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x10, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x11, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x12, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x13, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x14, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x15, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x16, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x17, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x18, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x19, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x1a, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x1b, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x1c, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x1d, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x1e, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x000000cd, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x00, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x01, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x02, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x03, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x04, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x05, 0x92);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x06, 0x49);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x07, 0x24);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x08, 0x12);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x09, 0x09);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x0a, 0x05);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x0b, 0x02);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x0c, 0x01);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x0d, 0x01);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x0e, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x0f, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x10, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x11, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x12, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x13, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x14, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x15, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x16, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x17, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x18, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x19, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x1a, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x1b, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x1c, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x1d, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x1e, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x00001234, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x00, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x01, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x02, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x03, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x04, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x05, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x06, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x07, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x08, 0xac);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x09, 0x56);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x0a, 0x2b);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x0b, 0x15);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x0c, 0x0b);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x0d, 0x05);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x0e, 0x03);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x0f, 0x01);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x10, 0x01);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x11, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x12, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x13, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x14, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x15, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x16, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x17, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x18, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x19, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x1a, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x1b, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x1c, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x1d, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x1e, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x0000abcd, 0x1f, 0x00);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x00, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x01, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x02, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x03, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x04, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x05, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x06, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x07, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x08, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x09, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x0a, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x0b, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x0c, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x0d, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x0e, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x0f, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x10, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x11, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x12, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x13, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x14, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x15, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x16, 0xff);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x17, 0xcf);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x18, 0x68);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x19, 0x34);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x1a, 0x1a);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x1b, 0x0d);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x1c, 0x06);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x1d, 0x03);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x1e, 0x02);
+  test_aluq_b_vx("vsraqsu.b.r.vx", 0x6789abcd, 0x1f, 0x01);
+
+  return 0;
+}
diff --git a/tests/kelvin_isa/vzip.cc b/tests/kelvin_isa/vzip.cc
new file mode 100644
index 0000000..58c8975
--- /dev/null
+++ b/tests/kelvin_isa/vzip.cc
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2023 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "crt/printf_traits.h"
+#include "tests/kelvin_isa/kelvin_test.h"
+
+#define vzip_vv(T, Vd, Vs, Vt) \
+  {                            \
+    if (sizeof(T) == 1) {      \
+      vzip_b_vv(Vd, Vs, Vt);   \
+    }                          \
+    if (sizeof(T) == 2) {      \
+      vzip_h_vv(Vd, Vs, Vt);   \
+    }                          \
+    if (sizeof(T) == 4) {      \
+      vzip_w_vv(Vd, Vs, Vt);   \
+    }                          \
+  }
+
+#define vzip_vv_m(T, Vd, Vs, Vt) \
+  {                              \
+    if (sizeof(T) == 1) {        \
+      vzip_b_vv_m(Vd, Vs, Vt);   \
+    }                            \
+    if (sizeof(T) == 2) {        \
+      vzip_h_vv_m(Vd, Vs, Vt);   \
+    }                            \
+    if (sizeof(T) == 4) {        \
+      vzip_w_vv_m(Vd, Vs, Vt);   \
+    }                            \
+  }
+
+template <typename T>
+static void test_vzip() {
+  constexpr int n = sizeof(T);
+  int lanes;
+  getmaxvl(T, lanes);
+
+  T inp[2][lanes] __attribute__((aligned(64)));
+  T ref[2][lanes] __attribute__((aligned(64)));
+  T dut[2][lanes] __attribute__((aligned(64)));
+
+  for (int i = 0; i < lanes; ++i) {
+    inp[0][i] = (0x40 << (8 * (n - 1))) + i;
+    inp[1][i] = (0x80 << (8 * (n - 1))) + i;
+  }
+
+  for (int i = 0; i < lanes; ++i) {
+    int m = i / 2;
+    int n = i / 2 + lanes / 2;
+    ref[0][i] = i & 1 ? inp[1][m] : inp[0][m];
+    ref[1][i] = i & 1 ? inp[1][n] : inp[0][n];
+  }
+
+  vld_x(T, v2, inp[0]);
+  vld_x(T, v3, inp[1]);
+  vzip_vv(T, v0, v2, v3);
+  vst_x(T, v0, dut[0]);
+  vst_x(T, v1, dut[1]);
+
+  for (int j = 0; j < 2; ++j) {
+    for (int i = 0; i < lanes; ++i) {
+      if (ref[j][i] != dut[j][i]) {
+        printf("**error vzip_vv[%d,%d] ", j, i);
+        printf(PrintfTraits<T>::kFmtHex, ref[j][i]);
+        printf(" ");
+        printf(PrintfTraits<T>::kFmtHex, dut[j][i]);
+        printf("\n");
+        exit(-1);
+      }
+    }
+  }
+}
+
+template <typename T>
+static void test_vzip_m() {
+  constexpr int n = sizeof(T);
+  int lanes;
+  getmaxvl_m(T, lanes);
+
+  T inp[2][1024] __attribute__((aligned(64)));
+  T ref[2][1024] __attribute__((aligned(64)));
+  T dut[2][1024] __attribute__((aligned(64)));
+
+  for (int i = 0; i < lanes; ++i) {
+    inp[0][i] = (0x40 << (8 * (n - 1))) + i;
+    inp[1][i] = (0x80 << (8 * (n - 1))) + i;
+  }
+
+  for (int i = 0; i < lanes; ++i) {
+    int m = i / 2;
+    int n = i / 2 + lanes / 2;
+    ref[0][i] = i & 1 ? inp[1][m] : inp[0][m];
+    ref[1][i] = i & 1 ? inp[1][n] : inp[0][n];
+  }
+
+  vld_x_m(T, v8, inp[0]);
+  vld_x_m(T, v12, inp[1]);
+  vzip_vv_m(T, v0, v8, v12);
+  vst_x_m(T, v0, dut[0]);
+  vst_x_m(T, v4, dut[1]);
+
+  for (int j = 0; j < 2; ++j) {
+    for (int i = 0; i < lanes; ++i) {
+      if (ref[j][i] != dut[j][i]) {
+        printf("**error vzip_vv_m[%d,%d] ", j, i);
+        printf(PrintfTraits<T>::kFmtHex, ref[j][i]);
+        printf(" ");
+        printf(PrintfTraits<T>::kFmtHex, dut[j][i]);
+        printf("\n");
+        exit(-1);
+      }
+    }
+  }
+}
+
+int main() {
+  test_vzip<int8_t>();
+  test_vzip<int16_t>();
+  test_vzip<int32_t>();
+
+  test_vzip_m<int8_t>();
+  test_vzip_m<int16_t>();
+  test_vzip_m<int32_t>();
+
+  return 0;
+}