1*9880d681SAndroid Build Coastguard Worker; RUN: llc -o - -O0 < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 3*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-unknown-linux-gnu" 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine void @test1(i32 %x) #0 { 6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test1: 7*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: # %entry 8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pushq %rax 9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: testl %edi, %edi 10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: setne %al 11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movb %al, %cl 12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %ecx, %k0 13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %k0, %eax 14*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andb $1, %al 15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movzbl %al, %edi 16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: callq callee1 17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: popq %rax 18*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 19*9880d681SAndroid Build Coastguard Workerentry: 20*9880d681SAndroid Build Coastguard Worker %tobool = icmp ne i32 %x, 0 21*9880d681SAndroid Build Coastguard Worker call void @callee1(i1 zeroext %tobool) 22*9880d681SAndroid Build Coastguard Worker ret void 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerdefine void @test2(i32 %x) #0 { 26*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test2: 27*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: # %entry 28*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pushq %rax 29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: testl %edi, %edi 30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: setne %al 31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movb %al, %cl 32*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %ecx, %k0 33*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %ecx 34*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movb %cl, %al 35*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xorl %edi, %edi 36*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: testb %al, %al 37*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl $-1, %edx 38*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmovnel %edx, %edi 39*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: callq callee2 40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: popq %rax 41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 42*9880d681SAndroid Build Coastguard Workerentry: 43*9880d681SAndroid Build Coastguard Worker %tobool = icmp ne i32 %x, 0 44*9880d681SAndroid Build Coastguard Worker call void @callee2(i1 signext %tobool) 45*9880d681SAndroid Build Coastguard Worker ret void 46*9880d681SAndroid Build Coastguard Worker} 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Workerdeclare void @callee1(i1 zeroext) 49*9880d681SAndroid Build Coastguard Workerdeclare void @callee2(i1 signext) 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind "target-cpu"="skylake-avx512" } 52