0.8.0-alt1
[qemu] / qemu / target-sparc / fbranch_template.h
1 /* FCC1:FCC0: 0 =, 1 <, 2 >, 3 u */
2
3 void OPPROTO glue(op_eval_fbne, FCC)(void)
4 {
5 // !0
6     T2 = FFLAG_SET(FSR_FCC0) | FFLAG_SET(FSR_FCC1); /* L or G or U */
7 }
8
9 void OPPROTO glue(op_eval_fblg, FCC)(void)
10 {
11 // 1 or 2
12     T2 = FFLAG_SET(FSR_FCC0) ^ FFLAG_SET(FSR_FCC1);
13 }
14
15 void OPPROTO glue(op_eval_fbul, FCC)(void)
16 {
17 // 1 or 3
18     T2 = FFLAG_SET(FSR_FCC0);
19 }
20
21 void OPPROTO glue(op_eval_fbl, FCC)(void)
22 {
23 // 1
24     T2 = FFLAG_SET(FSR_FCC0) & !FFLAG_SET(FSR_FCC1);
25 }
26
27 void OPPROTO glue(op_eval_fbug, FCC)(void)
28 {
29 // 2 or 3
30     T2 = FFLAG_SET(FSR_FCC1);
31 }
32
33 void OPPROTO glue(op_eval_fbg, FCC)(void)
34 {
35 // 2
36     T2 = !FFLAG_SET(FSR_FCC0) & FFLAG_SET(FSR_FCC1);
37 }
38
39 void OPPROTO glue(op_eval_fbu, FCC)(void)
40 {
41 // 3
42     T2 = FFLAG_SET(FSR_FCC0) & FFLAG_SET(FSR_FCC1);
43 }
44
45 void OPPROTO glue(op_eval_fbe, FCC)(void)
46 {
47 // 0
48     T2 = !FFLAG_SET(FSR_FCC0) & !FFLAG_SET(FSR_FCC1);
49 }
50
51 void OPPROTO glue(op_eval_fbue, FCC)(void)
52 {
53 // 0 or 3
54     T2 = !(FFLAG_SET(FSR_FCC1) ^ FFLAG_SET(FSR_FCC0));
55     FORCE_RET();
56 }
57
58 void OPPROTO glue(op_eval_fbge, FCC)(void)
59 {
60 // 0 or 2
61     T2 = !FFLAG_SET(FSR_FCC0);
62 }
63
64 void OPPROTO glue(op_eval_fbuge, FCC)(void)
65 {
66 // !1
67     T2 = !(FFLAG_SET(FSR_FCC0) & !FFLAG_SET(FSR_FCC1));
68 }
69
70 void OPPROTO glue(op_eval_fble, FCC)(void)
71 {
72 // 0 or 1
73     T2 = !FFLAG_SET(FSR_FCC1);
74 }
75
76 void OPPROTO glue(op_eval_fbule, FCC)(void)
77 {
78 // !2
79     T2 = !(!FFLAG_SET(FSR_FCC0) & FFLAG_SET(FSR_FCC1));
80 }
81
82 void OPPROTO glue(op_eval_fbo, FCC)(void)
83 {
84 // !3
85     T2 = !(FFLAG_SET(FSR_FCC0) & FFLAG_SET(FSR_FCC1));
86 }
87
88 #undef FCC
89 #undef FFLAG_SET