]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/X86/xor-select-i1-combine.ll
Vendor import of llvm trunk r291274:
[FreeBSD/FreeBSD.git] / test / CodeGen / X86 / xor-select-i1-combine.ll
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ;RUN: llc < %s -O2 -mattr=+avx512f -mtriple=x86_64-unknown | FileCheck %s
3
4 @n = common global i32 0, align 4
5 @m = common global i32 0, align 4
6
7 define i32 @main(i8 %small) {
8 ; CHECK-LABEL: main:
9 ; CHECK:       # BB#0: # %entry
10 ; CHECK-NEXT:    movl $n, %eax
11 ; CHECK-NEXT:    movl $m, %ecx
12 ; CHECK-NEXT:    testb $1, %dil
13 ; CHECK-NEXT:    cmovneq %rax, %rcx
14 ; CHECK-NEXT:    movl (%rcx), %eax
15 ; CHECK-NEXT:    retq
16 entry:
17   %0 = and i8 %small, 1
18   %cmp = icmp eq i8 %0, 0
19   %m.n = select i1 %cmp, i32* @m, i32* @n
20   %retval = load volatile i32, i32* %m.n, align 4
21   ret i32 %retval
22 }
23
24
25 define i32 @main2(i8 %small) {
26 ; CHECK-LABEL: main2:
27 ; CHECK:       # BB#0: # %entry
28 ; CHECK-NEXT:    movl $m, %eax
29 ; CHECK-NEXT:    movl $n, %ecx
30 ; CHECK-NEXT:    testb $1, %dil
31 ; CHECK-NEXT:    cmovneq %rax, %rcx
32 ; CHECK-NEXT:    movl (%rcx), %eax
33 ; CHECK-NEXT:    retq
34 entry:
35   %0 = and i8 %small, 1
36   %cmp = icmp eq i8 %0, 1
37   %m.n = select i1 %cmp, i32* @m, i32* @n
38   %retval = load volatile i32, i32* %m.n, align 4
39   ret i32 %retval
40 }