[interpreter] Move TestVmadd to inline asm

Test: m inline_asm_riscv64.native_bridge, program_runner
inline_asm_riscv64

Change-Id: Ic8fd979ff4f44b830e7f456f93bfbb5b22a52636
diff --git a/interpreter/riscv64/interpreter_test.cc b/interpreter/riscv64/interpreter_test.cc
index 8fa7b29..80ba686 100644
--- a/interpreter/riscv64/interpreter_test.cc
+++ b/interpreter/riscv64/interpreter_test.cc
@@ -6932,79 +6932,6 @@
       kVectorCalculationsSource);
 }
 
-TEST_F(Riscv64InterpreterTest, TestVmadd) {
-  TestVectorInstruction(
-      0xa5882457,  // vmadd.vv v8, v16, v24, v0.t
-      {{0, 103, 174, 21, 93, 195, 10, 113, 185, 255, 102, 173, 20, 91, 194, 9},
-       {112, 215, 30, 133, 205, 51, 122, 225, 41, 111, 214, 29, 132, 203, 50, 121},
-       {224, 71, 142, 245, 61, 163, 234, 81, 153, 223, 70, 141, 244, 59, 162, 233},
-       {80, 183, 254, 101, 173, 19, 90, 193, 9, 79, 182, 253, 100, 171, 18, 89},
-       {192, 39, 110, 213, 29, 131, 202, 49, 121, 191, 38, 109, 212, 27, 130, 201},
-       {48, 151, 222, 69, 141, 243, 58, 161, 233, 47, 150, 221, 68, 139, 242, 57},
-       {160, 7, 78, 181, 253, 99, 170, 17, 89, 159, 6, 77, 180, 251, 98, 169},
-       {16, 119, 190, 37, 109, 211, 26, 129, 201, 15, 118, 189, 36, 107, 210, 25}},
-      {{0x6700, 0xbfae, 0x185d, 0x710a, 0xa9b9, 0x0266, 0x5b14, 0xb3c2},
-       {0x2c70, 0x851e, 0xddcd, 0x367a, 0x6f29, 0xc7d6, 0x2084, 0x7932},
-       {0xf1e0, 0x4a8e, 0xa33d, 0xfbea, 0x3499, 0x8d46, 0xe5f4, 0x3ea2},
-       {0xb750, 0x0ffe, 0x68ad, 0xc15a, 0xfa09, 0x52b6, 0xab64, 0x0412},
-       {0x7cc0, 0xd56e, 0x2e1d, 0x86ca, 0xbf79, 0x1826, 0x70d4, 0xc982},
-       {0x4230, 0x9ade, 0xf38d, 0x4c3a, 0x84e9, 0xdd96, 0x3644, 0x8ef2},
-       {0x07a0, 0x604e, 0xb8fd, 0x11aa, 0x4a59, 0xa306, 0xfbb4, 0x5462},
-       {0xcd10, 0x25be, 0x7e6d, 0xd71a, 0x0fc9, 0x6876, 0xc124, 0x19d2}},
-      {{0xbfae'6700, 0x1bb5'185d, 0x57bb'a9b9, 0xb3c2'5b14},
-       {0x2fc9'2c70, 0x8bcf'ddcd, 0xc7d6'6f29, 0x23dd'2084},
-       {0x9fe3'f1e0, 0xfbea'a33d, 0x37f1'3499, 0x93f7'e5f4},
-       {0x0ffe'b750, 0x6c05'68ad, 0xa80b'fa09, 0x0412'ab64},
-       {0x8018'7cc0, 0xdc1f'2e1d, 0x1825'bf79, 0x742c'70d4},
-       {0xf033'4230, 0x4c39'f38d, 0x8840'84e9, 0xe447'3644},
-       {0x604e'07a0, 0xbc54'b8fd, 0xf85b'4a59, 0x5461'fbb4},
-       {0xd068'cd10, 0x2c6f'7e6d, 0x6876'0fc9, 0xc47c'c124}},
-      {{0x710a'6db2'bfae'6700, 0xb3c2'5b14'57bb'a9b9},
-       {0x367a'8878'2fc9'2c70, 0x7932'75d9'c7d6'6f29},
-       {0xfbea'a33d'9fe3'f1e0, 0x3ea2'909f'37f1'3499},
-       {0xc15a'be03'0ffe'b750, 0x0412'ab64'a80b'fa09},
-       {0x86c9'd8c7'8018'7cc0, 0xc981'c629'1825'bf79},
-       {0x4c39'f38c'f033'4230, 0x8ef1'e0ee'8840'84e9},
-       {0x11aa'0e52'604e'07a0, 0x5461'fbb3'f85b'4a59},
-       {0xd71a'2917'd068'cd10, 0x19d2'1679'6876'0fc9}},
-      kVectorCalculationsSource);
-  TestVectorInstruction(
-      0xa500e457,  // vmadd.vx v8, x1, v16, v0.t
-      {{114, 243, 116, 245, 118, 247, 120, 249, 122, 251, 124, 253, 126, 255, 128, 1},
-       {130, 3, 132, 5, 134, 7, 136, 9, 138, 11, 140, 13, 142, 15, 144, 17},
-       {146, 19, 148, 21, 150, 23, 152, 25, 154, 27, 156, 29, 158, 31, 160, 33},
-       {162, 35, 164, 37, 166, 39, 168, 41, 170, 43, 172, 45, 174, 47, 176, 49},
-       {178, 51, 180, 53, 182, 55, 184, 57, 186, 59, 188, 61, 190, 63, 192, 65},
-       {194, 67, 196, 69, 198, 71, 200, 73, 202, 75, 204, 77, 206, 79, 208, 81},
-       {210, 83, 212, 85, 214, 87, 216, 89, 218, 91, 220, 93, 222, 95, 224, 97},
-       {226, 99, 228, 101, 230, 103, 232, 105, 234, 107, 236, 109, 238, 111, 240, 113}},
-      {{0x9d72, 0x9f74, 0xa176, 0xa378, 0xa57a, 0xa77c, 0xa97e, 0xab80},
-       {0xad82, 0xaf84, 0xb186, 0xb388, 0xb58a, 0xb78c, 0xb98e, 0xbb90},
-       {0xbd92, 0xbf94, 0xc196, 0xc398, 0xc59a, 0xc79c, 0xc99e, 0xcba0},
-       {0xcda2, 0xcfa4, 0xd1a6, 0xd3a8, 0xd5aa, 0xd7ac, 0xd9ae, 0xdbb0},
-       {0xddb2, 0xdfb4, 0xe1b6, 0xe3b8, 0xe5ba, 0xe7bc, 0xe9be, 0xebc0},
-       {0xedc2, 0xefc4, 0xf1c6, 0xf3c8, 0xf5ca, 0xf7cc, 0xf9ce, 0xfbd0},
-       {0xfdd2, 0xffd4, 0x01d6, 0x03d8, 0x05da, 0x07dc, 0x09de, 0x0be0},
-       {0x0de2, 0x0fe4, 0x11e6, 0x13e8, 0x15ea, 0x17ec, 0x19ee, 0x1bf0}},
-      {{0xf4c9'9d72, 0xf8cd'a176, 0xfcd1'a57a, 0x00d5'a97e},
-       {0x04d9'ad82, 0x08dd'b186, 0x0ce1'b58a, 0x10e5'b98e},
-       {0x14e9'bd92, 0x18ed'c196, 0x1cf1'c59a, 0x20f5'c99e},
-       {0x24f9'cda2, 0x28fd'd1a6, 0x2d01'd5aa, 0x3105'd9ae},
-       {0x3509'ddb2, 0x390d'e1b6, 0x3d11'e5ba, 0x4115'e9be},
-       {0x4519'edc2, 0x491d'f1c6, 0x4d21'f5ca, 0x5125'f9ce},
-       {0x5529'fdd2, 0x592e'01d6, 0x5d32'05da, 0x6136'09de},
-       {0x653a'0de2, 0x693e'11e6, 0x6d42'15ea, 0x7146'19ee}},
-      {{0xa378'4c20'f4c9'9d72, 0xab80'5428'fcd1'a57a},
-       {0xb388'5c31'04d9'ad82, 0xbb90'6439'0ce1'b58a},
-       {0xc398'6c41'14e9'bd92, 0xcba0'7449'1cf1'c59a},
-       {0xd3a8'7c51'24f9'cda2, 0xdbb0'8459'2d01'd5aa},
-       {0xe3b8'8c61'3509'ddb2, 0xebc0'9469'3d11'e5ba},
-       {0xf3c8'9c71'4519'edc2, 0xfbd0'a479'4d21'f5ca},
-       {0x03d8'ac81'5529'fdd2, 0x0be0'b489'5d32'05da},
-       {0x13e8'bc91'653a'0de2, 0x1bf0'c499'6d42'15ea}},
-      kVectorCalculationsSource);
-}
-
 TEST_F(Riscv64InterpreterTest, TestVnmsub) {
   TestVectorInstruction(
       0xad882457,  // vnmsub.vv v8, v16, v24, v0.t
diff --git a/tests/inline_asm_tests/main_riscv64.cc b/tests/inline_asm_tests/main_riscv64.cc
index 7cc7a2f..939aba0 100644
--- a/tests/inline_asm_tests/main_riscv64.cc
+++ b/tests/inline_asm_tests/main_riscv64.cc
@@ -7233,3 +7233,98 @@
                                  {0x16ec'6cec'd883'8485, 0x1595'c0eb'8080'd72d}},
                                 kVectorCalculationsSource);
 }
