~ubuntu-branches/ubuntu/quantal/llvm-3.1/quantal

« back to all changes in this revision

Viewing changes to test/CodeGen/MBlaze/fsl.ll

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2012-03-29 19:09:51 UTC
  • Revision ID: package-import@ubuntu.com-20120329190951-aq83ivog4cg8bxun
Tags: upstream-3.1~svn153643
ImportĀ upstreamĀ versionĀ 3.1~svn153643

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; Ensure that the FSL instrinsic instruction generate single FSL instructions
 
2
; at the machine level. Additionally, ensure that dynamic values use the
 
3
; dynamic version of the instructions and that constant values use the
 
4
; constant version of the instructions.
 
5
;
 
6
; RUN: llc -O3 < %s -march=mblaze | FileCheck %s
 
7
 
 
8
declare i32 @llvm.mblaze.fsl.get(i32 %port)
 
9
declare i32 @llvm.mblaze.fsl.aget(i32 %port)
 
10
declare i32 @llvm.mblaze.fsl.cget(i32 %port)
 
11
declare i32 @llvm.mblaze.fsl.caget(i32 %port)
 
12
declare i32 @llvm.mblaze.fsl.eget(i32 %port)
 
13
declare i32 @llvm.mblaze.fsl.eaget(i32 %port)
 
14
declare i32 @llvm.mblaze.fsl.ecget(i32 %port)
 
15
declare i32 @llvm.mblaze.fsl.ecaget(i32 %port)
 
16
declare i32 @llvm.mblaze.fsl.nget(i32 %port)
 
17
declare i32 @llvm.mblaze.fsl.naget(i32 %port)
 
18
declare i32 @llvm.mblaze.fsl.ncget(i32 %port)
 
19
declare i32 @llvm.mblaze.fsl.ncaget(i32 %port)
 
20
declare i32 @llvm.mblaze.fsl.neget(i32 %port)
 
21
declare i32 @llvm.mblaze.fsl.neaget(i32 %port)
 
22
declare i32 @llvm.mblaze.fsl.necget(i32 %port)
 
23
declare i32 @llvm.mblaze.fsl.necaget(i32 %port)
 
24
declare i32 @llvm.mblaze.fsl.tget(i32 %port)
 
25
declare i32 @llvm.mblaze.fsl.taget(i32 %port)
 
26
declare i32 @llvm.mblaze.fsl.tcget(i32 %port)
 
27
declare i32 @llvm.mblaze.fsl.tcaget(i32 %port)
 
28
declare i32 @llvm.mblaze.fsl.teget(i32 %port)
 
29
declare i32 @llvm.mblaze.fsl.teaget(i32 %port)
 
30
declare i32 @llvm.mblaze.fsl.tecget(i32 %port)
 
31
declare i32 @llvm.mblaze.fsl.tecaget(i32 %port)
 
32
declare i32 @llvm.mblaze.fsl.tnget(i32 %port)
 
33
declare i32 @llvm.mblaze.fsl.tnaget(i32 %port)
 
34
declare i32 @llvm.mblaze.fsl.tncget(i32 %port)
 
35
declare i32 @llvm.mblaze.fsl.tncaget(i32 %port)
 
36
declare i32 @llvm.mblaze.fsl.tneget(i32 %port)
 
37
declare i32 @llvm.mblaze.fsl.tneaget(i32 %port)
 
38
declare i32 @llvm.mblaze.fsl.tnecget(i32 %port)
 
39
declare i32 @llvm.mblaze.fsl.tnecaget(i32 %port)
 
40
 
 
41
declare void @llvm.mblaze.fsl.put(i32 %value, i32 %port)
 
42
declare void @llvm.mblaze.fsl.aput(i32 %value, i32 %port)
 
43
declare void @llvm.mblaze.fsl.cput(i32 %value, i32 %port)
 
44
declare void @llvm.mblaze.fsl.caput(i32 %value, i32 %port)
 
45
declare void @llvm.mblaze.fsl.nput(i32 %value, i32 %port)
 
46
declare void @llvm.mblaze.fsl.naput(i32 %value, i32 %port)
 
47
declare void @llvm.mblaze.fsl.ncput(i32 %value, i32 %port)
 
48
declare void @llvm.mblaze.fsl.ncaput(i32 %value, i32 %port)
 
49
declare void @llvm.mblaze.fsl.tput(i32 %port)
 
50
declare void @llvm.mblaze.fsl.taput(i32 %port)
 
