/* * Test the VSTL instruction. * * SPDX-License-Identifier: GPL-2.0-or-later */ #include #include #include "vx.h" static inline void vstl(S390Vector *v1, void *db2, size_t r3) { asm("vstl %[v1],%[r3],%[db2]" : [db2] "=Q" (*(char *)db2) : [v1] "v" (v1->v), [r3] "r" (r3) : "memory"); } int main(void) { uint64_t buf[3] = {0x1122334455667788ULL, 0x99aabbccddeeffULL, 0x5a5a5a5a5a5a5a5aULL}; S390Vector v = {.d[0] = 0x1234567887654321ULL, .d[1] = 0x9abcdef00fedcba9ULL}; vstl(&v, buf, 0); assert(buf[0] == 0x1222334455667788ULL); vstl(&v, buf, 1); assert(buf[0] == 0x1234334455667788ULL); vstl(&v, buf, -1); assert(buf[0] == 0x1234567887654321ULL); assert(buf[1] == 0x9abcdef00fedcba9ULL); assert(buf[2] == 0x5a5a5a5a5a5a5a5aULL); return EXIT_SUCCESS; }