~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/CodeGen/Mips/fpbr.ll

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2015-07-15 17:51:08 UTC
  • Revision ID: package-import@ubuntu.com-20150715175108-l8mynwovkx4zx697
Tags: upstream-3.7~+rc2
ImportĀ upstreamĀ versionĀ 3.7~+rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; RUN: llc < %s -march=mipsel -mcpu=mips32   | FileCheck %s -check-prefix=ALL -check-prefix=FCC -check-prefix=32-FCC
 
2
; RUN: llc < %s -march=mipsel -mcpu=mips32r2 | FileCheck %s -check-prefix=ALL -check-prefix=FCC -check-prefix=32-FCC
 
3
; RUN: llc < %s -march=mipsel -mcpu=mips32r6 | FileCheck %s -check-prefix=ALL -check-prefix=GPR -check-prefix=32-GPR
 
4
; RUN: llc < %s -march=mips64el -mcpu=mips64   | FileCheck %s -check-prefix=ALL -check-prefix=FCC -check-prefix=64-FCC
 
5
; RUN: llc < %s -march=mips64el -mcpu=mips64r2 | FileCheck %s -check-prefix=ALL -check-prefix=FCC -check-prefix=64-FCC
 
6
; RUN: llc < %s -march=mips64el -mcpu=mips64r6 | FileCheck %s -check-prefix=ALL -check-prefix=GPR -check-prefix=64-GPR
 
7
 
 
8
define void @func0(float %f2, float %f3) nounwind {
 
9
entry:
 
10
; ALL-LABEL: func0:
 
11
 
 
12
; 32-FCC:        c.eq.s $f12, $f14
 
13
; 64-FCC:        c.eq.s $f12, $f13
 
14
; FCC:           bc1f   $BB0_2
 
15
 
 
16
; 32-GPR:        cmp.eq.s $[[FGRCC:f[0-9]+]], $f12, $f14
 
17
; 64-GPR:        cmp.eq.s $[[FGRCC:f[0-9]+]], $f12, $f13
 
18
; GPR:           mfc1     $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
 
19
; FIXME: We ought to be able to transform not+bnez -> beqz
 
20
; GPR:           not      $[[GPRCC]], $[[GPRCC]]
 
21
; GPR:           bnez     $[[GPRCC]], $BB0_2
 
22
 
 
23
  %cmp = fcmp oeq float %f2, %f3
 
24
  br i1 %cmp, label %if.then, label %if.else
 
25
 
 
26
if.then:                                          ; preds = %entry
 
27
  tail call void (...) @g0() nounwind
 
28
  br label %if.end
 
29
 
 
30
if.else:                                          ; preds = %entry
 
31
  tail call void (...) @g1() nounwind
 
32
  br label %if.end
 
33
 
 
34
if.end:                                           ; preds = %if.else, %if.then
 
35
  ret void
 
36
}
 
37
 
 
38
declare void @g0(...)
 
39
 
 
40
declare void @g1(...)
 
41
 
 
42
define void @func1(float %f2, float %f3) nounwind {
 
43
entry:
 
44
; ALL-LABEL: func1:
 
45
 
 
46
; 32-FCC:        c.olt.s $f12, $f14
 
47
; 64-FCC:        c.olt.s $f12, $f13
 
48
; FCC:           bc1f    $BB1_2
 
49
 
 
50
; 32-GPR:        cmp.ule.s $[[FGRCC:f[0-9]+]], $f14, $f12
 
51
; 64-GPR:        cmp.ule.s $[[FGRCC:f[0-9]+]], $f13, $f12
 
52
; GPR:           mfc1     $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
 
53
; GPR-NOT:       not      $[[GPRCC]], $[[GPRCC]]
 
54
; GPR:           bnez     $[[GPRCC]], $BB1_2
 
55
 
 
56
  %cmp = fcmp olt float %f2, %f3
 
57
  br i1 %cmp, label %if.then, label %if.else
 
58
 
 
59
if.then:                                          ; preds = %entry
 
60
  tail call void (...) @g0() nounwind
 
61
  br label %if.end
 
62
 
 
63
if.else:                                          ; preds = %entry
 
64
  tail call void (...) @g1() nounwind
 
65
  br label %if.end
 
66
 
 
67
if.end:                                           ; preds = %if.else, %if.then
 
68
  ret void
 
69
}
 
