1 /*
2 * Test the VSTL instruction.
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 #include <assert.h>
7 #include <stdlib.h>
8 #include "vx.h"
9
vstl(S390Vector * v1,void * db2,size_t r3)10 static inline void vstl(S390Vector *v1, void *db2, size_t r3)
11 {
12 asm("vstl %[v1],%[r3],%[db2]"
13 : [db2] "=Q" (*(char *)db2)
14 : [v1] "v" (v1->v), [r3] "r" (r3)
15 : "memory");
16 }
17
main(void)18 int main(void)
19 {
20 uint64_t buf[3] = {0x1122334455667788ULL, 0x99aabbccddeeffULL,
21 0x5a5a5a5a5a5a5a5aULL};
22 S390Vector v = {.d[0] = 0x1234567887654321ULL,
23 .d[1] = 0x9abcdef00fedcba9ULL};
24
25 vstl(&v, buf, 0);
26 assert(buf[0] == 0x1222334455667788ULL);
27
28 vstl(&v, buf, 1);
29 assert(buf[0] == 0x1234334455667788ULL);
30
31 vstl(&v, buf, -1);
32 assert(buf[0] == 0x1234567887654321ULL);
33 assert(buf[1] == 0x9abcdef00fedcba9ULL);
34 assert(buf[2] == 0x5a5a5a5a5a5a5a5aULL);
35
36 return EXIT_SUCCESS;
37 }
38