aboutsummaryrefslogtreecommitdiff
blob: 87a8aba4ff01a5293725ab2db242bca56e0e6d47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/* Copyright 2005, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.

   This file is part of GDB.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

void gt (double a);

int
main (void)
{
  gt (360.0);
  gt (-360.0);

  ge (360.0);
  ge (-360.0);

  lt (-360.0);
  lt (360.0);

  le (-360.0);
  le (360.0);

  eq (0.0);
  eq (360.0);

  ne (360.0);
  ne (0.0);

  return 0;
}

asm ("       .text\n"
     "       .ent gt\n"
     "gt:\n"
     "       .frame $30,0,$26,0\n"
     "       .prologue 0\n"
     "       cpys $f31,$f31,$f0\n"
     "       fbgt $f16,$gt_1\n"      /* stop at this instruction.  */
     "       cpysn $f16,$f16,$f0\n"
     "$gt_1:\n"
     "       ret $31,($26),1\n"
     "       .end gt\n");

asm ("       .text\n"
     "       .ent ge\n"
     "ge:\n"
     "       .frame $30,0,$26,0\n"
     "       .prologue 0\n"
     "       cpys $f31,$f31,$f0\n"
     "       fbge $f16,$ge_1\n"      /* stop at this instruction.  */
     "       cpysn $f16,$f16,$f0\n"
     "$ge_1:\n"
     "       ret $31,($26),1\n"
     "       .end ge\n");

asm ("       .text\n"
     "       .ent lt\n"
     "lt:\n"
     "       .frame $30,0,$26,0\n"
     "       .prologue 0\n"
     "       cpys $f31,$f31,$f0\n"
     "       fblt $f16,$lt_1\n"      /* stop at this instruction.  */
     "       cpysn $f16,$f16,$f0\n"
     "$lt_1:\n"
     "       ret $31,($26),1\n"
     "       .end lt\n");

asm ("       .text\n"
     "       .ent le\n"
     "le:\n"
     "       .frame $30,0,$26,0\n"
     "       .prologue 0\n"
     "       cpys $f31,$f31,$f0\n"
     "       fble $f16,$le_1\n"      /* stop at this instruction.  */
     "       cpysn $f16,$f16,$f0\n"
     "$le_1:\n"
     "       ret $31,($26),1\n"
     "       .end le\n");

asm ("       .text\n"
     "       .ent eq\n"
     "eq:\n"
     "       .frame $30,0,$26,0\n"
     "       .prologue 0\n"
     "       cpys $f31,$f31,$f0\n"
     "       fbeq $f16,$eq_1\n"      /* stop at this instruction.  */
     "       cpysn $f16,$f16,$f0\n"
     "$eq_1:\n"
     "       ret $31,($26),1\n"
     "       .end eq\n");

asm ("       .text\n"
     "       .ent ne\n"
     "ne:\n"
     "       .frame $30,0,$26,0\n"
     "       .prologue 0\n"
     "       cpys $f31,$f31,$f0\n"
     "       fbne $f16,$ne_1\n"      /* stop at this instruction.  */
     "       cpysn $f16,$f16,$f0\n"
     "$ne_1:\n"
     "       ret $31,($26),1\n"
     "       .end ne\n");