[interpreter] Move TestRNU to inline asm

Test: m inline_asm_riscv64.native_bridge, program_runner
inline_asm_riscv64

Change-Id: Ia76801ba012d350b4e47c5f1e5c499e3b8ae5097
diff --git a/interpreter/riscv64/interpreter_test.cc b/interpreter/riscv64/interpreter_test.cc
index 757f4ae..eaacd48 100644
--- a/interpreter/riscv64/interpreter_test.cc
+++ b/interpreter/riscv64/interpreter_test.cc
@@ -2285,660 +2285,6 @@
   TestFPExceptions<intrinsics::Float64>(0x9d015457);  // Vfrsub.vf v8, v16, f2, v0.t
 }
 
-TEST_F(Riscv64InterpreterTest, TestRNU) {
-  state_.cpu.vcsr = VXRMFlags::RNU;
-  TestVectorInstruction(
-      0x210c2457,  // Vaaddu.vv v8, v16, v24, v0.t
-      {{0, 138, 3, 141, 7, 144, 9, 147, 13, 134, 15, 137, 18, 140, 21, 143},
-       {24, 162, 27, 165, 31, 168, 33, 171, 37, 158, 39, 161, 42, 164, 45, 167},
-       {48, 186, 51, 189, 55, 192, 57, 195, 61, 182, 63, 185, 66, 188, 69, 191},
-       {72, 210, 75, 213, 79, 216, 81, 219, 85, 206, 87, 209, 90, 212, 93, 215},
-       {96, 106, 99, 109, 103, 112, 105, 115, 109, 102, 111, 105, 114, 108, 117, 111},
-       {120, 130, 123, 133, 127, 136, 129, 139, 133, 126, 135, 129, 138, 132, 141, 135},
-       {144, 154, 147, 157, 151, 160, 153, 163, 157, 150, 159, 153, 162, 156, 165, 159},
-       {168, 178, 171, 181, 175, 184, 177, 187, 181, 174, 183, 177, 186, 180, 189, 183}},
-      {{0x8980, 0x8c83, 0x8f87, 0x9289, 0x858d, 0x888f, 0x8b92, 0x8e95},
-       {0xa198, 0xa49b, 0xa79f, 0xaaa1, 0x9da5, 0xa0a7, 0xa3aa, 0xa6ad},
-       {0xb9b0, 0xbcb3, 0xbfb7, 0xc2b9, 0xb5bd, 0xb8bf, 0xbbc2, 0xbec5},
-       {0xd1c8, 0xd4cb, 0xd7cf, 0xdad1, 0xcdd5, 0xd0d7, 0xd3da, 0xd6dd},
-       {0x69e0, 0x6ce3, 0x6fe7, 0x72e9, 0x65ed, 0x68ef, 0x6bf2, 0x6ef5},
-       {0x81f8, 0x84fb, 0x87ff, 0x8b01, 0x7e05, 0x8107, 0x840a, 0x870d},
-       {0x9a10, 0x9d13, 0xa017, 0xa319, 0x961d, 0x991f, 0x9c22, 0x9f25},
-       {0xb228, 0xb52b, 0xb82f, 0xbb31, 0xae35, 0xb137, 0xb43a, 0xb73d}},
-      {{0x8c83'8980, 0x9289'8f87, 0x888f'858d, 0x8e95'8b92},
-       {0xa49b'a198, 0xaaa1'a79f, 0xa0a7'9da5, 0xa6ad'a3aa},
-       {0xbcb3'b9b0, 0xc2b9'bfb7, 0xb8bf'b5bd, 0xbec5'bbc2},
-       {0xd4cb'd1c8, 0xdad1'd7cf, 0xd0d7'cdd5, 0xd6dd'd3da},
-       {0x6ce3'69e0, 0x72e9'6fe7, 0x68ef'65ed, 0x6ef5'6bf2},
-       {0x84fb'81f8, 0x8b01'87ff, 0x8107'7e05, 0x870d'840a},
-       {0x9d13'9a10, 0xa319'a017, 0x991f'961d, 0x9f25'9c22},
-       {0xb52b'b228, 0xbb31'b82f, 0xb137'ae35, 0xb73d'b43a}},
-      {{0x9289'8f87'0c83'8980, 0x8e95'8b92'888f'858d},
-       {0xaaa1'a79f'249b'a198, 0xa6ad'a3aa'a0a7'9da5},
-       {0xc2b9'bfb7'3cb3'b9b0, 0xbec5'bbc2'b8bf'b5bd},
-       {0xdad1'd7cf'54cb'd1c8, 0xd6dd'd3da'd0d7'cdd5},
-       {0x72e9'6fe6'ece3'69e0, 0x6ef5'6bf2'68ef'65ed},
-       {0x8b01'87ff'04fb'81f8, 0x870d'840a'8107'7e05},
-       {0xa319'a017'1d13'9a10, 0x9f25'9c22'991f'961d},
-       {0xbb31'b82f'352b'b228, 0xb73d'b43a'b137'ae35}},
-      kVectorCalculationsSource);
-  TestVectorInstruction(
-      0x2100e457,  // Vaaddu.vx v8, v16, x1, v0.t
-      {{85, 150, 86, 151, 87, 152, 88, 153, 89, 154, 90, 155, 91, 156, 92, 157},
-       {93, 158, 94, 159, 95, 160, 96, 161, 97, 162, 98, 163, 99, 164, 100, 165},
-       {101, 166, 102, 167, 103, 168, 104, 169, 105, 170, 106, 171, 107, 172, 108, 173},
-       {109, 174, 110, 175, 111, 176, 112, 177, 113, 178, 114, 179, 115, 180, 116, 181},
-       {117, 182, 118, 183, 119, 184, 120, 185, 121, 186, 122, 187, 123, 188, 124, 189},
-       {125, 190, 126, 191, 127, 192, 128, 193, 129, 194, 130, 195, 131, 196, 132, 197},
-       {133, 198, 134, 199, 135, 200, 136, 201, 137, 202, 138, 203, 139, 204, 140, 205},
-       {141, 206, 142, 207, 143, 208, 144, 209, 145, 210, 146, 211, 147, 212, 148, 213}},
-      {{0x95d5, 0x96d6, 0x97d7, 0x98d8, 0x99d9, 0x9ada, 0x9bdb, 0x9cdc},
-       {0x9ddd, 0x9ede, 0x9fdf, 0xa0e0, 0xa1e1, 0xa2e2, 0xa3e3, 0xa4e4},
-       {0xa5e5, 0xa6e6, 0xa7e7, 0xa8e8, 0xa9e9, 0xaaea, 0xabeb, 0xacec},
-       {0xaded, 0xaeee, 0xafef, 0xb0f0, 0xb1f1, 0xb2f2, 0xb3f3, 0xb4f4},
-       {0xb5f5, 0xb6f6, 0xb7f7, 0xb8f8, 0xb9f9, 0xbafa, 0xbbfb, 0xbcfc},
-       {0xbdfd, 0xbefe, 0xbfff, 0xc100, 0xc201, 0xc302, 0xc403, 0xc504},
-       {0xc605, 0xc706, 0xc807, 0xc908, 0xca09, 0xcb0a, 0xcc0b, 0xcd0c},
-       {0xce0d, 0xcf0e, 0xd00f, 0xd110, 0xd211, 0xd312, 0xd413, 0xd514}},
-      {{0x96d6'95d5, 0x98d8'97d7, 0x9ada'99d9, 0x9cdc'9bdb},
-       {0x9ede'9ddd, 0xa0e0'9fdf, 0xa2e2'a1e1, 0xa4e4'a3e3},
-       {0xa6e6'a5e5, 0xa8e8'a7e7, 0xaaea'a9e9, 0xacec'abeb},
-       {0xaeee'aded, 0xb0f0'afef, 0xb2f2'b1f1, 0xb4f4'b3f3},
-       {0xb6f6'b5f5, 0xb8f8'b7f7, 0xbafa'b9f9, 0xbcfc'bbfb},
-       {0xbefe'bdfd, 0xc100'bfff, 0xc302'c201, 0xc504'c403},
-       {0xc706'c605, 0xc908'c807, 0xcb0a'ca09, 0xcd0c'cc0b},
-       {0xcf0e'ce0d, 0xd110'd00f, 0xd312'd211, 0xd514'd413}},
-      {{0x98d8'97d7'96d6'95d5, 0x9cdc'9bdb'9ada'99d9},
-       {0xa0e0'9fdf'9ede'9ddd, 0xa4e4'a3e3'a2e2'a1e1},
-       {0xa8e8'a7e7'a6e6'a5e5, 0xacec'abeb'aaea'a9e9},
-       {0xb0f0'afef'aeee'aded, 0xb4f4'b3f3'b2f2'b1f1},
-       {0xb8f8'b7f7'b6f6'b5f5, 0xbcfc'bbfb'bafa'b9f9},
-       {0xc100'bfff'befe'bdfd, 0xc504'c403'c302'c201},
-       {0xc908'c807'c706'c605, 0xcd0c'cc0b'cb0a'ca09},
-       {0xd110'd00f'cf0e'ce0d, 0xd514'd413'd312'd211}},
-      kVectorCalculationsSource);
-  TestVectorInstruction(
-      0x250c2457,  // Vaadd.vv v8, v16, v24, v0.t
-      {{0, 138, 3, 141, 7, 144, 9, 147, 13, 134, 15, 137, 18, 140, 21, 143},
-       {24, 162, 27, 165, 31, 168, 33, 171, 37, 158, 39, 161, 42, 164, 45, 167},
-       {48, 186, 51, 189, 55, 192, 57, 195, 61, 182, 63, 185, 66, 188, 69, 191},
-       {72, 210, 75, 213, 79, 216, 81, 219, 85, 206, 87, 209, 90, 212, 93, 215},
-       {224, 234, 227, 237, 231, 240, 233, 243, 237, 230, 239, 233, 242, 236, 245, 239},
-       {248, 2, 251, 5, 255, 8, 1, 11, 5, 254, 7, 1, 10, 4, 13, 7},
-       {16, 26, 19, 29, 23, 32, 25, 35, 29, 22, 31, 25, 34, 28, 37, 31},
-       {40, 50, 43, 53, 47, 56, 49, 59, 53, 46, 55, 49, 58, 52, 61, 55}},
-      {{0x8980, 0x8c83, 0x8f87, 0x9289, 0x858d, 0x888f, 0x8b92, 0x8e95},
-       {0xa198, 0xa49b, 0xa79f, 0xaaa1, 0x9da5, 0xa0a7, 0xa3aa, 0xa6ad},
-       {0xb9b0, 0xbcb3, 0xbfb7, 0xc2b9, 0xb5bd, 0xb8bf, 0xbbc2, 0xbec5},
-       {0xd1c8, 0xd4cb, 0xd7cf, 0xdad1, 0xcdd5, 0xd0d7, 0xd3da, 0xd6dd},
-       {0xe9e0, 0xece3, 0xefe7, 0xf2e9, 0xe5ed, 0xe8ef, 0xebf2, 0xeef5},
-       {0x01f8, 0x04fb, 0x07ff, 0x0b01, 0xfe05, 0x0107, 0x040a, 0x070d},
-       {0x1a10, 0x1d13, 0x2017, 0x2319, 0x161d, 0x191f, 0x1c22, 0x1f25},
-       {0x3228, 0x352b, 0x382f, 0x3b31, 0x2e35, 0x3137, 0x343a, 0x373d}},
-      {{0x8c83'8980, 0x9289'8f87, 0x888f'858d, 0x8e95'8b92},
-       {0xa49b'a198, 0xaaa1'a79f, 0xa0a7'9da5, 0xa6ad'a3aa},
-       {0xbcb3'b9b0, 0xc2b9'bfb7, 0xb8bf'b5bd, 0xbec5'bbc2},
-       {0xd4cb'd1c8, 0xdad1'd7cf, 0xd0d7'cdd5, 0xd6dd'd3da},
-       {0xece3'69e0, 0xf2e9'6fe7, 0xe8ef'65ed, 0xeef5'6bf2},
-       {0x04fb'81f8, 0x0b01'87ff, 0x0107'7e05, 0x070d'840a},
-       {0x1d13'9a10, 0x2319'a017, 0x191f'961d, 0x1f25'9c22},
-       {0x352b'b228, 0x3b31'b82f, 0x3137'ae35, 0x373d'b43a}},
-      {{0x9289'8f87'0c83'8980, 0x8e95'8b92'888f'858d},
-       {0xaaa1'a79f'249b'a198, 0xa6ad'a3aa'a0a7'9da5},
-       {0xc2b9'bfb7'3cb3'b9b0, 0xbec5'bbc2'b8bf'b5bd},
-       {0xdad1'd7cf'54cb'd1c8, 0xd6dd'd3da'd0d7'cdd5},
-       {0xf2e9'6fe6'ece3'69e0, 0xeef5'6bf2'68ef'65ed},
-       {0x0b01'87ff'04fb'81f8, 0x070d'840a'8107'7e05},
-       {0x2319'a017'1d13'9a10, 0x1f25'9c22'991f'961d},
-       {0x3b31'b82f'352b'b228, 0x373d'b43a'b137'ae35}},
-      kVectorCalculationsSource);
-  TestVectorInstruction(
-      0x2500e457,  // Vaadd.vx v8, v16, x1, v0.t
-      {{213, 150, 214, 151, 215, 152, 216, 153, 217, 154, 218, 155, 219, 156, 220, 157},
-       {221, 158, 222, 159, 223, 160, 224, 161, 225, 162, 226, 163, 227, 164, 228, 165},
-       {229, 166, 230, 167, 231, 168, 232, 169, 233, 170, 234, 171, 235, 172, 236, 173},
-       {237, 174, 238, 175, 239, 176, 240, 177, 241, 178, 242, 179, 243, 180, 244, 181},
-       {245, 182, 246, 183, 247, 184, 248, 185, 249, 186, 250, 187, 251, 188, 252, 189},
-       {253, 190, 254, 191, 255, 192, 0, 193, 1, 194, 2, 195, 3, 196, 4, 197},
-       {5, 198, 6, 199, 7, 200, 8, 201, 9, 202, 10, 203, 11, 204, 12, 205},
-       {13, 206, 14, 207, 15, 208, 16, 209, 17, 210, 18, 211, 19, 212, 20, 213}},
-      {{0x95d5, 0x96d6, 0x97d7, 0x98d8, 0x99d9, 0x9ada, 0x9bdb, 0x9cdc},
-       {0x9ddd, 0x9ede, 0x9fdf, 0xa0e0, 0xa1e1, 0xa2e2, 0xa3e3, 0xa4e4},
-       {0xa5e5, 0xa6e6, 0xa7e7, 0xa8e8, 0xa9e9, 0xaaea, 0xabeb, 0xacec},
-       {0xaded, 0xaeee, 0xafef, 0xb0f0, 0xb1f1, 0xb2f2, 0xb3f3, 0xb4f4},
-       {0xb5f5, 0xb6f6, 0xb7f7, 0xb8f8, 0xb9f9, 0xbafa, 0xbbfb, 0xbcfc},
-       {0xbdfd, 0xbefe, 0xbfff, 0xc100, 0xc201, 0xc302, 0xc403, 0xc504},
-       {0xc605, 0xc706, 0xc807, 0xc908, 0xca09, 0xcb0a, 0xcc0b, 0xcd0c},
-       {0xce0d, 0xcf0e, 0xd00f, 0xd110, 0xd211, 0xd312, 0xd413, 0xd514}},
-      {{0x96d6'95d5, 0x98d8'97d7, 0x9ada'99d9, 0x9cdc'9bdb},
-       {0x9ede'9ddd, 0xa0e0'9fdf, 0xa2e2'a1e1, 0xa4e4'a3e3},
-       {0xa6e6'a5e5, 0xa8e8'a7e7, 0xaaea'a9e9, 0xacec'abeb},
-       {0xaeee'aded, 0xb0f0'afef, 0xb2f2'b1f1, 0xb4f4'b3f3},
-       {0xb6f6'b5f5, 0xb8f8'b7f7, 0xbafa'b9f9, 0xbcfc'bbfb},
-       {0xbefe'bdfd, 0xc100'bfff, 0xc302'c201, 0xc504'c403},
-       {0xc706'c605, 0xc908'c807, 0xcb0a'ca09, 0xcd0c'cc0b},
-       {0xcf0e'ce0d, 0xd110'd00f, 0xd312'd211, 0xd514'd413}},
-      {{0x98d8'97d7'96d6'95d5, 0x9cdc'9bdb'9ada'99d9},
-       {0xa0e0'9fdf'9ede'9ddd, 0xa4e4'a3e3'a2e2'a1e1},
-       {0xa8e8'a7e7'a6e6'a5e5, 0xacec'abeb'aaea'a9e9},
-       {0xb0f0'afef'aeee'aded, 0xb4f4'b3f3'b2f2'b1f1},
-       {0xb8f8'b7f7'b6f6'b5f5, 0xbcfc'bbfb'bafa'b9f9},
-       {0xc100'bfff'befe'bdfd, 0xc504'c403'c302'c201},
-       {0xc908'c807'c706'c605, 0xcd0c'cc0b'cb0a'ca09},
-       {0xd110'd00f'cf0e'ce0d, 0xd514'd413'd312'd211}},
-      kVectorCalculationsSource);
-  TestVectorInstruction(
-      0x290c2457,  // Vasubu.vv v8, v16, v24, v0.t
-      {{0, 248, 255, 247, 254, 246, 253, 245, 252, 4, 251, 3, 250, 2, 249, 1},
-       {248, 240, 247, 239, 246, 238, 245, 237, 244, 252, 243, 251, 242, 250, 241, 249},
-       {240, 232, 239, 231, 238, 230, 237, 229, 236, 244, 235, 243, 234, 242, 233, 241},
-       {232, 224, 231, 223, 230, 222, 229, 221, 228, 236, 227, 235, 226, 234, 225, 233},
-       {224, 88, 223, 87, 222, 86, 221, 85, 220, 100, 219, 99, 218, 98, 217, 97},
-       {216, 80, 215, 79, 214, 78, 213, 77, 212, 92, 211, 91, 210, 90, 209, 89},
-       {208, 72, 207, 71, 206, 70, 205, 69, 204, 84, 203, 83, 202, 82, 201, 81},
-       {200, 64, 199, 63, 198, 62, 197, 61, 196, 76, 195, 75, 194, 74, 193, 73}},
-      {{0xf780, 0xf67f, 0xf57e, 0xf47d, 0x037c, 0x027b, 0x017a, 0x0079},
-       {0xef78, 0xee77, 0xed76, 0xec75, 0xfb74, 0xfa73, 0xf972, 0xf871},
-       {0xe770, 0xe66f, 0xe56e, 0xe46d, 0xf36c, 0xf26b, 0xf16a, 0xf069},
-       {0xdf68, 0xde67, 0xdd66, 0xdc65, 0xeb64, 0xea63, 0xe962, 0xe861},
-       {0x5760, 0x565f, 0x555e, 0x545d, 0x635c, 0x625b, 0x615a, 0x6059},
-       {0x4f58, 0x4e57, 0x4d56, 0x4c55, 0x5b54, 0x5a53, 0x5952, 0x5851},
-       {0x4750, 0x464f, 0x454e, 0x444d, 0x534c, 0x524b, 0x514a, 0x5049},
-       {0x3f48, 0x3e47, 0x3d46, 0x3c45, 0x4b44, 0x4a43, 0x4942, 0x4841}},
-      {{0xf67e'f780, 0xf47c'f57e, 0x027b'037c, 0x0079'017a},
-       {0xee76'ef78, 0xec74'ed76, 0xfa72'fb74, 0xf870'f972},
-       {0xe66e'e770, 0xe46c'e56e, 0xf26a'f36c, 0xf068'f16a},
-       {0xde66'df68, 0xdc64'dd66, 0xea62'eb64, 0xe860'e962},
-       {0x565f'5760, 0x545d'555e, 0x625b'635c, 0x6059'615a},
-       {0x4e57'4f58, 0x4c55'4d56, 0x5a53'5b54, 0x5851'5952},
-       {0x464f'4750, 0x444d'454e, 0x524b'534c, 0x5049'514a},
-       {0x3e47'3f48, 0x3c45'3d46, 0x4a43'4b44, 0x4841'4942}},
-      {{0xf47c'f57d'767e'f780, 0x0079'017a'027b'037c},
-       {0xec74'ed75'6e76'ef78, 0xf870'f971'fa72'fb74},
-       {0xe46c'e56d'666e'e770, 0xf068'f169'f26a'f36c},
-       {0xdc64'dd65'5e66'df68, 0xe860'e961'ea62'eb64},
-       {0x545d'555d'd65f'5760, 0x6059'615a'625b'635c},
-       {0x4c55'4d55'ce57'4f58, 0x5851'5952'5a53'5b54},
-       {0x444d'454d'c64f'4750, 0x5049'514a'524b'534c},
-       {0x3c45'3d45'be47'3f48, 0x4841'4942'4a43'4b44}},
-      kVectorCalculationsSource);
-  TestVectorInstruction(
-      0x2900e457,  // Vasubu.vx v8, v16, x1, v0.t
-      {{171, 236, 172, 237, 173, 238, 174, 239, 175, 240, 176, 241, 177, 242, 178, 243},
-       {179, 244, 180, 245, 181, 246, 182, 247, 183, 248, 184, 249, 185, 250, 186, 251},
-       {187, 252, 188, 253, 189, 254, 190, 255, 191, 0, 192, 1, 193, 2, 194, 3},
-       {195, 4, 196, 5, 197, 6, 198, 7, 199, 8, 200, 9, 201, 10, 202, 11},
-       {203, 12, 204, 13, 205, 14, 206, 15, 207, 16, 208, 17, 209, 18, 210, 19},
-       {211, 20, 212, 21, 213, 22, 214, 23, 215, 24, 216, 25, 217, 26, 218, 27},
-       {219, 28, 220, 29, 221, 30, 222, 31, 223, 32, 224, 33, 225, 34, 226, 35},
-       {227, 36, 228, 37, 229, 38, 230, 39, 231, 40, 232, 41, 233, 42, 234, 43}},
-      {{0xeb2b, 0xec2c, 0xed2d, 0xee2e, 0xef2f, 0xf030, 0xf131, 0xf232},
-       {0xf333, 0xf434, 0xf535, 0xf636, 0xf737, 0xf838, 0xf939, 0xfa3a},
-       {0xfb3b, 0xfc3c, 0xfd3d, 0xfe3e, 0xff3f, 0x0040, 0x0141, 0x0242},
-       {0x0343, 0x0444, 0x0545, 0x0646, 0x0747, 0x0848, 0x0949, 0x0a4a},
-       {0x0b4b, 0x0c4c, 0x0d4d, 0x0e4e, 0x0f4f, 0x1050, 0x1151, 0x1252},
-       {0x1353, 0x1454, 0x1555, 0x1656, 0x1757, 0x1858, 0x1959, 0x1a5a},
-       {0x1b5b, 0x1c5c, 0x1d5d, 0x1e5e, 0x1f5f, 0x2060, 0x2161, 0x2262},
-       {0x2363, 0x2464, 0x2565, 0x2666, 0x2767, 0x2868, 0x2969, 0x2a6a}},
-      {{0xec2b'eb2b, 0xee2d'ed2d, 0xf02f'ef2f, 0xf231'f131},
-       {0xf433'f333, 0xf635'f535, 0xf837'f737, 0xfa39'f939},
-       {0xfc3b'fb3b, 0xfe3d'fd3d, 0x003f'ff3f, 0x0242'0141},
-       {0x0444'0343, 0x0646'0545, 0x0848'0747, 0x0a4a'0949},
-       {0x0c4c'0b4b, 0x0e4e'0d4d, 0x1050'0f4f, 0x1252'1151},
-       {0x1454'1353, 0x1656'1555, 0x1858'1757, 0x1a5a'1959},
-       {0x1c5c'1b5b, 0x1e5e'1d5d, 0x2060'1f5f, 0x2262'2161},
-       {0x2464'2363, 0x2666'2565, 0x2868'2767, 0x2a6a'2969}},
-      {{0xee2d'ed2c'ec2b'eb2b, 0xf231'f130'f02f'ef2f},
-       {0xf635'f534'f433'f333, 0xfa39'f938'f837'f737},
-       {0xfe3d'fd3c'fc3b'fb3b, 0x0242'0141'003f'ff3f},
-       {0x0646'0545'0444'0343, 0x0a4a'0949'0848'0747},
-       {0x0e4e'0d4d'0c4c'0b4b, 0x1252'1151'1050'0f4f},
-       {0x1656'1555'1454'1353, 0x1a5a'1959'1858'1757},
-       {0x1e5e'1d5d'1c5c'1b5b, 0x2262'2161'2060'1f5f},
-       {0x2666'2565'2464'2363, 0x2a6a'2969'2868'2767}},
-      kVectorCalculationsSource);
-  TestVectorInstruction(
-      0x2d0c2457,  // // Vasub.vv v8, v16, v24, v0.t
-      {{0, 248, 255, 247, 254, 246, 253, 245, 252, 4, 251, 3, 250, 2, 249, 1},
-       {248, 240, 247, 239, 246, 238, 245, 237, 244, 252, 243, 251, 242, 250, 241, 249},
-       {240, 232, 239, 231, 238, 230, 237, 229, 236, 244, 235, 243, 234, 242, 233, 241},
-       {232, 224, 231, 223, 230, 222, 229, 221, 228, 236, 227, 235, 226, 234, 225, 233},
-       {96, 216, 95, 215, 94, 214, 93, 213, 92, 228, 91, 227, 90, 226, 89, 225},
-       {88, 208, 87, 207, 86, 206, 85, 205, 84, 220, 83, 219, 82, 218, 81, 217},
-       {80, 200, 79, 199, 78, 198, 77, 197, 76, 212, 75, 211, 74, 210, 73, 209},
-       {72, 192, 71, 191, 70, 190, 69, 189, 68, 204, 67, 203, 66, 202, 65, 201}},
-      {{0xf780, 0xf67f, 0xf57e, 0xf47d, 0x037c, 0x027b, 0x017a, 0x0079},
-       {0xef78, 0xee77, 0xed76, 0xec75, 0xfb74, 0xfa73, 0xf972, 0xf871},
-       {0xe770, 0xe66f, 0xe56e, 0xe46d, 0xf36c, 0xf26b, 0xf16a, 0xf069},
-       {0xdf68, 0xde67, 0xdd66, 0xdc65, 0xeb64, 0xea63, 0xe962, 0xe861},
-       {0xd760, 0xd65f, 0xd55e, 0xd45d, 0xe35c, 0xe25b, 0xe15a, 0xe059},
-       {0xcf58, 0xce57, 0xcd56, 0xcc55, 0xdb54, 0xda53, 0xd952, 0xd851},
-       {0xc750, 0xc64f, 0xc54e, 0xc44d, 0xd34c, 0xd24b, 0xd14a, 0xd049},
-       {0xbf48, 0xbe47, 0xbd46, 0xbc45, 0xcb44, 0xca43, 0xc942, 0xc841}},
-      {{0xf67e'f780, 0xf47c'f57e, 0x027b'037c, 0x0079'017a},
-       {0xee76'ef78, 0xec74'ed76, 0xfa72'fb74, 0xf870'f972},
-       {0xe66e'e770, 0xe46c'e56e, 0xf26a'f36c, 0xf068'f16a},
-       {0xde66'df68, 0xdc64'dd66, 0xea62'eb64, 0xe860'e962},
-       {0xd65f'5760, 0xd45d'555e, 0xe25b'635c, 0xe059'615a},
-       {0xce57'4f58, 0xcc55'4d56, 0xda53'5b54, 0xd851'5952},
-       {0xc64f'4750, 0xc44d'454e, 0xd24b'534c, 0xd049'514a},
-       {0xbe47'3f48, 0xbc45'3d46, 0xca43'4b44, 0xc841'4942}},
-      {{0xf47c'f57d'767e'f780, 0x0079'017a'027b'037c},
-       {0xec74'ed75'6e76'ef78, 0xf870'f971'fa72'fb74},
-       {0xe46c'e56d'666e'e770, 0xf068'f169'f26a'f36c},
-       {0xdc64'dd65'5e66'df68, 0xe860'e961'ea62'eb64},
-       {0xd45d'555d'd65f'5760, 0xe059'615a'625b'635c},
-       {0xcc55'4d55'ce57'4f58, 0xd851'5952'5a53'5b54},
-       {0xc44d'454d'c64f'4750, 0xd049'514a'524b'534c},
-       {0xbc45'3d45'be47'3f48, 0xc841'4942'4a43'4b44}},
-      kVectorCalculationsSource);
-  TestVectorInstruction(0x2d00e457,  // Vasub.vx v8, v16, x1, v0.t
-                        {{43, 236, 44, 237, 45, 238, 46, 239, 47, 240, 48, 241, 49, 242, 50, 243},
-                         {51, 244, 52, 245, 53, 246, 54, 247, 55, 248, 56, 249, 57, 250, 58, 251},
-                         {59, 252, 60, 253, 61, 254, 62, 255, 63, 0, 64, 1, 65, 2, 66, 3},
-                         {67, 4, 68, 5, 69, 6, 70, 7, 71, 8, 72, 9, 73, 10, 74, 11},
-                         {75, 12, 76, 13, 77, 14, 78, 15, 79, 16, 80, 17, 81, 18, 82, 19},
-                         {83, 20, 84, 21, 85, 22, 86, 23, 87, 24, 88, 25, 89, 26, 90, 27},
-                         {91, 28, 92, 29, 93, 30, 94, 31, 95, 32, 96, 33, 97, 34, 98, 35},
-                         {99, 36, 100, 37, 101, 38, 102, 39, 103, 40, 104, 41, 105, 42, 106, 43}},
-                        {{0xeb2b, 0xec2c, 0xed2d, 0xee2e, 0xef2f, 0xf030, 0xf131, 0xf232},
-                         {0xf333, 0xf434, 0xf535, 0xf636, 0xf737, 0xf838, 0xf939, 0xfa3a},
-                         {0xfb3b, 0xfc3c, 0xfd3d, 0xfe3e, 0xff3f, 0x0040, 0x0141, 0x0242},
-                         {0x0343, 0x0444, 0x0545, 0x0646, 0x0747, 0x0848, 0x0949, 0x0a4a},
-                         {0x0b4b, 0x0c4c, 0x0d4d, 0x0e4e, 0x0f4f, 0x1050, 0x1151, 0x1252},
-                         {0x1353, 0x1454, 0x1555, 0x1656, 0x1757, 0x1858, 0x1959, 0x1a5a},
-                         {0x1b5b, 0x1c5c, 0x1d5d, 0x1e5e, 0x1f5f, 0x2060, 0x2161, 0x2262},
-                         {0x2363, 0x2464, 0x2565, 0x2666, 0x2767, 0x2868, 0x2969, 0x2a6a}},
-                        {{0xec2b'eb2b, 0xee2d'ed2d, 0xf02f'ef2f, 0xf231'f131},
-                         {0xf433'f333, 0xf635'f535, 0xf837'f737, 0xfa39'f939},
-                         {0xfc3b'fb3b, 0xfe3d'fd3d, 0x003f'ff3f, 0x0242'0141},
-                         {0x0444'0343, 0x0646'0545, 0x0848'0747, 0x0a4a'0949},
-                         {0x0c4c'0b4b, 0x0e4e'0d4d, 0x1050'0f4f, 0x1252'1151},
-                         {0x1454'1353, 0x1656'1555, 0x1858'1757, 0x1a5a'1959},
-                         {0x1c5c'1b5b, 0x1e5e'1d5d, 0x2060'1f5f, 0x2262'2161},
-                         {0x2464'2363, 0x2666'2565, 0x2868'2767, 0x2a6a'2969}},
-                        {{0xee2d'ed2c'ec2b'eb2b, 0xf231'f130'f02f'ef2f},
-                         {0xf635'f534'f433'f333, 0xfa39'f938'f837'f737},
-                         {0xfe3d'fd3c'fc3b'fb3b, 0x0242'0141'003f'ff3f},
-                         {0x0646'0545'0444'0343, 0x0a4a'0949'0848'0747},
-                         {0x0e4e'0d4d'0c4c'0b4b, 0x1252'1151'1050'0f4f},
-                         {0x1656'1555'1454'1353, 0x1a5a'1959'1858'1757},
-                         {0x1e5e'1d5d'1c5c'1b5b, 0x2262'2161'2060'1f5f},
-                         {0x2666'2565'2464'2363, 0x2a6a'2969'2868'2767}},
-                        kVectorCalculationsSource);
-  TestNarrowingVectorInstruction(0xb9053457,  // Vnclipu.wi v8, v16, 0xa, v0.t
-                                 {{32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40},
-                                  {40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48},
-                                  {48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56},
-                                  {56, 57, 57, 58, 58, 59, 59, 60, 60, 61, 61, 62, 62, 63, 63, 64}},
-                                 {{0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff},
-                                  {0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff},
-                                  {0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff},
-                                  {0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}},
-                                 {{0xffff'ffff, 0xffff'ffff, 0xffff'ffff, 0xffff'ffff},
-                                  {0xffff'ffff, 0xffff'ffff, 0xffff'ffff, 0xffff'ffff},
-                                  {0xffff'ffff, 0xffff'ffff, 0xffff'ffff, 0xffff'ffff},
-                                  {0xffff'ffff, 0xffff'ffff, 0xffff'ffff, 0xffff'ffff}},
-                                 kVectorCalculationsSource);
-  TestNarrowingVectorInstruction(
-      0xbd053457,  // Vnclip.wi v8, v16, 0xa, v0.t
-      {{224, 225, 225, 226, 226, 227, 227, 228, 228, 229, 229, 230, 230, 231, 231, 232},
-       {232, 233, 233, 234, 234, 235, 235, 236, 236, 237, 237, 238, 238, 239, 239, 240},
-       {240, 241, 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, 247, 248},
-       {248, 249, 249, 250, 250, 251, 251, 252, 252, 253, 253, 254, 254, 255, 255, 0}},
-      {{0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000},
-       {0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000},
-       {0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000},
-       {0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0xdfbf}},
-      {{0x8000'0000, 0x8000'0000, 0x8000'0000, 0x8000'0000},
-       {0x8000'0000, 0x8000'0000, 0x8000'0000, 0x8000'0000},
-       {0x8000'0000, 0x8000'0000, 0x8000'0000, 0x8000'0000},
-       {0x8000'0000, 0x8000'0000, 0x8000'0000, 0x8000'0000}},
-      kVectorCalculationsSource);
-
-  TestNarrowingVectorInstruction(0xb900c457,  // Vnclipu.wx v8, v16, x1, v0.t
-                                 {{32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40},
-                                  {40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48},
-                                  {48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56},
-                                  {56, 57, 57, 58, 58, 59, 59, 60, 60, 61, 61, 62, 62, 63, 63, 64}},
-                                 {{0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff},
-                                  {0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff},
-                                  {0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff},
-                                  {0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}},
-                                 {{0x0021'c1a1, 0x0023'c3a3, 0x0025'c5a5, 0x0027'c7a7},
-                                  {0x0029'c9a9, 0x002b'cbab, 0x002d'cdad, 0x002f'cfaf},
-                                  {0x0031'd1b1, 0x0033'd3b3, 0x0035'd5b5, 0x0037'd7b7},
-                                  {0x0039'd9b9, 0x003b'dbbb, 0x003d'ddbd, 0x003f'dfbf}},
-                                 kVectorCalculationsSource);
-
-  TestNarrowingVectorInstruction(
-      0xbd00c457,  // Vnclip.wx v8, v16, x1, v0.t
-      {{224, 225, 225, 226, 226, 227, 227, 228, 228, 229, 229, 230, 230, 231, 231, 232},
-       {232, 233, 233, 234, 234, 235, 235, 236, 236, 237, 237, 238, 238, 239, 239, 240},
-       {240, 241, 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, 247, 248},
-       {248, 249, 249, 250, 250, 251, 251, 252, 252, 253, 253, 254, 254, 255, 255, 0}},
-      {{0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000},
-       {0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000},
-       {0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000},
-       {0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0xdfbf}},
-      {{0xffe1'c1a1, 0xffe3'c3a3, 0xffe5'c5a5, 0xffe7'c7a7},
-       {0xffe9'c9a9, 0xffeb'cbab, 0xffed'cdad, 0xffef'cfaf},
-       {0xfff1'd1b1, 0xfff3'd3b3, 0xfff5'd5b5, 0xfff7'd7b7},
-       {0xfff9'd9b9, 0xfffb'dbbb, 0xfffd'ddbd, 0xffff'dfbf}},
-      kVectorCalculationsSource);
-
-  TestNarrowingVectorInstruction(
-      0xb90c0457,  // Vnclipu.wv v8, v16, v24, v0.t
-      {{255, 255, 255, 255, 69, 35, 9, 2, 255, 255, 255, 255, 153, 39, 10, 2},
-       {255, 255, 255, 255, 85, 43, 11, 3, 255, 255, 255, 255, 185, 47, 12, 3},
-       {255, 255, 255, 255, 101, 51, 13, 3, 255, 255, 255, 255, 217, 55, 14, 3},
-       {255, 255, 255, 255, 117, 59, 15, 4, 255, 255, 255, 255, 249, 63, 16, 4}},
-      {{0xffff, 0xffff, 0xffff, 0xffff, 0x4989, 0x0971, 0x009b, 0x000a},
-       {0xffff, 0xffff, 0xffff, 0xffff, 0x5999, 0x0b73, 0x00bb, 0x000c},
-       {0xffff, 0xffff, 0xffff, 0xffff, 0x69a9, 0x0d75, 0x00db, 0x000e},
-       {0xffff, 0xffff, 0xffff, 0xffff, 0x79b9, 0x0f77, 0x00fb, 0x0010}},
-      {{0xffff'ffff, 0xffff'ffff, 0xffff'ffff, 0xffff'ffff},
-       {0xa726'a525, 0x0057'9757, 0x0000'5b9b, 0x0000'00bf},
-       {0xffff'ffff, 0xffff'ffff, 0xffff'ffff, 0xffff'ffff},
-       {0xe766'e565, 0x0077'b777, 0x0000'7bbb, 0x0000'00ff}},
-      kVectorCalculationsSource);
-
-  TestNarrowingVectorInstruction(
-      0xbd0c0457,  // Vnclip.wv v8, v16, v24, v0.t
-      {{128, 128, 128, 128, 197, 227, 249, 254, 128, 128, 128, 128, 153, 231, 250, 254},
-       {128, 128, 128, 128, 213, 235, 251, 255, 128, 128, 128, 128, 185, 239, 252, 255},
-       {128, 128, 128, 128, 229, 243, 253, 255, 128, 128, 128, 128, 217, 247, 254, 255},
-       {128, 128, 128, 158, 245, 251, 255, 0, 128, 128, 128, 222, 249, 255, 0, 0}},
-      {{0x8000, 0x8000, 0x8000, 0x8000, 0xc989, 0xf971, 0xff9b, 0xfffa},
-       {0x8000, 0x8000, 0x8000, 0x8000, 0xd999, 0xfb73, 0xffbb, 0xfffc},
-       {0x8000, 0x8000, 0x8000, 0x8000, 0xe9a9, 0xfd75, 0xffdb, 0xfffe},
-       {0x8000, 0x8000, 0x8000, 0x8000, 0xf9b9, 0xff77, 0xfffb, 0x0000}},
-      {{0x8000'0000, 0x8000'0000, 0x8000'0000, 0x8000'0000},
-       {0xa726'a525, 0xffd7'9757, 0xffff'db9b, 0xffff'ffbf},
-       {0x8000'0000, 0x8000'0000, 0x8000'0000, 0x8000'0000},
-       {0xe766'e565, 0xfff7'b777, 0xffff'fbbb, 0xffff'ffff}},
-      kVectorCalculationsSource);
-
-  TestVectorInstruction(
-      0x9d0c0457,  // Vsmul.vv v8, v16, v24, v0.t
-      {{0, 109, 0, 104, 0, 98, 1, 93, 1, 117, 2, 112, 2, 106, 3, 101},
-       {4, 68, 5, 63, 6, 59, 8, 54, 9, 76, 11, 71, 12, 67, 14, 62},
-       {16, 34, 18, 31, 21, 27, 23, 24, 25, 42, 28, 39, 30, 35, 33, 32},
-       {36, 9, 39, 6, 43, 4, 46, 1, 49, 17, 53, 14, 56, 12, 60, 9},
-       {192, 247, 192, 246, 193, 244, 193, 243, 194, 255, 194, 254, 194, 252, 195, 251},
-       {196, 238, 197, 237, 199, 237, 200, 236, 202, 246, 203, 245, 204, 245, 206, 244},
-       {208, 236, 210, 237, 213, 237, 215, 238, 218, 244, 220, 245, 222, 245, 225, 246},
-       {228, 243, 231, 244, 235, 246, 238, 247, 242, 251, 245, 252, 248, 254, 252, 255}},
-      {{0x6d24, 0x677e, 0x61f8, 0x5c94, 0x750c, 0x6f68, 0x69e3, 0x647f},
-       {0x437f, 0x3edb, 0x3a57, 0x35f5, 0x4b6b, 0x46c9, 0x4246, 0x3de3},
-       {0x21e9, 0x1e48, 0x1ac5, 0x1765, 0x29da, 0x2639, 0x22b8, 0x1f58},
-       {0x0864, 0x05c4, 0x0344, 0x00e6, 0x1058, 0x0dba, 0x0b3b, 0x08dd},
-       {0xf6ee, 0xf551, 0xf3d3, 0xf276, 0xfee7, 0xfd4b, 0xfbce, 0xfa71},
-       {0xed89, 0xeced, 0xec72, 0xec17, 0xf586, 0xf4eb, 0xf470, 0xf416},
-       {0xec34, 0xec9a, 0xed21, 0xedc8, 0xf435, 0xf49c, 0xf523, 0xf5cb},
-       {0xf2ee, 0xf457, 0xf5df, 0xf788, 0xfaf4, 0xfc5d, 0xfde6, 0xff8f}},
-      {{0x677d'76af, 0x5c93'1931, 0x6f67'3831, 0x647d'dbb7},
-       {0x3eda'09c6, 0x35f3'b250, 0x46c7'cf50, 0x3de2'78de},
-       {0x1e46'b4fd, 0x1764'6390, 0x2638'7e90, 0x1f57'2e25},
-       {0x05c3'7855, 0x00e5'2cef, 0x0db9'45ef, 0x08db'fb8d},
-       {0xf550'cd47, 0xf276'7fe1, 0xfd4a'8eda, 0xfa71'4277},
-       {0xeced'a0be, 0xec17'5961, 0xf4eb'6659, 0xf416'1ffe},
-       {0xec9a'8c56, 0xedc8'4b01, 0xf49c'55f9, 0xf5cb'15a6},
-       {0xf457'900e, 0xf789'54c1, 0xfc5d'5db9, 0xff90'236e}},
-      {{0x5c93'192f'ccd4'7781, 0x647d'dbb5'bb66'23af},
-       {0x35f3'b24f'43d0'aa38, 0x3de2'78dd'1a4e'4256},
-       {0x1764'638e'e2fd'152f, 0x1f57'2e24'a166'993d},
-       {0x00e5'2cee'aa59'b866, 0x08db'fb8c'50af'2865},
-       {0xf276'7fe1'80cf'f441, 0xfa71'4276'eef1'1fff},
-       {0xec17'5961'584c'a799, 0xf416'1ffe'ae59'bf47},
-       {0xedc8'4b01'57f9'9330, 0xf5cb'15a6'95f2'96cf},
-       {0xf789'54c1'7fd6'b708, 0xff90'236e'a5bb'a696}},
-      kVectorCalculationsSource);
-  TestVectorInstruction(0x9d00c457,  // Vsmul.vx v8, v16, x1, v0.t
-                        {{0, 85, 255, 84, 253, 83, 252, 81, 251, 80, 249, 79, 248, 77, 247, 76},
-                         {245, 75, 244, 73, 243, 72, 241, 71, 240, 69, 239, 68, 237, 67, 236, 65},
-                         {235, 64, 233, 62, 232, 61, 230, 60, 229, 58, 228, 57, 226, 56, 225, 54},
-                         {224, 53, 222, 52, 221, 50, 220, 49, 218, 48, 217, 46, 216, 45, 214, 44},
-                         {213, 42, 212, 41, 210, 40, 209, 38, 208, 37, 206, 36, 205, 34, 204, 33},
-                         {202, 32, 201, 30, 200, 29, 198, 28, 197, 26, 196, 25, 194, 24, 193, 22},
-                         {192, 21, 190, 19, 189, 18, 187, 17, 186, 15, 185, 14, 183, 13, 182, 11},
-                         {181, 10, 179, 9, 178, 7, 177, 6, 175, 5, 174, 3, 173, 2, 171, 1}},
-                        {{0x54ab, 0x5355, 0x51fe, 0x50a7, 0x4f51, 0x4dfa, 0x4ca3, 0x4b4d},
-                         {0x49f6, 0x489f, 0x4749, 0x45f2, 0x449b, 0x4345, 0x41ee, 0x4097},
-                         {0x3f40, 0x3dea, 0x3c93, 0x3b3c, 0x39e6, 0x388f, 0x3738, 0x35e2},
-                         {0x348b, 0x3334, 0x31de, 0x3087, 0x2f30, 0x2dda, 0x2c83, 0x2b2c},
-                         {0x29d6, 0x287f, 0x2728, 0x25d2, 0x247b, 0x2324, 0x21ce, 0x2077},
-                         {0x1f20, 0x1dca, 0x1c73, 0x1b1c, 0x19c6, 0x186f, 0x1718, 0x15c2},
-                         {0x146b, 0x1314, 0x11bd, 0x1067, 0x0f10, 0x0db9, 0x0c63, 0x0b0c},
-                         {0x09b5, 0x085f, 0x0708, 0x05b1, 0x045b, 0x0304, 0x01ad, 0x0057}},
-                        {{0x5353'aa01, 0x50a6'51fe, 0x4df8'f9fb, 0x4b4b'a1f9},
-                         {0x489e'49f6, 0x45f0'f1f3, 0x4343'99f1, 0x4096'41ee},
-                         {0x3de8'e9eb, 0x3b3b'91e8, 0x388e'39e6, 0x35e0'e1e3},
-                         {0x3333'89e0, 0x3086'31de, 0x2dd8'd9db, 0x2b2b'81d8},
-                         {0x287e'29d6, 0x25d0'd1d3, 0x2323'79d0, 0x2076'21ce},
-                         {0x1dc8'c9cb, 0x1b1b'71c8, 0x186e'19c6, 0x15c0'c1c3},
-                         {0x1313'69c0, 0x1066'11bd, 0x0db8'b9bb, 0x0b0b'61b8},
-                         {0x085e'09b5, 0x05b0'b1b3, 0x0303'59b0, 0x0056'01ad}},
-                        {{0x50a6'51fc'fdfe'54ab, 0x4b4b'a1f7'a34e'4f51},
-                         {0x45f0'f1f2'489e'49f6, 0x4096'41ec'edee'449b},
-                         {0x3b3b'91e7'933e'3f40, 0x35e0'e1e2'388e'39e6},
-                         {0x3086'31dc'ddde'348b, 0x2b2b'81d7'832e'2f30},
-                         {0x25d0'd1d2'287e'29d6, 0x2076'21cc'cdce'247b},
-                         {0x1b1b'71c7'731e'1f20, 0x15c0'c1c2'186e'19c6},
-                         {0x1066'11bc'bdbe'146b, 0x0b0b'61b7'630e'0f10},
-                         {0x05b0'b1b2'085e'09b5, 0x0056'01ac'adae'045b}},
-                        kVectorCalculationsSource);
-
-  TestVectorInstruction(0xa90c0457,  // Vssrl.vv v8, v16, v24, v0.t
-                        {{0, 32, 0, 2, 2, 33, 0, 2, 4, 34, 1, 2, 12, 35, 1, 2},
-                         {16, 36, 1, 2, 10, 37, 1, 2, 12, 38, 2, 2, 28, 39, 2, 2},
-                         {32, 40, 2, 3, 18, 41, 2, 3, 20, 42, 3, 3, 44, 43, 3, 3},
-                         {48, 44, 3, 3, 26, 45, 3, 3, 28, 46, 4, 3, 60, 47, 4, 3},
-                         {64, 48, 4, 3, 34, 49, 4, 3, 36, 50, 5, 3, 76, 51, 5, 3},
-                         {80, 52, 5, 3, 42, 53, 5, 3, 44, 54, 6, 3, 92, 55, 6, 3},
-                         {96, 56, 6, 4, 50, 57, 6, 4, 52, 58, 7, 4, 108, 59, 7, 4},
-                         {112, 60, 7, 4, 58, 61, 7, 4, 60, 62, 8, 4, 124, 63, 8, 4}},
-                        {{0x8100, 0x0830, 0x0043, 0x0008, 0x4484, 0x08b1, 0x008d, 0x0009},
-                         {0x9110, 0x0931, 0x004b, 0x0009, 0x4c8c, 0x09b2, 0x009d, 0x000a},
-                         {0xa120, 0x0a32, 0x0053, 0x000a, 0x5494, 0x0ab3, 0x00ad, 0x000b},
-                         {0xb130, 0x0b33, 0x005b, 0x000b, 0x5c9c, 0x0bb4, 0x00bd, 0x000c},
-                         {0xc140, 0x0c34, 0x0063, 0x000c, 0x64a4, 0x0cb5, 0x00cd, 0x000d},
-                         {0xd150, 0x0d35, 0x006b, 0x000d, 0x6cac, 0x0db6, 0x00dd, 0x000e},
-                         {0xe160, 0x0e36, 0x0073, 0x000e, 0x74b4, 0x0eb7, 0x00ed, 0x000f},
-                         {0xf170, 0x0f37, 0x007b, 0x000f, 0x7cbc, 0x0fb8, 0x00fd, 0x0010}},
-                        {{0x8302'8100, 0x0043'8343, 0x0000'4585, 0x0000'008f},
-                         {0x9312'9110, 0x004b'8b4b, 0x0000'4d8d, 0x0000'009f},
-                         {0xa322'a120, 0x0053'9353, 0x0000'5595, 0x0000'00af},
-                         {0xb332'b130, 0x005b'9b5b, 0x0000'5d9d, 0x0000'00bf},
-                         {0xc342'c140, 0x0063'a363, 0x0000'65a5, 0x0000'00cf},
-                         {0xd352'd150, 0x006b'ab6b, 0x0000'6dad, 0x0000'00df},
-                         {0xe362'e160, 0x0073'b373, 0x0000'75b5, 0x0000'00ef},
-                         {0xf372'f170, 0x007b'bb7b, 0x0000'7dbd, 0x0000'00ff}},
-                        {{0x8706'8504'8302'8100, 0x0000'4787'4686'4585},
-                         {0x0000'0000'9716'9515, 0x0000'0000'0000'4f8f},
-                         {0xa726'a524'a322'a120, 0x0000'5797'5696'5595},
-                         {0x0000'0000'b736'b535, 0x0000'0000'0000'5f9f},
-                         {0xc746'c544'c342'c140, 0x0000'67a7'66a6'65a5},
-                         {0x0000'0000'd756'd555, 0x0000'0000'0000'6faf},
-                         {0xe766'e564'e362'e160, 0x0000'77b7'76b6'75b5},
-                         {0x0000'0000'f776'f575, 0x0000'0000'0000'7fbf}},
-                        kVectorCalculationsSource);
-
-  TestVectorInstruction(0xa900c457,  // Vssrl.vx v8, v16, x1, v0.t
-                        {{0, 32, 1, 33, 1, 33, 2, 34, 2, 34, 3, 35, 3, 35, 4, 36},
-                         {4, 36, 5, 37, 5, 37, 6, 38, 6, 38, 7, 39, 7, 39, 8, 40},
-                         {8, 40, 9, 41, 9, 41, 10, 42, 10, 42, 11, 43, 11, 43, 12, 44},
-                         {12, 44, 13, 45, 13, 45, 14, 46, 14, 46, 15, 47, 15, 47, 16, 48},
-                         {16, 48, 17, 49, 17, 49, 18, 50, 18, 50, 19, 51, 19, 51, 20, 52},
-                         {20, 52, 21, 53, 21, 53, 22, 54, 22, 54, 23, 55, 23, 55, 24, 56},
-                         {24, 56, 25, 57, 25, 57, 26, 58, 26, 58, 27, 59, 27, 59, 28, 60},
-                         {28, 60, 29, 61, 29, 61, 30, 62, 30, 62, 31, 63, 31, 63, 32, 64}},
-                        {{0x0020, 0x0021, 0x0021, 0x0022, 0x0022, 0x0023, 0x0023, 0x0024},
-                         {0x0024, 0x0025, 0x0025, 0x0026, 0x0026, 0x0027, 0x0027, 0x0028},
-                         {0x0028, 0x0029, 0x0029, 0x002a, 0x002a, 0x002b, 0x002b, 0x002c},
-                         {0x002c, 0x002d, 0x002d, 0x002e, 0x002e, 0x002f, 0x002f, 0x0030},
-                         {0x0030, 0x0031, 0x0031, 0x0032, 0x0032, 0x0033, 0x0033, 0x0034},
-                         {0x0034, 0x0035, 0x0035, 0x0036, 0x0036, 0x0037, 0x0037, 0x0038},
-                         {0x0038, 0x0039, 0x0039, 0x003a, 0x003a, 0x003b, 0x003b, 0x003c},
-                         {0x003c, 0x003d, 0x003d, 0x003e, 0x003e, 0x003f, 0x003f, 0x0040}},
-                        {{0x0020'c0a0, 0x0021'c1a1, 0x0022'c2a2, 0x0023'c3a3},
-                         {0x0024'c4a4, 0x0025'c5a5, 0x0026'c6a6, 0x0027'c7a7},
-                         {0x0028'c8a8, 0x0029'c9a9, 0x002a'caaa, 0x002b'cbab},
-                         {0x002c'ccac, 0x002d'cdad, 0x002e'ceae, 0x002f'cfaf},
-                         {0x0030'd0b0, 0x0031'd1b1, 0x0032'd2b2, 0x0033'd3b3},
-                         {0x0034'd4b4, 0x0035'd5b5, 0x0036'd6b6, 0x0037'd7b7},
-                         {0x0038'd8b8, 0x0039'd9b9, 0x003a'daba, 0x003b'dbbb},
-                         {0x003c'dcbc, 0x003d'ddbd, 0x003e'debe, 0x003f'dfbf}},
-                        {{0x0000'0000'0021'c1a1, 0x0000'0000'0023'c3a3},
-                         {0x0000'0000'0025'c5a5, 0x0000'0000'0027'c7a7},
-                         {0x0000'0000'0029'c9a9, 0x0000'0000'002b'cbab},
-                         {0x0000'0000'002d'cdad, 0x0000'0000'002f'cfaf},
-                         {0x0000'0000'0031'd1b1, 0x0000'0000'0033'd3b3},
-                         {0x0000'0000'0035'd5b5, 0x0000'0000'0037'd7b7},
-                         {0x0000'0000'0039'd9b9, 0x0000'0000'003b'dbbb},
-                         {0x0000'0000'003d'ddbd, 0x0000'0000'003f'dfbf}},
-                        kVectorCalculationsSource);
-
-  TestVectorInstruction(0xa9053457,  // Vssrl.vi v8, v16, 0xa, v0.t
-                        {{0, 32, 1, 33, 1, 33, 2, 34, 2, 34, 3, 35, 3, 35, 4, 36},
-                         {4, 36, 5, 37, 5, 37, 6, 38, 6, 38, 7, 39, 7, 39, 8, 40},
-                         {8, 40, 9, 41, 9, 41, 10, 42, 10, 42, 11, 43, 11, 43, 12, 44},
-                         {12, 44, 13, 45, 13, 45, 14, 46, 14, 46, 15, 47, 15, 47, 16, 48},
-                         {16, 48, 17, 49, 17, 49, 18, 50, 18, 50, 19, 51, 19, 51, 20, 52},
-                         {20, 52, 21, 53, 21, 53, 22, 54, 22, 54, 23, 55, 23, 55, 24, 56},
-                         {24, 56, 25, 57, 25, 57, 26, 58, 26, 58, 27, 59, 27, 59, 28, 60},
-                         {28, 60, 29, 61, 29, 61, 30, 62, 30, 62, 31, 63, 31, 63, 32, 64}},
-                        {{0x0020, 0x0021, 0x0021, 0x0022, 0x0022, 0x0023, 0x0023, 0x0024},
-                         {0x0024, 0x0025, 0x0025, 0x0026, 0x0026, 0x0027, 0x0027, 0x0028},
-                         {0x0028, 0x0029, 0x0029, 0x002a, 0x002a, 0x002b, 0x002b, 0x002c},
-                         {0x002c, 0x002d, 0x002d, 0x002e, 0x002e, 0x002f, 0x002f, 0x0030},
-                         {0x0030, 0x0031, 0x0031, 0x0032, 0x0032, 0x0033, 0x0033, 0x0034},
-                         {0x0034, 0x0035, 0x0035, 0x0036, 0x0036, 0x0037, 0x0037, 0x0038},
-                         {0x0038, 0x0039, 0x0039, 0x003a, 0x003a, 0x003b, 0x003b, 0x003c},
-                         {0x003c, 0x003d, 0x003d, 0x003e, 0x003e, 0x003f, 0x003f, 0x0040}},
-                        {{0x0020'c0a0, 0x0021'c1a1, 0x0022'c2a2, 0x0023'c3a3},
-                         {0x0024'c4a4, 0x0025'c5a5, 0x0026'c6a6, 0x0027'c7a7},
-                         {0x0028'c8a8, 0x0029'c9a9, 0x002a'caaa, 0x002b'cbab},
-                         {0x002c'ccac, 0x002d'cdad, 0x002e'ceae, 0x002f'cfaf},
-                         {0x0030'd0b0, 0x0031'd1b1, 0x0032'd2b2, 0x0033'd3b3},
-                         {0x0034'd4b4, 0x0035'd5b5, 0x0036'd6b6, 0x0037'd7b7},
-                         {0x0038'd8b8, 0x0039'd9b9, 0x003a'daba, 0x003b'dbbb},
-                         {0x003c'dcbc, 0x003d'ddbd, 0x003e'debe, 0x003f'dfbf}},
-                        {{0x0021'c1a1'4120'c0a0, 0x0023'c3a3'4322'c2a2},
-                         {0x0025'c5a5'4524'c4a4, 0x0027'c7a7'4726'c6a6},
-                         {0x0029'c9a9'4928'c8a8, 0x002b'cbab'4b2a'caaa},
-                         {0x002d'cdad'4d2c'ccac, 0x002f'cfaf'4f2e'ceae},
-                         {0x0031'd1b1'5130'd0b0, 0x0033'd3b3'5332'd2b2},
-                         {0x0035'd5b5'5534'd4b4, 0x0037'd7b7'5736'd6b6},
-                         {0x0039'd9b9'5938'd8b8, 0x003b'dbbb'5b3a'daba},
-                         {0x003d'ddbd'5d3c'dcbc, 0x003f'dfbf'5f3e'debe}},
-                        kVectorCalculationsSource);
-  TestVectorInstruction(0xad0c0457,  // Vssra.vv v8, v16, v24, v0.t
-                        {{0, 224, 0, 254, 2, 225, 0, 254, 4, 226, 1, 254, 12, 227, 1, 254},
-                         {16, 228, 1, 254, 10, 229, 1, 254, 12, 230, 2, 254, 28, 231, 2, 254},
-                         {32, 232, 2, 255, 18, 233, 2, 255, 20, 234, 3, 255, 44, 235, 3, 255},
-                         {48, 236, 3, 255, 26, 237, 3, 255, 28, 238, 4, 255, 60, 239, 4, 255},
-                         {64, 240, 4, 255, 34, 241, 4, 255, 36, 242, 5, 255, 76, 243, 5, 255},
-                         {80, 244, 5, 255, 42, 245, 5, 255, 44, 246, 6, 255, 92, 247, 6, 255},
-                         {96, 248, 6, 0, 50, 249, 6, 0, 52, 250, 7, 0, 108, 251, 7, 0},
-                         {112, 252, 7, 0, 58, 253, 7, 0, 60, 254, 8, 0, 124, 255, 8, 0}},
-                        {{0x8100, 0xf830, 0xffc3, 0xfff8, 0xc484, 0xf8b1, 0xff8d, 0xfff9},
-                         {0x9110, 0xf931, 0xffcb, 0xfff9, 0xcc8c, 0xf9b2, 0xff9d, 0xfffa},
-                         {0xa120, 0xfa32, 0xffd3, 0xfffa, 0xd494, 0xfab3, 0xffad, 0xfffb},
-                         {0xb130, 0xfb33, 0xffdb, 0xfffb, 0xdc9c, 0xfbb4, 0xffbd, 0xfffc},
-                         {0xc140, 0xfc34, 0xffe3, 0xfffc, 0xe4a4, 0xfcb5, 0xffcd, 0xfffd},
-                         {0xd150, 0xfd35, 0xffeb, 0xfffd, 0xecac, 0xfdb6, 0xffdd, 0xfffe},
-                         {0xe160, 0xfe36, 0xfff3, 0xfffe, 0xf4b4, 0xfeb7, 0xffed, 0xffff},
-                         {0xf170, 0xff37, 0xfffb, 0xffff, 0xfcbc, 0xffb8, 0xfffd, 0x0000}},
-                        {{0x8302'8100, 0xffc3'8343, 0xffff'c585, 0xffff'ff8f},
-                         {0x9312'9110, 0xffcb'8b4b, 0xffff'cd8d, 0xffff'ff9f},
-                         {0xa322'a120, 0xffd3'9353, 0xffff'd595, 0xffff'ffaf},
-                         {0xb332'b130, 0xffdb'9b5b, 0xffff'dd9d, 0xffff'ffbf},
-                         {0xc342'c140, 0xffe3'a363, 0xffff'e5a5, 0xffff'ffcf},
-                         {0xd352'd150, 0xffeb'ab6b, 0xffff'edad, 0xffff'ffdf},
-                         {0xe362'e160, 0xfff3'b373, 0xffff'f5b5, 0xffff'ffef},
-                         {0xf372'f170, 0xfffb'bb7b, 0xffff'fdbd, 0xffff'ffff}},
-                        {{0x8706'8504'8302'8100, 0xffff'c787'4686'4585},
-                         {0xffff'ffff'9716'9515, 0xffff'ffff'ffff'cf8f},
-                         {0xa726'a524'a322'a120, 0xffff'd797'5696'5595},
-                         {0xffff'ffff'b736'b535, 0xffff'ffff'ffff'df9f},
-                         {0xc746'c544'c342'c140, 0xffff'e7a7'66a6'65a5},
-                         {0xffff'ffff'd756'd555, 0xffff'ffff'ffff'efaf},
-                         {0xe766'e564'e362'e160, 0xffff'f7b7'76b6'75b5},
-                         {0xffff'ffff'f776'f575, 0xffff'ffff'ffff'ffbf}},
-                        kVectorCalculationsSource);
-
-  TestVectorInstruction(0xad00c457,  // Vssra.vx v8, v16, x1, v0.t
-                        {{0, 224, 1, 225, 1, 225, 2, 226, 2, 226, 3, 227, 3, 227, 4, 228},
-                         {4, 228, 5, 229, 5, 229, 6, 230, 6, 230, 7, 231, 7, 231, 8, 232},
-                         {8, 232, 9, 233, 9, 233, 10, 234, 10, 234, 11, 235, 11, 235, 12, 236},
-                         {12, 236, 13, 237, 13, 237, 14, 238, 14, 238, 15, 239, 15, 239, 16, 240},
-                         {16, 240, 17, 241, 17, 241, 18, 242, 18, 242, 19, 243, 19, 243, 20, 244},
-                         {20, 244, 21, 245, 21, 245, 22, 246, 22, 246, 23, 247, 23, 247, 24, 248},
-                         {24, 248, 25, 249, 25, 249, 26, 250, 26, 250, 27, 251, 27, 251, 28, 252},
-                         {28, 252, 29, 253, 29, 253, 30, 254, 30, 254, 31, 255, 31, 255, 32, 0}},
-                        {{0xffe0, 0xffe1, 0xffe1, 0xffe2, 0xffe2, 0xffe3, 0xffe3, 0xffe4},
-                         {0xffe4, 0xffe5, 0xffe5, 0xffe6, 0xffe6, 0xffe7, 0xffe7, 0xffe8},
-                         {0xffe8, 0xffe9, 0xffe9, 0xffea, 0xffea, 0xffeb, 0xffeb, 0xffec},
-                         {0xffec, 0xffed, 0xffed, 0xffee, 0xffee, 0xffef, 0xffef, 0xfff0},
-                         {0xfff0, 0xfff1, 0xfff1, 0xfff2, 0xfff2, 0xfff3, 0xfff3, 0xfff4},
-                         {0xfff4, 0xfff5, 0xfff5, 0xfff6, 0xfff6, 0xfff7, 0xfff7, 0xfff8},
-                         {0xfff8, 0xfff9, 0xfff9, 0xfffa, 0xfffa, 0xfffb, 0xfffb, 0xfffc},
-                         {0xfffc, 0xfffd, 0xfffd, 0xfffe, 0xfffe, 0xffff, 0xffff, 0x0000}},
-                        {{0xffe0'c0a0, 0xffe1'c1a1, 0xffe2'c2a2, 0xffe3'c3a3},
-                         {0xffe4'c4a4, 0xffe5'c5a5, 0xffe6'c6a6, 0xffe7'c7a7},
-                         {0xffe8'c8a8, 0xffe9'c9a9, 0xffea'caaa, 0xffeb'cbab},
-                         {0xffec'ccac, 0xffed'cdad, 0xffee'ceae, 0xffef'cfaf},
-                         {0xfff0'd0b0, 0xfff1'd1b1, 0xfff2'd2b2, 0xfff3'd3b3},
-                         {0xfff4'd4b4, 0xfff5'd5b5, 0xfff6'd6b6, 0xfff7'd7b7},
-                         {0xfff8'd8b8, 0xfff9'd9b9, 0xfffa'daba, 0xfffb'dbbb},
-                         {0xfffc'dcbc, 0xfffd'ddbd, 0xfffe'debe, 0xffff'dfbf}},
-                        {{0xffff'ffff'ffe1'c1a1, 0xffff'ffff'ffe3'c3a3},
-                         {0xffff'ffff'ffe5'c5a5, 0xffff'ffff'ffe7'c7a7},
-                         {0xffff'ffff'ffe9'c9a9, 0xffff'ffff'ffeb'cbab},
-                         {0xffff'ffff'ffed'cdad, 0xffff'ffff'ffef'cfaf},
-                         {0xffff'ffff'fff1'd1b1, 0xffff'ffff'fff3'd3b3},
-                         {0xffff'ffff'fff5'd5b5, 0xffff'ffff'fff7'd7b7},
-                         {0xffff'ffff'fff9'd9b9, 0xffff'ffff'fffb'dbbb},
-                         {0xffff'ffff'fffd'ddbd, 0xffff'ffff'ffff'dfbf}},
-                        kVectorCalculationsSource);
-
-  TestVectorInstruction(0xad053457,  // Vssra.vi v8, v16, 0xa, v0.t
-                        {{0, 224, 1, 225, 1, 225, 2, 226, 2, 226, 3, 227, 3, 227, 4, 228},
-                         {4, 228, 5, 229, 5, 229, 6, 230, 6, 230, 7, 231, 7, 231, 8, 232},
-                         {8, 232, 9, 233, 9, 233, 10, 234, 10, 234, 11, 235, 11, 235, 12, 236},
-                         {12, 236, 13, 237, 13, 237, 14, 238, 14, 238, 15, 239, 15, 239, 16, 240},
-                         {16, 240, 17, 241, 17, 241, 18, 242, 18, 242, 19, 243, 19, 243, 20, 244},
-                         {20, 244, 21, 245, 21, 245, 22, 246, 22, 246, 23, 247, 23, 247, 24, 248},
-                         {24, 248, 25, 249, 25, 249, 26, 250, 26, 250, 27, 251, 27, 251, 28, 252},
-                         {28, 252, 29, 253, 29, 253, 30, 254, 30, 254, 31, 255, 31, 255, 32, 0}},
-                        {{0xffe0, 0xffe1, 0xffe1, 0xffe2, 0xffe2, 0xffe3, 0xffe3, 0xffe4},
-                         {0xffe4, 0xffe5, 0xffe5, 0xffe6, 0xffe6, 0xffe7, 0xffe7, 0xffe8},
-                         {0xffe8, 0xffe9, 0xffe9, 0xffea, 0xffea, 0xffeb, 0xffeb, 0xffec},
-                         {0xffec, 0xffed, 0xffed, 0xffee, 0xffee, 0xffef, 0xffef, 0xfff0},
-                         {0xfff0, 0xfff1, 0xfff1, 0xfff2, 0xfff2, 0xfff3, 0xfff3, 0xfff4},
-                         {0xfff4, 0xfff5, 0xfff5, 0xfff6, 0xfff6, 0xfff7, 0xfff7, 0xfff8},
-                         {0xfff8, 0xfff9, 0xfff9, 0xfffa, 0xfffa, 0xfffb, 0xfffb, 0xfffc},
-                         {0xfffc, 0xfffd, 0xfffd, 0xfffe, 0xfffe, 0xffff, 0xffff, 0x0000}},
-                        {{0xffe0'c0a0, 0xffe1'c1a1, 0xffe2'c2a2, 0xffe3'c3a3},
-                         {0xffe4'c4a4, 0xffe5'c5a5, 0xffe6'c6a6, 0xffe7'c7a7},
-                         {0xffe8'c8a8, 0xffe9'c9a9, 0xffea'caaa, 0xffeb'cbab},
-                         {0xffec'ccac, 0xffed'cdad, 0xffee'ceae, 0xffef'cfaf},
-                         {0xfff0'd0b0, 0xfff1'd1b1, 0xfff2'd2b2, 0xfff3'd3b3},
-                         {0xfff4'd4b4, 0xfff5'd5b5, 0xfff6'd6b6, 0xfff7'd7b7},
-                         {0xfff8'd8b8, 0xfff9'd9b9, 0xfffa'daba, 0xfffb'dbbb},
-                         {0xfffc'dcbc, 0xfffd'ddbd, 0xfffe'debe, 0xffff'dfbf}},
-                        {{0xffe1'c1a1'4120'c0a0, 0xffe3'c3a3'4322'c2a2},
-                         {0xffe5'c5a5'4524'c4a4, 0xffe7'c7a7'4726'c6a6},
-                         {0xffe9'c9a9'4928'c8a8, 0xffeb'cbab'4b2a'caaa},
-                         {0xffed'cdad'4d2c'ccac, 0xffef'cfaf'4f2e'ceae},
-                         {0xfff1'd1b1'5130'd0b0, 0xfff3'd3b3'5332'd2b2},
-                         {0xfff5'd5b5'5534'd4b4, 0xfff7'd7b7'5736'd6b6},
-                         {0xfff9'd9b9'5938'd8b8, 0xfffb'dbbb'5b3a'daba},
-                         {0xfffd'ddbd'5d3c'dcbc, 0xffff'dfbf'5f3e'debe}},
-                        kVectorCalculationsSource);
-}
-
 TEST_F(Riscv64InterpreterTest, TestROD) {
   state_.cpu.vcsr = VXRMFlags::ROD;
   TestVectorInstruction(
diff --git a/tests/inline_asm_tests/main_riscv64.cc b/tests/inline_asm_tests/main_riscv64.cc
index d7c2592..c8c1057 100644
--- a/tests/inline_asm_tests/main_riscv64.cc
+++ b/tests/inline_asm_tests/main_riscv64.cc
@@ -5207,3 +5207,684 @@
                         kVectorCalculationsSource);
   asm("csrw vxrm, %0\n\t" ::"r"(vxrm));
 }
