~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/CodeGen/ARM/fast-isel-cmp-imm.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 -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -verify-machineinstrs | FileCheck %s --check-prefix=ARM
 
2
; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi -verify-machineinstrs | FileCheck %s --check-prefix=ARM
 
3
; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios -verify-machineinstrs | FileCheck %s --check-prefix=THUMB
 
4
 
 
5
define void @t1a(float %a) uwtable ssp {
 
6
entry:
 
7
; ARM: t1a
 
8
; THUMB: t1a
 
9
  %cmp = fcmp oeq float %a, 0.000000e+00
 
10
; ARM: vcmpe.f32 s{{[0-9]+}}, #0
 
11
; THUMB: vcmpe.f32 s{{[0-9]+}}, #0
 
12
  br i1 %cmp, label %if.then, label %if.end
 
13
 
 
14
if.then:                                          ; preds = %entry
 
15
  tail call void @foo()
 
16
  br label %if.end
 
17
 
 
18
if.end:                                           ; preds = %if.then, %entry
 
19
  ret void
 
20
}
 
21
 
 
22
declare void @foo()
 
23
 
 
24
; Shouldn't be able to encode -0.0 imm.
 
25
define void @t1b(float %a) uwtable ssp {
 
26
entry:
 
27
; ARM: t1b
 
28
; THUMB: t1b
 
29
  %cmp = fcmp oeq float %a, -0.000000e+00
 
30
; ARM: vldr
 
31
; ARM: vcmpe.f32 s{{[0-9]+}}, s{{[0-9]+}}
 
32
; THUMB: vldr
 
33
; THUMB: vcmpe.f32 s{{[0-9]+}}, s{{[0-9]+}}
 
34
  br i1 %cmp, label %if.then, label %if.end
 
35
 
 
36
if.then:                                          ; preds = %entry
 
37
  tail call void @foo()
 
38
  br label %if.end
 
39
 
 
40
if.end:                                           ; preds = %if.then, %entry
 
41
  ret void
 
42
}
 
43
 
 
44
define void @t2a(double %a) uwtable ssp {
 
45
entry:
 
46
; ARM: t2a
 
47
; THUMB: t2a
 
48
  %cmp = fcmp oeq double %a, 0.000000e+00
 
49
; ARM: vcmpe.f64 d{{[0-9]+}}, #0
 
50
; THUMB: vcmpe.f64 d{{[0-9]+}}, #0
 
51
  br i1 %cmp, label %if.then, label %if.end
 
52
 
 
53
if.then:                                          ; preds = %entry
 
54
  tail call void @foo()
 
55
  br label %if.end
 
56
 
 
57
if.end:                                           ; preds = %if.then, %entry
 
58
  ret void
 
59
}
 
60
 
 
61
; Shouldn't be able to encode -0.0 imm.
 
62
define void @t2b(double %a) uwtable ssp {
 
63
entry:
 
64
; ARM: t2b
 
65
; THUMB: t2b
 
66
  %cmp = fcmp oeq double %a, -0.000000e+00
 
67
; ARM: vldr
 
68
; ARM: vcmpe.f64 d{{[0-9]+}}, d{{[0-9]+}}
 
69
; THUMB: vldr
 
70
; THUMB: vcmpe.f64 d{{[0-9]+}}, d{{[0-9]+}}
 
71
  br i1 %cmp, label %if.then, label %if.end
 
72
 
 
73
if.then:                                          ; preds = %entry
 
74
  tail call void @foo()
 
75
  br label %if.end
 
76
 
 
77
if.end:                                           ; preds = %if.then, %entry
 
78
  ret void
 
79
}
 
80
 
 
81
define void @t4(i8 signext %a) uwtable ssp {
 
82
entry:
 
83
; ARM: t4
 
84
; THUMB: t4
 
85
  %cmp = icmp eq i8 %a, -1
 
86
; ARM: cmn r{{[0-9]}}, #1
 
87
; THUMB: cmn.w r{{[0-9]}}, #1
 
88
  br i1 %cmp, label %if.then, label %if.end
 
89
 
 
90
if.then:                                          ; preds = %entry
 
91
  tail call void @foo()
 
92
  br label %if.end
 
93
 
 
94
if.end:                                           ; preds = %if.then, %entry
 
95
  ret void
 
96
}
 
97
 
 
98
define void @t5(i8 zeroext %a) uwtable ssp {
 
99
entry:
 
100
; ARM: t5
 
101
; THUMB: t5
 
102
  %cmp = icmp eq i8 %a, 1
 
103
; ARM: cmp r{{[0-9]}}, #1
 
104
; THUMB: cmp r{{[0-9]}}, #1
 
105
  br i1 %cmp, label %if.then, label %if.end
 
106
 
 
107
if.then:                                          ; preds = %entry
 
108
  tail call void @foo()
 
109
  br label %if.end
 
110
 
 
111
if.end:                                           ; preds = %if.then, %entry
 
112
  ret void
 
113
}
 