51
declare void @llvm.mblaze.fsl.tcput(i32 %port)
 
52
declare void @llvm.mblaze.fsl.tcaput(i32 %port)
 
53
declare void @llvm.mblaze.fsl.tnput(i32 %port)
 
54
declare void @llvm.mblaze.fsl.tnaput(i32 %port)
 
55
declare void @llvm.mblaze.fsl.tncput(i32 %port)
 
56
declare void @llvm.mblaze.fsl.tncaput(i32 %port)
 
57
 
 
58
define void @fsl_get(i32 %port) {
 
59
    ; CHECK:        fsl_get:
 
60
    %v0  = call i32 @llvm.mblaze.fsl.get(i32 %port)
 
61
    ; CHECK:        getd
 
62
    %v1  = call i32 @llvm.mblaze.fsl.aget(i32 %port)
 
63
    ; CHECK-NEXT:   agetd
 
64
    %v2  = call i32 @llvm.mblaze.fsl.cget(i32 %port)
 
65
    ; CHECK-NEXT:   cgetd
 
66
    %v3  = call i32 @llvm.mblaze.fsl.caget(i32 %port)
 
67
    ; CHECK-NEXT:   cagetd
 
68
    %v4  = call i32 @llvm.mblaze.fsl.eget(i32 %port)
 
69
    ; CHECK-NEXT:   egetd
 
70
    %v5  = call i32 @llvm.mblaze.fsl.eaget(i32 %port)
 
71
    ; CHECK-NEXT:   eagetd
 
72
    %v6  = call i32 @llvm.mblaze.fsl.ecget(i32 %port)
 
73
    ; CHECK-NEXT:   ecgetd
 
74
    %v7  = call i32 @llvm.mblaze.fsl.ecaget(i32 %port)
 
75
    ; CHECK-NEXT:   ecagetd
 
76
    %v8  = call i32 @llvm.mblaze.fsl.nget(i32 %port)
 
77
    ; CHECK-NEXT:   ngetd
 
78
    %v9  = call i32 @llvm.mblaze.fsl.naget(i32 %port)
 
79
    ; CHECK-NEXT:   nagetd
 
80
    %v10 = call i32 @llvm.mblaze.fsl.ncget(i32 %port)
 
81
    ; CHECK-NEXT:   ncgetd
 
82
    %v11 = call i32 @llvm.mblaze.fsl.ncaget(i32 %port)
 
83
    ; CHECK-NEXT:   ncagetd
 
84
    %v12 = call i32 @llvm.mblaze.fsl.neget(i32 %port)
 
85
    ; CHECK-NEXT:   negetd
 
86
    %v13 = call i32 @llvm.mblaze.fsl.neaget(i32 %port)
 
87
    ; CHECK-NEXT:   neagetd
 
88
    %v14 = call i32 @llvm.mblaze.fsl.necget(i32 %port)
 
89
    ; CHECK-NEXT:   necgetd
 
90
    %v15 = call i32 @llvm.mblaze.fsl.necaget(i32 %port)
 
91
    ; CHECK-NEXT:   necagetd
 
92
    %v16 = call i32 @llvm.mblaze.fsl.tget(i32 %port)
 
93
    ; CHECK-NEXT:   tgetd
 
94
    %v17 = call i32 @llvm.mblaze.fsl.taget(i32 %port)
 
95
    ; CHECK-NEXT:   tagetd
 
96
    %v18 = call i32 @llvm.mblaze.fsl.tcget(i32 %port)
 
97
    ; CHECK-NEXT:   tcgetd
 
98
    %v19 = call i32 @llvm.mblaze.fsl.tcaget(i32 %port)
 
99
    ; CHECK-NEXT:   tcagetd
 
100
    %v20 = call i32 @llvm.mblaze.fsl.teget(i32 %port)
 
101
    ; CHECK-NEXT:   tegetd
 
102
    %v21 = call i32 @llvm.mblaze.fsl.teaget(i32 %port)
 
103
    ; CHECK-NEXT:   teagetd
 
104
    %v22 = call i32 @llvm.mblaze.fsl.tecget(i32 %port)
 
105
    ; CHECK-NEXT:   tecgetd
 
106
    %v23 = call i32 @llvm.mblaze.fsl.tecaget(i32 %port)
 
107
    ; CHECK-NEXT:   tecagetd
 
108
    %v24 = call i32 @llvm.mblaze.fsl.tnget(i32 %port)
 
109
    ; CHECK-NEXT:   tngetd
 
110
    %v25 = call i32 @llvm.mblaze.fsl.tnaget(i32 %port)
 
111
    ; CHECK-NEXT:   tnagetd
 
112
    %v26 = call i32 @llvm.mblaze.fsl.tncget(i32 %port)
 
113
    ; CHECK-NEXT:   tncgetd
 
114
    %v27 = call i32 @llvm.mblaze.fsl.tncaget(i32 %port)
 
115
    ; CHECK-NEXT:   tncagetd
 
116
    %v28 = call i32 @llvm.mblaze.fsl.tneget(i32 %port)
 
117
    ; CHECK-NEXT:   tnegetd
 
118
    %v29 = call i32 @llvm.mblaze.fsl.tneaget(i32 %port)
 
119
    ; CHECK-NEXT:   tneagetd
 
120
    %v30 = call i32 @llvm.mblaze.fsl.tnecget(i32 %port)
 
121
    ; CHECK-NEXT:   tnecgetd
 
122
    %v31 = call i32 @llvm.mblaze.fsl.tnecaget(i32 %port)
 
123
    ; CHECK-NEXT:   tnecagetd
 
124
    ret void
 
125
    ; CHECK:        rtsd
 
126
}
 
