]> Git Repo - qemu.git/blame - target-sparc/fbranch_template.h
Fix overflow when multiplying two large positive numbers.
[qemu.git] / target-sparc / fbranch_template.h
CommitLineData
3475187d
FB
1/* FCC1:FCC0: 0 =, 1 <, 2 >, 3 u */
2
3void 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
9void OPPROTO glue(op_eval_fblg, FCC)(void)
10{
11// 1 or 2
12 T2 = FFLAG_SET(FSR_FCC0) ^ FFLAG_SET(FSR_FCC1);
13}
14
15void OPPROTO glue(op_eval_fbul, FCC)(void)
16{
17// 1 or 3
18 T2 = FFLAG_SET(FSR_FCC0);
19}
20
21void OPPROTO glue(op_eval_fbl, FCC)(void)
22{
23// 1
24 T2 = FFLAG_SET(FSR_FCC0) & !FFLAG_SET(FSR_FCC1);
25}
26
27void OPPROTO glue(op_eval_fbug, FCC)(void)
28{
29// 2 or 3
30 T2 = FFLAG_SET(FSR_FCC1);
31}
32
33void OPPROTO glue(op_eval_fbg, FCC)(void)
34{
35// 2
36 T2 = !FFLAG_SET(FSR_FCC0) & FFLAG_SET(FSR_FCC1);
37}
38
39void OPPROTO glue(op_eval_fbu, FCC)(void)
40{
41// 3
42 T2 = FFLAG_SET(FSR_FCC0) & FFLAG_SET(FSR_FCC1);
43}
44
45void OPPROTO glue(op_eval_fbe, FCC)(void)
46{
47// 0
48 T2 = !FFLAG_SET(FSR_FCC0) & !FFLAG_SET(FSR_FCC1);
49}
50
51void 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
58void OPPROTO glue(op_eval_fbge, FCC)(void)
59{
60// 0 or 2
61 T2 = !FFLAG_SET(FSR_FCC0);
62}
63
64void OPPROTO glue(op_eval_fbuge, FCC)(void)
65{
66// !1
67 T2 = !(FFLAG_SET(FSR_FCC0) & !FFLAG_SET(FSR_FCC1));
68}
69
70void OPPROTO glue(op_eval_fble, FCC)(void)
71{
72// 0 or 1
73 T2 = !FFLAG_SET(FSR_FCC1);
74}
75
76void OPPROTO glue(op_eval_fbule, FCC)(void)
77{
78// !2
79 T2 = !(!FFLAG_SET(FSR_FCC0) & FFLAG_SET(FSR_FCC1));
80}
81
82void 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
This page took 0.082994 seconds and 4 git commands to generate.