114
 
 
115
define void @t6(i16 signext %a) uwtable ssp {
 
116
entry:
 
117
; ARM: t6
 
118
; THUMB: t6
 
119
  %cmp = icmp eq i16 %a, -1
 
120
; ARM: cmn r{{[0-9]}}, #1
 
121
; THUMB: cmn.w r{{[0-9]}}, #1
 
122
  br i1 %cmp, label %if.then, label %if.end
 
123
 
 
124
if.then:                                          ; preds = %entry
 
125
  tail call void @foo()
 
126
  br label %if.end
 
127
 
 
128
if.end:                                           ; preds = %if.then, %entry
 
129
  ret void
 
130
}
 
131
 
 
132
define void @t7(i16 zeroext %a) uwtable ssp {
 
133
entry:
 
134
; ARM: t7
 
135
; THUMB: t7
 
136
  %cmp = icmp eq i16 %a, 1
 
137
; ARM: cmp r{{[0-9]}}, #1
 
138
; THUMB: cmp r{{[0-9]}}, #1
 
139
  br i1 %cmp, label %if.then, label %if.end
 
140
 
 
141
if.then:                                          ; preds = %entry
 
142
  tail call void @foo()
 
143
  br label %if.end
 
144
 
 
145
if.end:                                           ; preds = %if.then, %entry
 
146
  ret void
 
147
}
 
148
 
 
149
define void @t8(i32 %a) uwtable ssp {
 
150
entry:
 
151
; ARM: t8
 
152
; THUMB: t8
 
153
  %cmp = icmp eq i32 %a, -1
 
154
; ARM: cmn r{{[0-9]}}, #1
 
155
; THUMB: cmn.w r{{[0-9]}}, #1
 
156
  br i1 %cmp, label %if.then, label %if.end
 
157
 
 
158
if.then:                                          ; preds = %entry
 
159
  tail call void @foo()
 
160
  br label %if.end
 
161
 
 
162
if.end:                                           ; preds = %if.then, %entry
 
163
  ret void
 
164
}
 
165
 
 
166
define void @t9(i32 %a) uwtable ssp {
 
167
entry:
 
168
; ARM: t9
 
169
; THUMB: t9
 
170
  %cmp = icmp eq i32 %a, 1
 
171
; ARM: cmp r{{[0-9]}}, #1
 
172
; THUMB: cmp r{{[0-9]}}, #1
 
173
  br i1 %cmp, label %if.then, label %if.end
 
174
 
 
175
if.then:                                          ; preds = %entry
 
176
  tail call void @foo()
 
177
  br label %if.end
 
178
 
 
179
if.end:                                           ; preds = %if.then, %entry
 
180
  ret void
 
181
}
 
182
 
 
183
define void @t10(i32 %a) uwtable ssp {
 
184
entry:
 
185
; ARM: t10
 
186
; THUMB: t10
 
187
  %cmp = icmp eq i32 %a, 384
 
188
; ARM: cmp r{{[0-9]}}, #384
 
189
; THUMB: cmp.w r{{[0-9]}}, #384
 
190
  br i1 %cmp, label %if.then, label %if.end
 
191
 
 
192
if.then:                                          ; preds = %entry
 
193
  tail call void @foo()
 
194
  br label %if.end
 
195
 
 
196
if.end:                                           ; preds = %if.then, %entry
 
197
  ret void
 
198
}
 
199
 
 
200
define void @t11(i32 %a) uwtable ssp {
 
201
entry:
 
202
; ARM: t11
 
203
; THUMB: t11
 
204
  %cmp = icmp eq i32 %a, 4096
 
205
; ARM: cmp r{{[0-9]}}, #4096
 
206
; THUMB: cmp.w r{{[0-9]}}, #4096
 
207
  br i1 %cmp, label %if.then, label %if.end
 
208
 
 
209
if.then:                                          ; preds = %entry
 
210
  tail call void @foo()
 
211
  br label %if.end
 
212
 
 
213
if.end:                                           ; preds = %if.then, %entry
 
214
  ret void
 
215
}
 
216
 
 
217
define void @t12(i8 %a) uwtable ssp {
 
218
entry:
 
219
; ARM: t12
 
220
; THUMB: t12
 
221
  %cmp = icmp ugt i8 %a, -113
 
222
; ARM: cmp r{{[0-9]}}, #143
 
223
; THUMB: cmp r{{[0-9]}}, #143
 
224
  br i1 %cmp, label %if.then, label %if.end
 
225
 
 
226
if.then:                                          ; preds = %entry
 
227
  tail call void @foo()
 
228
  br label %if.end
 
229
 
 
230
if.end:                                           ; preds = %if.then, %entry
 
231
  ret void
 
232
}
 
233
 
 
234
; rdar://11038907
 
235
; When comparing LONG_MIN/INT_MIN use a cmp instruction.
 
236
define void @t13() nounwind ssp {
 
237
entry:
 
238
; ARM: t13
 
239
; THUMB: t13
 
240
  %cmp = icmp slt i32 -123, -2147483648
 
241
; ARM: cmp r{{[0-9]}}, #-2147483648
 
242
; THUMB: cmp.w r{{[0-9]}}, #-2147483648
 
243
  br i1 %cmp, label %if.then, label %if.end
 
244
 
 
245
if.then:                                          ; preds = %entry
 
246
  ret void
 
247
 
 
248
if.end:                                           ; preds = %entry
 
249
  ret void
 
250
}
 
251