127
 
 
128
define void @fslc_get() {
 
129
    ; CHECK:        fslc_get:
 
130
    %v0  = call i32 @llvm.mblaze.fsl.get(i32 1)
 
131
    ; CHECK:        get
 
132
    %v1  = call i32 @llvm.mblaze.fsl.aget(i32 1)
 
133
    ; CHECK-NOT:    agetd
 
134
    ; CHECK:        aget
 
135
    %v2  = call i32 @llvm.mblaze.fsl.cget(i32 1)
 
136
    ; CHECK-NOT:    cgetd
 
137
    ; CHECK:        cget
 
138
    %v3  = call i32 @llvm.mblaze.fsl.caget(i32 1)
 
139
    ; CHECK-NOT:    cagetd
 
140
    ; CHECK:        caget
 
141
    %v4  = call i32 @llvm.mblaze.fsl.eget(i32 1)
 
142
    ; CHECK-NOT:    egetd
 
143
    ; CHECK:        eget
 
144
    %v5  = call i32 @llvm.mblaze.fsl.eaget(i32 1)
 
145
    ; CHECK-NOT:    eagetd
 
146
    ; CHECK:        eaget
 
147
    %v6  = call i32 @llvm.mblaze.fsl.ecget(i32 1)
 
148
    ; CHECK-NOT:    ecgetd
 
149
    ; CHECK:        ecget
 
150
    %v7  = call i32 @llvm.mblaze.fsl.ecaget(i32 1)
 
151
    ; CHECK-NOT:    ecagetd
 
152
    ; CHECK:        ecaget
 
153
    %v8  = call i32 @llvm.mblaze.fsl.nget(i32 1)
 
154
    ; CHECK-NOT:    ngetd
 
155
    ; CHECK:        nget
 
156
    %v9  = call i32 @llvm.mblaze.fsl.naget(i32 1)
 
157
    ; CHECK-NOT:    nagetd
 
158
    ; CHECK:        naget
 
159
    %v10 = call i32 @llvm.mblaze.fsl.ncget(i32 1)
 
160
    ; CHECK-NOT:    ncgetd
 
161
    ; CHECK:        ncget
 
162
    %v11 = call i32 @llvm.mblaze.fsl.ncaget(i32 1)
 
163
    ; CHECK-NOT:    ncagetd
 
164
    ; CHECK:        ncaget
 
165
    %v12 = call i32 @llvm.mblaze.fsl.neget(i32 1)
 
166
    ; CHECK-NOT:    negetd
 
167
    ; CHECK:        neget
 
168
    %v13 = call i32 @llvm.mblaze.fsl.neaget(i32 1)
 
169
    ; CHECK-NOT:    neagetd
 
170
    ; CHECK:        neaget
 
171
    %v14 = call i32 @llvm.mblaze.fsl.necget(i32 1)
 
172
    ; CHECK-NOT:    necgetd
 
173
    ; CHECK:        necget
 
174
    %v15 = call i32 @llvm.mblaze.fsl.necaget(i32 1)
 
175
    ; CHECK-NOT:    necagetd
 
176
    ; CHECK:        necaget
 
177
    %v16 = call i32 @llvm.mblaze.fsl.tget(i32 1)
 
178
    ; CHECK-NOT:    tgetd
 
179
    ; CHECK:        tget
 
180
    %v17 = call i32 @llvm.mblaze.fsl.taget(i32 1)
 
181
    ; CHECK-NOT:    tagetd
 
182
    ; CHECK:        taget
 
183
    %v18 = call i32 @llvm.mblaze.fsl.tcget(i32 1)
 
184
    ; CHECK-NOT:    tcgetd
 
185
    ; CHECK:        tcget
 
186
    %v19 = call i32 @llvm.mblaze.fsl.tcaget(i32 1)
 
187
    ; CHECK-NOT:    tcagetd
 
188
    ; CHECK:        tcaget
 
189
    %v20 = call i32 @llvm.mblaze.fsl.teget(i32 1)
 
190
    ; CHECK-NOT:    tegetd
 
191
    ; CHECK:        teget
 
192
    %v21 = call i32 @llvm.mblaze.fsl.teaget(i32 1)
 
193
    ; CHECK-NOT:    teagetd
 
194
    ; CHECK:        teaget
 
195
    %v22 = call i32 @llvm.mblaze.fsl.tecget(i32 1)
 
196
    ; CHECK-NOT:    tecgetd
 
197
    ; CHECK:        tecget
 
198
    %v23 = call i32 @llvm.mblaze.fsl.tecaget(i32 1)
 
199
    ; CHECK-NOT:    tecagetd
 
200
    ; CHECK:        tecaget
 
201
    %v24 = call i32 @llvm.mblaze.fsl.tnget(i32 1)
 
202
    ; CHECK-NOT:    tngetd
 
203
    ; CHECK:        tnget
 
204
    %v25 = call i32 @llvm.mblaze.fsl.tnaget(i32 1)
 
205
    ; CHECK-NOT:    tnagetd
 
206
    ; CHECK:        tnaget
 
207
    %v26 = call i32 @llvm.mblaze.fsl.tncget(i32 1)
 
208
    ; CHECK-NOT:    tncgetd
 
209
    ; CHECK:        tncget
 
210
    %v27 = call i32 @llvm.mblaze.fsl.tncaget(i32 1)
 
211
    ; CHECK-NOT:    tncagetd
 
212
    ; CHECK:        tncaget
 
213
    %v28 = call i32 @llvm.mblaze.fsl.tneget(i32 1)
 
214
    ; CHECK-NOT:    tnegetd
 
215
    ; CHECK:        tneget
 
216
    %v29 = call i32 @llvm.mblaze.fsl.tneaget(i32 1)
 
217
    ; CHECK-NOT:    tneagetd
 
218
    ; CHECK:        tneaget
 
219
    %v30 = call i32 @llvm.mblaze.fsl.tnecget(i32 1)
 
220
    ; CHECK-NOT:    tnecgetd
 
221
    ; CHECK:        tnecget
 
222
    %v31 = call i32 @llvm.mblaze.fsl.tnecaget(i32 1)
 
223
    ; CHECK-NOT:    tnecagetd
 
224
    ; CHECK:        tnecaget
 
225
    ret void
 
226
    ; CHECK:        rtsd
 
227
}
 
