xref: /qemu/tests/tcg/s390x/mxdb.c (revision 7ce5a15fa633c7683d4397a1213c13185ba64eba)
1*2b956244SIlya Leoshkevich /*
2*2b956244SIlya Leoshkevich  * Test the MXDB and MXDBR instructions.
3*2b956244SIlya Leoshkevich  *
4*2b956244SIlya Leoshkevich  * SPDX-License-Identifier: GPL-2.0-or-later
5*2b956244SIlya Leoshkevich  */
6*2b956244SIlya Leoshkevich #include <assert.h>
7*2b956244SIlya Leoshkevich #include <stdlib.h>
8*2b956244SIlya Leoshkevich 
main(void)9*2b956244SIlya Leoshkevich int main(void)
10*2b956244SIlya Leoshkevich {
11*2b956244SIlya Leoshkevich     union {
12*2b956244SIlya Leoshkevich         double d[2];
13*2b956244SIlya Leoshkevich         long double ld;
14*2b956244SIlya Leoshkevich     } a;
15*2b956244SIlya Leoshkevich     double b;
16*2b956244SIlya Leoshkevich 
17*2b956244SIlya Leoshkevich     a.d[0] = 1.2345;
18*2b956244SIlya Leoshkevich     a.d[1] = 999;
19*2b956244SIlya Leoshkevich     b = 6.789;
20*2b956244SIlya Leoshkevich     asm("mxdb %[a],%[b]" : [a] "+f" (a.ld) : [b] "R" (b));
21*2b956244SIlya Leoshkevich     assert(a.ld > 8.38 && a.ld < 8.39);
22*2b956244SIlya Leoshkevich 
23*2b956244SIlya Leoshkevich     a.d[0] = 1.2345;
24*2b956244SIlya Leoshkevich     a.d[1] = 999;
25*2b956244SIlya Leoshkevich     b = 6.789;
26*2b956244SIlya Leoshkevich     asm("mxdbr %[a],%[b]" : [a] "+f" (a.ld) : [b] "f" (b));
27*2b956244SIlya Leoshkevich     assert(a.ld > 8.38 && a.ld < 8.39);
28*2b956244SIlya Leoshkevich 
29*2b956244SIlya Leoshkevich     return EXIT_SUCCESS;
30*2b956244SIlya Leoshkevich }
31