| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
| ;RUN: llc < %s -O2 -mattr=+avx512f -mtriple=x86_64-unknown | FileCheck %s |
| |
| @n = common global i32 0, align 4 |
| @m = common global i32 0, align 4 |
| |
| define i32 @main(i8 %small) { |
| ; CHECK-LABEL: main: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: testb $1, %dil |
| ; CHECK-NEXT: movl $m, %eax |
| ; CHECK-NEXT: movl $n, %ecx |
| ; CHECK-NEXT: cmoveq %rax, %rcx |
| ; CHECK-NEXT: movl (%rcx), %eax |
| ; CHECK-NEXT: retq |
| entry: |
| %0 = and i8 %small, 1 |
| %cmp = icmp eq i8 %0, 0 |
| %m.n = select i1 %cmp, i32* @m, i32* @n |
| %retval = load volatile i32, i32* %m.n, align 4 |
| ret i32 %retval |
| } |
| |
| |
| define i32 @main2(i8 %small) { |
| ; CHECK-LABEL: main2: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: movl $m, %eax |
| ; CHECK-NEXT: movl $n, %ecx |
| ; CHECK-NEXT: testb $1, %dil |
| ; CHECK-NEXT: cmovneq %rax, %rcx |
| ; CHECK-NEXT: movl (%rcx), %eax |
| ; CHECK-NEXT: retq |
| entry: |
| %0 = and i8 %small, 1 |
| %cmp = icmp eq i8 %0, 1 |
| %m.n = select i1 %cmp, i32* @m, i32* @n |
| %retval = load volatile i32, i32* %m.n, align 4 |
| ret i32 %retval |
| } |