]>
git.proxmox.com Git - qemu.git/blob - tests/test-i386-shift.h
af892f6c7d8527c7f134a590bf91ef6f879ae5ca
2 #define exec_op glue(exec_, OP)
3 #define exec_opl glue(glue(exec_, OP), l)
4 #define exec_opw glue(glue(exec_, OP), w)
5 #define exec_opb glue(glue(exec_, OP), b)
7 #define EXECSHIFT(size, res, s1, flags) \
10 stringify(OP) size " %%cl, %" size "0\n\t" \
13 : "=q" (res), "=g" (flags)\
14 : "c" (s1), "0" (res), "1" (flags));
16 void exec_opl(int s0
, int s1
, int iflags
)
21 EXECSHIFT("", res
, s1
, flags
);
22 /* overflow is undefined if count != 1 */
25 printf("%-10s A=%08x B=%08x R=%08x CCIN=%04x CC=%04x\n",
26 stringify(OP
) "l", s0
, s1
, res
, iflags
, flags
& CC_MASK
);
29 void exec_opw(int s0
, int s1
, int iflags
)
34 EXECSHIFT("w", res
, s1
, flags
);
35 /* overflow is undefined if count != 1 */
38 printf("%-10s A=%08x B=%08x R=%08x CCIN=%04x CC=%04x\n",
39 stringify(OP
) "w", s0
, s1
, res
, iflags
, flags
& CC_MASK
);
42 void exec_opb(int s0
, int s1
, int iflags
)
47 EXECSHIFT("b", res
, s1
, flags
);
48 /* overflow is undefined if count != 1 */
51 printf("%-10s A=%08x B=%08x R=%08x CCIN=%04x CC=%04x\n",
52 stringify(OP
) "b", s0
, s1
, res
, iflags
, flags
& CC_MASK
);
55 void exec_op(int s0
, int s1
)
61 exec_opl(s0
, s1
, CC_C
);
62 exec_opw(s0
, s1
, CC_C
);
63 exec_opb(s0
, s1
, CC_C
);
67 void glue(test_
, OP
)(void)
70 for(i
= 0; i
< 32; i
++)
71 exec_op(0x12345678, i
);
72 for(i
= 0; i
< 32; i
++)
73 exec_op(0x82345678, i
);
76 void *glue(_test_
, OP
) __init_call
= glue(test_
, OP
);