[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));
+}