brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.8 KiB · d730981 Raw
520 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -verify-machineinstrs -mcpu=ppc -mtriple=powerpc64-ibm-aix < %s | FileCheck -check-prefix=AIX64 %s3; RUN: llc -verify-machineinstrs -mcpu=ppc -mtriple=powerpc-ibm-aix < %s | FileCheck -check-prefix=AIX32 %s4; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck -check-prefix=LE64 %s5 6define signext i32 @leaf1_noredzone(i32 signext %a, i32 signext %b) #0 {7; AIX64-LABEL: leaf1_noredzone:8; AIX64:       # %bb.0: # %entry9; AIX64-NEXT:    stdu 1, -64(1)10; AIX64-NEXT:    stw 3, 60(1)11; AIX64-NEXT:    add 3, 3, 412; AIX64-NEXT:    extsw 3, 313; AIX64-NEXT:    stw 4, 56(1)14; AIX64-NEXT:    addi 1, 1, 6415; AIX64-NEXT:    blr16;17; AIX32-LABEL: leaf1_noredzone:18; AIX32:       # %bb.0: # %entry19; AIX32-NEXT:    stwu 1, -32(1)20; AIX32-NEXT:    stw 3, 28(1)21; AIX32-NEXT:    add 3, 3, 422; AIX32-NEXT:    stw 4, 24(1)23; AIX32-NEXT:    addi 1, 1, 3224; AIX32-NEXT:    blr25;26; LE64-LABEL: leaf1_noredzone:27; LE64:       # %bb.0: # %entry28; LE64-NEXT:    stdu 1, -48(1)29; LE64-NEXT:    stw 3, 44(1)30; LE64-NEXT:    add 3, 3, 431; LE64-NEXT:    stw 4, 40(1)32; LE64-NEXT:    extsw 3, 333; LE64-NEXT:    addi 1, 1, 4834; LE64-NEXT:    blr35entry:36  %a.addr = alloca i32, align 437  %b.addr = alloca i32, align 438  store i32 %a, ptr %a.addr, align 439  store i32 %b, ptr %b.addr, align 440  %0 = load i32, ptr %a.addr, align 441  %1 = load i32, ptr %b.addr, align 442  %add = add nsw i32 %0, %143  ret i32 %add44}45 46define void @nonleaf1_noredzone(i32 signext %a, i32 signext %b) #0 {47; AIX64-LABEL: nonleaf1_noredzone:48; AIX64:       # %bb.0: # %entry49; AIX64-NEXT:    mflr 050; AIX64-NEXT:    stdu 1, -128(1)51; AIX64-NEXT:    std 0, 144(1)52; AIX64-NEXT:    stw 3, 124(1)53; AIX64-NEXT:    add 3, 3, 454; AIX64-NEXT:    extsw 3, 355; AIX64-NEXT:    stw 4, 120(1)56; AIX64-NEXT:    bl .leaf2[PR]57; AIX64-NEXT:    nop58; AIX64-NEXT:    lwz 3, 124(1)59; AIX64-NEXT:    lwz 4, 120(1)60; AIX64-NEXT:    sub 3, 3, 461; AIX64-NEXT:    extsw 3, 362; AIX64-NEXT:    bl .leaf2[PR]63; AIX64-NEXT:    nop64; AIX64-NEXT:    addi 1, 1, 12865; AIX64-NEXT:    ld 0, 16(1)66; AIX64-NEXT:    mtlr 067; AIX64-NEXT:    blr68;69; AIX32-LABEL: nonleaf1_noredzone:70; AIX32:       # %bb.0: # %entry71; AIX32-NEXT:    mflr 072; AIX32-NEXT:    stwu 1, -64(1)73; AIX32-NEXT:    stw 0, 72(1)74; AIX32-NEXT:    stw 3, 60(1)75; AIX32-NEXT:    add 3, 3, 476; AIX32-NEXT:    stw 4, 56(1)77; AIX32-NEXT:    bl .leaf2[PR]78; AIX32-NEXT:    nop79; AIX32-NEXT:    lwz 3, 60(1)80; AIX32-NEXT:    lwz 4, 56(1)81; AIX32-NEXT:    sub 3, 3, 482; AIX32-NEXT:    bl .leaf2[PR]83; AIX32-NEXT:    nop84; AIX32-NEXT:    addi 1, 1, 6485; AIX32-NEXT:    lwz 0, 8(1)86; AIX32-NEXT:    mtlr 087; AIX32-NEXT:    blr88;89; LE64-LABEL: nonleaf1_noredzone:90; LE64:       # %bb.0: # %entry91; LE64-NEXT:    mflr 092; LE64-NEXT:    stdu 1, -48(1)93; LE64-NEXT:    std 0, 64(1)94; LE64-NEXT:    stw 3, 44(1)95; LE64-NEXT:    add 3, 3, 496; LE64-NEXT:    extsw 3, 397; LE64-NEXT:    stw 4, 40(1)98; LE64-NEXT:    bl leaf299; LE64-NEXT:    nop100; LE64-NEXT:    lwz 3, 44(1)101; LE64-NEXT:    lwz 4, 40(1)102; LE64-NEXT:    sub 3, 3, 4103; LE64-NEXT:    extsw 3, 3104; LE64-NEXT:    bl leaf2105; LE64-NEXT:    nop106; LE64-NEXT:    addi 1, 1, 48107; LE64-NEXT:    ld 0, 16(1)108; LE64-NEXT:    mtlr 0109; LE64-NEXT:    blr110entry:111  %a.addr = alloca i32, align 4112  %b.addr = alloca i32, align 4113  store i32 %a, ptr %a.addr, align 4114  store i32 %b, ptr %b.addr, align 4115  %0 = load i32, ptr %a.addr, align 4116  %1 = load i32, ptr %b.addr, align 4117  %add = add nsw i32 %0, %1118  call void @leaf2(i32 signext %add)119  %2 = load i32, ptr %a.addr, align 4120  %3 = load i32, ptr %b.addr, align 4121  %sub = sub nsw i32 %2, %3122  call void @leaf2(i32 signext %sub)123  ret void124}125 126declare void @leaf2(i32 signext)127 128define signext i32 @leaf3_noredzone(i32 signext %a, i32 signext %b) #0 {129; AIX64-LABEL: leaf3_noredzone:130; AIX64:       # %bb.0: # %entry131; AIX64-NEXT:    stdu 1, -48(1)132; AIX64-NEXT:    ld 6, 0(1)133; AIX64-NEXT:    mr 5, 3134; AIX64-NEXT:    add 3, 5, 4135; AIX64-NEXT:    extsw 3, 3136; AIX64-NEXT:    stw 5, 48(6)137; AIX64-NEXT:    stw 4, 52(6)138; AIX64-NEXT:    addi 1, 1, 48139; AIX64-NEXT:    blr140;141; AIX32-LABEL: leaf3_noredzone:142; AIX32:       # %bb.0: # %entry143; AIX32-NEXT:    stwu 1, -32(1)144; AIX32-NEXT:    lwz 6, 0(1)145; AIX32-NEXT:    mr 5, 3146; AIX32-NEXT:    add 3, 3, 4147; AIX32-NEXT:    stw 5, 24(6)148; AIX32-NEXT:    stw 4, 28(6)149; AIX32-NEXT:    addi 1, 1, 32150; AIX32-NEXT:    blr151;152; LE64-LABEL: leaf3_noredzone:153; LE64:       # %bb.0: # %entry154; LE64-NEXT:    stdu 1, -32(1)155; LE64-NEXT:    ld 5, 0(1)156; LE64-NEXT:    stw 3, 48(5)157; LE64-NEXT:    add 3, 3, 4158; LE64-NEXT:    stw 4, 52(5)159; LE64-NEXT:    extsw 3, 3160; LE64-NEXT:    addi 1, 1, 32161; LE64-NEXT:    blr162entry:163  %f.addr = call ptr @llvm.frameaddress(i32 1)164  %a.addr = getelementptr ptr, ptr %f.addr, i32 6165  %b.addr = getelementptr i32, ptr %a.addr, i32 1166  store i32 %a, ptr %a.addr, align 4167  store i32 %b, ptr %b.addr, align 4168  %0 = load i32, ptr %a.addr, align 4169  %1 = load i32, ptr %b.addr, align 4170  %add = add nsw i32 %0, %1171  ret i32 %add172}173 174define void @nonleaf2_noredzone(i32 signext %a, i32 signext %b) #0 {175; AIX64-LABEL: nonleaf2_noredzone:176; AIX64:       # %bb.0: # %entry177; AIX64-NEXT:    mflr 0178; AIX64-NEXT:    stdu 1, -128(1)179; AIX64-NEXT:    std 0, 144(1)180; AIX64-NEXT:    std 31, 120(1) # 8-byte Folded Spill181; AIX64-NEXT:    add 5, 3, 4182; AIX64-NEXT:    ld 31, 0(1)183; AIX64-NEXT:    extsw 5, 5184; AIX64-NEXT:    stw 3, 48(31)185; AIX64-NEXT:    mr 3, 5186; AIX64-NEXT:    stw 4, 52(31)187; AIX64-NEXT:    bl .leaf2[PR]188; AIX64-NEXT:    nop189; AIX64-NEXT:    lwz 3, 48(31)190; AIX64-NEXT:    lwz 4, 52(31)191; AIX64-NEXT:    sub 3, 3, 4192; AIX64-NEXT:    extsw 3, 3193; AIX64-NEXT:    bl .leaf2[PR]194; AIX64-NEXT:    nop195; AIX64-NEXT:    ld 31, 120(1) # 8-byte Folded Reload196; AIX64-NEXT:    addi 1, 1, 128197; AIX64-NEXT:    ld 0, 16(1)198; AIX64-NEXT:    mtlr 0199; AIX64-NEXT:    blr200;201; AIX32-LABEL: nonleaf2_noredzone:202; AIX32:       # %bb.0: # %entry203; AIX32-NEXT:    mflr 0204; AIX32-NEXT:    stwu 1, -64(1)205; AIX32-NEXT:    stw 0, 72(1)206; AIX32-NEXT:    add 5, 3, 4207; AIX32-NEXT:    stw 31, 60(1) # 4-byte Folded Spill208; AIX32-NEXT:    lwz 31, 0(1)209; AIX32-NEXT:    stw 3, 24(31)210; AIX32-NEXT:    mr 3, 5211; AIX32-NEXT:    stw 4, 28(31)212; AIX32-NEXT:    bl .leaf2[PR]213; AIX32-NEXT:    nop214; AIX32-NEXT:    lwz 3, 24(31)215; AIX32-NEXT:    lwz 4, 28(31)216; AIX32-NEXT:    sub 3, 3, 4217; AIX32-NEXT:    bl .leaf2[PR]218; AIX32-NEXT:    nop219; AIX32-NEXT:    lwz 31, 60(1) # 4-byte Folded Reload220; AIX32-NEXT:    addi 1, 1, 64221; AIX32-NEXT:    lwz 0, 8(1)222; AIX32-NEXT:    mtlr 0223; AIX32-NEXT:    blr224;225; LE64-LABEL: nonleaf2_noredzone:226; LE64:       # %bb.0: # %entry227; LE64-NEXT:    mflr 0228; LE64-NEXT:    std 30, -16(1) # 8-byte Folded Spill229; LE64-NEXT:    stdu 1, -48(1)230; LE64-NEXT:    std 0, 64(1)231; LE64-NEXT:    ld 30, 0(1)232; LE64-NEXT:    stw 3, 48(30)233; LE64-NEXT:    add 3, 3, 4234; LE64-NEXT:    stw 4, 52(30)235; LE64-NEXT:    extsw 3, 3236; LE64-NEXT:    bl leaf2237; LE64-NEXT:    nop238; LE64-NEXT:    lwz 3, 48(30)239; LE64-NEXT:    lwz 4, 52(30)240; LE64-NEXT:    sub 3, 3, 4241; LE64-NEXT:    extsw 3, 3242; LE64-NEXT:    bl leaf2243; LE64-NEXT:    nop244; LE64-NEXT:    addi 1, 1, 48245; LE64-NEXT:    ld 0, 16(1)246; LE64-NEXT:    ld 30, -16(1) # 8-byte Folded Reload247; LE64-NEXT:    mtlr 0248; LE64-NEXT:    blr249entry:250  %f.addr = call ptr @llvm.frameaddress(i32 1)251  %a.addr = getelementptr ptr, ptr %f.addr, i32 6252  %b.addr = getelementptr i32, ptr %a.addr, i32 1253  store i32 %a, ptr %a.addr, align 4254  store i32 %b, ptr %b.addr, align 4255  %0 = load i32, ptr %a.addr, align 4256  %1 = load i32, ptr %b.addr, align 4257  %add = add nsw i32 %0, %1258  call void @leaf2(i32 signext %add)259  %2 = load i32, ptr %a.addr, align 4260  %3 = load i32, ptr %b.addr, align 4261  %sub = sub nsw i32 %2, %3262  call void @leaf2(i32 signext %sub)263  ret void264}265 266define signext i32 @leaf1_redzone(i32 signext %a, i32 signext %b) #1 {267; AIX64-LABEL: leaf1_redzone:268; AIX64:       # %bb.0: # %entry269; AIX64-NEXT:    stw 3, -4(1)270; AIX64-NEXT:    add 3, 3, 4271; AIX64-NEXT:    extsw 3, 3272; AIX64-NEXT:    stw 4, -8(1)273; AIX64-NEXT:    blr274;275; AIX32-LABEL: leaf1_redzone:276; AIX32:       # %bb.0: # %entry277; AIX32-NEXT:    stw 3, -4(1)278; AIX32-NEXT:    add 3, 3, 4279; AIX32-NEXT:    stw 4, -8(1)280; AIX32-NEXT:    blr281;282; LE64-LABEL: leaf1_redzone:283; LE64:       # %bb.0: # %entry284; LE64-NEXT:    stw 3, -4(1)285; LE64-NEXT:    add 3, 3, 4286; LE64-NEXT:    stw 4, -8(1)287; LE64-NEXT:    extsw 3, 3288; LE64-NEXT:    blr289entry:290  %a.addr = alloca i32, align 4291  %b.addr = alloca i32, align 4292  store i32 %a, ptr %a.addr, align 4293  store i32 %b, ptr %b.addr, align 4294  %0 = load i32, ptr %a.addr, align 4295  %1 = load i32, ptr %b.addr, align 4296  %add = add nsw i32 %0, %1297  ret i32 %add298}299 300define void @nonleaf1_redzone(i32 signext %a, i32 signext %b) #1 {301; AIX64-LABEL: nonleaf1_redzone:302; AIX64:       # %bb.0: # %entry303; AIX64-NEXT:    mflr 0304; AIX64-NEXT:    stdu 1, -128(1)305; AIX64-NEXT:    std 0, 144(1)306; AIX64-NEXT:    stw 3, 124(1)307; AIX64-NEXT:    add 3, 3, 4308; AIX64-NEXT:    extsw 3, 3309; AIX64-NEXT:    stw 4, 120(1)310; AIX64-NEXT:    bl .leaf2[PR]311; AIX64-NEXT:    nop312; AIX64-NEXT:    lwz 3, 124(1)313; AIX64-NEXT:    lwz 4, 120(1)314; AIX64-NEXT:    sub 3, 3, 4315; AIX64-NEXT:    extsw 3, 3316; AIX64-NEXT:    bl .leaf2[PR]317; AIX64-NEXT:    nop318; AIX64-NEXT:    addi 1, 1, 128319; AIX64-NEXT:    ld 0, 16(1)320; AIX64-NEXT:    mtlr 0321; AIX64-NEXT:    blr322;323; AIX32-LABEL: nonleaf1_redzone:324; AIX32:       # %bb.0: # %entry325; AIX32-NEXT:    mflr 0326; AIX32-NEXT:    stwu 1, -64(1)327; AIX32-NEXT:    stw 0, 72(1)328; AIX32-NEXT:    stw 3, 60(1)329; AIX32-NEXT:    add 3, 3, 4330; AIX32-NEXT:    stw 4, 56(1)331; AIX32-NEXT:    bl .leaf2[PR]332; AIX32-NEXT:    nop333; AIX32-NEXT:    lwz 3, 60(1)334; AIX32-NEXT:    lwz 4, 56(1)335; AIX32-NEXT:    sub 3, 3, 4336; AIX32-NEXT:    bl .leaf2[PR]337; AIX32-NEXT:    nop338; AIX32-NEXT:    addi 1, 1, 64339; AIX32-NEXT:    lwz 0, 8(1)340; AIX32-NEXT:    mtlr 0341; AIX32-NEXT:    blr342;343; LE64-LABEL: nonleaf1_redzone:344; LE64:       # %bb.0: # %entry345; LE64-NEXT:    mflr 0346; LE64-NEXT:    stdu 1, -48(1)347; LE64-NEXT:    std 0, 64(1)348; LE64-NEXT:    stw 3, 44(1)349; LE64-NEXT:    add 3, 3, 4350; LE64-NEXT:    extsw 3, 3351; LE64-NEXT:    stw 4, 40(1)352; LE64-NEXT:    bl leaf2353; LE64-NEXT:    nop354; LE64-NEXT:    lwz 3, 44(1)355; LE64-NEXT:    lwz 4, 40(1)356; LE64-NEXT:    sub 3, 3, 4357; LE64-NEXT:    extsw 3, 3358; LE64-NEXT:    bl leaf2359; LE64-NEXT:    nop360; LE64-NEXT:    addi 1, 1, 48361; LE64-NEXT:    ld 0, 16(1)362; LE64-NEXT:    mtlr 0363; LE64-NEXT:    blr364entry:365  %a.addr = alloca i32, align 4366  %b.addr = alloca i32, align 4367  store i32 %a, ptr %a.addr, align 4368  store i32 %b, ptr %b.addr, align 4369  %0 = load i32, ptr %a.addr, align 4370  %1 = load i32, ptr %b.addr, align 4371  %add = add nsw i32 %0, %1372  call void @leaf2(i32 signext %add)373  %2 = load i32, ptr %a.addr, align 4374  %3 = load i32, ptr %b.addr, align 4375  %sub = sub nsw i32 %2, %3376  call void @leaf2(i32 signext %sub)377  ret void378}379 380define signext i32 @leaf3_redzone(i32 signext %a, i32 signext %b) #1 {381; AIX64-LABEL: leaf3_redzone:382; AIX64:       # %bb.0: # %entry383; AIX64-NEXT:    stdu 1, -48(1)384; AIX64-NEXT:    ld 6, 0(1)385; AIX64-NEXT:    mr 5, 3386; AIX64-NEXT:    add 3, 5, 4387; AIX64-NEXT:    extsw 3, 3388; AIX64-NEXT:    stw 5, 48(6)389; AIX64-NEXT:    stw 4, 52(6)390; AIX64-NEXT:    addi 1, 1, 48391; AIX64-NEXT:    blr392;393; AIX32-LABEL: leaf3_redzone:394; AIX32:       # %bb.0: # %entry395; AIX32-NEXT:    stwu 1, -32(1)396; AIX32-NEXT:    lwz 6, 0(1)397; AIX32-NEXT:    mr 5, 3398; AIX32-NEXT:    add 3, 3, 4399; AIX32-NEXT:    stw 5, 24(6)400; AIX32-NEXT:    stw 4, 28(6)401; AIX32-NEXT:    addi 1, 1, 32402; AIX32-NEXT:    blr403;404; LE64-LABEL: leaf3_redzone:405; LE64:       # %bb.0: # %entry406; LE64-NEXT:    stdu 1, -32(1)407; LE64-NEXT:    ld 5, 0(1)408; LE64-NEXT:    stw 3, 48(5)409; LE64-NEXT:    add 3, 3, 4410; LE64-NEXT:    stw 4, 52(5)411; LE64-NEXT:    extsw 3, 3412; LE64-NEXT:    addi 1, 1, 32413; LE64-NEXT:    blr414entry:415  %f.addr = call ptr @llvm.frameaddress(i32 1)416  %a.addr = getelementptr ptr, ptr %f.addr, i32 6417  %b.addr = getelementptr i32, ptr %a.addr, i32 1418  store i32 %a, ptr %a.addr, align 4419  store i32 %b, ptr %b.addr, align 4420  %0 = load i32, ptr %a.addr, align 4421  %1 = load i32, ptr %b.addr, align 4422  %add = add nsw i32 %0, %1423  ret i32 %add424}425 426define void @nonleaf2_redzone(i32 signext %a, i32 signext %b) #1 {427; AIX64-LABEL: nonleaf2_redzone:428; AIX64:       # %bb.0: # %entry429; AIX64-NEXT:    mflr 0430; AIX64-NEXT:    stdu 1, -128(1)431; AIX64-NEXT:    std 0, 144(1)432; AIX64-NEXT:    std 31, 120(1) # 8-byte Folded Spill433; AIX64-NEXT:    add 5, 3, 4434; AIX64-NEXT:    ld 31, 0(1)435; AIX64-NEXT:    extsw 5, 5436; AIX64-NEXT:    stw 3, 48(31)437; AIX64-NEXT:    mr 3, 5438; AIX64-NEXT:    stw 4, 52(31)439; AIX64-NEXT:    bl .leaf2[PR]440; AIX64-NEXT:    nop441; AIX64-NEXT:    lwz 3, 48(31)442; AIX64-NEXT:    lwz 4, 52(31)443; AIX64-NEXT:    sub 3, 3, 4444; AIX64-NEXT:    extsw 3, 3445; AIX64-NEXT:    bl .leaf2[PR]446; AIX64-NEXT:    nop447; AIX64-NEXT:    ld 31, 120(1) # 8-byte Folded Reload448; AIX64-NEXT:    addi 1, 1, 128449; AIX64-NEXT:    ld 0, 16(1)450; AIX64-NEXT:    mtlr 0451; AIX64-NEXT:    blr452;453; AIX32-LABEL: nonleaf2_redzone:454; AIX32:       # %bb.0: # %entry455; AIX32-NEXT:    mflr 0456; AIX32-NEXT:    stwu 1, -64(1)457; AIX32-NEXT:    stw 0, 72(1)458; AIX32-NEXT:    add 5, 3, 4459; AIX32-NEXT:    stw 31, 60(1) # 4-byte Folded Spill460; AIX32-NEXT:    lwz 31, 0(1)461; AIX32-NEXT:    stw 3, 24(31)462; AIX32-NEXT:    mr 3, 5463; AIX32-NEXT:    stw 4, 28(31)464; AIX32-NEXT:    bl .leaf2[PR]465; AIX32-NEXT:    nop466; AIX32-NEXT:    lwz 3, 24(31)467; AIX32-NEXT:    lwz 4, 28(31)468; AIX32-NEXT:    sub 3, 3, 4469; AIX32-NEXT:    bl .leaf2[PR]470; AIX32-NEXT:    nop471; AIX32-NEXT:    lwz 31, 60(1) # 4-byte Folded Reload472; AIX32-NEXT:    addi 1, 1, 64473; AIX32-NEXT:    lwz 0, 8(1)474; AIX32-NEXT:    mtlr 0475; AIX32-NEXT:    blr476;477; LE64-LABEL: nonleaf2_redzone:478; LE64:       # %bb.0: # %entry479; LE64-NEXT:    mflr 0480; LE64-NEXT:    std 30, -16(1) # 8-byte Folded Spill481; LE64-NEXT:    stdu 1, -48(1)482; LE64-NEXT:    std 0, 64(1)483; LE64-NEXT:    ld 30, 0(1)484; LE64-NEXT:    stw 3, 48(30)485; LE64-NEXT:    add 3, 3, 4486; LE64-NEXT:    stw 4, 52(30)487; LE64-NEXT:    extsw 3, 3488; LE64-NEXT:    bl leaf2489; LE64-NEXT:    nop490; LE64-NEXT:    lwz 3, 48(30)491; LE64-NEXT:    lwz 4, 52(30)492; LE64-NEXT:    sub 3, 3, 4493; LE64-NEXT:    extsw 3, 3494; LE64-NEXT:    bl leaf2495; LE64-NEXT:    nop496; LE64-NEXT:    addi 1, 1, 48497; LE64-NEXT:    ld 0, 16(1)498; LE64-NEXT:    ld 30, -16(1) # 8-byte Folded Reload499; LE64-NEXT:    mtlr 0500; LE64-NEXT:    blr501entry:502  %f.addr = call ptr @llvm.frameaddress(i32 1)503  %a.addr = getelementptr ptr, ptr %f.addr, i32 6504  %b.addr = getelementptr i32, ptr %a.addr, i32 1505  store i32 %a, ptr %a.addr, align 4506  store i32 %b, ptr %b.addr, align 4507  %0 = load i32, ptr %a.addr, align 4508  %1 = load i32, ptr %b.addr, align 4509  %add = add nsw i32 %0, %1510  call void @leaf2(i32 signext %add)511  %2 = load i32, ptr %a.addr, align 4512  %3 = load i32, ptr %b.addr, align 4513  %sub = sub nsw i32 %2, %3514  call void @leaf2(i32 signext %sub)515  ret void516}517 518attributes #0 = { noredzone nounwind noinline }519attributes #1 = { nounwind noinline }520