brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.1 KiB · 8a726a4 Raw
550 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O0 -mtriple=x86_64-unknown -mcpu=skx -o - %s | FileCheck %s --check-prefix=X64-O03; RUN: llc     -mtriple=x86_64-unknown -mcpu=skx -o - %s | FileCheck %s --check-prefix=X644; RUN: llc -O0 -mtriple=i686-unknown   -mcpu=skx -o - %s | FileCheck %s --check-prefix=X86-O05; RUN: llc     -mtriple=i686-unknown   -mcpu=skx -o - %s | FileCheck %s --check-prefix=X866 7@c = external dso_local constant i8, align 18 9define void @foo() {10; X64-O0-LABEL: foo:11; X64-O0:       # %bb.0: # %entry12; X64-O0-NEXT:    movzbl c, %ecx13; X64-O0-NEXT:    xorl %eax, %eax14; X64-O0-NEXT:    subl %ecx, %eax15; X64-O0-NEXT:    movslq %eax, %rcx16; X64-O0-NEXT:    xorl %eax, %eax17; X64-O0-NEXT:    # kill: def $rax killed $eax18; X64-O0-NEXT:    subq %rcx, %rax19; X64-O0-NEXT:    # kill: def $al killed $al killed $rax20; X64-O0-NEXT:    cmpb $0, %al21; X64-O0-NEXT:    setne %al22; X64-O0-NEXT:    andb $1, %al23; X64-O0-NEXT:    movb %al, -{{[0-9]+}}(%rsp)24; X64-O0-NEXT:    cmpb $0, c25; X64-O0-NEXT:    setne %al26; X64-O0-NEXT:    xorb $-1, %al27; X64-O0-NEXT:    xorb $-1, %al28; X64-O0-NEXT:    andb $1, %al29; X64-O0-NEXT:    movzbl %al, %eax30; X64-O0-NEXT:    movzbl c, %ecx31; X64-O0-NEXT:    cmpl %ecx, %eax32; X64-O0-NEXT:    setle %al33; X64-O0-NEXT:    andb $1, %al34; X64-O0-NEXT:    movzbl %al, %eax35; X64-O0-NEXT:    movl %eax, -{{[0-9]+}}(%rsp)36; X64-O0-NEXT:    retq37;38; X64-LABEL: foo:39; X64:       # %bb.0: # %entry40; X64-NEXT:    movzbl c(%rip), %eax41; X64-NEXT:    xorl %ecx, %ecx42; X64-NEXT:    testl %eax, %eax43; X64-NEXT:    setne -{{[0-9]+}}(%rsp)44; X64-NEXT:    setne %cl45; X64-NEXT:    xorl %edx, %edx46; X64-NEXT:    cmpl %eax, %ecx47; X64-NEXT:    setle %dl48; X64-NEXT:    movl %edx, -{{[0-9]+}}(%rsp)49; X64-NEXT:    retq50;51; X86-O0-LABEL: foo:52; X86-O0:       # %bb.0: # %entry53; X86-O0-NEXT:    subl $8, %esp54; X86-O0-NEXT:    .cfi_def_cfa_offset 1255; X86-O0-NEXT:    movb c, %al56; X86-O0-NEXT:    cmpb $0, %al57; X86-O0-NEXT:    setne %al58; X86-O0-NEXT:    andb $1, %al59; X86-O0-NEXT:    movb %al, {{[0-9]+}}(%esp)60; X86-O0-NEXT:    cmpb $0, c61; X86-O0-NEXT:    setne %al62; X86-O0-NEXT:    xorb $-1, %al63; X86-O0-NEXT:    xorb $-1, %al64; X86-O0-NEXT:    andb $1, %al65; X86-O0-NEXT:    movzbl %al, %eax66; X86-O0-NEXT:    movzbl c, %ecx67; X86-O0-NEXT:    cmpl %ecx, %eax68; X86-O0-NEXT:    setle %al69; X86-O0-NEXT:    andb $1, %al70; X86-O0-NEXT:    movzbl %al, %eax71; X86-O0-NEXT:    movl %eax, (%esp)72; X86-O0-NEXT:    addl $8, %esp73; X86-O0-NEXT:    .cfi_def_cfa_offset 474; X86-O0-NEXT:    retl75;76; X86-LABEL: foo:77; X86:       # %bb.0: # %entry78; X86-NEXT:    subl $8, %esp79; X86-NEXT:    .cfi_def_cfa_offset 1280; X86-NEXT:    movzbl c, %eax81; X86-NEXT:    xorl %ecx, %ecx82; X86-NEXT:    testl %eax, %eax83; X86-NEXT:    setne {{[0-9]+}}(%esp)84; X86-NEXT:    setne %cl85; X86-NEXT:    xorl %edx, %edx86; X86-NEXT:    cmpl %eax, %ecx87; X86-NEXT:    setle %dl88; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)89; X86-NEXT:    addl $8, %esp90; X86-NEXT:    .cfi_def_cfa_offset 491; X86-NEXT:    retl92entry:93  %a = alloca i8, align 194  %b = alloca i32, align 495  %0 = load i8, ptr @c, align 196  %conv = zext i8 %0 to i3297  %sub = sub nsw i32 0, %conv98  %conv1 = sext i32 %sub to i6499  %sub2 = sub nsw i64 0, %conv1100  %conv3 = trunc i64 %sub2 to i8101  %tobool = icmp ne i8 %conv3, 0102  %frombool = zext i1 %tobool to i8103  store i8 %frombool, ptr %a, align 1104  %1 = load i8, ptr @c, align 1105  %tobool4 = icmp ne i8 %1, 0106  %lnot = xor i1 %tobool4, true107  %lnot5 = xor i1 %lnot, true108  %conv6 = zext i1 %lnot5 to i32109  %2 = load i8, ptr @c, align 1110  %conv7 = zext i8 %2 to i32111  %cmp = icmp sle i32 %conv6, %conv7112  %conv8 = zext i1 %cmp to i32113  store i32 %conv8, ptr %b, align 4114  ret void115}116 117@var_5 = external dso_local global i32, align 4118@var_57 = external dso_local global i64, align 8119@_ZN8struct_210member_2_0E = external dso_local global i64, align 8120 121define void @f1() {122; X64-O0-LABEL: f1:123; X64-O0:       # %bb.0: # %entry124; X64-O0-NEXT:    movslq var_5, %rax125; X64-O0-NEXT:    movabsq $8381627093, %rcx # imm = 0x1F3957AD5126; X64-O0-NEXT:    addq %rcx, %rax127; X64-O0-NEXT:    cmpq $0, %rax128; X64-O0-NEXT:    setne %al129; X64-O0-NEXT:    andb $1, %al130; X64-O0-NEXT:    movb %al, -{{[0-9]+}}(%rsp)131; X64-O0-NEXT:    movl var_5, %eax132; X64-O0-NEXT:    xorl $-1, %eax133; X64-O0-NEXT:    cmpl $0, %eax134; X64-O0-NEXT:    setne %al135; X64-O0-NEXT:    xorb $-1, %al136; X64-O0-NEXT:    andb $1, %al137; X64-O0-NEXT:    movzbl %al, %eax138; X64-O0-NEXT:    # kill: def $rax killed $eax139; X64-O0-NEXT:    movslq var_5, %rcx140; X64-O0-NEXT:    addq $7093, %rcx # imm = 0x1BB5141; X64-O0-NEXT:    cmpq %rcx, %rax142; X64-O0-NEXT:    setg %al143; X64-O0-NEXT:    andb $1, %al144; X64-O0-NEXT:    movzbl %al, %eax145; X64-O0-NEXT:    # kill: def $rax killed $eax146; X64-O0-NEXT:    movq %rax, var_57147; X64-O0-NEXT:    movl var_5, %eax148; X64-O0-NEXT:    xorl $-1, %eax149; X64-O0-NEXT:    cmpl $0, %eax150; X64-O0-NEXT:    setne %al151; X64-O0-NEXT:    xorb $-1, %al152; X64-O0-NEXT:    andb $1, %al153; X64-O0-NEXT:    movzbl %al, %eax154; X64-O0-NEXT:    # kill: def $rax killed $eax155; X64-O0-NEXT:    movq %rax, _ZN8struct_210member_2_0E156; X64-O0-NEXT:    retq157;158; X64-LABEL: f1:159; X64:       # %bb.0: # %entry160; X64-NEXT:    movslq var_5(%rip), %rax161; X64-NEXT:    movabsq $-8381627093, %rcx # imm = 0xFFFFFFFE0C6A852B162; X64-NEXT:    cmpq %rcx, %rax163; X64-NEXT:    setne -{{[0-9]+}}(%rsp)164; X64-NEXT:    xorl %ecx, %ecx165; X64-NEXT:    cmpq $-1, %rax166; X64-NEXT:    sete %cl167; X64-NEXT:    xorl %edx, %edx168; X64-NEXT:    cmpl $-1, %eax169; X64-NEXT:    sete %dl170; X64-NEXT:    addq $7093, %rax # imm = 0x1BB5171; X64-NEXT:    xorl %esi, %esi172; X64-NEXT:    cmpq %rax, %rdx173; X64-NEXT:    setg %sil174; X64-NEXT:    movq %rsi, var_57(%rip)175; X64-NEXT:    movq %rcx, _ZN8struct_210member_2_0E(%rip)176; X64-NEXT:    retq177;178; X86-O0-LABEL: f1:179; X86-O0:       # %bb.0: # %entry180; X86-O0-NEXT:    subl $1, %esp181; X86-O0-NEXT:    .cfi_def_cfa_offset 5182; X86-O0-NEXT:    movl var_5, %eax183; X86-O0-NEXT:    movl %eax, %ecx184; X86-O0-NEXT:    sarl $31, %ecx185; X86-O0-NEXT:    xorl $208307499, %eax # imm = 0xC6A852B186; X86-O0-NEXT:    xorl $-2, %ecx187; X86-O0-NEXT:    orl %ecx, %eax188; X86-O0-NEXT:    setne (%esp)189; X86-O0-NEXT:    movl var_5, %ecx190; X86-O0-NEXT:    movl %ecx, %eax191; X86-O0-NEXT:    sarl $31, %eax192; X86-O0-NEXT:    movl %ecx, %edx193; X86-O0-NEXT:    subl $-1, %edx194; X86-O0-NEXT:    sete %dl195; X86-O0-NEXT:    movzbl %dl, %edx196; X86-O0-NEXT:    addl $7093, %ecx # imm = 0x1BB5197; X86-O0-NEXT:    adcl $0, %eax198; X86-O0-NEXT:    subl %edx, %ecx199; X86-O0-NEXT:    sbbl $0, %eax200; X86-O0-NEXT:    setl %al201; X86-O0-NEXT:    movzbl %al, %eax202; X86-O0-NEXT:    movl %eax, var_57203; X86-O0-NEXT:    movl $0, var_57+4204; X86-O0-NEXT:    movl var_5, %eax205; X86-O0-NEXT:    subl $-1, %eax206; X86-O0-NEXT:    sete %al207; X86-O0-NEXT:    movzbl %al, %eax208; X86-O0-NEXT:    movl %eax, _ZN8struct_210member_2_0E209; X86-O0-NEXT:    movl $0, _ZN8struct_210member_2_0E+4210; X86-O0-NEXT:    addl $1, %esp211; X86-O0-NEXT:    .cfi_def_cfa_offset 4212; X86-O0-NEXT:    retl213;214; X86-LABEL: f1:215; X86:       # %bb.0: # %entry216; X86-NEXT:    pushl %ebx217; X86-NEXT:    .cfi_def_cfa_offset 8218; X86-NEXT:    pushl %esi219; X86-NEXT:    .cfi_def_cfa_offset 12220; X86-NEXT:    subl $1, %esp221; X86-NEXT:    .cfi_def_cfa_offset 13222; X86-NEXT:    .cfi_offset %esi, -12223; X86-NEXT:    .cfi_offset %ebx, -8224; X86-NEXT:    movl var_5, %eax225; X86-NEXT:    movl %eax, %edx226; X86-NEXT:    xorl $208307499, %edx # imm = 0xC6A852B227; X86-NEXT:    movl %eax, %ecx228; X86-NEXT:    sarl $31, %ecx229; X86-NEXT:    movl %ecx, %esi230; X86-NEXT:    xorl $-2, %esi231; X86-NEXT:    orl %edx, %esi232; X86-NEXT:    setne (%esp)233; X86-NEXT:    movl %eax, %esi234; X86-NEXT:    andl %ecx, %esi235; X86-NEXT:    xorl %edx, %edx236; X86-NEXT:    cmpl $-1, %esi237; X86-NEXT:    sete %dl238; X86-NEXT:    xorl %ebx, %ebx239; X86-NEXT:    cmpl $-1, %eax240; X86-NEXT:    sete %bl241; X86-NEXT:    addl $7093, %eax # imm = 0x1BB5242; X86-NEXT:    adcl $0, %ecx243; X86-NEXT:    cmpl %ebx, %eax244; X86-NEXT:    sbbl $0, %ecx245; X86-NEXT:    setl %al246; X86-NEXT:    movzbl %al, %eax247; X86-NEXT:    movl %eax, var_57248; X86-NEXT:    movl $0, var_57+4249; X86-NEXT:    movl %edx, _ZN8struct_210member_2_0E250; X86-NEXT:    movl $0, _ZN8struct_210member_2_0E+4251; X86-NEXT:    addl $1, %esp252; X86-NEXT:    .cfi_def_cfa_offset 12253; X86-NEXT:    popl %esi254; X86-NEXT:    .cfi_def_cfa_offset 8255; X86-NEXT:    popl %ebx256; X86-NEXT:    .cfi_def_cfa_offset 4257; X86-NEXT:    retl258entry:259  %a = alloca i8, align 1260  %0 = load i32, ptr @var_5, align 4261  %conv = sext i32 %0 to i64262  %add = add nsw i64 %conv, 8381627093263  %tobool = icmp ne i64 %add, 0264  %frombool = zext i1 %tobool to i8265  store i8 %frombool, ptr %a, align 1266  %1 = load i32, ptr @var_5, align 4267  %neg = xor i32 %1, -1268  %tobool1 = icmp ne i32 %neg, 0269  %lnot = xor i1 %tobool1, true270  %conv2 = zext i1 %lnot to i64271  %2 = load i32, ptr @var_5, align 4272  %conv3 = sext i32 %2 to i64273  %add4 = add nsw i64 %conv3, 7093274  %cmp = icmp sgt i64 %conv2, %add4275  %conv5 = zext i1 %cmp to i64276  store i64 %conv5, ptr @var_57, align 8277  %3 = load i32, ptr @var_5, align 4278  %neg6 = xor i32 %3, -1279  %tobool7 = icmp ne i32 %neg6, 0280  %lnot8 = xor i1 %tobool7, true281  %conv9 = zext i1 %lnot8 to i64282  store i64 %conv9, ptr @_ZN8struct_210member_2_0E, align 8283  ret void284}285 286 287@var_7 = external dso_local global i8, align 1288 289define void @f2() {290; X64-O0-LABEL: f2:291; X64-O0:       # %bb.0: # %entry292; X64-O0-NEXT:    movzbl var_7, %eax293; X64-O0-NEXT:    cmpb $0, var_7294; X64-O0-NEXT:    setne %cl295; X64-O0-NEXT:    xorb $-1, %cl296; X64-O0-NEXT:    andb $1, %cl297; X64-O0-NEXT:    movzbl %cl, %ecx298; X64-O0-NEXT:    xorl %ecx, %eax299; X64-O0-NEXT:    # kill: def $ax killed $ax killed $eax300; X64-O0-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)301; X64-O0-NEXT:    movzbl var_7, %eax302; X64-O0-NEXT:    # kill: def $ax killed $ax killed $eax303; X64-O0-NEXT:    cmpw $0, %ax304; X64-O0-NEXT:    setne %al305; X64-O0-NEXT:    xorb $-1, %al306; X64-O0-NEXT:    andb $1, %al307; X64-O0-NEXT:    movzbl %al, %eax308; X64-O0-NEXT:    movzbl var_7, %ecx309; X64-O0-NEXT:    cmpl %ecx, %eax310; X64-O0-NEXT:    sete %al311; X64-O0-NEXT:    andb $1, %al312; X64-O0-NEXT:    movzbl %al, %eax313; X64-O0-NEXT:    movw %ax, %cx314; X64-O0-NEXT:    # implicit-def: $rax315; X64-O0-NEXT:    movw %cx, (%rax)316; X64-O0-NEXT:    retq317;318; X64-LABEL: f2:319; X64:       # %bb.0: # %entry320; X64-NEXT:    movzbl var_7(%rip), %eax321; X64-NEXT:    xorl %ecx, %ecx322; X64-NEXT:    testl %eax, %eax323; X64-NEXT:    sete %cl324; X64-NEXT:    xorl %edx, %edx325; X64-NEXT:    xorl %eax, %ecx326; X64-NEXT:    movw %cx, -{{[0-9]+}}(%rsp)327; X64-NEXT:    sete %dl328; X64-NEXT:    movw %dx, (%rax)329; X64-NEXT:    retq330;331; X86-O0-LABEL: f2:332; X86-O0:       # %bb.0: # %entry333; X86-O0-NEXT:    subl $2, %esp334; X86-O0-NEXT:    .cfi_def_cfa_offset 6335; X86-O0-NEXT:    movzbl var_7, %eax336; X86-O0-NEXT:    cmpb $0, var_7337; X86-O0-NEXT:    setne %cl338; X86-O0-NEXT:    xorb $-1, %cl339; X86-O0-NEXT:    andb $1, %cl340; X86-O0-NEXT:    movzbl %cl, %ecx341; X86-O0-NEXT:    xorl %ecx, %eax342; X86-O0-NEXT:    # kill: def $ax killed $ax killed $eax343; X86-O0-NEXT:    movw %ax, (%esp)344; X86-O0-NEXT:    movzbl var_7, %eax345; X86-O0-NEXT:    # kill: def $ax killed $ax killed $eax346; X86-O0-NEXT:    cmpw $0, %ax347; X86-O0-NEXT:    setne %al348; X86-O0-NEXT:    xorb $-1, %al349; X86-O0-NEXT:    andb $1, %al350; X86-O0-NEXT:    movzbl %al, %eax351; X86-O0-NEXT:    movzbl var_7, %ecx352; X86-O0-NEXT:    cmpl %ecx, %eax353; X86-O0-NEXT:    sete %al354; X86-O0-NEXT:    andb $1, %al355; X86-O0-NEXT:    movzbl %al, %eax356; X86-O0-NEXT:    movw %ax, %cx357; X86-O0-NEXT:    # implicit-def: $eax358; X86-O0-NEXT:    movw %cx, (%eax)359; X86-O0-NEXT:    addl $2, %esp360; X86-O0-NEXT:    .cfi_def_cfa_offset 4361; X86-O0-NEXT:    retl362;363; X86-LABEL: f2:364; X86:       # %bb.0: # %entry365; X86-NEXT:    subl $2, %esp366; X86-NEXT:    .cfi_def_cfa_offset 6367; X86-NEXT:    movzbl var_7, %edx368; X86-NEXT:    xorl %eax, %eax369; X86-NEXT:    testl %edx, %edx370; X86-NEXT:    sete %al371; X86-NEXT:    xorl %ecx, %ecx372; X86-NEXT:    xorl %edx, %eax373; X86-NEXT:    movw %ax, (%esp)374; X86-NEXT:    sete %cl375; X86-NEXT:    movw %cx, (%eax)376; X86-NEXT:    addl $2, %esp377; X86-NEXT:    .cfi_def_cfa_offset 4378; X86-NEXT:    retl379entry:380  %a = alloca i16, align 2381  %0 = load i8, ptr @var_7, align 1382  %conv = zext i8 %0 to i32383  %1 = load i8, ptr @var_7, align 1384  %tobool = icmp ne i8 %1, 0385  %lnot = xor i1 %tobool, true386  %conv1 = zext i1 %lnot to i32387  %xor = xor i32 %conv, %conv1388  %conv2 = trunc i32 %xor to i16389  store i16 %conv2, ptr %a, align 2390  %2 = load i8, ptr @var_7, align 1391  %conv3 = zext i8 %2 to i16392  %tobool4 = icmp ne i16 %conv3, 0393  %lnot5 = xor i1 %tobool4, true394  %conv6 = zext i1 %lnot5 to i32395  %3 = load i8, ptr @var_7, align 1396  %conv7 = zext i8 %3 to i32397  %cmp = icmp eq i32 %conv6, %conv7398  %conv8 = zext i1 %cmp to i32399  %conv9 = trunc i32 %conv8 to i16400  store i16 %conv9, ptr undef, align 2401  ret void402}403 404 405@var_13 = external dso_local global i32, align 4406@var_16 = external dso_local global i32, align 4407@var_46 = external dso_local global i32, align 4408 409define void @f3() #0 {410; X64-O0-LABEL: f3:411; X64-O0:       # %bb.0: # %entry412; X64-O0-NEXT:    movl var_13, %eax413; X64-O0-NEXT:    xorl $-1, %eax414; X64-O0-NEXT:    movl %eax, %eax415; X64-O0-NEXT:    # kill: def $rax killed $eax416; X64-O0-NEXT:    cmpl $0, var_13417; X64-O0-NEXT:    setne %cl418; X64-O0-NEXT:    xorb $-1, %cl419; X64-O0-NEXT:    andb $1, %cl420; X64-O0-NEXT:    movzbl %cl, %ecx421; X64-O0-NEXT:    # kill: def $rcx killed $ecx422; X64-O0-NEXT:    movl var_13, %edx423; X64-O0-NEXT:    xorl $-1, %edx424; X64-O0-NEXT:    xorl var_16, %edx425; X64-O0-NEXT:    movl %edx, %edx426; X64-O0-NEXT:    # kill: def $rdx killed $edx427; X64-O0-NEXT:    andq %rdx, %rcx428; X64-O0-NEXT:    orq %rcx, %rax429; X64-O0-NEXT:    movq %rax, -{{[0-9]+}}(%rsp)430; X64-O0-NEXT:    movl var_13, %eax431; X64-O0-NEXT:    xorl $-1, %eax432; X64-O0-NEXT:    movl %eax, %eax433; X64-O0-NEXT:    # kill: def $rax killed $eax434; X64-O0-NEXT:    cmpl $0, var_13435; X64-O0-NEXT:    setne %cl436; X64-O0-NEXT:    xorb $-1, %cl437; X64-O0-NEXT:    andb $1, %cl438; X64-O0-NEXT:    movzbl %cl, %ecx439; X64-O0-NEXT:    # kill: def $rcx killed $ecx440; X64-O0-NEXT:    andq $0, %rcx441; X64-O0-NEXT:    orq %rcx, %rax442; X64-O0-NEXT:    # kill: def $eax killed $eax killed $rax443; X64-O0-NEXT:    movl %eax, var_46444; X64-O0-NEXT:    retq445;446; X64-LABEL: f3:447; X64:       # %bb.0: # %entry448; X64-NEXT:    movl var_13(%rip), %eax449; X64-NEXT:    xorl %ecx, %ecx450; X64-NEXT:    testl %eax, %eax451; X64-NEXT:    notl %eax452; X64-NEXT:    sete %cl453; X64-NEXT:    movl var_16(%rip), %edx454; X64-NEXT:    xorl %eax, %edx455; X64-NEXT:    andl %edx, %ecx456; X64-NEXT:    orl %eax, %ecx457; X64-NEXT:    movq %rcx, -{{[0-9]+}}(%rsp)458; X64-NEXT:    movl %eax, var_46(%rip)459; X64-NEXT:    retq460;461; X86-O0-LABEL: f3:462; X86-O0:       # %bb.0: # %entry463; X86-O0-NEXT:    pushl %ebp464; X86-O0-NEXT:    .cfi_def_cfa_offset 8465; X86-O0-NEXT:    .cfi_offset %ebp, -8466; X86-O0-NEXT:    movl %esp, %ebp467; X86-O0-NEXT:    .cfi_def_cfa_register %ebp468; X86-O0-NEXT:    pushl %esi469; X86-O0-NEXT:    andl $-8, %esp470; X86-O0-NEXT:    subl $16, %esp471; X86-O0-NEXT:    .cfi_offset %esi, -12472; X86-O0-NEXT:    movl var_13, %ecx473; X86-O0-NEXT:    movl %ecx, %eax474; X86-O0-NEXT:    notl %eax475; X86-O0-NEXT:    testl %ecx, %ecx476; X86-O0-NEXT:    sete %cl477; X86-O0-NEXT:    movzbl %cl, %ecx478; X86-O0-NEXT:    movl var_16, %esi479; X86-O0-NEXT:    movl %eax, %edx480; X86-O0-NEXT:    xorl %esi, %edx481; X86-O0-NEXT:    andl %edx, %ecx482; X86-O0-NEXT:    orl %ecx, %eax483; X86-O0-NEXT:    movl %eax, (%esp)484; X86-O0-NEXT:    movl $0, {{[0-9]+}}(%esp)485; X86-O0-NEXT:    movl var_13, %eax486; X86-O0-NEXT:    notl %eax487; X86-O0-NEXT:    movl %eax, var_46488; X86-O0-NEXT:    leal -4(%ebp), %esp489; X86-O0-NEXT:    popl %esi490; X86-O0-NEXT:    popl %ebp491; X86-O0-NEXT:    .cfi_def_cfa %esp, 4492; X86-O0-NEXT:    retl493;494; X86-LABEL: f3:495; X86:       # %bb.0: # %entry496; X86-NEXT:    pushl %ebp497; X86-NEXT:    .cfi_def_cfa_offset 8498; X86-NEXT:    .cfi_offset %ebp, -8499; X86-NEXT:    movl %esp, %ebp500; X86-NEXT:    .cfi_def_cfa_register %ebp501; X86-NEXT:    andl $-8, %esp502; X86-NEXT:    subl $8, %esp503; X86-NEXT:    movl var_13, %eax504; X86-NEXT:    xorl %ecx, %ecx505; X86-NEXT:    testl %eax, %eax506; X86-NEXT:    notl %eax507; X86-NEXT:    sete %cl508; X86-NEXT:    movl var_16, %edx509; X86-NEXT:    xorl %eax, %edx510; X86-NEXT:    andl %ecx, %edx511; X86-NEXT:    orl %eax, %edx512; X86-NEXT:    movl %edx, (%esp)513; X86-NEXT:    movl $0, {{[0-9]+}}(%esp)514; X86-NEXT:    movl %eax, var_46515; X86-NEXT:    movl %ebp, %esp516; X86-NEXT:    popl %ebp517; X86-NEXT:    .cfi_def_cfa %esp, 4518; X86-NEXT:    retl519entry:520  %a = alloca i64, align 8521  %0 = load i32, ptr @var_13, align 4522  %neg = xor i32 %0, -1523  %conv = zext i32 %neg to i64524  %1 = load i32, ptr @var_13, align 4525  %tobool = icmp ne i32 %1, 0526  %lnot = xor i1 %tobool, true527  %conv1 = zext i1 %lnot to i64528  %2 = load i32, ptr @var_13, align 4529  %neg2 = xor i32 %2, -1530  %3 = load i32, ptr @var_16, align 4531  %xor = xor i32 %neg2, %3532  %conv3 = zext i32 %xor to i64533  %and = and i64 %conv1, %conv3534  %or = or i64 %conv, %and535  store i64 %or, ptr %a, align 8536  %4 = load i32, ptr @var_13, align 4537  %neg4 = xor i32 %4, -1538  %conv5 = zext i32 %neg4 to i64539  %5 = load i32, ptr @var_13, align 4540  %tobool6 = icmp ne i32 %5, 0541  %lnot7 = xor i1 %tobool6, true542  %conv8 = zext i1 %lnot7 to i64543  %and9 = and i64 %conv8, 0544  %or10 = or i64 %conv5, %and9545  %conv11 = trunc i64 %or10 to i32546  store i32 %conv11, ptr @var_46, align 4547  ret void548}549 550