brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.6 KiB · 75c2bc7 Raw
298 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=powerpc64le-unknown-linux -mcpu=pwr8 -O0 < %s | \3; RUN:   FileCheck %s -check-prefix=P84; RUN: llc -mtriple=powerpc64le-unknown-linux -mcpu=pwr9 -O0 < %s | \5; RUN:   FileCheck %s -check-prefix=P96 7define i32 @test_choice1(fp128 %a, fp128 %b) #0 {8; P8-LABEL: test_choice1:9; P8:       # %bb.0: # %entry10; P8-NEXT:    mflr 011; P8-NEXT:    stdu 1, -112(1)12; P8-NEXT:    std 0, 128(1)13; P8-NEXT:    bl __nekf214; P8-NEXT:    nop15; P8-NEXT:    # kill: def $r3 killed $r3 killed $x316; P8-NEXT:    cmplwi 3, 017; P8-NEXT:    bne 0, .LBB0_218; P8-NEXT:    b .LBB0_119; P8-NEXT:  .LBB0_1: # %if.true20; P8-NEXT:    bl foo21; P8-NEXT:    nop22; P8-NEXT:    stw 3, 108(1) # 4-byte Folded Spill23; P8-NEXT:    b .LBB0_324; P8-NEXT:  .LBB0_2: # %if.false25; P8-NEXT:    bl bar26; P8-NEXT:    nop27; P8-NEXT:    stw 3, 108(1) # 4-byte Folded Spill28; P8-NEXT:  .LBB0_3: # %final29; P8-NEXT:    lwz 3, 108(1) # 4-byte Folded Reload30; P8-NEXT:    clrldi 3, 3, 3231; P8-NEXT:    addi 1, 1, 11232; P8-NEXT:    ld 0, 16(1)33; P8-NEXT:    mtlr 034; P8-NEXT:    blr35;36; P9-LABEL: test_choice1:37; P9:       # %bb.0: # %entry38; P9-NEXT:    mflr 039; P9-NEXT:    stdu 1, -112(1)40; P9-NEXT:    std 0, 128(1)41; P9-NEXT:    xscmpuqp 0, 2, 342; P9-NEXT:    bne 0, .LBB0_243; P9-NEXT:    b .LBB0_144; P9-NEXT:  .LBB0_1: # %if.true45; P9-NEXT:    bl foo46; P9-NEXT:    nop47; P9-NEXT:    stw 3, 108(1) # 4-byte Folded Spill48; P9-NEXT:    b .LBB0_349; P9-NEXT:  .LBB0_2: # %if.false50; P9-NEXT:    bl bar51; P9-NEXT:    nop52; P9-NEXT:    stw 3, 108(1) # 4-byte Folded Spill53; P9-NEXT:  .LBB0_3: # %final54; P9-NEXT:    lwz 3, 108(1) # 4-byte Folded Reload55; P9-NEXT:    clrldi 3, 3, 3256; P9-NEXT:    addi 1, 1, 11257; P9-NEXT:    ld 0, 16(1)58; P9-NEXT:    mtlr 059; P9-NEXT:    blr60entry:61  %cmp = fcmp oeq fp128 %a, %b62  br i1 %cmp, label %if.true, label %if.false63 64if.true:65  %res1 = call i32 @foo()66  br label %final67 68if.false:69  %res2 = call i32 @bar()70  br label %final71 72final:73  %result = phi i32 [%res1, %if.true], [%res2, %if.false]74  ret i32 %result75}76 77define i32 @test_choice2(fp128 %a, fp128 %b) #0 {78; P8-LABEL: test_choice2:79; P8:       # %bb.0: # %entry80; P8-NEXT:    mflr 081; P8-NEXT:    stdu 1, -112(1)82; P8-NEXT:    std 0, 128(1)83; P8-NEXT:    bl __lekf284; P8-NEXT:    nop85; P8-NEXT:    # kill: def $r3 killed $r3 killed $x386; P8-NEXT:    cmpwi 3, 187; P8-NEXT:    blt 0, .LBB1_288; P8-NEXT:    b .LBB1_189; P8-NEXT:  .LBB1_1: # %if.true90; P8-NEXT:    bl foo91; P8-NEXT:    nop92; P8-NEXT:    stw 3, 108(1) # 4-byte Folded Spill93; P8-NEXT:    b .LBB1_394; P8-NEXT:  .LBB1_2: # %if.false95; P8-NEXT:    bl bar96; P8-NEXT:    nop97; P8-NEXT:    stw 3, 108(1) # 4-byte Folded Spill98; P8-NEXT:  .LBB1_3: # %final99; P8-NEXT:    lwz 3, 108(1) # 4-byte Folded Reload100; P8-NEXT:    clrldi 3, 3, 32101; P8-NEXT:    addi 1, 1, 112102; P8-NEXT:    ld 0, 16(1)103; P8-NEXT:    mtlr 0104; P8-NEXT:    blr105;106; P9-LABEL: test_choice2:107; P9:       # %bb.0: # %entry108; P9-NEXT:    mflr 0109; P9-NEXT:    stdu 1, -112(1)110; P9-NEXT:    std 0, 128(1)111; P9-NEXT:    xscmpuqp 0, 2, 3112; P9-NEXT:    crmove 20, 3113; P9-NEXT:    crnot 21, 20114; P9-NEXT:    crmove 20, 1115; P9-NEXT:    crnot 20, 20116; P9-NEXT:    crand 20, 20, 21117; P9-NEXT:    crxor 21, 21, 21118; P9-NEXT:    crxor 20, 20, 21119; P9-NEXT:    bc 12, 20, .LBB1_2120; P9-NEXT:    b .LBB1_1121; P9-NEXT:  .LBB1_1: # %if.true122; P9-NEXT:    bl foo123; P9-NEXT:    nop124; P9-NEXT:    stw 3, 108(1) # 4-byte Folded Spill125; P9-NEXT:    b .LBB1_3126; P9-NEXT:  .LBB1_2: # %if.false127; P9-NEXT:    bl bar128; P9-NEXT:    nop129; P9-NEXT:    stw 3, 108(1) # 4-byte Folded Spill130; P9-NEXT:  .LBB1_3: # %final131; P9-NEXT:    lwz 3, 108(1) # 4-byte Folded Reload132; P9-NEXT:    clrldi 3, 3, 32133; P9-NEXT:    addi 1, 1, 112134; P9-NEXT:    ld 0, 16(1)135; P9-NEXT:    mtlr 0136; P9-NEXT:    blr137entry:138  %cmp = fcmp ugt fp128 %a, %b139  br i1 %cmp, label %if.true, label %if.false140 141if.true:142  %res1 = call i32 @foo()143  br label %final144 145if.false:146  %res2 = call i32 @bar()147  br label %final148 149final:150  %result = phi i32 [%res1, %if.true], [%res2, %if.false]151  ret i32 %result152}153 154define i32 @test_choice3(fp128 %a, fp128 %b) #0 {155; P8-LABEL: test_choice3:156; P8:       # %bb.0: # %entry157; P8-NEXT:    mflr 0158; P8-NEXT:    stdu 1, -112(1)159; P8-NEXT:    std 0, 128(1)160; P8-NEXT:    bl __ltkf2161; P8-NEXT:    nop162; P8-NEXT:    # kill: def $r3 killed $r3 killed $x3163; P8-NEXT:    cmpwi 3, -1164; P8-NEXT:    bgt 0, .LBB2_2165; P8-NEXT:    b .LBB2_1166; P8-NEXT:  .LBB2_1: # %if.true167; P8-NEXT:    bl foo168; P8-NEXT:    nop169; P8-NEXT:    stw 3, 108(1) # 4-byte Folded Spill170; P8-NEXT:    b .LBB2_3171; P8-NEXT:  .LBB2_2: # %if.false172; P8-NEXT:    bl bar173; P8-NEXT:    nop174; P8-NEXT:    stw 3, 108(1) # 4-byte Folded Spill175; P8-NEXT:  .LBB2_3: # %final176; P8-NEXT:    lwz 3, 108(1) # 4-byte Folded Reload177; P8-NEXT:    clrldi 3, 3, 32178; P8-NEXT:    addi 1, 1, 112179; P8-NEXT:    ld 0, 16(1)180; P8-NEXT:    mtlr 0181; P8-NEXT:    blr182;183; P9-LABEL: test_choice3:184; P9:       # %bb.0: # %entry185; P9-NEXT:    mflr 0186; P9-NEXT:    stdu 1, -112(1)187; P9-NEXT:    std 0, 128(1)188; P9-NEXT:    xscmpuqp 0, 2, 3189; P9-NEXT:    bge 0, .LBB2_2190; P9-NEXT:    b .LBB2_1191; P9-NEXT:  .LBB2_1: # %if.true192; P9-NEXT:    bl foo193; P9-NEXT:    nop194; P9-NEXT:    stw 3, 108(1) # 4-byte Folded Spill195; P9-NEXT:    b .LBB2_3196; P9-NEXT:  .LBB2_2: # %if.false197; P9-NEXT:    bl bar198; P9-NEXT:    nop199; P9-NEXT:    stw 3, 108(1) # 4-byte Folded Spill200; P9-NEXT:  .LBB2_3: # %final201; P9-NEXT:    lwz 3, 108(1) # 4-byte Folded Reload202; P9-NEXT:    clrldi 3, 3, 32203; P9-NEXT:    addi 1, 1, 112204; P9-NEXT:    ld 0, 16(1)205; P9-NEXT:    mtlr 0206; P9-NEXT:    blr207entry:208  %cmp = fcmp olt fp128 %a, %b209  br i1 %cmp, label %if.true, label %if.false210 211if.true:212  %res1 = call i32 @foo()213  br label %final214 215if.false:216  %res2 = call i32 @bar()217  br label %final218 219final:220  %result = phi i32 [%res1, %if.true], [%res2, %if.false]221  ret i32 %result222}223 224define i32 @test_choice4(fp128 %a, fp128 %b) #0 {225; P8-LABEL: test_choice4:226; P8:       # %bb.0: # %entry227; P8-NEXT:    mflr 0228; P8-NEXT:    stdu 1, -112(1)229; P8-NEXT:    std 0, 128(1)230; P8-NEXT:    bl __eqkf2231; P8-NEXT:    nop232; P8-NEXT:    # kill: def $r3 killed $r3 killed $x3233; P8-NEXT:    cmplwi 3, 0234; P8-NEXT:    beq 0, .LBB3_2235; P8-NEXT:    b .LBB3_1236; P8-NEXT:  .LBB3_1: # %if.true237; P8-NEXT:    bl foo238; P8-NEXT:    nop239; P8-NEXT:    stw 3, 108(1) # 4-byte Folded Spill240; P8-NEXT:    b .LBB3_3241; P8-NEXT:  .LBB3_2: # %if.false242; P8-NEXT:    bl bar243; P8-NEXT:    nop244; P8-NEXT:    stw 3, 108(1) # 4-byte Folded Spill245; P8-NEXT:  .LBB3_3: # %final246; P8-NEXT:    lwz 3, 108(1) # 4-byte Folded Reload247; P8-NEXT:    clrldi 3, 3, 32248; P8-NEXT:    addi 1, 1, 112249; P8-NEXT:    ld 0, 16(1)250; P8-NEXT:    mtlr 0251; P8-NEXT:    blr252;253; P9-LABEL: test_choice4:254; P9:       # %bb.0: # %entry255; P9-NEXT:    mflr 0256; P9-NEXT:    stdu 1, -112(1)257; P9-NEXT:    std 0, 128(1)258; P9-NEXT:    xscmpuqp 0, 2, 3259; P9-NEXT:    beq 0, .LBB3_2260; P9-NEXT:    b .LBB3_1261; P9-NEXT:  .LBB3_1: # %if.true262; P9-NEXT:    bl foo263; P9-NEXT:    nop264; P9-NEXT:    stw 3, 108(1) # 4-byte Folded Spill265; P9-NEXT:    b .LBB3_3266; P9-NEXT:  .LBB3_2: # %if.false267; P9-NEXT:    bl bar268; P9-NEXT:    nop269; P9-NEXT:    stw 3, 108(1) # 4-byte Folded Spill270; P9-NEXT:  .LBB3_3: # %final271; P9-NEXT:    lwz 3, 108(1) # 4-byte Folded Reload272; P9-NEXT:    clrldi 3, 3, 32273; P9-NEXT:    addi 1, 1, 112274; P9-NEXT:    ld 0, 16(1)275; P9-NEXT:    mtlr 0276; P9-NEXT:    blr277entry:278  %cmp = fcmp une fp128 %a, %b279  br i1 %cmp, label %if.true, label %if.false280 281if.true:282  %res1 = call i32 @foo()283  br label %final284 285 if.false:286  %res2 = call i32 @bar()287  br label %final288 289final:290  %result = phi i32 [%res1, %if.true], [%res2, %if.false]291  ret i32 %result292}293 294attributes #0 = { nounwind }295 296declare i32 @foo()297declare i32 @bar()298