1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=i686-- | FileCheck %s --check-prefixes=X86,SDAG-X86
3 ; RUN: llc < %s -mtriple=i686-- -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefixes=X86,FASTISEL-X86
4 ; RUN: llc < %s -mtriple=i686-- -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X86,GISEL-X86
5 ; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s --check-prefixes=X64,SDAG-X64
6 ; RUN: llc < %s -mtriple=x86_64-- -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefixes=X64,FASTISEL-X64
7 ; RUN: llc < %s -mtriple=x86_64-- -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X64,GISEL-X64
9 define i1 @xor_i1(i1 %a, i1 %b) {
10 ; SDAG-X86-LABEL: xor_i1:
12 ; SDAG-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax
13 ; SDAG-X86-NEXT: xorb {{[0-9]+}}(%esp), %al
16 ; FASTISEL-X86-LABEL: xor_i1:
17 ; FASTISEL-X86: # %bb.0:
18 ; FASTISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax
19 ; FASTISEL-X86-NEXT: xorb {{[0-9]+}}(%esp), %al
20 ; FASTISEL-X86-NEXT: retl
22 ; GISEL-X86-LABEL: xor_i1:
24 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
25 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
26 ; GISEL-X86-NEXT: xorb %cl, %al
27 ; GISEL-X86-NEXT: # kill: def $al killed $al killed $eax
28 ; GISEL-X86-NEXT: retl
30 ; SDAG-X64-LABEL: xor_i1:
32 ; SDAG-X64-NEXT: movl %edi, %eax
33 ; SDAG-X64-NEXT: xorl %esi, %eax
34 ; SDAG-X64-NEXT: # kill: def $al killed $al killed $eax
37 ; FASTISEL-X64-LABEL: xor_i1:
38 ; FASTISEL-X64: # %bb.0:
39 ; FASTISEL-X64-NEXT: movl %edi, %eax
40 ; FASTISEL-X64-NEXT: xorb %sil, %al
41 ; FASTISEL-X64-NEXT: # kill: def $al killed $al killed $eax
42 ; FASTISEL-X64-NEXT: retq
44 ; GISEL-X64-LABEL: xor_i1:
46 ; GISEL-X64-NEXT: movl %esi, %eax
47 ; GISEL-X64-NEXT: xorb %dil, %al
48 ; GISEL-X64-NEXT: # kill: def $al killed $al killed $eax
49 ; GISEL-X64-NEXT: retq
54 define i8 @xor_i8(i8 %a, i8 %b) {
55 ; SDAG-X86-LABEL: xor_i8:
57 ; SDAG-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax
58 ; SDAG-X86-NEXT: xorb {{[0-9]+}}(%esp), %al
61 ; FASTISEL-X86-LABEL: xor_i8:
62 ; FASTISEL-X86: # %bb.0:
63 ; FASTISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax
64 ; FASTISEL-X86-NEXT: xorb {{[0-9]+}}(%esp), %al
65 ; FASTISEL-X86-NEXT: retl
67 ; GISEL-X86-LABEL: xor_i8:
69 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
70 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
71 ; GISEL-X86-NEXT: xorb %cl, %al
72 ; GISEL-X86-NEXT: # kill: def $al killed $al killed $eax
73 ; GISEL-X86-NEXT: retl
75 ; SDAG-X64-LABEL: xor_i8:
77 ; SDAG-X64-NEXT: movl %edi, %eax
78 ; SDAG-X64-NEXT: xorl %esi, %eax
79 ; SDAG-X64-NEXT: # kill: def $al killed $al killed $eax
82 ; FASTISEL-X64-LABEL: xor_i8:
83 ; FASTISEL-X64: # %bb.0:
84 ; FASTISEL-X64-NEXT: movl %edi, %eax
85 ; FASTISEL-X64-NEXT: xorb %sil, %al
86 ; FASTISEL-X64-NEXT: # kill: def $al killed $al killed $eax
87 ; FASTISEL-X64-NEXT: retq
89 ; GISEL-X64-LABEL: xor_i8:
91 ; GISEL-X64-NEXT: movl %esi, %eax
92 ; GISEL-X64-NEXT: xorb %dil, %al
93 ; GISEL-X64-NEXT: # kill: def $al killed $al killed $eax
94 ; GISEL-X64-NEXT: retq
99 define i16 @xor_i16(i16 %a, i16 %b) {
100 ; SDAG-X86-LABEL: xor_i16:
102 ; SDAG-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax
103 ; SDAG-X86-NEXT: xorw {{[0-9]+}}(%esp), %ax
104 ; SDAG-X86-NEXT: retl
106 ; FASTISEL-X86-LABEL: xor_i16:
107 ; FASTISEL-X86: # %bb.0:
108 ; FASTISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax
109 ; FASTISEL-X86-NEXT: xorw {{[0-9]+}}(%esp), %ax
110 ; FASTISEL-X86-NEXT: retl
112 ; GISEL-X86-LABEL: xor_i16:
113 ; GISEL-X86: # %bb.0:
114 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
115 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
116 ; GISEL-X86-NEXT: xorw %cx, %ax
117 ; GISEL-X86-NEXT: # kill: def $ax killed $ax killed $eax
118 ; GISEL-X86-NEXT: retl
120 ; SDAG-X64-LABEL: xor_i16:
122 ; SDAG-X64-NEXT: movl %edi, %eax
123 ; SDAG-X64-NEXT: xorl %esi, %eax
124 ; SDAG-X64-NEXT: # kill: def $ax killed $ax killed $eax
125 ; SDAG-X64-NEXT: retq
127 ; FASTISEL-X64-LABEL: xor_i16:
128 ; FASTISEL-X64: # %bb.0:
129 ; FASTISEL-X64-NEXT: movl %edi, %eax
130 ; FASTISEL-X64-NEXT: xorw %si, %ax
131 ; FASTISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax
132 ; FASTISEL-X64-NEXT: retq
134 ; GISEL-X64-LABEL: xor_i16:
135 ; GISEL-X64: # %bb.0:
136 ; GISEL-X64-NEXT: movl %esi, %eax
137 ; GISEL-X64-NEXT: xorw %di, %ax
138 ; GISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax
139 ; GISEL-X64-NEXT: retq
144 define i32 @xor_i32(i32 %a, i32 %b) {
145 ; X86-LABEL: xor_i32:
147 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
148 ; X86-NEXT: xorl {{[0-9]+}}(%esp), %eax
151 ; SDAG-X64-LABEL: xor_i32:
153 ; SDAG-X64-NEXT: movl %edi, %eax
154 ; SDAG-X64-NEXT: xorl %esi, %eax
155 ; SDAG-X64-NEXT: retq
157 ; FASTISEL-X64-LABEL: xor_i32:
158 ; FASTISEL-X64: # %bb.0:
159 ; FASTISEL-X64-NEXT: movl %edi, %eax
160 ; FASTISEL-X64-NEXT: xorl %esi, %eax
161 ; FASTISEL-X64-NEXT: retq
163 ; GISEL-X64-LABEL: xor_i32:
164 ; GISEL-X64: # %bb.0:
165 ; GISEL-X64-NEXT: movl %esi, %eax
166 ; GISEL-X64-NEXT: xorl %edi, %eax
167 ; GISEL-X64-NEXT: retq
172 define i64 @xor_i64(i64 %a, i64 %b) nounwind {
173 ; SDAG-X86-LABEL: xor_i64:
175 ; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
176 ; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %edx
177 ; SDAG-X86-NEXT: xorl {{[0-9]+}}(%esp), %eax
178 ; SDAG-X86-NEXT: xorl {{[0-9]+}}(%esp), %edx
179 ; SDAG-X86-NEXT: retl
181 ; FASTISEL-X86-LABEL: xor_i64:
182 ; FASTISEL-X86: # %bb.0:
183 ; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx
184 ; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
185 ; FASTISEL-X86-NEXT: xorl {{[0-9]+}}(%esp), %eax
186 ; FASTISEL-X86-NEXT: xorl {{[0-9]+}}(%esp), %edx
187 ; FASTISEL-X86-NEXT: retl
189 ; GISEL-X86-LABEL: xor_i64:
190 ; GISEL-X86: # %bb.0:
191 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
192 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx
193 ; GISEL-X86-NEXT: xorl {{[0-9]+}}(%esp), %eax
194 ; GISEL-X86-NEXT: xorl {{[0-9]+}}(%esp), %edx
195 ; GISEL-X86-NEXT: retl
197 ; SDAG-X64-LABEL: xor_i64:
199 ; SDAG-X64-NEXT: movq %rdi, %rax
200 ; SDAG-X64-NEXT: xorq %rsi, %rax
201 ; SDAG-X64-NEXT: retq
203 ; FASTISEL-X64-LABEL: xor_i64:
204 ; FASTISEL-X64: # %bb.0:
205 ; FASTISEL-X64-NEXT: movq %rdi, %rax
206 ; FASTISEL-X64-NEXT: xorq %rsi, %rax
207 ; FASTISEL-X64-NEXT: retq
209 ; GISEL-X64-LABEL: xor_i64:
210 ; GISEL-X64: # %bb.0:
211 ; GISEL-X64-NEXT: movq %rsi, %rax
212 ; GISEL-X64-NEXT: xorq %rdi, %rax
213 ; GISEL-X64-NEXT: retq
218 define i8 @xor_imm8_i8(i8 %a) {
219 ; SDAG-X86-LABEL: xor_imm8_i8:
221 ; SDAG-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax
222 ; SDAG-X86-NEXT: xorb $1, %al
223 ; SDAG-X86-NEXT: retl
225 ; FASTISEL-X86-LABEL: xor_imm8_i8:
226 ; FASTISEL-X86: # %bb.0:
227 ; FASTISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax
228 ; FASTISEL-X86-NEXT: xorb $1, %al
229 ; FASTISEL-X86-NEXT: retl
231 ; GISEL-X86-LABEL: xor_imm8_i8:
232 ; GISEL-X86: # %bb.0:
233 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
234 ; GISEL-X86-NEXT: xorb $1, %al
235 ; GISEL-X86-NEXT: # kill: def $al killed $al killed $eax
236 ; GISEL-X86-NEXT: retl
238 ; X64-LABEL: xor_imm8_i8:
240 ; X64-NEXT: movl %edi, %eax
241 ; X64-NEXT: xorb $1, %al
242 ; X64-NEXT: # kill: def $al killed $al killed $eax
248 define i16 @xor_imm8_i16(i16 %a) {
249 ; SDAG-X86-LABEL: xor_imm8_i16:
251 ; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
252 ; SDAG-X86-NEXT: xorl $6, %eax
253 ; SDAG-X86-NEXT: # kill: def $ax killed $ax killed $eax
254 ; SDAG-X86-NEXT: retl
256 ; FASTISEL-X86-LABEL: xor_imm8_i16:
257 ; FASTISEL-X86: # %bb.0:
258 ; FASTISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax
259 ; FASTISEL-X86-NEXT: xorw $6, %ax
260 ; FASTISEL-X86-NEXT: retl
262 ; GISEL-X86-LABEL: xor_imm8_i16:
263 ; GISEL-X86: # %bb.0:
264 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
265 ; GISEL-X86-NEXT: xorw $6, %ax
266 ; GISEL-X86-NEXT: # kill: def $ax killed $ax killed $eax
267 ; GISEL-X86-NEXT: retl
269 ; SDAG-X64-LABEL: xor_imm8_i16:
271 ; SDAG-X64-NEXT: movl %edi, %eax
272 ; SDAG-X64-NEXT: xorl $6, %eax
273 ; SDAG-X64-NEXT: # kill: def $ax killed $ax killed $eax
274 ; SDAG-X64-NEXT: retq
276 ; FASTISEL-X64-LABEL: xor_imm8_i16:
277 ; FASTISEL-X64: # %bb.0:
278 ; FASTISEL-X64-NEXT: movl %edi, %eax
279 ; FASTISEL-X64-NEXT: xorw $6, %ax
280 ; FASTISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax
281 ; FASTISEL-X64-NEXT: retq
283 ; GISEL-X64-LABEL: xor_imm8_i16:
284 ; GISEL-X64: # %bb.0:
285 ; GISEL-X64-NEXT: movl %edi, %eax
286 ; GISEL-X64-NEXT: xorw $6, %ax
287 ; GISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax
288 ; GISEL-X64-NEXT: retq
293 define i32 @xor_imm8_i32(i32 %a) {
294 ; X86-LABEL: xor_imm8_i32:
296 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
297 ; X86-NEXT: xorl $-5, %eax
300 ; X64-LABEL: xor_imm8_i32:
302 ; X64-NEXT: movl %edi, %eax
303 ; X64-NEXT: xorl $-5, %eax
309 define i64 @xor_imm8_i64(i64 %a) {
310 ; SDAG-X86-LABEL: xor_imm8_i64:
312 ; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
313 ; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %edx
314 ; SDAG-X86-NEXT: xorl $1, %eax
315 ; SDAG-X86-NEXT: retl
317 ; FASTISEL-X86-LABEL: xor_imm8_i64:
318 ; FASTISEL-X86: # %bb.0:
319 ; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx
320 ; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
321 ; FASTISEL-X86-NEXT: xorl $1, %eax
322 ; FASTISEL-X86-NEXT: retl
324 ; GISEL-X86-LABEL: xor_imm8_i64:
325 ; GISEL-X86: # %bb.0:
326 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
327 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx
328 ; GISEL-X86-NEXT: xorl $1, %eax
329 ; GISEL-X86-NEXT: xorl $0, %edx
330 ; GISEL-X86-NEXT: retl
332 ; X64-LABEL: xor_imm8_i64:
334 ; X64-NEXT: movq %rdi, %rax
335 ; X64-NEXT: xorq $1, %rax
341 define i16 @xor_imm16_i16(i16 %a) {
342 ; SDAG-X86-LABEL: xor_imm16_i16:
344 ; SDAG-X86-NEXT: movl $1023, %eax # imm = 0x3FF
345 ; SDAG-X86-NEXT: xorl {{[0-9]+}}(%esp), %eax
346 ; SDAG-X86-NEXT: # kill: def $ax killed $ax killed $eax
347 ; SDAG-X86-NEXT: retl
349 ; FASTISEL-X86-LABEL: xor_imm16_i16:
350 ; FASTISEL-X86: # %bb.0:
351 ; FASTISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax
352 ; FASTISEL-X86-NEXT: xorw $1023, %ax # imm = 0x3FF
353 ; FASTISEL-X86-NEXT: retl
355 ; GISEL-X86-LABEL: xor_imm16_i16:
356 ; GISEL-X86: # %bb.0:
357 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
358 ; GISEL-X86-NEXT: xorw $1023, %ax # imm = 0x3FF
359 ; GISEL-X86-NEXT: # kill: def $ax killed $ax killed $eax
360 ; GISEL-X86-NEXT: retl
362 ; SDAG-X64-LABEL: xor_imm16_i16:
364 ; SDAG-X64-NEXT: movl %edi, %eax
365 ; SDAG-X64-NEXT: xorl $1023, %eax # imm = 0x3FF
366 ; SDAG-X64-NEXT: # kill: def $ax killed $ax killed $eax
367 ; SDAG-X64-NEXT: retq
369 ; FASTISEL-X64-LABEL: xor_imm16_i16:
370 ; FASTISEL-X64: # %bb.0:
371 ; FASTISEL-X64-NEXT: movl %edi, %eax
372 ; FASTISEL-X64-NEXT: xorw $1023, %ax # imm = 0x3FF
373 ; FASTISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax
374 ; FASTISEL-X64-NEXT: retq
376 ; GISEL-X64-LABEL: xor_imm16_i16:
377 ; GISEL-X64: # %bb.0:
378 ; GISEL-X64-NEXT: movl %edi, %eax
379 ; GISEL-X64-NEXT: xorw $1023, %ax # imm = 0x3FF
380 ; GISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax
381 ; GISEL-X64-NEXT: retq
382 %c = xor i16 %a, 1023
386 define i32 @xor_imm16_i32(i32 %a) {
387 ; SDAG-X86-LABEL: xor_imm16_i32:
389 ; SDAG-X86-NEXT: movl $2044, %eax # imm = 0x7FC
390 ; SDAG-X86-NEXT: xorl {{[0-9]+}}(%esp), %eax
391 ; SDAG-X86-NEXT: retl
393 ; FASTISEL-X86-LABEL: xor_imm16_i32:
394 ; FASTISEL-X86: # %bb.0:
395 ; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
396 ; FASTISEL-X86-NEXT: xorl $2044, %eax # imm = 0x7FC
397 ; FASTISEL-X86-NEXT: retl
399 ; GISEL-X86-LABEL: xor_imm16_i32:
400 ; GISEL-X86: # %bb.0:
401 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
402 ; GISEL-X86-NEXT: xorl $2044, %eax # imm = 0x7FC
403 ; GISEL-X86-NEXT: retl
405 ; X64-LABEL: xor_imm16_i32:
407 ; X64-NEXT: movl %edi, %eax
408 ; X64-NEXT: xorl $2044, %eax # imm = 0x7FC
410 %c = xor i32 %a, 2044
414 define i64 @xor_imm16_i64(i64 %a) {
415 ; SDAG-X86-LABEL: xor_imm16_i64:
417 ; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %edx
418 ; SDAG-X86-NEXT: movl $-5022, %eax # imm = 0xEC62
419 ; SDAG-X86-NEXT: xorl {{[0-9]+}}(%esp), %eax
420 ; SDAG-X86-NEXT: notl %edx
421 ; SDAG-X86-NEXT: retl
423 ; FASTISEL-X86-LABEL: xor_imm16_i64:
424 ; FASTISEL-X86: # %bb.0:
425 ; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx
426 ; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
427 ; FASTISEL-X86-NEXT: xorl $-5022, %eax # imm = 0xEC62
428 ; FASTISEL-X86-NEXT: notl %edx
429 ; FASTISEL-X86-NEXT: retl
431 ; GISEL-X86-LABEL: xor_imm16_i64:
432 ; GISEL-X86: # %bb.0:
433 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
434 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx
435 ; GISEL-X86-NEXT: xorl $-5022, %eax # imm = 0xEC62
436 ; GISEL-X86-NEXT: notl %edx
437 ; GISEL-X86-NEXT: retl
439 ; X64-LABEL: xor_imm16_i64:
441 ; X64-NEXT: movq %rdi, %rax
442 ; X64-NEXT: xorq $-5022, %rax # imm = 0xEC62
444 %c = xor i64 %a, -5022
448 define i32 @xor_imm32_i32(i32 %a) {
449 ; SDAG-X86-LABEL: xor_imm32_i32:
451 ; SDAG-X86-NEXT: movl $85538, %eax # imm = 0x14E22
452 ; SDAG-X86-NEXT: xorl {{[0-9]+}}(%esp), %eax
453 ; SDAG-X86-NEXT: retl
455 ; FASTISEL-X86-LABEL: xor_imm32_i32:
456 ; FASTISEL-X86: # %bb.0:
457 ; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
458 ; FASTISEL-X86-NEXT: xorl $85538, %eax # imm = 0x14E22
459 ; FASTISEL-X86-NEXT: retl
461 ; GISEL-X86-LABEL: xor_imm32_i32:
462 ; GISEL-X86: # %bb.0:
463 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
464 ; GISEL-X86-NEXT: xorl $85538, %eax # imm = 0x14E22
465 ; GISEL-X86-NEXT: retl
467 ; X64-LABEL: xor_imm32_i32:
469 ; X64-NEXT: movl %edi, %eax
470 ; X64-NEXT: xorl $85538, %eax # imm = 0x14E22
472 %c = xor i32 %a, 85538
476 define i64 @xor_imm32_i64(i64 %a) {
477 ; SDAG-X86-LABEL: xor_imm32_i64:
479 ; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %edx
480 ; SDAG-X86-NEXT: movl $-125778, %eax # imm = 0xFFFE14AE
481 ; SDAG-X86-NEXT: xorl {{[0-9]+}}(%esp), %eax
482 ; SDAG-X86-NEXT: notl %edx
483 ; SDAG-X86-NEXT: retl
485 ; FASTISEL-X86-LABEL: xor_imm32_i64:
486 ; FASTISEL-X86: # %bb.0:
487 ; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx
488 ; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
489 ; FASTISEL-X86-NEXT: xorl $-125778, %eax # imm = 0xFFFE14AE
490 ; FASTISEL-X86-NEXT: notl %edx
491 ; FASTISEL-X86-NEXT: retl
493 ; GISEL-X86-LABEL: xor_imm32_i64:
494 ; GISEL-X86: # %bb.0:
495 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
496 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx
497 ; GISEL-X86-NEXT: xorl $-125778, %eax # imm = 0xFFFE14AE
498 ; GISEL-X86-NEXT: notl %edx
499 ; GISEL-X86-NEXT: retl
501 ; X64-LABEL: xor_imm32_i64:
503 ; X64-NEXT: movq %rdi, %rax
504 ; X64-NEXT: xorq $-125778, %rax # imm = 0xFFFE14AE
506 %c = xor i64 %a, -125778
510 define i64 @xor_imm64_i64(i64 %a) {
511 ; SDAG-X86-LABEL: xor_imm64_i64:
513 ; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %edx
514 ; SDAG-X86-NEXT: movl $-1850691612, %eax # imm = 0x91B0AFE4
515 ; SDAG-X86-NEXT: xorl {{[0-9]+}}(%esp), %eax
516 ; SDAG-X86-NEXT: xorl $-2, %edx
517 ; SDAG-X86-NEXT: retl
519 ; FASTISEL-X86-LABEL: xor_imm64_i64:
520 ; FASTISEL-X86: # %bb.0:
521 ; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx
522 ; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
523 ; FASTISEL-X86-NEXT: xorl $-1850691612, %eax # imm = 0x91B0AFE4
524 ; FASTISEL-X86-NEXT: xorl $-2, %edx
525 ; FASTISEL-X86-NEXT: retl
527 ; GISEL-X86-LABEL: xor_imm64_i64:
528 ; GISEL-X86: # %bb.0:
529 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
530 ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx
531 ; GISEL-X86-NEXT: xorl $-1850691612, %eax # imm = 0x91B0AFE4
532 ; GISEL-X86-NEXT: xorl $-2, %edx
533 ; GISEL-X86-NEXT: retl
535 ; X64-LABEL: xor_imm64_i64:
537 ; X64-NEXT: movabsq $-6145658908, %rax # imm = 0xFFFFFFFE91B0AFE4
538 ; X64-NEXT: xorq %rdi, %rax
540 %c = xor i64 %a, -6145658908