228
 
 
229
define void @putfsl(i32 %value, i32 %port) {
 
230
    ; CHECK:        putfsl:
 
231
    call void @llvm.mblaze.fsl.put(i32 %value, i32 %port)
 
232
    ; CHECK:        putd
 
233
    call void @llvm.mblaze.fsl.aput(i32 %value, i32 %port)
 
234
    ; CHECK-NEXT:   aputd
 
235
    call void @llvm.mblaze.fsl.cput(i32 %value, i32 %port)
 
236
    ; CHECK-NEXT:   cputd
 
237
    call void @llvm.mblaze.fsl.caput(i32 %value, i32 %port)
 
238
    ; CHECK-NEXT:   caputd
 
239
    call void @llvm.mblaze.fsl.nput(i32 %value, i32 %port)
 
240
    ; CHECK-NEXT:   nputd
 
241
    call void @llvm.mblaze.fsl.naput(i32 %value, i32 %port)
 
242
    ; CHECK-NEXT:   naputd
 
243
    call void @llvm.mblaze.fsl.ncput(i32 %value, i32 %port)
 
244
    ; CHECK-NEXT:   ncputd
 
245
    call void @llvm.mblaze.fsl.ncaput(i32 %value, i32 %port)
 
246
    ; CHECK-NEXT:   ncaputd
 
247
    call void @llvm.mblaze.fsl.tput(i32 %port)
 
248
    ; CHECK-NEXT:   tputd
 
249
    call void @llvm.mblaze.fsl.taput(i32 %port)
 
250
    ; CHECK-NEXT:   taputd
 
251
    call void @llvm.mblaze.fsl.tcput(i32 %port)
 
252
    ; CHECK-NEXT:   tcputd
 
253
    call void @llvm.mblaze.fsl.tcaput(i32 %port)
 
254
    ; CHECK-NEXT:   tcaputd
 
255
    call void @llvm.mblaze.fsl.tnput(i32 %port)
 
256
    ; CHECK-NEXT:   tnputd
 
257
    call void @llvm.mblaze.fsl.tnaput(i32 %port)
 
258
    ; CHECK-NEXT:   tnaputd
 
259
    call void @llvm.mblaze.fsl.tncput(i32 %port)
 
260
    ; CHECK-NEXT:   tncputd
 
261
    call void @llvm.mblaze.fsl.tncaput(i32 %port)
 
262
    ; CHECK-NEXT:   tncaputd
 
263
    ret void
 
264
    ; CHECK:        rtsd
 
265
}
 
