brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.4 KiB · 234201a Raw
278 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+cmov | FileCheck %s --check-prefix=CMOV3; RUN: llc < %s -mtriple=i686-unknown-unknown   -mattr=-cmov | FileCheck %s --check-prefix=NO_CMOV4 5define i16 @cmov_zpromotion_8_to_16(i1 %c) {6; CMOV-LABEL: cmov_zpromotion_8_to_16:7; CMOV:       # %bb.0:8; CMOV-NEXT:    testb $1, %dil9; CMOV-NEXT:    movl $117, %ecx10; CMOV-NEXT:    movl $237, %eax11; CMOV-NEXT:    cmovnel %ecx, %eax12; CMOV-NEXT:    # kill: def $ax killed $ax killed $eax13; CMOV-NEXT:    retq14;15; NO_CMOV-LABEL: cmov_zpromotion_8_to_16:16; NO_CMOV:       # %bb.0:17; NO_CMOV-NEXT:    movzbl {{[0-9]+}}(%esp), %eax18; NO_CMOV-NEXT:    andl $1, %eax19; NO_CMOV-NEXT:    negl %eax20; NO_CMOV-NEXT:    andl $152, %eax21; NO_CMOV-NEXT:    xorl $237, %eax22; NO_CMOV-NEXT:    # kill: def $ax killed $ax killed $eax23; NO_CMOV-NEXT:    retl24  %t0 = select i1 %c, i8 117, i8 -1925  %ret = zext i8 %t0 to i1626  ret i16 %ret27}28 29define i32 @cmov_zpromotion_8_to_32(i1 %c) {30; CMOV-LABEL: cmov_zpromotion_8_to_32:31; CMOV:       # %bb.0:32; CMOV-NEXT:    testb $1, %dil33; CMOV-NEXT:    movl $126, %ecx34; CMOV-NEXT:    movl $255, %eax35; CMOV-NEXT:    cmovnel %ecx, %eax36; CMOV-NEXT:    retq37;38; NO_CMOV-LABEL: cmov_zpromotion_8_to_32:39; NO_CMOV:       # %bb.0:40; NO_CMOV-NEXT:    movzbl {{[0-9]+}}(%esp), %eax41; NO_CMOV-NEXT:    andl $1, %eax42; NO_CMOV-NEXT:    negl %eax43; NO_CMOV-NEXT:    andl $129, %eax44; NO_CMOV-NEXT:    xorl $255, %eax45; NO_CMOV-NEXT:    retl46  %t0 = select i1 %c, i8 12414, i8 -147  %ret = zext i8 %t0 to i3248  ret i32 %ret49}50 51define i64 @cmov_zpromotion_8_to_64(i1 %c) {52; CMOV-LABEL: cmov_zpromotion_8_to_64:53; CMOV:       # %bb.0:54; CMOV-NEXT:    testb $1, %dil55; CMOV-NEXT:    movl $126, %ecx56; CMOV-NEXT:    movl $255, %eax57; CMOV-NEXT:    cmovneq %rcx, %rax58; CMOV-NEXT:    retq59;60; NO_CMOV-LABEL: cmov_zpromotion_8_to_64:61; NO_CMOV:       # %bb.0:62; NO_CMOV-NEXT:    movzbl {{[0-9]+}}(%esp), %eax63; NO_CMOV-NEXT:    andl $1, %eax64; NO_CMOV-NEXT:    negl %eax65; NO_CMOV-NEXT:    andl $129, %eax66; NO_CMOV-NEXT:    xorl $255, %eax67; NO_CMOV-NEXT:    xorl %edx, %edx68; NO_CMOV-NEXT:    retl69  %t0 = select i1 %c, i8 12414, i8 -170  %ret = zext i8 %t0 to i6471  ret i64 %ret72}73 74define i32 @cmov_zpromotion_16_to_32(i1 %c) {75; CMOV-LABEL: cmov_zpromotion_16_to_32:76; CMOV:       # %bb.0:77; CMOV-NEXT:    testb $1, %dil78; CMOV-NEXT:    movl $12414, %ecx # imm = 0x307E79; CMOV-NEXT:    movl $65535, %eax # imm = 0xFFFF80; CMOV-NEXT:    cmovnel %ecx, %eax81; CMOV-NEXT:    retq82;83; NO_CMOV-LABEL: cmov_zpromotion_16_to_32:84; NO_CMOV:       # %bb.0:85; NO_CMOV-NEXT:    movzbl {{[0-9]+}}(%esp), %eax86; NO_CMOV-NEXT:    andl $1, %eax87; NO_CMOV-NEXT:    negl %eax88; NO_CMOV-NEXT:    andl $53121, %eax # imm = 0xCF8189; NO_CMOV-NEXT:    xorl $65535, %eax # imm = 0xFFFF90; NO_CMOV-NEXT:    retl91  %t0 = select i1 %c, i16 12414, i16 -192  %ret = zext i16 %t0 to i3293  ret i32 %ret94}95 96define i64 @cmov_zpromotion_16_to_64(i1 %c) {97; CMOV-LABEL: cmov_zpromotion_16_to_64:98; CMOV:       # %bb.0:99; CMOV-NEXT:    testb $1, %dil100; CMOV-NEXT:    movl $12414, %ecx # imm = 0x307E101; CMOV-NEXT:    movl $65535, %eax # imm = 0xFFFF102; CMOV-NEXT:    cmovneq %rcx, %rax103; CMOV-NEXT:    retq104;105; NO_CMOV-LABEL: cmov_zpromotion_16_to_64:106; NO_CMOV:       # %bb.0:107; NO_CMOV-NEXT:    movzbl {{[0-9]+}}(%esp), %eax108; NO_CMOV-NEXT:    andl $1, %eax109; NO_CMOV-NEXT:    negl %eax110; NO_CMOV-NEXT:    andl $53121, %eax # imm = 0xCF81111; NO_CMOV-NEXT:    xorl $65535, %eax # imm = 0xFFFF112; NO_CMOV-NEXT:    xorl %edx, %edx113; NO_CMOV-NEXT:    retl114  %t0 = select i1 %c, i16 12414, i16 -1115  %ret = zext i16 %t0 to i64116  ret i64 %ret117}118 119define i64 @cmov_zpromotion_32_to_64(i1 %c) {120; CMOV-LABEL: cmov_zpromotion_32_to_64:121; CMOV:       # %bb.0:122; CMOV-NEXT:    testb $1, %dil123; CMOV-NEXT:    movl $12414, %ecx # imm = 0x307E124; CMOV-NEXT:    movl $43107, %eax # imm = 0xA863125; CMOV-NEXT:    cmovnel %ecx, %eax126; CMOV-NEXT:    retq127;128; NO_CMOV-LABEL: cmov_zpromotion_32_to_64:129; NO_CMOV:       # %bb.0:130; NO_CMOV-NEXT:    movzbl {{[0-9]+}}(%esp), %eax131; NO_CMOV-NEXT:    andl $1, %eax132; NO_CMOV-NEXT:    negl %eax133; NO_CMOV-NEXT:    andl $38941, %eax # imm = 0x981D134; NO_CMOV-NEXT:    xorl $43107, %eax # imm = 0xA863135; NO_CMOV-NEXT:    xorl %edx, %edx136; NO_CMOV-NEXT:    retl137  %t0 = select i1 %c, i32 12414, i32 43107138  %ret = zext i32 %t0 to i64139  ret i64 %ret140}141 142define i16 @cmov_spromotion_8_to_16(i1 %c) {143; CMOV-LABEL: cmov_spromotion_8_to_16:144; CMOV:       # %bb.0:145; CMOV-NEXT:    testb $1, %dil146; CMOV-NEXT:    movl $117, %ecx147; CMOV-NEXT:    movl $65517, %eax # imm = 0xFFED148; CMOV-NEXT:    cmovnel %ecx, %eax149; CMOV-NEXT:    # kill: def $ax killed $ax killed $eax150; CMOV-NEXT:    retq151;152; NO_CMOV-LABEL: cmov_spromotion_8_to_16:153; NO_CMOV:       # %bb.0:154; NO_CMOV-NEXT:    movzbl {{[0-9]+}}(%esp), %eax155; NO_CMOV-NEXT:    andl $1, %eax156; NO_CMOV-NEXT:    negl %eax157; NO_CMOV-NEXT:    andl $-104, %eax158; NO_CMOV-NEXT:    xorl $65517, %eax # imm = 0xFFED159; NO_CMOV-NEXT:    # kill: def $ax killed $ax killed $eax160; NO_CMOV-NEXT:    retl161  %t0 = select i1 %c, i8 117, i8 -19162  %ret = sext i8 %t0 to i16163  ret i16 %ret164}165 166define i32 @cmov_spromotion_8_to_32(i1 %c) {167; CMOV-LABEL: cmov_spromotion_8_to_32:168; CMOV:       # %bb.0:169; CMOV-NEXT:    testb $1, %dil170; CMOV-NEXT:    movl $126, %ecx171; CMOV-NEXT:    movl $99, %eax172; CMOV-NEXT:    cmovnel %ecx, %eax173; CMOV-NEXT:    retq174;175; NO_CMOV-LABEL: cmov_spromotion_8_to_32:176; NO_CMOV:       # %bb.0:177; NO_CMOV-NEXT:    movzbl {{[0-9]+}}(%esp), %eax178; NO_CMOV-NEXT:    andl $1, %eax179; NO_CMOV-NEXT:    negl %eax180; NO_CMOV-NEXT:    andl $29, %eax181; NO_CMOV-NEXT:    xorl $99, %eax182; NO_CMOV-NEXT:    retl183  %t0 = select i1 %c, i8 12414, i8 43107184  %ret = sext i8 %t0 to i32185  ret i32 %ret186}187 188define i64 @cmov_spromotion_8_to_64(i1 %c) {189; CMOV-LABEL: cmov_spromotion_8_to_64:190; CMOV:       # %bb.0:191; CMOV-NEXT:    testb $1, %dil192; CMOV-NEXT:    movl $126, %ecx193; CMOV-NEXT:    movl $99, %eax194; CMOV-NEXT:    cmovneq %rcx, %rax195; CMOV-NEXT:    retq196;197; NO_CMOV-LABEL: cmov_spromotion_8_to_64:198; NO_CMOV:       # %bb.0:199; NO_CMOV-NEXT:    movzbl {{[0-9]+}}(%esp), %eax200; NO_CMOV-NEXT:    andl $1, %eax201; NO_CMOV-NEXT:    negl %eax202; NO_CMOV-NEXT:    andl $29, %eax203; NO_CMOV-NEXT:    xorl $99, %eax204; NO_CMOV-NEXT:    xorl %edx, %edx205; NO_CMOV-NEXT:    retl206  %t0 = select i1 %c, i8 12414, i8 43107207  %ret = sext i8 %t0 to i64208  ret i64 %ret209}210 211define i32 @cmov_spromotion_16_to_32(i1 %c) {212; CMOV-LABEL: cmov_spromotion_16_to_32:213; CMOV:       # %bb.0:214; CMOV-NEXT:    testb $1, %dil215; CMOV-NEXT:    movl $12414, %ecx # imm = 0x307E216; CMOV-NEXT:    movl $-22429, %eax # imm = 0xA863217; CMOV-NEXT:    cmovnel %ecx, %eax218; CMOV-NEXT:    retq219;220; NO_CMOV-LABEL: cmov_spromotion_16_to_32:221; NO_CMOV:       # %bb.0:222; NO_CMOV-NEXT:    movzbl {{[0-9]+}}(%esp), %eax223; NO_CMOV-NEXT:    andl $1, %eax224; NO_CMOV-NEXT:    negl %eax225; NO_CMOV-NEXT:    andl $-26595, %eax # imm = 0x981D226; NO_CMOV-NEXT:    xorl $-22429, %eax # imm = 0xA863227; NO_CMOV-NEXT:    retl228  %t0 = select i1 %c, i16 12414, i16 43107229  %ret = sext i16 %t0 to i32230  ret i32 %ret231}232 233define i64 @cmov_spromotion_16_to_64(i1 %c) {234; CMOV-LABEL: cmov_spromotion_16_to_64:235; CMOV:       # %bb.0:236; CMOV-NEXT:    testb $1, %dil237; CMOV-NEXT:    movl $12414, %ecx # imm = 0x307E238; CMOV-NEXT:    movq $-22429, %rax # imm = 0xA863239; CMOV-NEXT:    cmovneq %rcx, %rax240; CMOV-NEXT:    retq241;242; NO_CMOV-LABEL: cmov_spromotion_16_to_64:243; NO_CMOV:       # %bb.0:244; NO_CMOV-NEXT:    movzbl {{[0-9]+}}(%esp), %eax245; NO_CMOV-NEXT:    andl $1, %eax246; NO_CMOV-NEXT:    leal -1(%eax), %edx247; NO_CMOV-NEXT:    negl %eax248; NO_CMOV-NEXT:    andl $-26595, %eax # imm = 0x981D249; NO_CMOV-NEXT:    xorl $-22429, %eax # imm = 0xA863250; NO_CMOV-NEXT:    retl251  %t0 = select i1 %c, i16 12414, i16 43107252  %ret = sext i16 %t0 to i64253  ret i64 %ret254}255 256define i64 @cmov_spromotion_32_to_64(i1 %c) {257; CMOV-LABEL: cmov_spromotion_32_to_64:258; CMOV:       # %bb.0:259; CMOV-NEXT:    testb $1, %dil260; CMOV-NEXT:    movl $12414, %ecx # imm = 0x307E261; CMOV-NEXT:    movl $43107, %eax # imm = 0xA863262; CMOV-NEXT:    cmovneq %rcx, %rax263; CMOV-NEXT:    retq264;265; NO_CMOV-LABEL: cmov_spromotion_32_to_64:266; NO_CMOV:       # %bb.0:267; NO_CMOV-NEXT:    movzbl {{[0-9]+}}(%esp), %eax268; NO_CMOV-NEXT:    andl $1, %eax269; NO_CMOV-NEXT:    negl %eax270; NO_CMOV-NEXT:    andl $38941, %eax # imm = 0x981D271; NO_CMOV-NEXT:    xorl $43107, %eax # imm = 0xA863272; NO_CMOV-NEXT:    xorl %edx, %edx273; NO_CMOV-NEXT:    retl274  %t0 = select i1 %c, i32 12414, i32 43107275  %ret = sext i32 %t0 to i64276  ret i64 %ret277}278