; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -mtriple=x86_64 -mattr=+zu | FileCheck %s define i16 @i8(i8 %x) nounwind { ; CHECK-LABEL: i8: ; CHECK: # %bb.0: ; CHECK-NEXT: cmpb $3, %dil ; CHECK-NEXT: setzuae %al ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax ; CHECK-NEXT: retq %t0 = icmp ugt i8 %x, 2 %zext = zext i1 %t0 to i16 ret i16 %zext } define i16 @i16(i16 %x) nounwind { ; CHECK-LABEL: i16: ; CHECK: # %bb.0: ; CHECK-NEXT: cmpw $2, %di ; CHECK-NEXT: setzub %al ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax ; CHECK-NEXT: retq %t0 = icmp ult i16 %x, 2 %if = select i1 %t0, i16 1, i16 0 ret i16 %if } define i32 @i32(i32 %x) nounwind { ; CHECK-LABEL: i32: ; CHECK: # %bb.0: ; CHECK-NEXT: cmpl $1, %edi ; CHECK-NEXT: setzue %al ; CHECK-NEXT: retq %t0 = icmp eq i32 %x, 1 %if = select i1 %t0, i32 1, i32 0 ret i32 %if } define i64 @i64(i64 %x) nounwind { ; CHECK-LABEL: i64: ; CHECK: # %bb.0: ; CHECK-NEXT: cmpq $1, %rdi ; CHECK-NEXT: setzune %al ; CHECK-NEXT: retq %t0 = icmp ne i64 %x, 1 %if = select i1 %t0, i64 1, i64 0 ret i64 %if } define i32 @flags_copy_lowering() nounwind { ; CHECK-LABEL: flags_copy_lowering: ; CHECK: # %bb.0: # %bb ; CHECK-NEXT: xorl %eax, %eax ; CHECK-NEXT: xorl %edx, %edx ; CHECK-NEXT: xorl %ecx, %ecx ; CHECK-NEXT: .p2align 4 ; CHECK-NEXT: .LBB4_1: # %bb1 ; CHECK-NEXT: # =>This Inner Loop Header: Depth=1 ; CHECK-NEXT: addl %edx, 0 ; CHECK-NEXT: setb %sil ; CHECK-NEXT: adcl $0, %ecx ; CHECK-NEXT: testb %sil, %sil ; CHECK-NEXT: je .LBB4_3 ; CHECK-NEXT: # %bb.2: # %bb1 ; CHECK-NEXT: # in Loop: Header=BB4_1 Depth=1 ; CHECK-NEXT: xorl %edx, %edx ; CHECK-NEXT: movb %sil, %dl ; CHECK-NEXT: testb %al, %al ; CHECK-NEXT: jne .LBB4_1 ; CHECK-NEXT: .LBB4_3: # %bb2 ; CHECK-NEXT: xorl %eax, %eax ; CHECK-NEXT: retq bb: br label %bb1 bb1: %phi = phi i32 [ 0, %bb ], [ %zext, %bb1 ] %phi2 = phi i32 [ 0, %bb ], [ %add3, %bb1 ] %load = load i32, ptr null, align 4 %add = add i32 %load, %phi store i32 %add, ptr null, align 4 %icmp = icmp ugt i32 %phi, %add %zext = zext i1 %icmp to i32 %add3 = add i32 %phi2, %zext %icmp4 = icmp ult i32 %phi2, 0 %and = and i1 %icmp, false br i1 %and, label %bb1, label %bb2 bb2: ret i32 0 }