| /* |
| * Test the VCKSM instruction. |
| * |
| * SPDX-License-Identifier: GPL-2.0-or-later |
| */ |
| #include <assert.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include "vx.h" |
| |
| int main(void) |
| { |
| S390Vector v1; |
| S390Vector v2 = { |
| .d[0] = 0xb2261c8140edce49ULL, |
| .d[1] = 0x387bf5a433af39d1ULL, |
| }; |
| S390Vector v3 = { |
| .d[0] = 0x73b03d2c7f9e654eULL, |
| .d[1] = 0x23d74e51fb479877ULL, |
| }; |
| S390Vector exp = {.d[0] = 0xdedd7f8eULL, .d[1] = 0ULL}; |
| |
| asm volatile("vcksm %[v1],%[v2],%[v3]" |
| : [v1] "=v" (v1.v) |
| : [v2] "v" (v2.v) |
| , [v3] "v" (v3.v)); |
| assert(memcmp(&v1, &exp, sizeof(v1)) == 0); |
| |
| return EXIT_SUCCESS; |
| } |