+
+[[gnu::naked]] void ExecVmaddvv() {
+  asm("vmadd.vv  v8, v16, v24\n\t"
+      "ret\n\t");
+}
+
+[[gnu::naked]] void ExecMaskedVmaddvv() {
+  asm("vmadd.vv  v8, v16, v24, v0.t\n\t"
+      "ret\n\t");
+}
+
+[[gnu::naked]] void ExecVmaddvx() {
+  asm("vmadd.vx  v8, t0, v16\n\t"
+      "ret\n\t");
+}
+
+[[gnu::naked]] void ExecMaskedVmaddvx() {
+  asm("vmadd.vx  v8, t0, v16, v0.t\n\t"
+      "ret\n\t");
+}
+
+TEST(InlineAsmTestRiscv64, TestVmadd) {
+  TestVectorInstruction(
+      ExecVmaddvv,
+      ExecMaskedVmaddvv,
+      {{0, 103, 174, 21, 93, 195, 10, 113, 185, 255, 102, 173, 20, 91, 194, 9},
+       {112, 215, 30, 133, 205, 51, 122, 225, 41, 111, 214, 29, 132, 203, 50, 121},
+       {224, 71, 142, 245, 61, 163, 234, 81, 153, 223, 70, 141, 244, 59, 162, 233},
+       {80, 183, 254, 101, 173, 19, 90, 193, 9, 79, 182, 253, 100, 171, 18, 89},
+       {192, 39, 110, 213, 29, 131, 202, 49, 121, 191, 38, 109, 212, 27, 130, 201},
+       {48, 151, 222, 69, 141, 243, 58, 161, 233, 47, 150, 221, 68, 139, 242, 57},
+       {160, 7, 78, 181, 253, 99, 170, 17, 89, 159, 6, 77, 180, 251, 98, 169},
+       {16, 119, 190, 37, 109, 211, 26, 129, 201, 15, 118, 189, 36, 107, 210, 25}},
+      {{0x6700, 0xbfae, 0x185d, 0x710a, 0xa9b9, 0x0266, 0x5b14, 0xb3c2},
+       {0x2c70, 0x851e, 0xddcd, 0x367a, 0x6f29, 0xc7d6, 0x2084, 0x7932},
+       {0xf1e0, 0x4a8e, 0xa33d, 0xfbea, 0x3499, 0x8d46, 0xe5f4, 0x3ea2},
+       {0xb750, 0x0ffe, 0x68ad, 0xc15a, 0xfa09, 0x52b6, 0xab64, 0x0412},
+       {0x7cc0, 0xd56e, 0x2e1d, 0x86ca, 0xbf79, 0x1826, 0x70d4, 0xc982},
+       {0x4230, 0x9ade, 0xf38d, 0x4c3a, 0x84e9, 0xdd96, 0x3644, 0x8ef2},
+       {0x07a0, 0x604e, 0xb8fd, 0x11aa, 0x4a59, 0xa306, 0xfbb4, 0x5462},
+       {0xcd10, 0x25be, 0x7e6d, 0xd71a, 0x0fc9, 0x6876, 0xc124, 0x19d2}},
+      {{0xbfae'6700, 0x1bb5'185d, 0x57bb'a9b9, 0xb3c2'5b14},
+       {0x2fc9'2c70, 0x8bcf'ddcd, 0xc7d6'6f29, 0x23dd'2084},
+       {0x9fe3'f1e0, 0xfbea'a33d, 0x37f1'3499, 0x93f7'e5f4},
+       {0x0ffe'b750, 0x6c05'68ad, 0xa80b'fa09, 0x0412'ab64},
+       {0x8018'7cc0, 0xdc1f'2e1d, 0x1825'bf79, 0x742c'70d4},
+       {0xf033'4230, 0x4c39'f38d, 0x8840'84e9, 0xe447'3644},
+       {0x604e'07a0, 0xbc54'b8fd, 0xf85b'4a59, 0x5461'fbb4},
+       {0xd068'cd10, 0x2c6f'7e6d, 0x6876'0fc9, 0xc47c'c124}},
+      {{0x710a'6db2'bfae'6700, 0xb3c2'5b14'57bb'a9b9},
+       {0x367a'8878'2fc9'2c70, 0x7932'75d9'c7d6'6f29},
+       {0xfbea'a33d'9fe3'f1e0, 0x3ea2'909f'37f1'3499},
+       {0xc15a'be03'0ffe'b750, 0x0412'ab64'a80b'fa09},
+       {0x86c9'd8c7'8018'7cc0, 0xc981'c629'1825'bf79},
+       {0x4c39'f38c'f033'4230, 0x8ef1'e0ee'8840'84e9},
+       {0x11aa'0e52'604e'07a0, 0x5461'fbb3'f85b'4a59},
+       {0xd71a'2917'd068'cd10, 0x19d2'1679'6876'0fc9}},
+      kVectorCalculationsSource);
+  TestVectorInstruction(
+      ExecVmaddvx,
+      ExecMaskedVmaddvx,
+      {{114, 243, 116, 245, 118, 247, 120, 249, 122, 251, 124, 253, 126, 255, 128, 1},
+       {130, 3, 132, 5, 134, 7, 136, 9, 138, 11, 140, 13, 142, 15, 144, 17},
+       {146, 19, 148, 21, 150, 23, 152, 25, 154, 27, 156, 29, 158, 31, 160, 33},
+       {162, 35, 164, 37, 166, 39, 168, 41, 170, 43, 172, 45, 174, 47, 176, 49},
+       {178, 51, 180, 53, 182, 55, 184, 57, 186, 59, 188, 61, 190, 63, 192, 65},
+       {194, 67, 196, 69, 198, 71, 200, 73, 202, 75, 204, 77, 206, 79, 208, 81},
+       {210, 83, 212, 85, 214, 87, 216, 89, 218, 91, 220, 93, 222, 95, 224, 97},
+       {226, 99, 228, 101, 230, 103, 232, 105, 234, 107, 236, 109, 238, 111, 240, 113}},
+      {{0x9d72, 0x9f74, 0xa176, 0xa378, 0xa57a, 0xa77c, 0xa97e, 0xab80},
+       {0xad82, 0xaf84, 0xb186, 0xb388, 0xb58a, 0xb78c, 0xb98e, 0xbb90},
+       {0xbd92, 0xbf94, 0xc196, 0xc398, 0xc59a, 0xc79c, 0xc99e, 0xcba0},
+       {0xcda2, 0xcfa4, 0xd1a6, 0xd3a8, 0xd5aa, 0xd7ac, 0xd9ae, 0xdbb0},
+       {0xddb2, 0xdfb4, 0xe1b6, 0xe3b8, 0xe5ba, 0xe7bc, 0xe9be, 0xebc0},
+       {0xedc2, 0xefc4, 0xf1c6, 0xf3c8, 0xf5ca, 0xf7cc, 0xf9ce, 0xfbd0},
+       {0xfdd2, 0xffd4, 0x01d6, 0x03d8, 0x05da, 0x07dc, 0x09de, 0x0be0},
+       {0x0de2, 0x0fe4, 0x11e6, 0x13e8, 0x15ea, 0x17ec, 0x19ee, 0x1bf0}},
+      {{0xf4c9'9d72, 0xf8cd'a176, 0xfcd1'a57a, 0x00d5'a97e},
+       {0x04d9'ad82, 0x08dd'b186, 0x0ce1'b58a, 0x10e5'b98e},
+       {0x14e9'bd92, 0x18ed'c196, 0x1cf1'c59a, 0x20f5'c99e},
+       {0x24f9'cda2, 0x28fd'd1a6, 0x2d01'd5aa, 0x3105'd9ae},
+       {0x3509'ddb2, 0x390d'e1b6, 0x3d11'e5ba, 0x4115'e9be},
+       {0x4519'edc2, 0x491d'f1c6, 0x4d21'f5ca, 0x5125'f9ce},
+       {0x5529'fdd2, 0x592e'01d6, 0x5d32'05da, 0x6136'09de},
+       {0x653a'0de2, 0x693e'11e6, 0x6d42'15ea, 0x7146'19ee}},
+      {{0xa378'4c20'f4c9'9d72, 0xab80'5428'fcd1'a57a},
+       {0xb388'5c31'04d9'ad82, 0xbb90'6439'0ce1'b58a},
+       {0xc398'6c41'14e9'bd92, 0xcba0'7449'1cf1'c59a},
+       {0xd3a8'7c51'24f9'cda2, 0xdbb0'8459'2d01'd5aa},
+       {0xe3b8'8c61'3509'ddb2, 0xebc0'9469'3d11'e5ba},
+       {0xf3c8'9c71'4519'edc2, 0xfbd0'a479'4d21'f5ca},
+       {0x03d8'ac81'5529'fdd2, 0x0be0'b489'5d32'05da},
+       {0x13e8'bc91'653a'0de2, 0x1bf0'c499'6d42'15ea}},
+      kVectorCalculationsSource);
+}