70
 
 
71
define void @func2(float %f2, float %f3) nounwind {
 
72
entry:
 
73
; ALL-LABEL: func2:
 
74
 
 
75
; 32-FCC:        c.ole.s $f12, $f14
 
76
; 64-FCC:        c.ole.s $f12, $f13
 
77
; FCC:           bc1t    $BB2_2
 
78
 
 
79
; 32-GPR:        cmp.ult.s $[[FGRCC:f[0-9]+]], $f14, $f12
 
80
; 64-GPR:        cmp.ult.s $[[FGRCC:f[0-9]+]], $f13, $f12
 
81
; GPR:           mfc1     $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
 
82
; GPR-NOT:       not      $[[GPRCC]], $[[GPRCC]]
 
83
; GPR:           beqz     $[[GPRCC]], $BB2_2
 
84
 
 
85
  %cmp = fcmp ugt float %f2, %f3
 
86
  br i1 %cmp, label %if.else, label %if.then
 
87
 
 
88
if.then:                                          ; preds = %entry
 
89
  tail call void (...) @g0() nounwind
 
90
  br label %if.end
 
91
 
 
92
if.else:                                          ; preds = %entry
 
93
  tail call void (...) @g1() nounwind
 
94
  br label %if.end
 
95
 
 
96
if.end:                                           ; preds = %if.else, %if.then
 
97
  ret void
 
98
}
 
99
 
 
100
define void @func3(double %f2, double %f3) nounwind {
 
101
entry:
 
102
; ALL-LABEL: func3:
 
103
 
 
104
; 32-FCC:        c.eq.d $f12, $f14
 
105
; 64-FCC:        c.eq.d $f12, $f13
 
106
; FCC:           bc1f $BB3_2
 
107
 
 
108
; 32-GPR:        cmp.eq.d $[[FGRCC:f[0-9]+]], $f12, $f14
 
109
; 64-GPR:        cmp.eq.d $[[FGRCC:f[0-9]+]], $f12, $f13
 
110
; GPR:           mfc1     $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
 
111
; FIXME: We ought to be able to transform not+bnez -> beqz
 
112
; GPR:           not      $[[GPRCC]], $[[GPRCC]]
 
113
; GPR:           bnez     $[[GPRCC]], $BB3_2
 
114
 
 
115
  %cmp = fcmp oeq double %f2, %f3
 
116
  br i1 %cmp, label %if.then, label %if.else
 
117
 
 
118
if.then:                                          ; preds = %entry
 
119
  tail call void (...) @g0() nounwind
 
120
  br label %if.end
 
121
 
 
122
if.else:                                          ; preds = %entry
 
123
  tail call void (...) @g1() nounwind
 
124
  br label %if.end
 
125
 
 
126
if.end:                                           ; preds = %if.else, %if.then
 
127
  ret void
 
128
}
 
129
 
 
130
define void @func4(double %f2, double %f3) nounwind {
 
131
entry:
 
132
; ALL-LABEL: func4:
 
133
 
 
134
; 32-FCC:        c.olt.d $f12, $f14
 
135
; 64-FCC:        c.olt.d $f12, $f13
 
136
; FCC:           bc1f $BB4_2
 
137
 
 
138
; 32-GPR:        cmp.ule.d $[[FGRCC:f[0-9]+]], $f14, $f12
 
139
; 64-GPR:        cmp.ule.d $[[FGRCC:f[0-9]+]], $f13, $f12
 
140
; GPR:           mfc1     $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
 
141
; GPR-NOT:       not      $[[GPRCC]], $[[GPRCC]]
 
142
; GPR:           bnez     $[[GPRCC]], $BB4_2
 
143
 
 
144
  %cmp = fcmp olt double %f2, %f3
 
145
  br i1 %cmp, label %if.then, label %if.else
 
146
 
 
147
if.then:                                          ; preds = %entry
 
148
  tail call void (...) @g0() nounwind
 
149
  br label %if.end
 
150
 
 
151
if.else:                                          ; preds = %entry
 
152
  tail call void (...) @g1() nounwind
 
153
  br label %if.end
 
154
 
 
155
if.end:                                           ; preds = %if.else, %if.then
 
156
  ret void
 
157
}
 
158
 
 
159
define void @func5(double %f2, double %f3) nounwind {
 
160
entry:
 
161
; ALL-LABEL: func5:
 
162
 
 
163
; 32-FCC:        c.ole.d $f12, $f14
 
164
; 64-FCC:        c.ole.d $f12, $f13
 
165
; FCC:           bc1t $BB5_2
 
166
 
 
167
; 32-GPR:        cmp.ult.d $[[FGRCC:f[0-9]+]], $f14, $f12
 
168
; 64-GPR:        cmp.ult.d $[[FGRCC:f[0-9]+]], $f13, $f12
 
169
; GPR:           mfc1     $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
 
170
; GPR-NOT:       not      $[[GPRCC]], $[[GPRCC]]
 
171
; GPR:           beqz     $[[GPRCC]], $BB5_2
 
172
 
 
173
  %cmp = fcmp ugt double %f2, %f3
 
174
  br i1 %cmp, label %if.else, label %if.then
 
175
 
 
176
if.then:                                          ; preds = %entry
 
177
  tail call void (...) @g0() nounwind
 
178
  br label %if.end
 
179
 
 
180
if.else:                                          ; preds = %entry
 
181
  tail call void (...) @g1() nounwind
 
182
  br label %if.end
 
183
 
 
184
if.end:                                           ; preds = %if.else, %if.then
 
185
  ret void
 
186
}