266
 
 
267
define void @putfsl_const(i32 %value) {
 
268
    ; CHECK:        putfsl_const:
 
269
    call void @llvm.mblaze.fsl.put(i32 %value, i32 1)
 
270
    ; CHECK-NOT:    putd
 
271
    ; CHECK:        put
 
272
    call void @llvm.mblaze.fsl.aput(i32 %value, i32 1)
 
273
    ; CHECK-NOT:    aputd
 
274
    ; CHECK:        aput
 
275
    call void @llvm.mblaze.fsl.cput(i32 %value, i32 1)
 
276
    ; CHECK-NOT:    cputd
 
277
    ; CHECK:        cput
 
278
    call void @llvm.mblaze.fsl.caput(i32 %value, i32 1)
 
279
    ; CHECK-NOT:    caputd
 
280
    ; CHECK:        caput
 
281
    call void @llvm.mblaze.fsl.nput(i32 %value, i32 1)
 
282
    ; CHECK-NOT:    nputd
 
283
    ; CHECK:        nput
 
284
    call void @llvm.mblaze.fsl.naput(i32 %value, i32 1)
 
285
    ; CHECK-NOT:    naputd
 
286
    ; CHECK:        naput
 
287
    call void @llvm.mblaze.fsl.ncput(i32 %value, i32 1)
 
288
    ; CHECK-NOT:    ncputd
 
289
    ; CHECK:        ncput
 
290
    call void @llvm.mblaze.fsl.ncaput(i32 %value, i32 1)
 
291
    ; CHECK-NOT:    ncaputd
 
292
    ; CHECK:        ncaput
 
293
    call void @llvm.mblaze.fsl.tput(i32 1)
 
294
    ; CHECK-NOT:    tputd
 
295
    ; CHECK:        tput
 
296
    call void @llvm.mblaze.fsl.taput(i32 1)
 
297
    ; CHECK-NOT:    taputd
 
298
    ; CHECK:        taput
 
299
    call void @llvm.mblaze.fsl.tcput(i32 1)
 
300
    ; CHECK-NOT:    tcputd
 
301
    ; CHECK:        tcput
 
302
    call void @llvm.mblaze.fsl.tcaput(i32 1)
 
303
    ; CHECK-NOT:    tcaputd
 
304
    ; CHECK:        tcaput
 
305
    call void @llvm.mblaze.fsl.tnput(i32 1)
 
306
    ; CHECK-NOT:    tnputd
 
307
    ; CHECK:        tnput
 
308
    call void @llvm.mblaze.fsl.tnaput(i32 1)
 
309
    ; CHECK-NOT:    tnaputd
 
310
    ; CHECK:        tnaput
 
311
    call void @llvm.mblaze.fsl.tncput(i32 1)
 
312
    ; CHECK-NOT:    tncputd
 
313
    ; CHECK:        tncput
 
314
    call void @llvm.mblaze.fsl.tncaput(i32 1)
 
315
    ; CHECK-NOT:    tncaputd
 
316
    ; CHECK:        tncaput
 
317
    ret void
 
318
    ; CHECK:        rtsd
 
319
}