brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.2 KiB · 7504371 Raw
593 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-linux-gnu -O3 -ppc-asm-full-reg-names -verify-machineinstrs < %s | FileCheck %s3 4; Test cases are generated from:5; long long NAME(PARAM a, PARAM b) {6;   if (LHS > RHS)7;     return b;8;   if (LHS < RHS)9;     return a;\10;   return a * b;11; }12; Please note funtion name is defined as <PARAM>_<LHS>_<RHS>. Take ll_a_op_b__113; for example. ll is PARAM, a_op_b (i.e., a << b) is LHS, _1 (i.e., -1) is RHS.14 15target datalayout = "e-m:e-i64:64-n32:64"16 17define i64 @ll_a_op_b__2(i64 %a, i64 %b) {18; CHECK-LABEL: ll_a_op_b__2:19; CHECK:       # %bb.0: # %entry20; CHECK-NEXT:    sld r5, r3, r421; CHECK-NEXT:    cmpdi r5, -222; CHECK-NEXT:    ble cr0, .LBB0_223; CHECK-NEXT:  # %bb.1: # %return24; CHECK-NEXT:    mr r3, r425; CHECK-NEXT:    blr26; CHECK-NEXT:  .LBB0_2: # %if.end27; CHECK-NEXT:    li r5, 128; CHECK-NEXT:    isellt r4, r5, r429; CHECK-NEXT:    mulld r3, r4, r330; CHECK-NEXT:    blr31entry:32  %shl = shl i64 %a, %b33  %cmp = icmp sgt i64 %shl, -234  br i1 %cmp, label %return, label %if.end35 36if.end:                                           ; preds = %entry37  %cmp2 = icmp eq i64 %shl, -238  %mul = select i1 %cmp2, i64 %b, i64 139  %spec.select = mul nsw i64 %mul, %a40  ret i64 %spec.select41 42return:                                           ; preds = %entry43  ret i64 %b44}45 46define i64 @ll_a_op_b__1(i64 %a, i64 %b) {47; CHECK-LABEL: ll_a_op_b__1:48; CHECK:       # %bb.0: # %entry49; CHECK-NEXT:    sld r5, r3, r450; CHECK-NEXT:    cmpdi r5, -151; CHECK-NEXT:    ble cr0, .LBB1_252; CHECK-NEXT:  # %bb.1: # %return53; CHECK-NEXT:    mr r3, r454; CHECK-NEXT:    blr55; CHECK-NEXT:  .LBB1_2: # %if.end56; CHECK-NEXT:    li r5, 157; CHECK-NEXT:    isellt r4, r5, r458; CHECK-NEXT:    mulld r3, r4, r359; CHECK-NEXT:    blr60entry:61  %shl = shl i64 %a, %b62  %cmp = icmp sgt i64 %shl, -163  br i1 %cmp, label %return, label %if.end64 65if.end:                                           ; preds = %entry66  %cmp2 = icmp eq i64 %shl, -167  %mul = select i1 %cmp2, i64 %b, i64 168  %spec.select = mul nsw i64 %mul, %a69  ret i64 %spec.select70 71return:                                           ; preds = %entry72  ret i64 %b73}74 75define i64 @ll_a_op_b_0(i64 %a, i64 %b) {76; CHECK-LABEL: ll_a_op_b_0:77; CHECK:       # %bb.0: # %entry78; CHECK-NEXT:    sld. r5, r3, r479; CHECK-NEXT:    ble cr0, .LBB2_280; CHECK-NEXT:  # %bb.1: # %return81; CHECK-NEXT:    mr r3, r482; CHECK-NEXT:    blr83; CHECK-NEXT:  .LBB2_2: # %if.end84; CHECK-NEXT:    li r5, 185; CHECK-NEXT:    isellt r4, r5, r486; CHECK-NEXT:    mulld r3, r4, r387; CHECK-NEXT:    blr88entry:89  %shl = shl i64 %a, %b90  %cmp = icmp sgt i64 %shl, 091  br i1 %cmp, label %return, label %if.end92 93if.end:                                           ; preds = %entry94  %cmp2 = icmp eq i64 %shl, 095  %mul = select i1 %cmp2, i64 %b, i64 196  %spec.select = mul nsw i64 %mul, %a97  ret i64 %spec.select98 99return:                                           ; preds = %entry100  ret i64 %b101}102 103define i64 @ll_a_op_b_1(i64 %a, i64 %b) {104; CHECK-LABEL: ll_a_op_b_1:105; CHECK:       # %bb.0: # %entry106; CHECK-NEXT:    sld r5, r3, r4107; CHECK-NEXT:    cmpdi r5, 1108; CHECK-NEXT:    ble cr0, .LBB3_2109; CHECK-NEXT:  # %bb.1: # %return110; CHECK-NEXT:    mr r3, r4111; CHECK-NEXT:    blr112; CHECK-NEXT:  .LBB3_2: # %if.end113; CHECK-NEXT:    li r5, 1114; CHECK-NEXT:    isellt r4, r5, r4115; CHECK-NEXT:    mulld r3, r4, r3116; CHECK-NEXT:    blr117entry:118  %shl = shl i64 %a, %b119  %cmp = icmp sgt i64 %shl, 1120  br i1 %cmp, label %return, label %if.end121 122if.end:                                           ; preds = %entry123  %cmp2 = icmp eq i64 %shl, 1124  %mul = select i1 %cmp2, i64 %b, i64 1125  %spec.select = mul nsw i64 %mul, %a126  ret i64 %spec.select127 128return:                                           ; preds = %entry129  ret i64 %b130}131 132define i64 @ll_a_op_b_2(i64 %a, i64 %b) {133; CHECK-LABEL: ll_a_op_b_2:134; CHECK:       # %bb.0: # %entry135; CHECK-NEXT:    sld r5, r3, r4136; CHECK-NEXT:    cmpdi r5, 2137; CHECK-NEXT:    ble cr0, .LBB4_2138; CHECK-NEXT:  # %bb.1: # %return139; CHECK-NEXT:    mr r3, r4140; CHECK-NEXT:    blr141; CHECK-NEXT:  .LBB4_2: # %if.end142; CHECK-NEXT:    li r5, 1143; CHECK-NEXT:    isellt r4, r5, r4144; CHECK-NEXT:    mulld r3, r4, r3145; CHECK-NEXT:    blr146entry:147  %shl = shl i64 %a, %b148  %cmp = icmp sgt i64 %shl, 2149  br i1 %cmp, label %return, label %if.end150 151if.end:                                           ; preds = %entry152  %cmp2 = icmp eq i64 %shl, 2153  %mul = select i1 %cmp2, i64 %b, i64 1154  %spec.select = mul nsw i64 %mul, %a155  ret i64 %spec.select156 157return:                                           ; preds = %entry158  ret i64 %b159}160 161define i64 @ll_a__2(i64 %a, i64 %b) {162; CHECK-LABEL: ll_a__2:163; CHECK:       # %bb.0: # %entry164; CHECK-NEXT:    cmpdi r3, -2165; CHECK-NEXT:    ble cr0, .LBB5_2166; CHECK-NEXT:  # %bb.1: # %return167; CHECK-NEXT:    mr r3, r4168; CHECK-NEXT:    blr169; CHECK-NEXT:  .LBB5_2: # %if.end170; CHECK-NEXT:    li r5, 1171; CHECK-NEXT:    isellt r4, r5, r4172; CHECK-NEXT:    mulld r3, r4, r3173; CHECK-NEXT:    blr174entry:175  %cmp = icmp sgt i64 %a, -2176  br i1 %cmp, label %return, label %if.end177 178if.end:                                           ; preds = %entry179  %cmp1 = icmp eq i64 %a, -2180  %mul = select i1 %cmp1, i64 %b, i64 1181  %spec.select = mul nsw i64 %mul, %a182  ret i64 %spec.select183 184return:                                           ; preds = %entry185  ret i64 %b186}187 188define i64 @ll_a__1(i64 %a, i64 %b) {189; CHECK-LABEL: ll_a__1:190; CHECK:       # %bb.0: # %entry191; CHECK-NEXT:    cmpdi r3, -1192; CHECK-NEXT:    ble cr0, .LBB6_2193; CHECK-NEXT:  # %bb.1: # %return194; CHECK-NEXT:    mr r3, r4195; CHECK-NEXT:    blr196; CHECK-NEXT:  .LBB6_2: # %if.end197; CHECK-NEXT:    li r5, 1198; CHECK-NEXT:    isellt r4, r5, r4199; CHECK-NEXT:    mulld r3, r4, r3200; CHECK-NEXT:    blr201entry:202  %cmp = icmp sgt i64 %a, -1203  br i1 %cmp, label %return, label %if.end204 205if.end:                                           ; preds = %entry206  %cmp1 = icmp eq i64 %a, -1207  %mul = select i1 %cmp1, i64 %b, i64 1208  %spec.select = mul nsw i64 %mul, %a209  ret i64 %spec.select210 211return:                                           ; preds = %entry212  ret i64 %b213}214 215define i64 @ll_a_0(i64 %a, i64 %b) {216; CHECK-LABEL: ll_a_0:217; CHECK:       # %bb.0: # %entry218; CHECK-NEXT:    cmpdi r3, 0219; CHECK-NEXT:    ble cr0, .LBB7_2220; CHECK-NEXT:  # %bb.1: # %return221; CHECK-NEXT:    mr r3, r4222; CHECK-NEXT:    blr223; CHECK-NEXT:  .LBB7_2: # %if.end224; CHECK-NEXT:    li r5, 1225; CHECK-NEXT:    isellt r4, r5, r4226; CHECK-NEXT:    mulld r3, r4, r3227; CHECK-NEXT:    blr228entry:229  %cmp = icmp sgt i64 %a, 0230  br i1 %cmp, label %return, label %if.end231 232if.end:                                           ; preds = %entry233  %cmp1 = icmp eq i64 %a, 0234  %mul = select i1 %cmp1, i64 %b, i64 1235  %spec.select = mul nsw i64 %mul, %a236  ret i64 %spec.select237 238return:                                           ; preds = %entry239  ret i64 %b240}241 242define i64 @ll_a_1(i64 %a, i64 %b) {243; CHECK-LABEL: ll_a_1:244; CHECK:       # %bb.0: # %entry245; CHECK-NEXT:    cmpdi r3, 1246; CHECK-NEXT:    ble cr0, .LBB8_2247; CHECK-NEXT:  # %bb.1: # %return248; CHECK-NEXT:    mr r3, r4249; CHECK-NEXT:    blr250; CHECK-NEXT:  .LBB8_2: # %if.end251; CHECK-NEXT:    li r5, 1252; CHECK-NEXT:    isellt r4, r5, r4253; CHECK-NEXT:    mulld r3, r4, r3254; CHECK-NEXT:    blr255entry:256  %cmp = icmp sgt i64 %a, 1257  br i1 %cmp, label %return, label %if.end258 259if.end:                                           ; preds = %entry260  %cmp1 = icmp eq i64 %a, 1261  %mul = select i1 %cmp1, i64 %b, i64 1262  %spec.select = mul nsw i64 %mul, %a263  ret i64 %spec.select264 265return:                                           ; preds = %entry266  ret i64 %b267}268 269define i64 @ll_a_2(i64 %a, i64 %b) {270; CHECK-LABEL: ll_a_2:271; CHECK:       # %bb.0: # %entry272; CHECK-NEXT:    cmpdi r3, 2273; CHECK-NEXT:    ble cr0, .LBB9_2274; CHECK-NEXT:  # %bb.1: # %return275; CHECK-NEXT:    mr r3, r4276; CHECK-NEXT:    blr277; CHECK-NEXT:  .LBB9_2: # %if.end278; CHECK-NEXT:    li r5, 1279; CHECK-NEXT:    isellt r4, r5, r4280; CHECK-NEXT:    mulld r3, r4, r3281; CHECK-NEXT:    blr282entry:283  %cmp = icmp sgt i64 %a, 2284  br i1 %cmp, label %return, label %if.end285 286if.end:                                           ; preds = %entry287  %cmp1 = icmp eq i64 %a, 2288  %mul = select i1 %cmp1, i64 %b, i64 1289  %spec.select = mul nsw i64 %mul, %a290  ret i64 %spec.select291 292return:                                           ; preds = %entry293  ret i64 %b294}295 296define i64 @i_a_op_b__2(i32 signext %a, i32 signext %b) {297; CHECK-LABEL: i_a_op_b__2:298; CHECK:       # %bb.0: # %entry299; CHECK-NEXT:    slw r5, r3, r4300; CHECK-NEXT:    cmpwi r5, -2301; CHECK-NEXT:    bgt cr0, .LBB10_2302; CHECK-NEXT:  # %bb.1: # %if.end303; CHECK-NEXT:    li r5, 1304; CHECK-NEXT:    isellt r4, r5, r4305; CHECK-NEXT:    mullw r4, r4, r3306; CHECK-NEXT:  .LBB10_2: # %return307; CHECK-NEXT:    extsw r3, r4308; CHECK-NEXT:    blr309entry:310  %shl = shl i32 %a, %b311  %cmp = icmp sgt i32 %shl, -2312  br i1 %cmp, label %return, label %if.end313 314if.end:                                           ; preds = %entry315  %cmp2 = icmp eq i32 %shl, -2316  %mul = select i1 %cmp2, i32 %b, i32 1317  %spec.select = mul nsw i32 %mul, %a318  br label %return319 320return:                                           ; preds = %if.end, %entry321  %retval.0.in = phi i32 [ %b, %entry ], [ %spec.select, %if.end ]322  %retval.0 = sext i32 %retval.0.in to i64323  ret i64 %retval.0324}325 326define i64 @i_a_op_b__1(i32 signext %a, i32 signext %b) {327; CHECK-LABEL: i_a_op_b__1:328; CHECK:       # %bb.0: # %entry329; CHECK-NEXT:    slw r5, r3, r4330; CHECK-NEXT:    cmpwi r5, -1331; CHECK-NEXT:    ble cr0, .LBB11_2332; CHECK-NEXT:  # %bb.1: # %return333; CHECK-NEXT:    extsw r3, r4334; CHECK-NEXT:    blr335; CHECK-NEXT:  .LBB11_2: # %if.end336; CHECK-NEXT:    li r5, 1337; CHECK-NEXT:    isellt r4, r5, r4338; CHECK-NEXT:    mullw r4, r4, r3339; CHECK-NEXT:    extsw r3, r4340; CHECK-NEXT:    blr341entry:342  %shl = shl i32 %a, %b343  %cmp = icmp sgt i32 %shl, -1344  br i1 %cmp, label %return, label %if.end345 346if.end:                                           ; preds = %entry347  %cmp2 = icmp eq i32 %shl, -1348  %mul = select i1 %cmp2, i32 %b, i32 1349  %spec.select = mul nsw i32 %mul, %a350  br label %return351 352return:                                           ; preds = %if.end, %entry353  %retval.0.in = phi i32 [ %b, %entry ], [ %spec.select, %if.end ]354  %retval.0 = sext i32 %retval.0.in to i64355  ret i64 %retval.0356}357 358define i64 @i_a_op_b_0(i32 signext %a, i32 signext %b) {359; CHECK-LABEL: i_a_op_b_0:360; CHECK:       # %bb.0: # %entry361; CHECK-NEXT:    slw r5, r3, r4362; CHECK-NEXT:    cmpwi r5, 0363; CHECK-NEXT:    ble cr0, .LBB12_2364; CHECK-NEXT:  # %bb.1: # %return365; CHECK-NEXT:    extsw r3, r4366; CHECK-NEXT:    blr367; CHECK-NEXT:  .LBB12_2: # %if.end368; CHECK-NEXT:    li r5, 1369; CHECK-NEXT:    isellt r4, r5, r4370; CHECK-NEXT:    mullw r4, r4, r3371; CHECK-NEXT:    extsw r3, r4372; CHECK-NEXT:    blr373entry:374  %shl = shl i32 %a, %b375  %cmp = icmp sgt i32 %shl, 0376  br i1 %cmp, label %return, label %if.end377 378if.end:                                           ; preds = %entry379  %cmp2 = icmp eq i32 %shl, 0380  %mul = select i1 %cmp2, i32 %b, i32 1381  %spec.select = mul nsw i32 %mul, %a382  br label %return383 384return:                                           ; preds = %if.end, %entry385  %retval.0.in = phi i32 [ %b, %entry ], [ %spec.select, %if.end ]386  %retval.0 = sext i32 %retval.0.in to i64387  ret i64 %retval.0388}389 390define i64 @i_a_op_b_1(i32 signext %a, i32 signext %b) {391; CHECK-LABEL: i_a_op_b_1:392; CHECK:       # %bb.0: # %entry393; CHECK-NEXT:    slw r5, r3, r4394; CHECK-NEXT:    cmpwi r5, 1395; CHECK-NEXT:    bgt cr0, .LBB13_2396; CHECK-NEXT:  # %bb.1: # %if.end397; CHECK-NEXT:    li r5, 1398; CHECK-NEXT:    isellt r4, r5, r4399; CHECK-NEXT:    mullw r4, r4, r3400; CHECK-NEXT:  .LBB13_2: # %return401; CHECK-NEXT:    extsw r3, r4402; CHECK-NEXT:    blr403entry:404  %shl = shl i32 %a, %b405  %cmp = icmp sgt i32 %shl, 1406  br i1 %cmp, label %return, label %if.end407 408if.end:                                           ; preds = %entry409  %cmp2 = icmp eq i32 %shl, 1410  %mul = select i1 %cmp2, i32 %b, i32 1411  %spec.select = mul nsw i32 %mul, %a412  br label %return413 414return:                                           ; preds = %if.end, %entry415  %retval.0.in = phi i32 [ %b, %entry ], [ %spec.select, %if.end ]416  %retval.0 = sext i32 %retval.0.in to i64417  ret i64 %retval.0418}419 420define i64 @i_a_op_b_2(i32 signext %a, i32 signext %b) {421; CHECK-LABEL: i_a_op_b_2:422; CHECK:       # %bb.0: # %entry423; CHECK-NEXT:    slw r5, r3, r4424; CHECK-NEXT:    cmpwi r5, 2425; CHECK-NEXT:    bgt cr0, .LBB14_2426; CHECK-NEXT:  # %bb.1: # %if.end427; CHECK-NEXT:    li r5, 1428; CHECK-NEXT:    isellt r4, r5, r4429; CHECK-NEXT:    mullw r4, r4, r3430; CHECK-NEXT:  .LBB14_2: # %return431; CHECK-NEXT:    extsw r3, r4432; CHECK-NEXT:    blr433entry:434  %shl = shl i32 %a, %b435  %cmp = icmp sgt i32 %shl, 2436  br i1 %cmp, label %return, label %if.end437 438if.end:                                           ; preds = %entry439  %cmp2 = icmp eq i32 %shl, 2440  %mul = select i1 %cmp2, i32 %b, i32 1441  %spec.select = mul nsw i32 %mul, %a442  br label %return443 444return:                                           ; preds = %if.end, %entry445  %retval.0.in = phi i32 [ %b, %entry ], [ %spec.select, %if.end ]446  %retval.0 = sext i32 %retval.0.in to i64447  ret i64 %retval.0448}449 450define i64 @i_a__2(i32 signext %a, i32 signext %b) {451; CHECK-LABEL: i_a__2:452; CHECK:       # %bb.0: # %entry453; CHECK-NEXT:    cmpwi r3, -2454; CHECK-NEXT:    bgt cr0, .LBB15_2455; CHECK-NEXT:  # %bb.1: # %if.end456; CHECK-NEXT:    li r5, 1457; CHECK-NEXT:    isellt r4, r5, r4458; CHECK-NEXT:    mullw r4, r4, r3459; CHECK-NEXT:  .LBB15_2: # %return460; CHECK-NEXT:    extsw r3, r4461; CHECK-NEXT:    blr462entry:463  %cmp = icmp sgt i32 %a, -2464  br i1 %cmp, label %return, label %if.end465 466if.end:                                           ; preds = %entry467  %cmp1 = icmp eq i32 %a, -2468  %mul = select i1 %cmp1, i32 %b, i32 1469  %spec.select = mul nsw i32 %mul, %a470  br label %return471 472return:                                           ; preds = %if.end, %entry473  %retval.0.in = phi i32 [ %b, %entry ], [ %spec.select, %if.end ]474  %retval.0 = sext i32 %retval.0.in to i64475  ret i64 %retval.0476}477 478define i64 @i_a__1(i32 signext %a, i32 signext %b) {479; CHECK-LABEL: i_a__1:480; CHECK:       # %bb.0: # %entry481; CHECK-NEXT:    cmpwi r3, -1482; CHECK-NEXT:    ble cr0, .LBB16_2483; CHECK-NEXT:  # %bb.1: # %return484; CHECK-NEXT:    extsw r3, r4485; CHECK-NEXT:    blr486; CHECK-NEXT:  .LBB16_2: # %if.end487; CHECK-NEXT:    li r5, 1488; CHECK-NEXT:    isellt r4, r5, r4489; CHECK-NEXT:    mullw r4, r4, r3490; CHECK-NEXT:    extsw r3, r4491; CHECK-NEXT:    blr492entry:493  %cmp = icmp sgt i32 %a, -1494  br i1 %cmp, label %return, label %if.end495 496if.end:                                           ; preds = %entry497  %cmp1 = icmp eq i32 %a, -1498  %mul = select i1 %cmp1, i32 %b, i32 1499  %spec.select = mul nsw i32 %mul, %a500  br label %return501 502return:                                           ; preds = %if.end, %entry503  %retval.0.in = phi i32 [ %b, %entry ], [ %spec.select, %if.end ]504  %retval.0 = sext i32 %retval.0.in to i64505  ret i64 %retval.0506}507 508define i64 @i_a_0(i32 signext %a, i32 signext %b) {509; CHECK-LABEL: i_a_0:510; CHECK:       # %bb.0: # %entry511; CHECK-NEXT:    cmpwi r3, 0512; CHECK-NEXT:    ble cr0, .LBB17_2513; CHECK-NEXT:  # %bb.1: # %return514; CHECK-NEXT:    extsw r3, r4515; CHECK-NEXT:    blr516; CHECK-NEXT:  .LBB17_2: # %if.end517; CHECK-NEXT:    li r5, 1518; CHECK-NEXT:    isellt r4, r5, r4519; CHECK-NEXT:    mullw r4, r4, r3520; CHECK-NEXT:    extsw r3, r4521; CHECK-NEXT:    blr522entry:523  %cmp = icmp sgt i32 %a, 0524  br i1 %cmp, label %return, label %if.end525 526if.end:                                           ; preds = %entry527  %cmp1 = icmp eq i32 %a, 0528  %mul = select i1 %cmp1, i32 %b, i32 1529  %spec.select = mul nsw i32 %mul, %a530  br label %return531 532return:                                           ; preds = %if.end, %entry533  %retval.0.in = phi i32 [ %b, %entry ], [ %spec.select, %if.end ]534  %retval.0 = sext i32 %retval.0.in to i64535  ret i64 %retval.0536}537 538define i64 @i_a_1(i32 signext %a, i32 signext %b) {539; CHECK-LABEL: i_a_1:540; CHECK:       # %bb.0: # %entry541; CHECK-NEXT:    cmpwi r3, 1542; CHECK-NEXT:    bgt cr0, .LBB18_2543; CHECK-NEXT:  # %bb.1: # %if.end544; CHECK-NEXT:    li r5, 1545; CHECK-NEXT:    isellt r4, r5, r4546; CHECK-NEXT:    mullw r4, r4, r3547; CHECK-NEXT:  .LBB18_2: # %return548; CHECK-NEXT:    extsw r3, r4549; CHECK-NEXT:    blr550entry:551  %cmp = icmp sgt i32 %a, 1552  br i1 %cmp, label %return, label %if.end553 554if.end:                                           ; preds = %entry555  %cmp1 = icmp eq i32 %a, 1556  %mul = select i1 %cmp1, i32 %b, i32 1557  %spec.select = mul nsw i32 %mul, %a558  br label %return559 560return:                                           ; preds = %if.end, %entry561  %retval.0.in = phi i32 [ %b, %entry ], [ %spec.select, %if.end ]562  %retval.0 = sext i32 %retval.0.in to i64563  ret i64 %retval.0564}565 566define i64 @i_a_2(i32 signext %a, i32 signext %b) {567; CHECK-LABEL: i_a_2:568; CHECK:       # %bb.0: # %entry569; CHECK-NEXT:    cmpwi r3, 2570; CHECK-NEXT:    bgt cr0, .LBB19_2571; CHECK-NEXT:  # %bb.1: # %if.end572; CHECK-NEXT:    li r5, 1573; CHECK-NEXT:    isellt r4, r5, r4574; CHECK-NEXT:    mullw r4, r4, r3575; CHECK-NEXT:  .LBB19_2: # %return576; CHECK-NEXT:    extsw r3, r4577; CHECK-NEXT:    blr578entry:579  %cmp = icmp sgt i32 %a, 2580  br i1 %cmp, label %return, label %if.end581 582if.end:                                           ; preds = %entry583  %cmp1 = icmp eq i32 %a, 2584  %mul = select i1 %cmp1, i32 %b, i32 1585  %spec.select = mul nsw i32 %mul, %a586  br label %return587 588return:                                           ; preds = %if.end, %entry589  %retval.0.in = phi i32 [ %b, %entry ], [ %spec.select, %if.end ]590  %retval.0 = sext i32 %retval.0.in to i64591  ret i64 %retval.0592}593