5
5
; RUN: -mips-fast-isel -relocation-model=pic -fast-isel-abort=1 < %s | \
6
6
; RUN: FileCheck %s -check-prefix=ALL -check-prefix=32R2
7
7
8
+ declare void @xb (i8 )
9
+
10
+ define void @cxb () {
11
+ ; ALL-LABEL: cxb:
12
+
13
+ ; ALL: addiu $[[T0:[0-9]+]], $zero, 10
14
+
15
+ ; 32R1: sll $[[T1:[0-9]+]], $[[T0]], 24
16
+ ; 32R1: sra $4, $[[T1]], 24
17
+
18
+ ; 32R2: seb $4, $[[T0]]
19
+ call void @xb (i8 10 )
20
+ ret void
21
+ }
22
+
23
+ declare void @xh (i16 )
24
+
25
+ define void @cxh () {
26
+ ; ALL-LABEL: cxh:
27
+
28
+ ; ALL: addiu $[[T0:[0-9]+]], $zero, 10
29
+
30
+ ; 32R1: sll $[[T1:[0-9]+]], $[[T0]], 16
31
+ ; 32R1: sra $4, $[[T1]], 16
32
+
33
+ ; 32R2: seh $4, $[[T0]]
34
+ call void @xh (i16 10 )
35
+ ret void
36
+ }
37
+
8
38
declare void @xi (i32 )
9
39
10
40
define void @cxi () {
@@ -17,6 +47,44 @@ define void @cxi() {
17
47
ret void
18
48
}
19
49
50
+ declare void @xbb (i8 , i8 )
51
+
52
+ define void @cxbb () {
53
+ ; ALL-LABEL: cxbb:
54
+
55
+ ; ALL-DAG: addiu $[[T0:[0-9]+]], $zero, 76
56
+ ; ALL-DAG: addiu $[[T1:[0-9]+]], $zero, 101
57
+
58
+ ; 32R1-DAG: sll $[[T2:[0-9]+]], $[[T0]], 24
59
+ ; 32R1-DAG: sra $[[T3:[0-9]+]], $[[T2]], 24
60
+ ; 32R1-DAG: sll $[[T4:[0-9]+]], $[[T1]], 24
61
+ ; 32R1-DAG: sra $[[T5:[0-9]+]], $[[T4]], 24
62
+
63
+ ; 32R2-DAG: seb $4, $[[T0]]
64
+ ; 32R2-DAG: seb $5, $[[T1]]
65
+ call void @xbb (i8 76 , i8 101 )
66
+ ret void
67
+ }
68
+
69
+ declare void @xhh (i16 , i16 )
70
+
71
+ define void @cxhh () {
72
+ ; ALL-LABEL: cxhh:
73
+
74
+ ; ALL-DAG: addiu $[[T0:[0-9]+]], $zero, 76
75
+ ; ALL-DAG: addiu $[[T1:[0-9]+]], $zero, 101
76
+
77
+ ; 32R1-DAG: sll $[[T2:[0-9]+]], $[[T0]], 16
78
+ ; 32R1-DAG: sra $[[T3:[0-9]+]], $[[T2]], 16
79
+ ; 32R1-DAG: sll $[[T4:[0-9]+]], $[[T1]], 16
80
+ ; 32R1-DAG: sra $[[T5:[0-9]+]], $[[T4]], 16
81
+
82
+ ; 32R2-DAG: seh $4, $[[T0]]
83
+ ; 32R2-DAG: seh $5, $[[T1]]
84
+ call void @xhh (i16 76 , i16 101 )
85
+ ret void
86
+ }
87
+
20
88
declare void @xii (i32 , i32 )
21
89
22
90
define void @cxii () {
@@ -30,6 +98,52 @@ define void @cxii() {
30
98
ret void
31
99
}
32
100
101
+ declare void @xccc (i8 , i8 , i8 )
102
+
103
+ define void @cxccc () {
104
+ ; ALL-LABEL: cxccc:
105
+
106
+ ; ALL-DAG: addiu $[[T0:[0-9]+]], $zero, 88
107
+ ; ALL-DAG: addiu $[[T1:[0-9]+]], $zero, 44
108
+ ; ALL-DAG: addiu $[[T2:[0-9]+]], $zero, 11
109
+
110
+ ; 32R1-DAG: sll $[[T3:[0-9]+]], $[[T0]], 24
111
+ ; 32R1-DAG: sra $4, $[[T3]], 24
112
+ ; 32R1-DAG: sll $[[T4:[0-9]+]], $[[T1]], 24
113
+ ; 32R1-DAG: sra $5, $[[T4]], 24
114
+ ; 32R1-DAG: sll $[[T5:[0-9]+]], $[[T2]], 24
115
+ ; 32R1-DAG: sra $6, $[[T5]], 24
116
+
117
+ ; 32R2-DAG: seb $4, $[[T0]]
118
+ ; 32R2-DAG: seb $5, $[[T1]]
119
+ ; 32R2-DAG: seb $6, $[[T2]]
120
+ call void @xccc (i8 88 , i8 44 , i8 11 )
121
+ ret void
122
+ }
123
+
124
+ declare void @xhhh (i16 , i16 , i16 )
125
+
126
+ define void @cxhhh () {
127
+ ; ALL-LABEL: cxhhh:
128
+
129
+ ; ALL-DAG: addiu $[[T0:[0-9]+]], $zero, 88
130
+ ; ALL-DAG: addiu $[[T1:[0-9]+]], $zero, 44
131
+ ; ALL-DAG: addiu $[[T2:[0-9]+]], $zero, 11
132
+
133
+ ; 32R1-DAG: sll $[[T3:[0-9]+]], $[[T0]], 16
134
+ ; 32R1-DAG: sra $4, $[[T3]], 16
135
+ ; 32R1-DAG: sll $[[T4:[0-9]+]], $[[T1]], 16
136
+ ; 32R1-DAG: sra $5, $[[T4]], 16
137
+ ; 32R1-DAG: sll $[[T5:[0-9]+]], $[[T2]], 16
138
+ ; 32R1-DAG: sra $6, $[[T5]], 16
139
+
140
+ ; 32R2-DAG: seh $4, $[[T0]]
141
+ ; 32R2-DAG: seh $5, $[[T1]]
142
+ ; 32R2-DAG: seh $6, $[[T2]]
143
+ call void @xhhh (i16 88 , i16 44 , i16 11 )
144
+ ret void
145
+ }
146
+
33
147
declare void @xiii (i32 , i32 , i32 )
34
148
35
149
define void @cxiii () {
@@ -44,6 +158,76 @@ define void @cxiii() {
44
158
ret void
45
159
}
46
160
161
+ declare void @xcccc (i8 , i8 , i8 , i8 )
162
+
163
+ define void @cxcccc () {
164
+ ; ALL-LABEL: cxcccc:
165
+
166
+ ; ALL-DAG: addiu $[[T0:[0-9]+]], $zero, 88
167
+ ; ALL-DAG: addiu $[[T1:[0-9]+]], $zero, 44
168
+ ; ALL-DAG: addiu $[[T2:[0-9]+]], $zero, 11
169
+ ; ALL-DAG: addiu $[[T3:[0-9]+]], $zero, 33
170
+
171
+ ; FIXME: We should avoid the unnecessary spill/reload here.
172
+
173
+ ; 32R1-DAG: sll $[[T4:[0-9]+]], $[[T0]], 24
174
+ ; 32R1-DAG: sra $[[T5:[0-9]+]], $[[T4]], 24
175
+ ; 32R1-DAG: sw $4, 16($sp)
176
+ ; 32R1-DAG: move $4, $[[T5]]
177
+ ; 32R1-DAG: sll $[[T6:[0-9]+]], $[[T1]], 24
178
+ ; 32R1-DAG: sra $5, $[[T6]], 24
179
+ ; 32R1-DAG: sll $[[T7:[0-9]+]], $[[T2]], 24
180
+ ; 32R1-DAG: sra $6, $[[T7]], 24
181
+ ; 32R1: lw $[[T8:[0-9]+]], 16($sp)
182
+ ; 32R1: sll $[[T9:[0-9]+]], $[[T8]], 24
183
+ ; 32R1: sra $7, $[[T9]], 24
184
+
185
+ ; 32R2-DAG: seb $[[T4:[0-9]+]], $[[T0]]
186
+ ; 32R2-DAG: sw $4, 16($sp)
187
+ ; 32R2-DAG: move $4, $[[T4]]
188
+ ; 32R2-DAG: seb $5, $[[T1]]
189
+ ; 32R2-DAG: seb $6, $[[T2]]
190
+ ; 32R2-DAG: lw $[[T5:[0-9]+]], 16($sp)
191
+ ; 32R2: seb $7, $[[T5]]
192
+ call void @xcccc (i8 88 , i8 44 , i8 11 , i8 33 )
193
+ ret void
194
+ }
195
+
196
+ declare void @xhhhh (i16 , i16 , i16 , i16 )
197
+
198
+ define void @cxhhhh () {
199
+ ; ALL-LABEL: cxhhhh:
200
+
201
+ ; ALL-DAG: addiu $[[T0:[0-9]+]], $zero, 88
202
+ ; ALL-DAG: addiu $[[T1:[0-9]+]], $zero, 44
203
+ ; ALL-DAG: addiu $[[T2:[0-9]+]], $zero, 11
204
+ ; ALL-DAG: addiu $[[T3:[0-9]+]], $zero, 33
205
+
206
+ ; FIXME: We should avoid the unnecessary spill/reload here.
207
+
208
+ ; 32R1-DAG: sll $[[T4:[0-9]+]], $[[T0]], 16
209
+ ; 32R1-DAG: sra $[[T5:[0-9]+]], $[[T4]], 16
210
+ ; 32R1-DAG: sw $4, 16($sp)
211
+ ; 32R1-DAG: move $4, $[[T5]]
212
+ ; 32R1-DAG: sll $[[T6:[0-9]+]], $[[T1]], 16
213
+ ; 32R1-DAG: sra $5, $[[T6]], 16
214
+ ; 32R1-DAG: sll $[[T7:[0-9]+]], $[[T2]], 16
215
+ ; 32R1-DAG: sra $6, $[[T7]], 16
216
+ ; 32R1: lw $[[T8:[0-9]+]], 16($sp)
217
+ ; 32R1: sll $[[T9:[0-9]+]], $[[T8]], 16
218
+ ; 32R1: sra $7, $[[T9]], 16
219
+
220
+ ; 32R2-DAG: seh $[[T4:[0-9]+]], $[[T0]]
221
+ ; 32R2-DAG: sw $4, 16($sp)
222
+ ; 32R2-DAG: move $4, $[[T4]]
223
+ ; 32R2-DAG: seh $5, $[[T1]]
224
+ ; 32R2-DAG: seh $6, $[[T2]]
225
+ ; 32R2-DAG: lw $[[T5:[0-9]+]], 16($sp)
226
+ ; 32R2: seh $7, $[[T5]]
227
+ call void @xhhhh (i16 88 , i16 44 , i16 11 , i16 33 )
228
+ ret void
229
+ }
230
+
47
231
declare void @xiiii (i32 , i32 , i32 , i32 )
48
232
49
233
define void @cxiiii () {
0 commit comments