+
+TEST(InlineAsmTestRiscv64, TestRNU) {
+  uint64_t vxrm;
+  asm("csrr %0, vxrm\n\t"
+      "csrwi vxrm, %c1\n\t"
+      : "=r"(vxrm)
+      : "i"(VXRMFlags::RNU));
+  TestVectorInstruction(
+      ExecVaadduvv,
+      ExecMaskedVaadduvv,
+      {{0, 138, 3, 141, 7, 144, 9, 147, 13, 134, 15, 137, 18, 140, 21, 143},
+       {24, 162, 27, 165, 31, 168, 33, 171, 37, 158, 39, 161, 42, 164, 45, 167},
+       {48, 186, 51, 189, 55, 192, 57, 195, 61, 182, 63, 185, 66, 188, 69, 191},
+       {72, 210, 75, 213, 79, 216, 81, 219, 85, 206, 87, 209, 90, 212, 93, 215},
+       {96, 106, 99, 109, 103, 112, 105, 115, 109, 102, 111, 105, 114, 108, 117, 111},
+       {120, 130, 123, 133, 127, 136, 129, 139, 133, 126, 135, 129, 138, 132, 141, 135},
+       {144, 154, 147, 157, 151, 160, 153, 163, 157, 150, 159, 153, 162, 156, 165, 159},
+       {168, 178, 171, 181, 175, 184, 177, 187, 181, 174, 183, 177, 186, 180, 189, 183}},
+      {{0x8980, 0x8c83, 0x8f87, 0x9289, 0x858d, 0x888f, 0x8b92, 0x8e95},
+       {0xa198, 0xa49b, 0xa79f, 0xaaa1, 0x9da5, 0xa0a7, 0xa3aa, 0xa6ad},
+       {0xb9b0, 0xbcb3, 0xbfb7, 0xc2b9, 0xb5bd, 0xb8bf, 0xbbc2, 0xbec5},
+       {0xd1c8, 0xd4cb, 0xd7cf, 0xdad1, 0xcdd5, 0xd0d7, 0xd3da, 0xd6dd},
+       {0x69e0, 0x6ce3, 0x6fe7, 0x72e9, 0x65ed, 0x68ef, 0x6bf2, 0x6ef5},
+       {0x81f8, 0x84fb, 0x87ff, 0x8b01, 0x7e05, 0x8107, 0x840a, 0x870d},
+       {0x9a10, 0x9d13, 0xa017, 0xa319, 0x961d, 0x991f, 0x9c22, 0x9f25},
+       {0xb228, 0xb52b, 0xb82f, 0xbb31, 0xae35, 0xb137, 0xb43a, 0xb73d}},
+      {{0x8c83'8980, 0x9289'8f87, 0x888f'858d, 0x8e95'8b92},
+       {0xa49b'a198, 0xaaa1'a79f, 0xa0a7'9da5, 0xa6ad'a3aa},
+       {0xbcb3'b9b0, 0xc2b9'bfb7, 0xb8bf'b5bd, 0xbec5'bbc2},
+       {0xd4cb'd1c8, 0xdad1'd7cf, 0xd0d7'cdd5, 0xd6dd'd3da},
+       {0x6ce3'69e0, 0x72e9'6fe7, 0x68ef'65ed, 0x6ef5'6bf2},
+       {0x84fb'81f8, 0x8b01'87ff, 0x8107'7e05, 0x870d'840a},
+       {0x9d13'9a10, 0xa319'a017, 0x991f'961d, 0x9f25'9c22},
+       {0xb52b'b228, 0xbb31'b82f, 0xb137'ae35, 0xb73d'b43a}},
+      {{0x9289'8f87'0c83'8980, 0x8e95'8b92'888f'858d},
+       {0xaaa1'a79f'249b'a198, 0xa6ad'a3aa'a0a7'9da5},
+       {0xc2b9'bfb7'3cb3'b9b0, 0xbec5'bbc2'b8bf'b5bd},
+       {0xdad1'd7cf'54cb'd1c8, 0xd6dd'd3da'd0d7'cdd5},
+       {0x72e9'6fe6'ece3'69e0, 0x6ef5'6bf2'68ef'65ed},
+       {0x8b01'87ff'04fb'81f8, 0x870d'840a'8107'7e05},
+       {0xa319'a017'1d13'9a10, 0x9f25'9c22'991f'961d},
+       {0xbb31'b82f'352b'b228, 0xb73d'b43a'b137'ae35}},
+      kVectorCalculationsSource);
+  TestVectorInstruction(
+      ExecVaadduvx,
+      ExecMaskedVaadduvx,
+      {{85, 150, 86, 151, 87, 152, 88, 153, 89, 154, 90, 155, 91, 156, 92, 157},
+       {93, 158, 94, 159, 95, 160, 96, 161, 97, 162, 98, 163, 99, 164, 100, 165},
+       {101, 166, 102, 167, 103, 168, 104, 169, 105, 170, 106, 171, 107, 172, 108, 173},
+       {109, 174, 110, 175, 111, 176, 112, 177, 113, 178, 114, 179, 115, 180, 116, 181},
+       {117, 182, 118, 183, 119, 184, 120, 185, 121, 186, 122, 187, 123, 188, 124, 189},
+       {125, 190, 126, 191, 127, 192, 128, 193, 129, 194, 130, 195, 131, 196, 132, 197},
+       {133, 198, 134, 199, 135, 200, 136, 201, 137, 202, 138, 203, 139, 204, 140, 205},
+       {141, 206, 142, 207, 143, 208, 144, 209, 145, 210, 146, 211, 147, 212, 148, 213}},
+      {{0x95d5, 0x96d6, 0x97d7, 0x98d8, 0x99d9, 0x9ada, 0x9bdb, 0x9cdc},
+       {0x9ddd, 0x9ede, 0x9fdf, 0xa0e0, 0xa1e1, 0xa2e2, 0xa3e3, 0xa4e4},
+       {0xa5e5, 0xa6e6, 0xa7e7, 0xa8e8, 0xa9e9, 0xaaea, 0xabeb, 0xacec},
+       {0xaded, 0xaeee, 0xafef, 0xb0f0, 0xb1f1, 0xb2f2, 0xb3f3, 0xb4f4},
+       {0xb5f5, 0xb6f6, 0xb7f7, 0xb8f8, 0xb9f9, 0xbafa, 0xbbfb, 0xbcfc},
+       {0xbdfd, 0xbefe, 0xbfff, 0xc100, 0xc201, 0xc302, 0xc403, 0xc504},
+       {0xc605, 0xc706, 0xc807, 0xc908, 0xca09, 0xcb0a, 0xcc0b, 0xcd0c},
+       {0xce0d, 0xcf0e, 0xd00f, 0xd110, 0xd211, 0xd312, 0xd413, 0xd514}},
+      {{0x96d6'95d5, 0x98d8'97d7, 0x9ada'99d9, 0x9cdc'9bdb},
+       {0x9ede'9ddd, 0xa0e0'9fdf, 0xa2e2'a1e1, 0xa4e4'a3e3},
+       {0xa6e6'a5e5, 0xa8e8'a7e7, 0xaaea'a9e9, 0xacec'abeb},
+       {0xaeee'aded, 0xb0f0'afef, 0xb2f2'b1f1, 0xb4f4'b3f3},
+       {0xb6f6'b5f5, 0xb8f8'b7f7, 0xbafa'b9f9, 0xbcfc'bbfb},
+       {0xbefe'bdfd, 0xc100'bfff, 0xc302'c201, 0xc504'c403},
+       {0xc706'c605, 0xc908'c807, 0xcb0a'ca09, 0xcd0c'cc0b},
+       {0xcf0e'ce0d, 0xd110'd00f, 0xd312'd211, 0xd514'd413}},
+      {{0x98d8'97d7'96d6'95d5, 0x9cdc'9bdb'9ada'99d9},
+       {0xa0e0'9fdf'9ede'9ddd, 0xa4e4'a3e3'a2e2'a1e1},
+       {0xa8e8'a7e7'a6e6'a5e5, 0xacec'abeb'aaea'a9e9},
+       {0xb0f0'afef'aeee'aded, 0xb4f4'b3f3'b2f2'b1f1},
+       {0xb8f8'b7f7'b6f6'b5f5, 0xbcfc'bbfb'bafa'b9f9},
+       {0xc100'bfff'befe'bdfd, 0xc504'c403'c302'c201},
+       {0xc908'c807'c706'c605, 0xcd0c'cc0b'cb0a'ca09},
+       {0xd110'd00f'cf0e'ce0d, 0xd514'd413'd312'd211}},
+      kVectorCalculationsSource);
+  TestVectorInstruction(
+      ExecVaaddvv,
+      ExecMaskedVaaddvv,
+      {{0, 138, 3, 141, 7, 144, 9, 147, 13, 134, 15, 137, 18, 140, 21, 143},
+       {24, 162, 27, 165, 31, 168, 33, 171, 37, 158, 39, 161, 42, 164, 45, 167},
+       {48, 186, 51, 189, 55, 192, 57, 195, 61, 182, 63, 185, 66, 188, 69, 191},
+       {72, 210, 75, 213, 79, 216, 81, 219, 85, 206, 87, 209, 90, 212, 93, 215},
+       {224, 234, 227, 237, 231, 240, 233, 243, 237, 230, 239, 233, 242, 236, 245, 239},
+       {248, 2, 251, 5, 255, 8, 1, 11, 5, 254, 7, 1, 10, 4, 13, 7},
+       {16, 26, 19, 29, 23, 32, 25, 35, 29, 22, 31, 25, 34, 28, 37, 31},
+       {40, 50, 43, 53, 47, 56, 49, 59, 53, 46, 55, 49, 58, 52, 61, 55}},
+      {{0x8980, 0x8c83, 0x8f87, 0x9289, 0x858d, 0x888f, 0x8b92, 0x8e95},
+       {0xa198, 0xa49b, 0xa79f, 0xaaa1, 0x9da5, 0xa0a7, 0xa3aa, 0xa6ad},
+       {0xb9b0, 0xbcb3, 0xbfb7, 0xc2b9, 0xb5bd, 0xb8bf, 0xbbc2, 0xbec5},
+       {0xd1c8, 0xd4cb, 0xd7cf, 0xdad1, 0xcdd5, 0xd0d7, 0xd3da, 0xd6dd},
+       {0xe9e0, 0xece3, 0xefe7, 0xf2e9, 0xe5ed, 0xe8ef, 0xebf2, 0xeef5},
+       {0x01f8, 0x04fb, 0x07ff, 0x0b01, 0xfe05, 0x0107, 0x040a, 0x070d},
+       {0x1a10, 0x1d13, 0x2017, 0x2319, 0x161d, 0x191f, 0x1c22, 0x1f25},
+       {0x3228, 0x352b, 0x382f, 0x3b31, 0x2e35, 0x3137, 0x343a, 0x373d}},
+      {{0x8c83'8980, 0x9289'8f87, 0x888f'858d, 0x8e95'8b92},
+       {0xa49b'a198, 0xaaa1'a79f, 0xa0a7'9da5, 0xa6ad'a3aa},
+       {0xbcb3'b9b0, 0xc2b9'bfb7, 0xb8bf'b5bd, 0xbec5'bbc2},
+       {0xd4cb'd1c8, 0xdad1'd7cf, 0xd0d7'cdd5, 0xd6dd'd3da},
+       {0xece3'69e0, 0xf2e9'6fe7, 0xe8ef'65ed, 0xeef5'6bf2},
+       {0x04fb'81f8, 0x0b01'87ff, 0x0107'7e05, 0x070d'840a},
+       {0x1d13'9a10, 0x2319'a017, 0x191f'961d, 0x1f25'9c22},
+       {0x352b'b228, 0x3b31'b82f, 0x3137'ae35, 0x373d'b43a}},
+      {{0x9289'8f87'0c83'8980, 0x8e95'8b92'888f'858d},
+       {0xaaa1'a79f'249b'a198, 0xa6ad'a3aa'a0a7'9da5},
+       {0xc2b9'bfb7'3cb3'b9b0, 0xbec5'bbc2'b8bf'b5bd},
+       {0xdad1'd7cf'54cb'd1c8, 0xd6dd'd3da'd0d7'cdd5},
+       {0xf2e9'6fe6'ece3'69e0, 0xeef5'6bf2'68ef'65ed},
+       {0x0b01'87ff'04fb'81f8, 0x070d'840a'8107'7e05},
+       {0x2319'a017'1d13'9a10, 0x1f25'9c22'991f'961d},
+       {0x3b31'b82f'352b'b228, 0x373d'b43a'b137'ae35}},
+      kVectorCalculationsSource);
+  TestVectorInstruction(
+      ExecVaaddvx,
+      ExecMaskedVaaddvx,
+      {{213, 150, 214, 151, 215, 152, 216, 153, 217, 154, 218, 155, 219, 156, 220, 157},
+       {221, 158, 222, 159, 223, 160, 224, 161, 225, 162, 226, 163, 227, 164, 228, 165},
+       {229, 166, 230, 167, 231, 168, 232, 169, 233, 170, 234, 171, 235, 172, 236, 173},
+       {237, 174, 238, 175, 239, 176, 240, 177, 241, 178, 242, 179, 243, 180, 244, 181},
+       {245, 182, 246, 183, 247, 184, 248, 185, 249, 186, 250, 187, 251, 188, 252, 189},
+       {253, 190, 254, 191, 255, 192, 0, 193, 1, 194, 2, 195, 3, 196, 4, 197},
+       {5, 198, 6, 199, 7, 200, 8, 201, 9, 202, 10, 203, 11, 204, 12, 205},
+       {13, 206, 14, 207, 15, 208, 16, 209, 17, 210, 18, 211, 19, 212, 20, 213}},
+      {{0x95d5, 0x96d6, 0x97d7, 0x98d8, 0x99d9, 0x9ada, 0x9bdb, 0x9cdc},
+       {0x9ddd, 0x9ede, 0x9fdf, 0xa0e0, 0xa1e1, 0xa2e2, 0xa3e3, 0xa4e4},
+       {0xa5e5, 0xa6e6, 0xa7e7, 0xa8e8, 0xa9e9, 0xaaea, 0xabeb, 0xacec},
+       {0xaded, 0xaeee, 0xafef, 0xb0f0, 0xb1f1, 0xb2f2, 0xb3f3, 0xb4f4},
+       {0xb5f5, 0xb6f6, 0xb7f7, 0xb8f8, 0xb9f9, 0xbafa, 0xbbfb, 0xbcfc},
+       {0xbdfd, 0xbefe, 0xbfff, 0xc100, 0xc201, 0xc302, 0xc403, 0xc504},
+       {0xc605, 0xc706, 0xc807, 0xc908, 0xca09, 0xcb0a, 0xcc0b, 0xcd0c},
+       {0xce0d, 0xcf0e, 0xd00f, 0xd110, 0xd211, 0xd312, 0xd413, 0xd514}},
+      {{0x96d6'95d5, 0x98d8'97d7, 0x9ada'99d9, 0x9cdc'9bdb},
+       {0x9ede'9ddd, 0xa0e0'9fdf, 0xa2e2'a1e1, 0xa4e4'a3e3},
+       {0xa6e6'a5e5, 0xa8e8'a7e7, 0xaaea'a9e9, 0xacec'abeb},
+       {0xaeee'aded, 0xb0f0'afef, 0xb2f2'b1f1, 0xb4f4'b3f3},
+       {0xb6f6'b5f5, 0xb8f8'b7f7, 0xbafa'b9f9, 0xbcfc'bbfb},
+       {0xbefe'bdfd, 0xc100'bfff, 0xc302'c201, 0xc504'c403},
+       {0xc706'c605, 0xc908'c807, 0xcb0a'ca09, 0xcd0c'cc0b},
+       {0xcf0e'ce0d, 0xd110'd00f, 0xd312'd211, 0xd514'd413}},
+      {{0x98d8'97d7'96d6'95d5, 0x9cdc'9bdb'9ada'99d9},
+       {0xa0e0'9fdf'9ede'9ddd, 0xa4e4'a3e3'a2e2'a1e1},
+       {0xa8e8'a7e7'a6e6'a5e5, 0xacec'abeb'aaea'a9e9},
+       {0xb0f0'afef'aeee'aded, 0xb4f4'b3f3'b2f2'b1f1},
+       {0xb8f8'b7f7'b6f6'b5f5, 0xbcfc'bbfb'bafa'b9f9},
+       {0xc100'bfff'befe'bdfd, 0xc504'c403'c302'c201},
+       {0xc908'c807'c706'c605, 0xcd0c'cc0b'cb0a'ca09},
+       {0xd110'd00f'cf0e'ce0d, 0xd514'd413'd312'd211}},
+      kVectorCalculationsSource);
+  TestVectorInstruction(
+      ExecVasubuvv,
+      ExecMaskedVasubuvv,
+      {{0, 248, 255, 247, 254, 246, 253, 245, 252, 4, 251, 3, 250, 2, 249, 1},
+       {248, 240, 247, 239, 246, 238, 245, 237, 244, 252, 243, 251, 242, 250, 241, 249},
+       {240, 232, 239, 231, 238, 230, 237, 229, 236, 244, 235, 243, 234, 242, 233, 241},
+       {232, 224, 231, 223, 230, 222, 229, 221, 228, 236, 227, 235, 226, 234, 225, 233},
+       {224, 88, 223, 87, 222, 86, 221, 85, 220, 100, 219, 99, 218, 98, 217, 97},
+       {216, 80, 215, 79, 214, 78, 213, 77, 212, 92, 211, 91, 210, 90, 209, 89},
+       {208, 72, 207, 71, 206, 70, 205, 69, 204, 84, 203, 83, 202, 82, 201, 81},
+       {200, 64, 199, 63, 198, 62, 197, 61, 196, 76, 195, 75, 194, 74, 193, 73}},
+      {{0xf780, 0xf67f, 0xf57e, 0xf47d, 0x037c, 0x027b, 0x017a, 0x0079},
+       {0xef78, 0xee77, 0xed76, 0xec75, 0xfb74, 0xfa73, 0xf972, 0xf871},
+       {0xe770, 0xe66f, 0xe56e, 0xe46d, 0xf36c, 0xf26b, 0xf16a, 0xf069},
+       {0xdf68, 0xde67, 0xdd66, 0xdc65, 0xeb64, 0xea63, 0xe962, 0xe861},
+       {0x5760, 0x565f, 0x555e, 0x545d, 0x635c, 0x625b, 0x615a, 0x6059},
+       {0x4f58, 0x4e57, 0x4d56, 0x4c55, 0x5b54, 0x5a53, 0x5952, 0x5851},
+       {0x4750, 0x464f, 0x454e, 0x444d, 0x534c, 0x524b, 0x514a, 0x5049},
+       {0x3f48, 0x3e47, 0x3d46, 0x3c45, 0x4b44, 0x4a43, 0x4942, 0x4841}},
+      {{0xf67e'f780, 0xf47c'f57e, 0x027b'037c, 0x0079'017a},
+       {0xee76'ef78, 0xec74'ed76, 0xfa72'fb74, 0xf870'f972},
+       {0xe66e'e770, 0xe46c'e56e, 0xf26a'f36c, 0xf068'f16a},
+       {0xde66'df68, 0xdc64'dd66, 0xea62'eb64, 0xe860'e962},
+       {0x565f'5760, 0x545d'555e, 0x625b'635c, 0x6059'615a},
+       {0x4e57'4f58, 0x4c55'4d56, 0x5a53'5b54, 0x5851'5952},
+       {0x464f'4750, 0x444d'454e, 0x524b'534c, 0x5049'514a},
+       {0x3e47'3f48, 0x3c45'3d46, 0x4a43'4b44, 0x4841'4942}},
+      {{0xf47c'f57d'767e'f780, 0x0079'017a'027b'037c},
+       {0xec74'ed75'6e76'ef78, 0xf870'f971'fa72'fb74},
+       {0xe46c'e56d'666e'e770, 0xf068'f169'f26a'f36c},
+       {0xdc64'dd65'5e66'df68, 0xe860'e961'ea62'eb64},
+       {0x545d'555d'd65f'5760, 0x6059'615a'625b'635c},
+       {0x4c55'4d55'ce57'4f58, 0x5851'5952'5a53'5b54},
+       {0x444d'454d'c64f'4750, 0x5049'514a'524b'534c},
+       {0x3c45'3d45'be47'3f48, 0x4841'4942'4a43'4b44}},
+      kVectorCalculationsSource);
+  TestVectorInstruction(
+      ExecVasubuvx,
+      ExecMaskedVasubuvx,
+      {{171, 236, 172, 237, 173, 238, 174, 239, 175, 240, 176, 241, 177, 242, 178, 243},
+       {179, 244, 180, 245, 181, 246, 182, 247, 183, 248, 184, 249, 185, 250, 186, 251},
+       {187, 252, 188, 253, 189, 254, 190, 255, 191, 0, 192, 1, 193, 2, 194, 3},
+       {195, 4, 196, 5, 197, 6, 198, 7, 199, 8, 200, 9, 201, 10, 202, 11},
+       {203, 12, 204, 13, 205, 14, 206, 15, 207, 16, 208, 17, 209, 18, 210, 19},
+       {211, 20, 212, 21, 213, 22, 214, 23, 215, 24, 216, 25, 217, 26, 218, 27},
+       {219, 28, 220, 29, 221, 30, 222, 31, 223, 32, 224, 33, 225, 34, 226, 35},
+       {227, 36, 228, 37, 229, 38, 230, 39, 231, 40, 232, 41, 233, 42, 234, 43}},
+      {{0xeb2b, 0xec2c, 0xed2d, 0xee2e, 0xef2f, 0xf030, 0xf131, 0xf232},
+       {0xf333, 0xf434, 0xf535, 0xf636, 0xf737, 0xf838, 0xf939, 0xfa3a},
+       {0xfb3b, 0xfc3c, 0xfd3d, 0xfe3e, 0xff3f, 0x0040, 0x0141, 0x0242},
+       {0x0343, 0x0444, 0x0545, 0x0646, 0x0747, 0x0848, 0x0949, 0x0a4a},
+       {0x0b4b, 0x0c4c, 0x0d4d, 0x0e4e, 0x0f4f, 0x1050, 0x1151, 0x1252},
+       {0x1353, 0x1454, 0x1555, 0x1656, 0x1757, 0x1858, 0x1959, 0x1a5a},
+       {0x1b5b, 0x1c5c, 0x1d5d, 0x1e5e, 0x1f5f, 0x2060, 0x2161, 0x2262},
+       {0x2363, 0x2464, 0x2565, 0x2666, 0x2767, 0x2868, 0x2969, 0x2a6a}},
+      {{0xec2b'eb2b, 0xee2d'ed2d, 0xf02f'ef2f, 0xf231'f131},
+       {0xf433'f333, 0xf635'f535, 0xf837'f737, 0xfa39'f939},
+       {0xfc3b'fb3b, 0xfe3d'fd3d, 0x003f'ff3f, 0x0242'0141},
+       {0x0444'0343, 0x0646'0545, 0x0848'0747, 0x0a4a'0949},
+       {0x0c4c'0b4b, 0x0e4e'0d4d, 0x1050'0f4f, 0x1252'1151},
+       {0x1454'1353, 0x1656'1555, 0x1858'1757, 0x1a5a'1959},
+       {0x1c5c'1b5b, 0x1e5e'1d5d, 0x2060'1f5f, 0x2262'2161},
+       {0x2464'2363, 0x2666'2565, 0x2868'2767, 0x2a6a'2969}},
+      {{0xee2d'ed2c'ec2b'eb2b, 0xf231'f130'f02f'ef2f},
+       {0xf635'f534'f433'f333, 0xfa39'f938'f837'f737},
+       {0xfe3d'fd3c'fc3b'fb3b, 0x0242'0141'003f'ff3f},
+       {0x0646'0545'0444'0343, 0x0a4a'0949'0848'0747},
+       {0x0e4e'0d4d'0c4c'0b4b, 0x1252'1151'1050'0f4f},
+       {0x1656'1555'1454'1353, 0x1a5a'1959'1858'1757},
+       {0x1e5e'1d5d'1c5c'1b5b, 0x2262'2161'2060'1f5f},
+       {0x2666'2565'2464'2363, 0x2a6a'2969'2868'2767}},
+      kVectorCalculationsSource);
+  TestVectorInstruction(
+      ExecVasubvv,
+      ExecMaskedVasubvv,
+      {{0, 248, 255, 247, 254, 246, 253, 245, 252, 4, 251, 3, 250, 2, 249, 1},
+       {248, 240, 247, 239, 246, 238, 245, 237, 244, 252, 243, 251, 242, 250, 241, 249},
+       {240, 232, 239, 231, 238, 230, 237, 229, 236, 244, 235, 243, 234, 242, 233, 241},
+       {232, 224, 231, 223, 230, 222, 229, 221, 228, 236, 227, 235, 226, 234, 225, 233},
+       {96, 216, 95, 215, 94, 214, 93, 213, 92, 228, 91, 227, 90, 226, 89, 225},
+       {88, 208, 87, 207, 86, 206, 85, 205, 84, 220, 83, 219, 82, 218, 81, 217},
+       {80, 200, 79, 199, 78, 198, 77, 197, 76, 212, 75, 211, 74, 210, 73, 209},
+       {72, 192, 71, 191, 70, 190, 69, 189, 68, 204, 67, 203, 66, 202, 65, 201}},
+      {{0xf780, 0xf67f, 0xf57e, 0xf47d, 0x037c, 0x027b, 0x017a, 0x0079},
+       {0xef78, 0xee77, 0xed76, 0xec75, 0xfb74, 0xfa73, 0xf972, 0xf871},
+       {0xe770, 0xe66f, 0xe56e, 0xe46d, 0xf36c, 0xf26b, 0xf16a, 0xf069},
+       {0xdf68, 0xde67, 0xdd66, 0xdc65, 0xeb64, 0xea63, 0xe962, 0xe861},
+       {0xd760, 0xd65f, 0xd55e, 0xd45d, 0xe35c, 0xe25b, 0xe15a, 0xe059},
+       {0xcf58, 0xce57, 0xcd56, 0xcc55, 0xdb54, 0xda53, 0xd952, 0xd851},
+       {0xc750, 0xc64f, 0xc54e, 0xc44d, 0xd34c, 0xd24b, 0xd14a, 0xd049},
+       {0xbf48, 0xbe47, 0xbd46, 0xbc45, 0xcb44, 0xca43, 0xc942, 0xc841}},
+      {{0xf67e'f780, 0xf47c'f57e, 0x027b'037c, 0x0079'017a},
+       {0xee76'ef78, 0xec74'ed76, 0xfa72'fb74, 0xf870'f972},
+       {0xe66e'e770, 0xe46c'e56e, 0xf26a'f36c, 0xf068'f16a},
+       {0xde66'df68, 0xdc64'dd66, 0xea62'eb64, 0xe860'e962},
+       {0xd65f'5760, 0xd45d'555e, 0xe25b'635c, 0xe059'615a},
+       {0xce57'4f58, 0xcc55'4d56, 0xda53'5b54, 0xd851'5952},
+       {0xc64f'4750, 0xc44d'454e, 0xd24b'534c, 0xd049'514a},
+       {0xbe47'3f48, 0xbc45'3d46, 0xca43'4b44, 0xc841'4942}},
+      {{0xf47c'f57d'767e'f780, 0x0079'017a'027b'037c},
+       {0xec74'ed75'6e76'ef78, 0xf870'f971'fa72'fb74},
+       {0xe46c'e56d'666e'e770, 0xf068'f169'f26a'f36c},
+       {0xdc64'dd65'5e66'df68, 0xe860'e961'ea62'eb64},
+       {0xd45d'555d'd65f'5760, 0xe059'615a'625b'635c},
+       {0xcc55'4d55'ce57'4f58, 0xd851'5952'5a53'5b54},
+       {0xc44d'454d'c64f'4750, 0xd049'514a'524b'534c},
+       {0xbc45'3d45'be47'3f48, 0xc841'4942'4a43'4b44}},
+      kVectorCalculationsSource);
+  TestVectorInstruction(ExecVasubvx,
+                        ExecMaskedVasubvx,
+                        {{43, 236, 44, 237, 45, 238, 46, 239, 47, 240, 48, 241, 49, 242, 50, 243},
+                         {51, 244, 52, 245, 53, 246, 54, 247, 55, 248, 56, 249, 57, 250, 58, 251},
+                         {59, 252, 60, 253, 61, 254, 62, 255, 63, 0, 64, 1, 65, 2, 66, 3},
+                         {67, 4, 68, 5, 69, 6, 70, 7, 71, 8, 72, 9, 73, 10, 74, 11},
+                         {75, 12, 76, 13, 77, 14, 78, 15, 79, 16, 80, 17, 81, 18, 82, 19},
+                         {83, 20, 84, 21, 85, 22, 86, 23, 87, 24, 88, 25, 89, 26, 90, 27},
+                         {91, 28, 92, 29, 93, 30, 94, 31, 95, 32, 96, 33, 97, 34, 98, 35},
+                         {99, 36, 100, 37, 101, 38, 102, 39, 103, 40, 104, 41, 105, 42, 106, 43}},
+                        {{0xeb2b, 0xec2c, 0xed2d, 0xee2e, 0xef2f, 0xf030, 0xf131, 0xf232},
+                         {0xf333, 0xf434, 0xf535, 0xf636, 0xf737, 0xf838, 0xf939, 0xfa3a},
+                         {0xfb3b, 0xfc3c, 0xfd3d, 0xfe3e, 0xff3f, 0x0040, 0x0141, 0x0242},
+                         {0x0343, 0x0444, 0x0545, 0x0646, 0x0747, 0x0848, 0x0949, 0x0a4a},
+                         {0x0b4b, 0x0c4c, 0x0d4d, 0x0e4e, 0x0f4f, 0x1050, 0x1151, 0x1252},
+                         {0x1353, 0x1454, 0x1555, 0x1656, 0x1757, 0x1858, 0x1959, 0x1a5a},
+                         {0x1b5b, 0x1c5c, 0x1d5d, 0x1e5e, 0x1f5f, 0x2060, 0x2161, 0x2262},
+                         {0x2363, 0x2464, 0x2565, 0x2666, 0x2767, 0x2868, 0x2969, 0x2a6a}},
+                        {{0xec2b'eb2b, 0xee2d'ed2d, 0xf02f'ef2f, 0xf231'f131},
+                         {0xf433'f333, 0xf635'f535, 0xf837'f737, 0xfa39'f939},
+                         {0xfc3b'fb3b, 0xfe3d'fd3d, 0x003f'ff3f, 0x0242'0141},
+                         {0x0444'0343, 0x0646'0545, 0x0848'0747, 0x0a4a'0949},
+                         {0x0c4c'0b4b, 0x0e4e'0d4d, 0x1050'0f4f, 0x1252'1151},
+                         {0x1454'1353, 0x1656'1555, 0x1858'1757, 0x1a5a'1959},
+                         {0x1c5c'1b5b, 0x1e5e'1d5d, 0x2060'1f5f, 0x2262'2161},
+                         {0x2464'2363, 0x2666'2565, 0x2868'2767, 0x2a6a'2969}},
+                        {{0xee2d'ed2c'ec2b'eb2b, 0xf231'f130'f02f'ef2f},
+                         {0xf635'f534'f433'f333, 0xfa39'f938'f837'f737},
+                         {0xfe3d'fd3c'fc3b'fb3b, 0x0242'0141'003f'ff3f},
+                         {0x0646'0545'0444'0343, 0x0a4a'0949'0848'0747},
+                         {0x0e4e'0d4d'0c4c'0b4b, 0x1252'1151'1050'0f4f},
+                         {0x1656'1555'1454'1353, 0x1a5a'1959'1858'1757},
+                         {0x1e5e'1d5d'1c5c'1b5b, 0x2262'2161'2060'1f5f},
+                         {0x2666'2565'2464'2363, 0x2a6a'2969'2868'2767}},
+                        kVectorCalculationsSource);
+  TestNarrowingVectorInstruction(ExecVnclipuwi,
+                                 ExecMaskedVnclipuwi,
+                                 {{32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40},
+                                  {40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48},
+                                  {48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56},
+                                  {56, 57, 57, 58, 58, 59, 59, 60, 60, 61, 61, 62, 62, 63, 63, 64}},
+                                 {{0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff},
+                                  {0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff},
+                                  {0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff},
+                                  {0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}},
+                                 {{0xffff'ffff, 0xffff'ffff, 0xffff'ffff, 0xffff'ffff},
+                                  {0xffff'ffff, 0xffff'ffff, 0xffff'ffff, 0xffff'ffff},
+                                  {0xffff'ffff, 0xffff'ffff, 0xffff'ffff, 0xffff'ffff},
+                                  {0xffff'ffff, 0xffff'ffff, 0xffff'ffff, 0xffff'ffff}},
+                                 kVectorCalculationsSource);
+  TestNarrowingVectorInstruction(
+      ExecVnclipwi,
+      ExecMaskedVnclipwi,
+      {{224, 225, 225, 226, 226, 227, 227, 228, 228, 229, 229, 230, 230, 231, 231, 232},
+       {232, 233, 233, 234, 234, 235, 235, 236, 236, 237, 237, 238, 238, 239, 239, 240},
+       {240, 241, 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, 247, 248},
+       {248, 249, 249, 250, 250, 251, 251, 252, 252, 253, 253, 254, 254, 255, 255, 0}},
+      {{0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000},
+       {0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000},
+       {0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000},
+       {0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0xdfbf}},
+      {{0x8000'0000, 0x8000'0000, 0x8000'0000, 0x8000'0000},
+       {0x8000'0000, 0x8000'0000, 0x8000'0000, 0x8000'0000},
+       {0x8000'0000, 0x8000'0000, 0x8000'0000, 0x8000'0000},
+       {0x8000'0000, 0x8000'0000, 0x8000'0000, 0x8000'0000}},
+      kVectorCalculationsSource);
+
+  TestNarrowingVectorInstruction(ExecVnclipuwx,
+                                 ExecMaskedVnclipuwx,
+                                 {{32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40},
+                                  {40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48},
+                                  {48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56},
+                                  {56, 57, 57, 58, 58, 59, 59, 60, 60, 61, 61, 62, 62, 63, 63, 64}},
+                                 {{0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff},
+                                  {0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff},
+                                  {0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff},
+                                  {0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}},
+                                 {{0x0021'c1a1, 0x0023'c3a3, 0x0025'c5a5, 0x0027'c7a7},
+                                  {0x0029'c9a9, 0x002b'cbab, 0x002d'cdad, 0x002f'cfaf},
+                                  {0x0031'd1b1, 0x0033'd3b3, 0x0035'd5b5, 0x0037'd7b7},
+                                  {0x0039'd9b9, 0x003b'dbbb, 0x003d'ddbd, 0x003f'dfbf}},
+                                 kVectorCalculationsSource);
+
+  TestNarrowingVectorInstruction(
+      ExecVnclipwx,
+      ExecMaskedVnclipwx,
+      {{224, 225, 225, 226, 226, 227, 227, 228, 228, 229, 229, 230, 230, 231, 231, 232},
+       {232, 233, 233, 234, 234, 235, 235, 236, 236, 237, 237, 238, 238, 239, 239, 240},
+       {240, 241, 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, 247, 248},
+       {248, 249, 249, 250, 250, 251, 251, 252, 252, 253, 253, 254, 254, 255, 255, 0}},
+      {{0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000},
+       {0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000},
+       {0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000},
+       {0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0xdfbf}},
+      {{0xffe1'c1a1, 0xffe3'c3a3, 0xffe5'c5a5, 0xffe7'c7a7},
+       {0xffe9'c9a9, 0xffeb'cbab, 0xffed'cdad, 0xffef'cfaf},
+       {0xfff1'd1b1, 0xfff3'd3b3, 0xfff5'd5b5, 0xfff7'd7b7},
+       {0xfff9'd9b9, 0xfffb'dbbb, 0xfffd'ddbd, 0xffff'dfbf}},
+      kVectorCalculationsSource);
+
+  TestNarrowingVectorInstruction(
+      ExecVnclipuwv,
+      ExecMaskedVnclipuwv,
+      {{255, 255, 255, 255, 69, 35, 9, 2, 255, 255, 255, 255, 153, 39, 10, 2},
+       {255, 255, 255, 255, 85, 43, 11, 3, 255, 255, 255, 255, 185, 47, 12, 3},
+       {255, 255, 255, 255, 101, 51, 13, 3, 255, 255, 255, 255, 217, 55, 14, 3},
+       {255, 255, 255, 255, 117, 59, 15, 4, 255, 255, 255, 255, 249, 63, 16, 4}},
+      {{0xffff, 0xffff, 0xffff, 0xffff, 0x4989, 0x0971, 0x009b, 0x000a},
+       {0xffff, 0xffff, 0xffff, 0xffff, 0x5999, 0x0b73, 0x00bb, 0x000c},
+       {0xffff, 0xffff, 0xffff, 0xffff, 0x69a9, 0x0d75, 0x00db, 0x000e},
+       {0xffff, 0xffff, 0xffff, 0xffff, 0x79b9, 0x0f77, 0x00fb, 0x0010}},
+      {{0xffff'ffff, 0xffff'ffff, 0xffff'ffff, 0xffff'ffff},
+       {0xa726'a525, 0x0057'9757, 0x0000'5b9b, 0x0000'00bf},
+       {0xffff'ffff, 0xffff'ffff, 0xffff'ffff, 0xffff'ffff},
+       {0xe766'e565, 0x0077'b777, 0x0000'7bbb, 0x0000'00ff}},
+      kVectorCalculationsSource);
+
+  TestNarrowingVectorInstruction(
+      ExecVnclipwv,
+      ExecMaskedVnclipwv,
+      {{128, 128, 128, 128, 197, 227, 249, 254, 128, 128, 128, 128, 153, 231, 250, 254},
+       {128, 128, 128, 128, 213, 235, 251, 255, 128, 128, 128, 128, 185, 239, 252, 255},
+       {128, 128, 128, 128, 229, 243, 253, 255, 128, 128, 128, 128, 217, 247, 254, 255},
+       {128, 128, 128, 158, 245, 251, 255, 0, 128, 128, 128, 222, 249, 255, 0, 0}},
+      {{0x8000, 0x8000, 0x8000, 0x8000, 0xc989, 0xf971, 0xff9b, 0xfffa},
+       {0x8000, 0x8000, 0x8000, 0x8000, 0xd999, 0xfb73, 0xffbb, 0xfffc},
+       {0x8000, 0x8000, 0x8000, 0x8000, 0xe9a9, 0xfd75, 0xffdb, 0xfffe},
+       {0x8000, 0x8000, 0x8000, 0x8000, 0xf9b9, 0xff77, 0xfffb, 0x0000}},
+      {{0x8000'0000, 0x8000'0000, 0x8000'0000, 0x8000'0000},
+       {0xa726'a525, 0xffd7'9757, 0xffff'db9b, 0xffff'ffbf},
+       {0x8000'0000, 0x8000'0000, 0x8000'0000, 0x8000'0000},
+       {0xe766'e565, 0xfff7'b777, 0xffff'fbbb, 0xffff'ffff}},
+      kVectorCalculationsSource);
+
+  TestVectorInstruction(
+      ExecVsmulvv,
+      ExecMaskedVsmulvv,
+      {{0, 109, 0, 104, 0, 98, 1, 93, 1, 117, 2, 112, 2, 106, 3, 101},
+       {4, 68, 5, 63, 6, 59, 8, 54, 9, 76, 11, 71, 12, 67, 14, 62},
+       {16, 34, 18, 31, 21, 27, 23, 24, 25, 42, 28, 39, 30, 35, 33, 32},
+       {36, 9, 39, 6, 43, 4, 46, 1, 49, 17, 53, 14, 56, 12, 60, 9},
+       {192, 247, 192, 246, 193, 244, 193, 243, 194, 255, 194, 254, 194, 252, 195, 251},
+       {196, 238, 197, 237, 199, 237, 200, 236, 202, 246, 203, 245, 204, 245, 206, 244},
+       {208, 236, 210, 237, 213, 237, 215, 238, 218, 244, 220, 245, 222, 245, 225, 246},
+       {228, 243, 231, 244, 235, 246, 238, 247, 242, 251, 245, 252, 248, 254, 252, 255}},
+      {{0x6d24, 0x677e, 0x61f8, 0x5c94, 0x750c, 0x6f68, 0x69e3, 0x647f},
+       {0x437f, 0x3edb, 0x3a57, 0x35f5, 0x4b6b, 0x46c9, 0x4246, 0x3de3},
+       {0x21e9, 0x1e48, 0x1ac5, 0x1765, 0x29da, 0x2639, 0x22b8, 0x1f58},
+       {0x0864, 0x05c4, 0x0344, 0x00e6, 0x1058, 0x0dba, 0x0b3b, 0x08dd},
+       {0xf6ee, 0xf551, 0xf3d3, 0xf276, 0xfee7, 0xfd4b, 0xfbce, 0xfa71},
+       {0xed89, 0xeced, 0xec72, 0xec17, 0xf586, 0xf4eb, 0xf470, 0xf416},
+       {0xec34, 0xec9a, 0xed21, 0xedc8, 0xf435, 0xf49c, 0xf523, 0xf5cb},
+       {0xf2ee, 0xf457, 0xf5df, 0xf788, 0xfaf4, 0xfc5d, 0xfde6, 0xff8f}},
+      {{0x677d'76af, 0x5c93'1931, 0x6f67'3831, 0x647d'dbb7},
+       {0x3eda'09c6, 0x35f3'b250, 0x46c7'cf50, 0x3de2'78de},
+       {0x1e46'b4fd, 0x1764'6390, 0x2638'7e90, 0x1f57'2e25},
+       {0x05c3'7855, 0x00e5'2cef, 0x0db9'45ef, 0x08db'fb8d},
+       {0xf550'cd47, 0xf276'7fe1, 0xfd4a'8eda, 0xfa71'4277},
+       {0xeced'a0be, 0xec17'5961, 0xf4eb'6659, 0xf416'1ffe},
+       {0xec9a'8c56, 0xedc8'4b01, 0xf49c'55f9, 0xf5cb'15a6},
+       {0xf457'900e, 0xf789'54c1, 0xfc5d'5db9, 0xff90'236e}},
+      {{0x5c93'192f'ccd4'7781, 0x647d'dbb5'bb66'23af},
+       {0x35f3'b24f'43d0'aa38, 0x3de2'78dd'1a4e'4256},
+       {0x1764'638e'e2fd'152f, 0x1f57'2e24'a166'993d},
+       {0x00e5'2cee'aa59'b866, 0x08db'fb8c'50af'2865},
+       {0xf276'7fe1'80cf'f441, 0xfa71'4276'eef1'1fff},
+       {0xec17'5961'584c'a799, 0xf416'1ffe'ae59'bf47},
+       {0xedc8'4b01'57f9'9330, 0xf5cb'15a6'95f2'96cf},
+       {0xf789'54c1'7fd6'b708, 0xff90'236e'a5bb'a696}},
+      kVectorCalculationsSource);
+  TestVectorInstruction(ExecVsmulvx,
+                        ExecMaskedVsmulvx,
+                        {{0, 85, 255, 84, 253, 83, 252, 81, 251, 80, 249, 79, 248, 77, 247, 76},
+                         {245, 75, 244, 73, 243, 72, 241, 71, 240, 69, 239, 68, 237, 67, 236, 65},
+                         {235, 64, 233, 62, 232, 61, 230, 60, 229, 58, 228, 57, 226, 56, 225, 54},
+                         {224, 53, 222, 52, 221, 50, 220, 49, 218, 48, 217, 46, 216, 45, 214, 44},
+                         {213, 42, 212, 41, 210, 40, 209, 38, 208, 37, 206, 36, 205, 34, 204, 33},
+                         {202, 32, 201, 30, 200, 29, 198, 28, 197, 26, 196, 25, 194, 24, 193, 22},
+                         {192, 21, 190, 19, 189, 18, 187, 17, 186, 15, 185, 14, 183, 13, 182, 11},
+                         {181, 10, 179, 9, 178, 7, 177, 6, 175, 5, 174, 3, 173, 2, 171, 1}},
+                        {{0x54ab, 0x5355, 0x51fe, 0x50a7, 0x4f51, 0x4dfa, 0x4ca3, 0x4b4d},
+                         {0x49f6, 0x489f, 0x4749, 0x45f2, 0x449b, 0x4345, 0x41ee, 0x4097},
+                         {0x3f40, 0x3dea, 0x3c93, 0x3b3c, 0x39e6, 0x388f, 0x3738, 0x35e2},
+                         {0x348b, 0x3334, 0x31de, 0x3087, 0x2f30, 0x2dda, 0x2c83, 0x2b2c},
+                         {0x29d6, 0x287f, 0x2728, 0x25d2, 0x247b, 0x2324, 0x21ce, 0x2077},
+                         {0x1f20, 0x1dca, 0x1c73, 0x1b1c, 0x19c6, 0x186f, 0x1718, 0x15c2},
+                         {0x146b, 0x1314, 0x11bd, 0x1067, 0x0f10, 0x0db9, 0x0c63, 0x0b0c},
+                         {0x09b5, 0x085f, 0x0708, 0x05b1, 0x045b, 0x0304, 0x01ad, 0x0057}},
+                        {{0x5353'aa01, 0x50a6'51fe, 0x4df8'f9fb, 0x4b4b'a1f9},
+                         {0x489e'49f6, 0x45f0'f1f3, 0x4343'99f1, 0x4096'41ee},
+                         {0x3de8'e9eb, 0x3b3b'91e8, 0x388e'39e6, 0x35e0'e1e3},
+                         {0x3333'89e0, 0x3086'31de, 0x2dd8'd9db, 0x2b2b'81d8},
+                         {0x287e'29d6, 0x25d0'd1d3, 0x2323'79d0, 0x2076'21ce},
+                         {0x1dc8'c9cb, 0x1b1b'71c8, 0x186e'19c6, 0x15c0'c1c3},
+                         {0x1313'69c0, 0x1066'11bd, 0x0db8'b9bb, 0x0b0b'61b8},
+                         {0x085e'09b5, 0x05b0'b1b3, 0x0303'59b0, 0x0056'01ad}},
+                        {{0x50a6'51fc'fdfe'54ab, 0x4b4b'a1f7'a34e'4f51},
+                         {0x45f0'f1f2'489e'49f6, 0x4096'41ec'edee'449b},
+                         {0x3b3b'91e7'933e'3f40, 0x35e0'e1e2'388e'39e6},
+                         {0x3086'31dc'ddde'348b, 0x2b2b'81d7'832e'2f30},
+                         {0x25d0'd1d2'287e'29d6, 0x2076'21cc'cdce'247b},
+                         {0x1b1b'71c7'731e'1f20, 0x15c0'c1c2'186e'19c6},
+                         {0x1066'11bc'bdbe'146b, 0x0b0b'61b7'630e'0f10},
+                         {0x05b0'b1b2'085e'09b5, 0x0056'01ac'adae'045b}},
+                        kVectorCalculationsSource);
+
+  TestVectorInstruction(ExecVssrlvv,
+                        ExecMaskedVssrlvv,
+                        {{0, 32, 0, 2, 2, 33, 0, 2, 4, 34, 1, 2, 12, 35, 1, 2},
+                         {16, 36, 1, 2, 10, 37, 1, 2, 12, 38, 2, 2, 28, 39, 2, 2},
+                         {32, 40, 2, 3, 18, 41, 2, 3, 20, 42, 3, 3, 44, 43, 3, 3},
+                         {48, 44, 3, 3, 26, 45, 3, 3, 28, 46, 4, 3, 60, 47, 4, 3},
+                         {64, 48, 4, 3, 34, 49, 4, 3, 36, 50, 5, 3, 76, 51, 5, 3},
+                         {80, 52, 5, 3, 42, 53, 5, 3, 44, 54, 6, 3, 92, 55, 6, 3},
+                         {96, 56, 6, 4, 50, 57, 6, 4, 52, 58, 7, 4, 108, 59, 7, 4},
+                         {112, 60, 7, 4, 58, 61, 7, 4, 60, 62, 8, 4, 124, 63, 8, 4}},
+                        {{0x8100, 0x0830, 0x0043, 0x0008, 0x4484, 0x08b1, 0x008d, 0x0009},
+                         {0x9110, 0x0931, 0x004b, 0x0009, 0x4c8c, 0x09b2, 0x009d, 0x000a},
+                         {0xa120, 0x0a32, 0x0053, 0x000a, 0x5494, 0x0ab3, 0x00ad, 0x000b},
+                         {0xb130, 0x0b33, 0x005b, 0x000b, 0x5c9c, 0x0bb4, 0x00bd, 0x000c},
+                         {0xc140, 0x0c34, 0x0063, 0x000c, 0x64a4, 0x0cb5, 0x00cd, 0x000d},
+                         {0xd150, 0x0d35, 0x006b, 0x000d, 0x6cac, 0x0db6, 0x00dd, 0x000e},
+                         {0xe160, 0x0e36, 0x0073, 0x000e, 0x74b4, 0x0eb7, 0x00ed, 0x000f},
+                         {0xf170, 0x0f37, 0x007b, 0x000f, 0x7cbc, 0x0fb8, 0x00fd, 0x0010}},
+                        {{0x8302'8100, 0x0043'8343, 0x0000'4585, 0x0000'008f},
+                         {0x9312'9110, 0x004b'8b4b, 0x0000'4d8d, 0x0000'009f},
+                         {0xa322'a120, 0x0053'9353, 0x0000'5595, 0x0000'00af},
+                         {0xb332'b130, 0x005b'9b5b, 0x0000'5d9d, 0x0000'00bf},
+                         {0xc342'c140, 0x0063'a363, 0x0000'65a5, 0x0000'00cf},
+                         {0xd352'd150, 0x006b'ab6b, 0x0000'6dad, 0x0000'00df},
+                         {0xe362'e160, 0x0073'b373, 0x0000'75b5, 0x0000'00ef},
+                         {0xf372'f170, 0x007b'bb7b, 0x0000'7dbd, 0x0000'00ff}},
+                        {{0x8706'8504'8302'8100, 0x0000'4787'4686'4585},
+                         {0x0000'0000'9716'9515, 0x0000'0000'0000'4f8f},
+                         {0xa726'a524'a322'a120, 0x0000'5797'5696'5595},
+                         {0x0000'0000'b736'b535, 0x0000'0000'0000'5f9f},
+                         {0xc746'c544'c342'c140, 0x0000'67a7'66a6'65a5},
+                         {0x0000'0000'd756'd555, 0x0000'0000'0000'6faf},
+                         {0xe766'e564'e362'e160, 0x0000'77b7'76b6'75b5},
+                         {0x0000'0000'f776'f575, 0x0000'0000'0000'7fbf}},
+                        kVectorCalculationsSource);
+
+  TestVectorInstruction(ExecVssrlvx,
+                        ExecMaskedVssrlvx,
+                        {{0, 32, 1, 33, 1, 33, 2, 34, 2, 34, 3, 35, 3, 35, 4, 36},
+                         {4, 36, 5, 37, 5, 37, 6, 38, 6, 38, 7, 39, 7, 39, 8, 40},
+                         {8, 40, 9, 41, 9, 41, 10, 42, 10, 42, 11, 43, 11, 43, 12, 44},
+                         {12, 44, 13, 45, 13, 45, 14, 46, 14, 46, 15, 47, 15, 47, 16, 48},
+                         {16, 48, 17, 49, 17, 49, 18, 50, 18, 50, 19, 51, 19, 51, 20, 52},
+                         {20, 52, 21, 53, 21, 53, 22, 54, 22, 54, 23, 55, 23, 55, 24, 56},
+                         {24, 56, 25, 57, 25, 57, 26, 58, 26, 58, 27, 59, 27, 59, 28, 60},
+                         {28, 60, 29, 61, 29, 61, 30, 62, 30, 62, 31, 63, 31, 63, 32, 64}},
+                        {{0x0020, 0x0021, 0x0021, 0x0022, 0x0022, 0x0023, 0x0023, 0x0024},
+                         {0x0024, 0x0025, 0x0025, 0x0026, 0x0026, 0x0027, 0x0027, 0x0028},
+                         {0x0028, 0x0029, 0x0029, 0x002a, 0x002a, 0x002b, 0x002b, 0x002c},
+                         {0x002c, 0x002d, 0x002d, 0x002e, 0x002e, 0x002f, 0x002f, 0x0030},
+                         {0x0030, 0x0031, 0x0031, 0x0032, 0x0032, 0x0033, 0x0033, 0x0034},
+                         {0x0034, 0x0035, 0x0035, 0x0036, 0x0036, 0x0037, 0x0037, 0x0038},
+                         {0x0038, 0x0039, 0x0039, 0x003a, 0x003a, 0x003b, 0x003b, 0x003c},
+                         {0x003c, 0x003d, 0x003d, 0x003e, 0x003e, 0x003f, 0x003f, 0x0040}},
+                        {{0x0020'c0a0, 0x0021'c1a1, 0x0022'c2a2, 0x0023'c3a3},
+                         {0x0024'c4a4, 0x0025'c5a5, 0x0026'c6a6, 0x0027'c7a7},
+                         {0x0028'c8a8, 0x0029'c9a9, 0x002a'caaa, 0x002b'cbab},
+                         {0x002c'ccac, 0x002d'cdad, 0x002e'ceae, 0x002f'cfaf},
+                         {0x0030'd0b0, 0x0031'd1b1, 0x0032'd2b2, 0x0033'd3b3},
+                         {0x0034'd4b4, 0x0035'd5b5, 0x0036'd6b6, 0x0037'd7b7},
+                         {0x0038'd8b8, 0x0039'd9b9, 0x003a'daba, 0x003b'dbbb},
+                         {0x003c'dcbc, 0x003d'ddbd, 0x003e'debe, 0x003f'dfbf}},
+                        {{0x0000'0000'0021'c1a1, 0x0000'0000'0023'c3a3},
+                         {0x0000'0000'0025'c5a5, 0x0000'0000'0027'c7a7},
+                         {0x0000'0000'0029'c9a9, 0x0000'0000'002b'cbab},
+                         {0x0000'0000'002d'cdad, 0x0000'0000'002f'cfaf},
+                         {0x0000'0000'0031'd1b1, 0x0000'0000'0033'd3b3},
+                         {0x0000'0000'0035'd5b5, 0x0000'0000'0037'd7b7},
+                         {0x0000'0000'0039'd9b9, 0x0000'0000'003b'dbbb},
+                         {0x0000'0000'003d'ddbd, 0x0000'0000'003f'dfbf}},
+                        kVectorCalculationsSource);
+
+  TestVectorInstruction(ExecVssrlvi,
+                        ExecMaskedVssrlvi,
+                        {{0, 32, 1, 33, 1, 33, 2, 34, 2, 34, 3, 35, 3, 35, 4, 36},
+                         {4, 36, 5, 37, 5, 37, 6, 38, 6, 38, 7, 39, 7, 39, 8, 40},
+                         {8, 40, 9, 41, 9, 41, 10, 42, 10, 42, 11, 43, 11, 43, 12, 44},
+                         {12, 44, 13, 45, 13, 45, 14, 46, 14, 46, 15, 47, 15, 47, 16, 48},
+                         {16, 48, 17, 49, 17, 49, 18, 50, 18, 50, 19, 51, 19, 51, 20, 52},
+                         {20, 52, 21, 53, 21, 53, 22, 54, 22, 54, 23, 55, 23, 55, 24, 56},
+                         {24, 56, 25, 57, 25, 57, 26, 58, 26, 58, 27, 59, 27, 59, 28, 60},
+                         {28, 60, 29, 61, 29, 61, 30, 62, 30, 62, 31, 63, 31, 63, 32, 64}},
+                        {{0x0020, 0x0021, 0x0021, 0x0022, 0x0022, 0x0023, 0x0023, 0x0024},
+                         {0x0024, 0x0025, 0x0025, 0x0026, 0x0026, 0x0027, 0x0027, 0x0028},
+                         {0x0028, 0x0029, 0x0029, 0x002a, 0x002a, 0x002b, 0x002b, 0x002c},
+                         {0x002c, 0x002d, 0x002d, 0x002e, 0x002e, 0x002f, 0x002f, 0x0030},
+                         {0x0030, 0x0031, 0x0031, 0x0032, 0x0032, 0x0033, 0x0033, 0x0034},
+                         {0x0034, 0x0035, 0x0035, 0x0036, 0x0036, 0x0037, 0x0037, 0x0038},
+                         {0x0038, 0x0039, 0x0039, 0x003a, 0x003a, 0x003b, 0x003b, 0x003c},
+                         {0x003c, 0x003d, 0x003d, 0x003e, 0x003e, 0x003f, 0x003f, 0x0040}},
+                        {{0x0020'c0a0, 0x0021'c1a1, 0x0022'c2a2, 0x0023'c3a3},
+                         {0x0024'c4a4, 0x0025'c5a5, 0x0026'c6a6, 0x0027'c7a7},
+                         {0x0028'c8a8, 0x0029'c9a9, 0x002a'caaa, 0x002b'cbab},
+                         {0x002c'ccac, 0x002d'cdad, 0x002e'ceae, 0x002f'cfaf},
+                         {0x0030'd0b0, 0x0031'd1b1, 0x0032'd2b2, 0x0033'd3b3},
+                         {0x0034'd4b4, 0x0035'd5b5, 0x0036'd6b6, 0x0037'd7b7},
+                         {0x0038'd8b8, 0x0039'd9b9, 0x003a'daba, 0x003b'dbbb},
+                         {0x003c'dcbc, 0x003d'ddbd, 0x003e'debe, 0x003f'dfbf}},
+                        {{0x0021'c1a1'4120'c0a0, 0x0023'c3a3'4322'c2a2},
+                         {0x0025'c5a5'4524'c4a4, 0x0027'c7a7'4726'c6a6},
+                         {0x0029'c9a9'4928'c8a8, 0x002b'cbab'4b2a'caaa},
+                         {0x002d'cdad'4d2c'ccac, 0x002f'cfaf'4f2e'ceae},
+                         {0x0031'd1b1'5130'd0b0, 0x0033'd3b3'5332'd2b2},
+                         {0x0035'd5b5'5534'd4b4, 0x0037'd7b7'5736'd6b6},
+                         {0x0039'd9b9'5938'd8b8, 0x003b'dbbb'5b3a'daba},
+                         {0x003d'ddbd'5d3c'dcbc, 0x003f'dfbf'5f3e'debe}},
+                        kVectorCalculationsSource);
+  TestVectorInstruction(ExecVssravv,
+                        ExecMaskedVssravv,
+                        {{0, 224, 0, 254, 2, 225, 0, 254, 4, 226, 1, 254, 12, 227, 1, 254},
+                         {16, 228, 1, 254, 10, 229, 1, 254, 12, 230, 2, 254, 28, 231, 2, 254},
+                         {32, 232, 2, 255, 18, 233, 2, 255, 20, 234, 3, 255, 44, 235, 3, 255},
+                         {48, 236, 3, 255, 26, 237, 3, 255, 28, 238, 4, 255, 60, 239, 4, 255},
+                         {64, 240, 4, 255, 34, 241, 4, 255, 36, 242, 5, 255, 76, 243, 5, 255},
+                         {80, 244, 5, 255, 42, 245, 5, 255, 44, 246, 6, 255, 92, 247, 6, 255},
+                         {96, 248, 6, 0, 50, 249, 6, 0, 52, 250, 7, 0, 108, 251, 7, 0},
+                         {112, 252, 7, 0, 58, 253, 7, 0, 60, 254, 8, 0, 124, 255, 8, 0}},
+                        {{0x8100, 0xf830, 0xffc3, 0xfff8, 0xc484, 0xf8b1, 0xff8d, 0xfff9},
+                         {0x9110, 0xf931, 0xffcb, 0xfff9, 0xcc8c, 0xf9b2, 0xff9d, 0xfffa},
+                         {0xa120, 0xfa32, 0xffd3, 0xfffa, 0xd494, 0xfab3, 0xffad, 0xfffb},
+                         {0xb130, 0xfb33, 0xffdb, 0xfffb, 0xdc9c, 0xfbb4, 0xffbd, 0xfffc},
+                         {0xc140, 0xfc34, 0xffe3, 0xfffc, 0xe4a4, 0xfcb5, 0xffcd, 0xfffd},
+                         {0xd150, 0xfd35, 0xffeb, 0xfffd, 0xecac, 0xfdb6, 0xffdd, 0xfffe},
+                         {0xe160, 0xfe36, 0xfff3, 0xfffe, 0xf4b4, 0xfeb7, 0xffed, 0xffff},
+                         {0xf170, 0xff37, 0xfffb, 0xffff, 0xfcbc, 0xffb8, 0xfffd, 0x0000}},
+                        {{0x8302'8100, 0xffc3'8343, 0xffff'c585, 0xffff'ff8f},
+                         {0x9312'9110, 0xffcb'8b4b, 0xffff'cd8d, 0xffff'ff9f},
+                         {0xa322'a120, 0xffd3'9353, 0xffff'd595, 0xffff'ffaf},
+                         {0xb332'b130, 0xffdb'9b5b, 0xffff'dd9d, 0xffff'ffbf},
+                         {0xc342'c140, 0xffe3'a363, 0xffff'e5a5, 0xffff'ffcf},
+                         {0xd352'd150, 0xffeb'ab6b, 0xffff'edad, 0xffff'ffdf},
+                         {0xe362'e160, 0xfff3'b373, 0xffff'f5b5, 0xffff'ffef},
+                         {0xf372'f170, 0xfffb'bb7b, 0xffff'fdbd, 0xffff'ffff}},
+                        {{0x8706'8504'8302'8100, 0xffff'c787'4686'4585},
+                         {0xffff'ffff'9716'9515, 0xffff'ffff'ffff'cf8f},
+                         {0xa726'a524'a322'a120, 0xffff'd797'5696'5595},
+                         {0xffff'ffff'b736'b535, 0xffff'ffff'ffff'df9f},
+                         {0xc746'c544'c342'c140, 0xffff'e7a7'66a6'65a5},
+                         {0xffff'ffff'd756'd555, 0xffff'ffff'ffff'efaf},
+                         {0xe766'e564'e362'e160, 0xffff'f7b7'76b6'75b5},
+                         {0xffff'ffff'f776'f575, 0xffff'ffff'ffff'ffbf}},
+                        kVectorCalculationsSource);
+
+  TestVectorInstruction(ExecVssravx,
+                        ExecMaskedVssravx,
+                        {{0, 224, 1, 225, 1, 225, 2, 226, 2, 226, 3, 227, 3, 227, 4, 228},
+                         {4, 228, 5, 229, 5, 229, 6, 230, 6, 230, 7, 231, 7, 231, 8, 232},
+                         {8, 232, 9, 233, 9, 233, 10, 234, 10, 234, 11, 235, 11, 235, 12, 236},
+                         {12, 236, 13, 237, 13, 237, 14, 238, 14, 238, 15, 239, 15, 239, 16, 240},
+                         {16, 240, 17, 241, 17, 241, 18, 242, 18, 242, 19, 243, 19, 243, 20, 244},
+                         {20, 244, 21, 245, 21, 245, 22, 246, 22, 246, 23, 247, 23, 247, 24, 248},
+                         {24, 248, 25, 249, 25, 249, 26, 250, 26, 250, 27, 251, 27, 251, 28, 252},
+                         {28, 252, 29, 253, 29, 253, 30, 254, 30, 254, 31, 255, 31, 255, 32, 0}},
+                        {{0xffe0, 0xffe1, 0xffe1, 0xffe2, 0xffe2, 0xffe3, 0xffe3, 0xffe4},
+                         {0xffe4, 0xffe5, 0xffe5, 0xffe6, 0xffe6, 0xffe7, 0xffe7, 0xffe8},
+                         {0xffe8, 0xffe9, 0xffe9, 0xffea, 0xffea, 0xffeb, 0xffeb, 0xffec},
+                         {0xffec, 0xffed, 0xffed, 0xffee, 0xffee, 0xffef, 0xffef, 0xfff0},
+                         {0xfff0, 0xfff1, 0xfff1, 0xfff2, 0xfff2, 0xfff3, 0xfff3, 0xfff4},
+                         {0xfff4, 0xfff5, 0xfff5, 0xfff6, 0xfff6, 0xfff7, 0xfff7, 0xfff8},
+                         {0xfff8, 0xfff9, 0xfff9, 0xfffa, 0xfffa, 0xfffb, 0xfffb, 0xfffc},
+                         {0xfffc, 0xfffd, 0xfffd, 0xfffe, 0xfffe, 0xffff, 0xffff, 0x0000}},
+                        {{0xffe0'c0a0, 0xffe1'c1a1, 0xffe2'c2a2, 0xffe3'c3a3},
+                         {0xffe4'c4a4, 0xffe5'c5a5, 0xffe6'c6a6, 0xffe7'c7a7},
+                         {0xffe8'c8a8, 0xffe9'c9a9, 0xffea'caaa, 0xffeb'cbab},
+                         {0xffec'ccac, 0xffed'cdad, 0xffee'ceae, 0xffef'cfaf},
+                         {0xfff0'd0b0, 0xfff1'd1b1, 0xfff2'd2b2, 0xfff3'd3b3},
+                         {0xfff4'd4b4, 0xfff5'd5b5, 0xfff6'd6b6, 0xfff7'd7b7},
+                         {0xfff8'd8b8, 0xfff9'd9b9, 0xfffa'daba, 0xfffb'dbbb},
+                         {0xfffc'dcbc, 0xfffd'ddbd, 0xfffe'debe, 0xffff'dfbf}},
+                        {{0xffff'ffff'ffe1'c1a1, 0xffff'ffff'ffe3'c3a3},
+                         {0xffff'ffff'ffe5'c5a5, 0xffff'ffff'ffe7'c7a7},
+                         {0xffff'ffff'ffe9'c9a9, 0xffff'ffff'ffeb'cbab},
+                         {0xffff'ffff'ffed'cdad, 0xffff'ffff'ffef'cfaf},
+                         {0xffff'ffff'fff1'd1b1, 0xffff'ffff'fff3'd3b3},
+                         {0xffff'ffff'fff5'd5b5, 0xffff'ffff'fff7'd7b7},
+                         {0xffff'ffff'fff9'd9b9, 0xffff'ffff'fffb'dbbb},
+                         {0xffff'ffff'fffd'ddbd, 0xffff'ffff'ffff'dfbf}},
+                        kVectorCalculationsSource);
+
+  TestVectorInstruction(ExecVssravi,
+                        ExecMaskedVssravi,
+                        {{0, 224, 1, 225, 1, 225, 2, 226, 2, 226, 3, 227, 3, 227, 4, 228},
+                         {4, 228, 5, 229, 5, 229, 6, 230, 6, 230, 7, 231, 7, 231, 8, 232},
+                         {8, 232, 9, 233, 9, 233, 10, 234, 10, 234, 11, 235, 11, 235, 12, 236},
+                         {12, 236, 13, 237, 13, 237, 14, 238, 14, 238, 15, 239, 15, 239, 16, 240},
+                         {16, 240, 17, 241, 17, 241, 18, 242, 18, 242, 19, 243, 19, 243, 20, 244},
+                         {20, 244, 21, 245, 21, 245, 22, 246, 22, 246, 23, 247, 23, 247, 24, 248},
+                         {24, 248, 25, 249, 25, 249, 26, 250, 26, 250, 27, 251, 27, 251, 28, 252},
+                         {28, 252, 29, 253, 29, 253, 30, 254, 30, 254, 31, 255, 31, 255, 32, 0}},
+                        {{0xffe0, 0xffe1, 0xffe1, 0xffe2, 0xffe2, 0xffe3, 0xffe3, 0xffe4},
+                         {0xffe4, 0xffe5, 0xffe5, 0xffe6, 0xffe6, 0xffe7, 0xffe7, 0xffe8},
+                         {0xffe8, 0xffe9, 0xffe9, 0xffea, 0xffea, 0xffeb, 0xffeb, 0xffec},
+                         {0xffec, 0xffed, 0xffed, 0xffee, 0xffee, 0xffef, 0xffef, 0xfff0},
+                         {0xfff0, 0xfff1, 0xfff1, 0xfff2, 0xfff2, 0xfff3, 0xfff3, 0xfff4},
+                         {0xfff4, 0xfff5, 0xfff5, 0xfff6, 0xfff6, 0xfff7, 0xfff7, 0xfff8},
+                         {0xfff8, 0xfff9, 0xfff9, 0xfffa, 0xfffa, 0xfffb, 0xfffb, 0xfffc},
+                         {0xfffc, 0xfffd, 0xfffd, 0xfffe, 0xfffe, 0xffff, 0xffff, 0x0000}},
+                        {{0xffe0'c0a0, 0xffe1'c1a1, 0xffe2'c2a2, 0xffe3'c3a3},
+                         {0xffe4'c4a4, 0xffe5'c5a5, 0xffe6'c6a6, 0xffe7'c7a7},
+                         {0xffe8'c8a8, 0xffe9'c9a9, 0xffea'caaa, 0xffeb'cbab},
+                         {0xffec'ccac, 0xffed'cdad, 0xffee'ceae, 0xffef'cfaf},
+                         {0xfff0'd0b0, 0xfff1'd1b1, 0xfff2'd2b2, 0xfff3'd3b3},
+                         {0xfff4'd4b4, 0xfff5'd5b5, 0xfff6'd6b6, 0xfff7'd7b7},
+                         {0xfff8'd8b8, 0xfff9'd9b9, 0xfffa'daba, 0xfffb'dbbb},
+                         {0xfffc'dcbc, 0xfffd'ddbd, 0xfffe'debe, 0xffff'dfbf}},
+                        {{0xffe1'c1a1'4120'c0a0, 0xffe3'c3a3'4322'c2a2},
+                         {0xffe5'c5a5'4524'c4a4, 0xffe7'c7a7'4726'c6a6},
+                         {0xffe9'c9a9'4928'c8a8, 0xffeb'cbab'4b2a'caaa},
+                         {0xffed'cdad'4d2c'ccac, 0xffef'cfaf'4f2e'ceae},
+                         {0xfff1'd1b1'5130'd0b0, 0xfff3'd3b3'5332'd2b2},
+                         {0xfff5'd5b5'5534'd4b4, 0xfff7'd7b7'5736'd6b6},
+                         {0xfff9'd9b9'5938'd8b8, 0xfffb'dbbb'5b3a'daba},
+                         {0xfffd'ddbd'5d3c'dcbc, 0xffff'dfbf'5f3e'debe}},
+                        kVectorCalculationsSource);
+  asm("csrw vxrm, %0\n\t" ::"r"(vxrm));
+}