brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · 7dadbd7 Raw
162 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-pc-linux-gnu | FileCheck %s --check-prefix=X863; RUN: llc < %s -mtriple=x86_64-pc-linux-gnu | FileCheck %s --check-prefix=X644 5define i32 @from_cmpeq(i32 %xx, i32 %y) {6; X86-LABEL: from_cmpeq:7; X86:       # %bb.0:8; X86-NEXT:    xorl %eax, %eax9; X86-NEXT:    cmpl $9, {{[0-9]+}}(%esp)10; X86-NEXT:    sete %al11; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax12; X86-NEXT:    retl13;14; X64-LABEL: from_cmpeq:15; X64:       # %bb.0:16; X64-NEXT:    xorl %eax, %eax17; X64-NEXT:    cmpl $9, %edi18; X64-NEXT:    sete %al19; X64-NEXT:    andl %esi, %eax20; X64-NEXT:    retq21  %x = icmp eq i32 %xx, 922  %masked = and i32 %y, 123 24  %r = select i1 %x, i32 %masked, i32 025  ret i32 %r26}27 28define i32 @from_cmpeq_fail_bad_andmask(i32 %xx, i32 %y) {29; X86-LABEL: from_cmpeq_fail_bad_andmask:30; X86:       # %bb.0:31; X86-NEXT:    cmpl $9, {{[0-9]+}}(%esp)32; X86-NEXT:    je .LBB1_133; X86-NEXT:  # %bb.2:34; X86-NEXT:    xorl %eax, %eax35; X86-NEXT:    retl36; X86-NEXT:  .LBB1_1:37; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax38; X86-NEXT:    andl $3, %eax39; X86-NEXT:    retl40;41; X64-LABEL: from_cmpeq_fail_bad_andmask:42; X64:       # %bb.0:43; X64-NEXT:    andl $3, %esi44; X64-NEXT:    xorl %eax, %eax45; X64-NEXT:    cmpl $9, %edi46; X64-NEXT:    cmovel %esi, %eax47; X64-NEXT:    retq48  %x = icmp eq i32 %xx, 949  %masked = and i32 %y, 350  %r = select i1 %x, i32 %masked, i32 051  ret i32 %r52}53 54define i32 @from_i1(i1 %x, i32 %y) {55; X86-LABEL: from_i1:56; X86:       # %bb.0:57; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax58; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax59; X86-NEXT:    andl $1, %eax60; X86-NEXT:    retl61;62; X64-LABEL: from_i1:63; X64:       # %bb.0:64; X64-NEXT:    movl %edi, %eax65; X64-NEXT:    andl %esi, %eax66; X64-NEXT:    andl $1, %eax67; X64-NEXT:    retq68  %masked = and i32 %y, 169  %r = select i1 %x, i32 %masked, i32 070  ret i32 %r71}72 73define i32 @from_trunc_i8(i8 %xx, i32 %y) {74; X86-LABEL: from_trunc_i8:75; X86:       # %bb.0:76; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax77; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax78; X86-NEXT:    andl $1, %eax79; X86-NEXT:    retl80;81; X64-LABEL: from_trunc_i8:82; X64:       # %bb.0:83; X64-NEXT:    movl %edi, %eax84; X64-NEXT:    andl %esi, %eax85; X64-NEXT:    andl $1, %eax86; X64-NEXT:    retq87  %masked = and i32 %y, 188  %x = trunc i8 %xx to i189  %r = select i1 %x, i32 %masked, i32 090  ret i32 %r91}92 93define i32 @from_trunc_i64(i64 %xx, i32 %y) {94; X86-LABEL: from_trunc_i64:95; X86:       # %bb.0:96; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax97; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax98; X86-NEXT:    andl $1, %eax99; X86-NEXT:    retl100;101; X64-LABEL: from_trunc_i64:102; X64:       # %bb.0:103; X64-NEXT:    movq %rdi, %rax104; X64-NEXT:    andl %esi, %eax105; X64-NEXT:    andl $1, %eax106; X64-NEXT:    # kill: def $eax killed $eax killed $rax107; X64-NEXT:    retq108  %masked = and i32 %y, 1109  %x = trunc i64 %xx to i1110  %r = select i1 %x, i32 %masked, i32 0111  ret i32 %r112}113 114define i32 @from_i1_fail_bad_select0(i1 %x, i32 %y) {115; X86-LABEL: from_i1_fail_bad_select0:116; X86:       # %bb.0:117; X86-NEXT:    testb $1, {{[0-9]+}}(%esp)118; X86-NEXT:    jne .LBB5_1119; X86-NEXT:  # %bb.2:120; X86-NEXT:    movl $1, %eax121; X86-NEXT:    retl122; X86-NEXT:  .LBB5_1:123; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax124; X86-NEXT:    andl $1, %eax125; X86-NEXT:    retl126;127; X64-LABEL: from_i1_fail_bad_select0:128; X64:       # %bb.0:129; X64-NEXT:    andl $1, %esi130; X64-NEXT:    testb $1, %dil131; X64-NEXT:    movl $1, %eax132; X64-NEXT:    cmovnel %esi, %eax133; X64-NEXT:    retq134  %masked = and i32 %y, 1135  %r = select i1 %x, i32 %masked, i32 1136  ret i32 %r137}138 139define i32 @from_i1_fail_bad_select1(i1 %x, i32 %y) {140; X86-LABEL: from_i1_fail_bad_select1:141; X86:       # %bb.0:142; X86-NEXT:    xorl %eax, %eax143; X86-NEXT:    testb $1, {{[0-9]+}}(%esp)144; X86-NEXT:    jne .LBB6_2145; X86-NEXT:  # %bb.1:146; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax147; X86-NEXT:    andl $1, %eax148; X86-NEXT:  .LBB6_2:149; X86-NEXT:    retl150;151; X64-LABEL: from_i1_fail_bad_select1:152; X64:       # %bb.0:153; X64-NEXT:    andl $1, %esi154; X64-NEXT:    xorl %eax, %eax155; X64-NEXT:    testb $1, %dil156; X64-NEXT:    cmovel %esi, %eax157; X64-NEXT:    retq158  %masked = and i32 %y, 1159  %r = select i1 %x, i32 0, i32 %masked160  ret i32 %r161}162