]> git.proxmox.com Git - mirror_qemu.git/blame - opreg_template.h
added cmov instruction
[mirror_qemu.git] / opreg_template.h
CommitLineData
7bfdb6d1
FB
1/* templates for various register related operations */
2
3void OPPROTO glue(op_movl_A0,REGNAME)(void)
4{
5 A0 = REG;
6}
7
8void OPPROTO glue(op_addl_A0,REGNAME)(void)
9{
10 A0 += REG;
11}
12
13void OPPROTO glue(glue(op_addl_A0,REGNAME),_s1)(void)
14{
15 A0 += REG << 1;
16}
17
18void OPPROTO glue(glue(op_addl_A0,REGNAME),_s2)(void)
19{
20 A0 += REG << 2;
21}
22
23void OPPROTO glue(glue(op_addl_A0,REGNAME),_s3)(void)
24{
25 A0 += REG << 3;
26}
27
28void OPPROTO glue(op_movl_T0,REGNAME)(void)
29{
30 T0 = REG;
31}
32
33void OPPROTO glue(op_movl_T1,REGNAME)(void)
34{
35 T1 = REG;
36}
37
38void OPPROTO glue(op_movh_T0,REGNAME)(void)
39{
40 T0 = REG >> 8;
41}
42
43void OPPROTO glue(op_movh_T1,REGNAME)(void)
44{
45 T1 = REG >> 8;
46}
47
48void OPPROTO glue(glue(op_movl,REGNAME),_T0)(void)
49{
50 REG = T0;
51}
52
53void OPPROTO glue(glue(op_movl,REGNAME),_T1)(void)
54{
55 REG = T1;
56}
57
58void OPPROTO glue(glue(op_movl,REGNAME),_A0)(void)
59{
60 REG = A0;
5dd9488c
FB
61}
62
63/* mov T1 to REG if T0 is true */
64void OPPROTO glue(glue(op_cmovw,REGNAME),_T1_T0)(void)
65{
66 if (T0)
67 REG = (REG & 0xffff0000) | (T1 & 0xffff);
68}
69
70void OPPROTO glue(glue(op_cmovl,REGNAME),_T1_T0)(void)
71{
72 if (T0)
73 REG = T1;
7bfdb6d1
FB
74}
75
76/* NOTE: T0 high order bits are ignored */
77void OPPROTO glue(glue(op_movw,REGNAME),_T0)(void)
78{
79 REG = (REG & 0xffff0000) | (T0 & 0xffff);
80}
81
82/* NOTE: T0 high order bits are ignored */
83void OPPROTO glue(glue(op_movw,REGNAME),_T1)(void)
84{
85 REG = (REG & 0xffff0000) | (T1 & 0xffff);
86}
87
88/* NOTE: A0 high order bits are ignored */
89void OPPROTO glue(glue(op_movw,REGNAME),_A0)(void)
90{
91 REG = (REG & 0xffff0000) | (A0 & 0xffff);
92}
93
94/* NOTE: T0 high order bits are ignored */
95void OPPROTO glue(glue(op_movb,REGNAME),_T0)(void)
96{
97 REG = (REG & 0xffffff00) | (T0 & 0xff);
98}
99
100/* NOTE: T0 high order bits are ignored */
101void OPPROTO glue(glue(op_movh,REGNAME),_T0)(void)
102{
103 REG = (REG & 0xffff00ff) | ((T0 & 0xff) << 8);
104}
105
106/* NOTE: T1 high order bits are ignored */
107void OPPROTO glue(glue(op_movb,REGNAME),_T1)(void)
108{
109 REG = (REG & 0xffffff00) | (T1 & 0xff);
110}
111
112/* NOTE: T1 high order bits are ignored */
113void OPPROTO glue(glue(op_movh,REGNAME),_T1)(void)
114{
115 REG = (REG & 0xffff00ff) | ((T1 & 0xff) << 8);
116}