| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | |
| ; RUN: llc < %s -fast-isel -mtriple=i686-unknown-unknown -O0 -mcpu=skx | FileCheck %s | |
| @c = external global i8, align 1 | |
| ; Function Attrs: noinline nounwind | |
| define void @_Z1av() { | |
| ; CHECK-LABEL: _Z1av: | |
| ; CHECK: # %bb.0: # %entry | |
| ; CHECK-NEXT: subl $2, %esp | |
| ; CHECK-NEXT: .cfi_def_cfa_offset 6 | |
| ; CHECK-NEXT: xorl %eax, %eax | |
| ; CHECK-NEXT: movb %al, %cl | |
| ; CHECK-NEXT: movb c, %dl | |
| ; CHECK-NEXT: xorb $-1, %dl | |
| ; CHECK-NEXT: testb $1, %dl | |
| ; CHECK-NEXT: movb %cl, (%esp) # 1-byte Spill | |
| ; CHECK-NEXT: jne .LBB0_1 | |
| ; CHECK-NEXT: jmp .LBB0_2 | |
| ; CHECK-NEXT: .LBB0_1: # %land.rhs | |
| ; CHECK-NEXT: xorl %eax, %eax | |
| ; CHECK-NEXT: movb %al, %cl | |
| ; CHECK-NEXT: movb %cl, (%esp) # 1-byte Spill | |
| ; CHECK-NEXT: jmp .LBB0_2 | |
| ; CHECK-NEXT: .LBB0_2: # %land.end | |
| ; CHECK-NEXT: movb (%esp), %al # 1-byte Reload | |
| ; CHECK-NEXT: andb $1, %al | |
| ; CHECK-NEXT: movb %al, {{[0-9]+}}(%esp) | |
| ; CHECK-NEXT: addl $2, %esp | |
| ; CHECK-NEXT: .cfi_def_cfa_offset 4 | |
| ; CHECK-NEXT: retl | |
| entry: | |
| %b = alloca i8, align 1 | |
| %0 = load i8, i8* @c, align 1 | |
| %tobool = trunc i8 %0 to i1 | |
| %lnot = xor i1 %tobool, true | |
| br i1 %lnot, label %land.rhs, label %land.end | |
| land.rhs: ; preds = %entry | |
| br label %land.end | |
| land.end: ; preds = %land.rhs, %entry | |
| %1 = phi i1 [ false, %entry ], [ false, %land.rhs ] | |
| %conv = zext i1 %1 to i8 | |
| store i8 %conv, i8* %b, align 1 | |
| ret void | |
| } |