brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.9 KiB · 4e423a2 Raw
251 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \3; RUN:   -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-BE \4; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl5; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \6; RUN:   -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \7; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl8@glob = dso_local local_unnamed_addr global i64 0, align 89 10define dso_local signext i32 @test_igesll(i64 %a, i64 %b) {11; CHECK-LABEL: test_igesll:12; CHECK:       # %bb.0: # %entry13; CHECK-NEXT:    sradi r5, r3, 6314; CHECK-NEXT:    rldicl r6, r4, 1, 6315; CHECK-NEXT:    subfc r3, r4, r316; CHECK-NEXT:    adde r3, r5, r617; CHECK-NEXT:    blr18; CHECK-BE-LABEL: test_igesll:19; CHECK-BE:       # %bb.0: # %entry20; CHECK-BE-NEXT:    rldicl r5, r4, 1, 6321; CHECK-BE-NEXT:    sradi r6, r3, 6322; CHECK-BE-NEXT:    subc r3, r3, r423; CHECK-BE-NEXT:    adde r3, r6, r524; CHECK-BE-NEXT:    blr25;26; CHECK-LE-LABEL: test_igesll:27; CHECK-LE:       # %bb.0: # %entry28; CHECK-LE-NEXT:    rldicl r5, r4, 1, 6329; CHECK-LE-NEXT:    sradi r6, r3, 6330; CHECK-LE-NEXT:    subc r3, r3, r431; CHECK-LE-NEXT:    adde r3, r6, r532; CHECK-LE-NEXT:    blr33entry:34  %cmp = icmp sge i64 %a, %b35  %conv = zext i1 %cmp to i3236  ret i32 %conv37}38 39define dso_local signext i32 @test_igesll_sext(i64 %a, i64 %b) {40; CHECK-LABEL: test_igesll_sext:41; CHECK:       # %bb.0: # %entry42; CHECK-NEXT:    sradi r5, r3, 6343; CHECK-NEXT:    rldicl r6, r4, 1, 6344; CHECK-NEXT:    subfc r3, r4, r345; CHECK-NEXT:    adde r3, r5, r646; CHECK-NEXT:    neg r3, r347; CHECK-NEXT:    blr48; CHECK-BE-LABEL: test_igesll_sext:49; CHECK-BE:       # %bb.0: # %entry50; CHECK-BE-NEXT:    rldicl r5, r4, 1, 6351; CHECK-BE-NEXT:    sradi r6, r3, 6352; CHECK-BE-NEXT:    subc r3, r3, r453; CHECK-BE-NEXT:    adde r3, r6, r554; CHECK-BE-NEXT:    neg r3, r355; CHECK-BE-NEXT:    blr56;57; CHECK-LE-LABEL: test_igesll_sext:58; CHECK-LE:       # %bb.0: # %entry59; CHECK-LE-NEXT:    rldicl r5, r4, 1, 6360; CHECK-LE-NEXT:    sradi r6, r3, 6361; CHECK-LE-NEXT:    subc r3, r3, r462; CHECK-LE-NEXT:    adde r3, r6, r563; CHECK-LE-NEXT:    neg r3, r364; CHECK-LE-NEXT:    blr65entry:66  %cmp = icmp sge i64 %a, %b67  %sub = sext i1 %cmp to i3268  ret i32 %sub69}70 71define dso_local signext i32 @test_igesll_z(i64 %a) {72; CHECK-LABEL: test_igesll_z:73; CHECK:       # %bb.0: # %entry74; CHECK-NEXT:    not r3, r375; CHECK-NEXT:    rldicl r3, r3, 1, 6376; CHECK-NEXT:    blr77; CHECK-BE-LABEL: test_igesll_z:78; CHECK-BE:       # %bb.0: # %entry79; CHECK-BE-NEXT:    not r3, r380; CHECK-BE-NEXT:    rldicl r3, r3, 1, 6381; CHECK-BE-NEXT:    blr82;83; CHECK-LE-LABEL: test_igesll_z:84; CHECK-LE:       # %bb.0: # %entry85; CHECK-LE-NEXT:    not r3, r386; CHECK-LE-NEXT:    rldicl r3, r3, 1, 6387; CHECK-LE-NEXT:    blr88entry:89  %cmp = icmp sgt i64 %a, -190  %conv = zext i1 %cmp to i3291  ret i32 %conv92}93 94define dso_local signext i32 @test_igesll_sext_z(i64 %a) {95; CHECK-LABEL: test_igesll_sext_z:96; CHECK:       # %bb.0: # %entry97; CHECK-NEXT:    sradi r3, r3, 6398; CHECK-NEXT:    not r3, r399; CHECK-NEXT:    blr100; CHECK-BE-LABEL: test_igesll_sext_z:101; CHECK-BE:       # %bb.0: # %entry102; CHECK-BE-NEXT:    not r3, r3103; CHECK-BE-NEXT:    sradi r3, r3, 63104; CHECK-BE-NEXT:    blr105;106; CHECK-LE-LABEL: test_igesll_sext_z:107; CHECK-LE:       # %bb.0: # %entry108; CHECK-LE-NEXT:    not r3, r3109; CHECK-LE-NEXT:    sradi r3, r3, 63110; CHECK-LE-NEXT:    blr111entry:112  %cmp = icmp sgt i64 %a, -1113  %sub = sext i1 %cmp to i32114  ret i32 %sub115}116 117define dso_local void @test_igesll_store(i64 %a, i64 %b) {118; CHECK-LABEL: test_igesll_store:119; CHECK:       # %bb.0: # %entry120; CHECK-NEXT:    sradi r6, r3, 63121; CHECK-NEXT:    addis r5, r2, glob@toc@ha122; CHECK-NEXT:    subfc r3, r4, r3123; CHECK-NEXT:    rldicl r3, r4, 1, 63124; CHECK-NEXT:    adde r3, r6, r3125; CHECK-NEXT:    std r3, glob@toc@l(r5)126; CHECK-NEXT:    blr127; CHECK-BE-LABEL: test_igesll_store:128; CHECK-BE:       # %bb.0: # %entry129; CHECK-BE-NEXT:    rldicl r5, r4, 1, 63130; CHECK-BE-NEXT:    sradi r6, r3, 63131; CHECK-BE-NEXT:    subc r3, r3, r4132; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha133; CHECK-BE-NEXT:    adde r3, r6, r5134; CHECK-BE-NEXT:    std r3, glob@toc@l(r4)135; CHECK-BE-NEXT:    blr136;137; CHECK-LE-LABEL: test_igesll_store:138; CHECK-LE:       # %bb.0: # %entry139; CHECK-LE-NEXT:    rldicl r5, r4, 1, 63140; CHECK-LE-NEXT:    sradi r6, r3, 63141; CHECK-LE-NEXT:    subc r3, r3, r4142; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha143; CHECK-LE-NEXT:    adde r3, r6, r5144; CHECK-LE-NEXT:    std r3, glob@toc@l(r4)145; CHECK-LE-NEXT:    blr146entry:147  %cmp = icmp sge i64 %a, %b148  %conv1 = zext i1 %cmp to i64149  store i64 %conv1, ptr @glob, align 8150  ret void151}152 153define dso_local void @test_igesll_sext_store(i64 %a, i64 %b) {154; CHECK-LABEL: test_igesll_sext_store:155; CHECK:       # %bb.0: # %entry156; CHECK-NEXT:    sradi r6, r3, 63157; CHECK-NEXT:    addis r5, r2, glob@toc@ha158; CHECK-NEXT:    subfc r3, r4, r3159; CHECK-NEXT:    rldicl r3, r4, 1, 63160; CHECK-NEXT:    adde r3, r6, r3161; CHECK-NEXT:    neg r3, r3162; CHECK-NEXT:    std r3, glob@toc@l(r5)163; CHECK-NEXT:    blr164; CHECK-BE-LABEL: test_igesll_sext_store:165; CHECK-BE:       # %bb.0: # %entry166; CHECK-BE-NEXT:    rldicl r5, r4, 1, 63167; CHECK-BE-NEXT:    sradi r6, r3, 63168; CHECK-BE-NEXT:    subc r3, r3, r4169; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha170; CHECK-BE-NEXT:    adde r3, r6, r5171; CHECK-BE-NEXT:    neg r3, r3172; CHECK-BE-NEXT:    std r3, glob@toc@l(r4)173; CHECK-BE-NEXT:    blr174;175; CHECK-LE-LABEL: test_igesll_sext_store:176; CHECK-LE:       # %bb.0: # %entry177; CHECK-LE-NEXT:    rldicl r5, r4, 1, 63178; CHECK-LE-NEXT:    sradi r6, r3, 63179; CHECK-LE-NEXT:    subc r3, r3, r4180; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha181; CHECK-LE-NEXT:    adde r3, r6, r5182; CHECK-LE-NEXT:    neg r3, r3183; CHECK-LE-NEXT:    std r3, glob@toc@l(r4)184; CHECK-LE-NEXT:    blr185entry:186  %cmp = icmp sge i64 %a, %b187  %conv1 = sext i1 %cmp to i64188  store i64 %conv1, ptr @glob, align 8189  ret void190}191 192define dso_local void @test_igesll_z_store(i64 %a) {193; CHECK-LABEL: test_igesll_z_store:194; CHECK:       # %bb.0: # %entry195; CHECK-NEXT:    not r3, r3196; CHECK-NEXT:    addis r4, r2, glob@toc@ha197; CHECK-NEXT:    rldicl r3, r3, 1, 63198; CHECK-NEXT:    std r3, glob@toc@l(r4)199; CHECK-NEXT:    blr200; CHECK-BE-LABEL: test_igesll_z_store:201; CHECK-BE:       # %bb.0: # %entry202; CHECK-BE-NEXT:    not r3, r3203; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha204; CHECK-BE-NEXT:    rldicl r3, r3, 1, 63205; CHECK-BE-NEXT:    std r3, glob@toc@l(r4)206; CHECK-BE-NEXT:    blr207;208; CHECK-LE-LABEL: test_igesll_z_store:209; CHECK-LE:       # %bb.0: # %entry210; CHECK-LE-NEXT:    not r3, r3211; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha212; CHECK-LE-NEXT:    rldicl r3, r3, 1, 63213; CHECK-LE-NEXT:    std r3, glob@toc@l(r4)214; CHECK-LE-NEXT:    blr215entry:216  %cmp = icmp sgt i64 %a, -1217  %conv1 = zext i1 %cmp to i64218  store i64 %conv1, ptr @glob, align 8219  ret void220}221 222define dso_local void @test_igesll_sext_z_store(i64 %a) {223; CHECK-LABEL: test_igesll_sext_z_store:224; CHECK:       # %bb.0: # %entry225; CHECK-NEXT:    not r3, r3226; CHECK-NEXT:    addis r4, r2, glob@toc@ha227; CHECK-NEXT:    sradi r3, r3, 63228; CHECK-NEXT:    std r3, glob@toc@l(r4)229; CHECK-NEXT:    blr230; CHECK-BE-LABEL: test_igesll_sext_z_store:231; CHECK-BE:       # %bb.0: # %entry232; CHECK-BE-NEXT:    not r3, r3233; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha234; CHECK-BE-NEXT:    sradi r3, r3, 63235; CHECK-BE-NEXT:    std r3, glob@toc@l(r4)236; CHECK-BE-NEXT:    blr237;238; CHECK-LE-LABEL: test_igesll_sext_z_store:239; CHECK-LE:       # %bb.0: # %entry240; CHECK-LE-NEXT:    not r3, r3241; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha242; CHECK-LE-NEXT:    sradi r3, r3, 63243; CHECK-LE-NEXT:    std r3, glob@toc@l(r4)244; CHECK-LE-NEXT:    blr245entry:246  %cmp = icmp sgt i64 %a, -1247  %conv1 = sext i1 %cmp to i64248  store i64 %conv1, ptr @glob, align 8249  ret void250}251