aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/optim/canonical-fcmp.c
blob: b919a55f73e56eda254912ee8ce33fed862c9707 (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
117
118
119
120
121
122
123
extern double g;

int  fcmp_eq(double a) { return  (g == a); }
int  fcmp_ne(double a) { return  (g != a); }

int  fcmp_gt(double a) { return  (g >  a); }
int  fcmp_ge(double a) { return  (g >= a); }
int  fcmp_le(double a) { return  (g <= a); }
int  fcmp_lt(double a) { return  (g <  a); }

int nfcmp_ne(double a) { return !(g == a); }
int nfcmp_eq(double a) { return !(g != a); }

int nfcmp_le(double a) { return !(g >  a); }
int nfcmp_lt(double a) { return !(g >= a); }
int nfcmp_gt(double a) { return !(g <= a); }
int nfcmp_ge(double a) { return !(g <  a); }

/*
 * check-name: canonical-cmp
 * check-command: test-linearize -Wno-decl $file
 *
 * check-output-excludes: \\$123,
 *
 * check-output-start
fcmp_eq:
.L0:
	<entry-point>
	load.64     %r1 <- 0[g]
	fcmpoeq.32  %r3 <- %r1, %arg1
	ret.32      %r3


fcmp_ne:
.L2:
	<entry-point>
	load.64     %r5 <- 0[g]
	fcmpune.32  %r7 <- %r5, %arg1
	ret.32      %r7


fcmp_gt:
.L4:
	<entry-point>
	load.64     %r9 <- 0[g]
	fcmpogt.32  %r11 <- %r9, %arg1
	ret.32      %r11


fcmp_ge:
.L6:
	<entry-point>
	load.64     %r13 <- 0[g]
	fcmpoge.32  %r15 <- %r13, %arg1
	ret.32      %r15


fcmp_le:
.L8:
	<entry-point>
	load.64     %r17 <- 0[g]
	fcmpole.32  %r19 <- %r17, %arg1
	ret.32      %r19


fcmp_lt:
.L10:
	<entry-point>
	load.64     %r21 <- 0[g]
	fcmpolt.32  %r23 <- %r21, %arg1
	ret.32      %r23


nfcmp_ne:
.L12:
	<entry-point>
	load.64     %r25 <- 0[g]
	fcmpune.32  %r28 <- %r25, %arg1
	ret.32      %r28


nfcmp_eq:
.L14:
	<entry-point>
	load.64     %r30 <- 0[g]
	fcmpoeq.32  %r33 <- %r30, %arg1
	ret.32      %r33


nfcmp_le:
.L16:
	<entry-point>
	load.64     %r35 <- 0[g]
	fcmpule.32  %r38 <- %r35, %arg1
	ret.32      %r38


nfcmp_lt:
.L18:
	<entry-point>
	load.64     %r40 <- 0[g]
	fcmpult.32  %r43 <- %r40, %arg1
	ret.32      %r43


nfcmp_gt:
.L20:
	<entry-point>
	load.64     %r45 <- 0[g]
	fcmpugt.32  %r48 <- %r45, %arg1
	ret.32      %r48


nfcmp_ge:
.L22:
	<entry-point>
	load.64     %r50 <- 0[g]
	fcmpuge.32  %r53 <- %r50, %arg1
	ret.32      %r53


 * check-output-end
 */