xref: /qemu/tests/tcg/s390x/pack.c (revision 3cea09271b3b3a0c4d0ffa3b56ea671bf75d82c3)
1*3cea0927SPavel Zbitskiy #include <unistd.h>
2*3cea0927SPavel Zbitskiy 
3*3cea0927SPavel Zbitskiy int main(void)
4*3cea0927SPavel Zbitskiy {
5*3cea0927SPavel Zbitskiy     char data[] = {0xaa, 0xaa, 0xf1, 0xf2, 0xf3, 0xc4, 0xaa, 0xaa};
6*3cea0927SPavel Zbitskiy     char exp[] = {0xaa, 0xaa, 0x00, 0x01, 0x23, 0x4c, 0xaa, 0xaa};
7*3cea0927SPavel Zbitskiy     int i;
8*3cea0927SPavel Zbitskiy 
9*3cea0927SPavel Zbitskiy     asm volatile(
10*3cea0927SPavel Zbitskiy         "    pack 2(4,%[data]),2(4,%[data])\n"
11*3cea0927SPavel Zbitskiy         :
12*3cea0927SPavel Zbitskiy         : [data] "r" (&data[0])
13*3cea0927SPavel Zbitskiy         : "memory");
14*3cea0927SPavel Zbitskiy     for (i = 0; i < 8; i++) {
15*3cea0927SPavel Zbitskiy         if (data[i] != exp[i]) {
16*3cea0927SPavel Zbitskiy             write(1, "bad data\n", 9);
17*3cea0927SPavel Zbitskiy             return 1;
18*3cea0927SPavel Zbitskiy         }
19*3cea0927SPavel Zbitskiy     }
20*3cea0927SPavel Zbitskiy     return 0;
21*3cea0927SPavel Zbitskiy }
22