brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.6 KiB · 7e877a3 Raw
271 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 10; Function Attrs: norecurse nounwind readnone11define i64 @test_lllesll(i64 %a, i64 %b)  {12; CHECK-LABEL: test_lllesll:13; CHECK:       # %bb.0: # %entry14; CHECK-NEXT:    sradi r5, r4, 6315; CHECK-NEXT:    rldicl r6, r3, 1, 6316; CHECK-NEXT:    subfc r3, r3, r417; CHECK-NEXT:    adde r3, r5, r618; CHECK-NEXT:    blr19; CHECK-BE-LABEL: test_lllesll:20; CHECK-BE:       # %bb.0: # %entry21; CHECK-BE-NEXT:    rldicl r5, r3, 1, 6322; CHECK-BE-NEXT:    sradi r6, r4, 6323; CHECK-BE-NEXT:    subc r3, r4, r324; CHECK-BE-NEXT:    adde r3, r6, r525; CHECK-BE-NEXT:    blr26;27; CHECK-LE-LABEL: test_lllesll:28; CHECK-LE:       # %bb.0: # %entry29; CHECK-LE-NEXT:    rldicl r5, r3, 1, 6330; CHECK-LE-NEXT:    sradi r6, r4, 6331; CHECK-LE-NEXT:    subc r3, r4, r332; CHECK-LE-NEXT:    adde r3, r6, r533; CHECK-LE-NEXT:    blr34entry:35  %cmp = icmp sle i64 %a, %b36  %conv1 = zext i1 %cmp to i6437  ret i64 %conv138}39 40; Function Attrs: norecurse nounwind readnone41define i64 @test_lllesll_sext(i64 %a, i64 %b)  {42; CHECK-LABEL: test_lllesll_sext:43; CHECK:       # %bb.0: # %entry44; CHECK-NEXT:    sradi r5, r4, 6345; CHECK-NEXT:    rldicl r6, r3, 1, 6346; CHECK-NEXT:    subfc r3, r3, r447; CHECK-NEXT:    adde r3, r5, r648; CHECK-NEXT:    neg r3, r349; CHECK-NEXT:    blr50; CHECK-BE-LABEL: test_lllesll_sext:51; CHECK-BE:       # %bb.0: # %entry52; CHECK-BE-NEXT:    rldicl r5, r3, 1, 6353; CHECK-BE-NEXT:    sradi r6, r4, 6354; CHECK-BE-NEXT:    subc r3, r4, r355; CHECK-BE-NEXT:    adde r3, r6, r556; CHECK-BE-NEXT:    neg r3, r357; CHECK-BE-NEXT:    blr58;59; CHECK-LE-LABEL: test_lllesll_sext:60; CHECK-LE:       # %bb.0: # %entry61; CHECK-LE-NEXT:    rldicl r5, r3, 1, 6362; CHECK-LE-NEXT:    sradi r6, r4, 6363; CHECK-LE-NEXT:    subc r3, r4, r364; CHECK-LE-NEXT:    adde r3, r6, r565; CHECK-LE-NEXT:    neg r3, r366; CHECK-LE-NEXT:    blr67entry:68  %cmp = icmp sle i64 %a, %b69  %conv1 = sext i1 %cmp to i6470  ret i64 %conv171}72 73; Function Attrs: norecurse nounwind readnone74define i64 @test_lllesll_z(i64 %a)  {75; CHECK-LABEL: test_lllesll_z:76; CHECK:       # %bb.0: # %entry77; CHECK-NEXT:    addi r4, r3, -178; CHECK-NEXT:    or r3, r4, r379; CHECK-NEXT:    rldicl r3, r3, 1, 6380; CHECK-NEXT:    blr81; CHECK-BE-LABEL: test_lllesll_z:82; CHECK-BE:       # %bb.0: # %entry83; CHECK-BE-NEXT:    addi r4, r3, -184; CHECK-BE-NEXT:    or r3, r4, r385; CHECK-BE-NEXT:    rldicl r3, r3, 1, 6386; CHECK-BE-NEXT:    blr87;88; CHECK-LE-LABEL: test_lllesll_z:89; CHECK-LE:       # %bb.0: # %entry90; CHECK-LE-NEXT:    addi r4, r3, -191; CHECK-LE-NEXT:    or r3, r4, r392; CHECK-LE-NEXT:    rldicl r3, r3, 1, 6393; CHECK-LE-NEXT:    blr94entry:95  %cmp = icmp slt i64 %a, 196  %conv1 = zext i1 %cmp to i6497  ret i64 %conv198}99 100; Function Attrs: norecurse nounwind readnone101define i64 @test_lllesll_sext_z(i64 %a)  {102; CHECK-LABEL: test_lllesll_sext_z:103; CHECK:       # %bb.0: # %entry104; CHECK-NEXT:    addi r4, r3, -1105; CHECK-NEXT:    or r3, r4, r3106; CHECK-NEXT:    sradi r3, r3, 63107; CHECK-NEXT:    blr108; CHECK-BE-LABEL: test_lllesll_sext_z:109; CHECK-BE:       # %bb.0: # %entry110; CHECK-BE-NEXT:    addi r4, r3, -1111; CHECK-BE-NEXT:    or r3, r4, r3112; CHECK-BE-NEXT:    sradi r3, r3, 63113; CHECK-BE-NEXT:    blr114;115; CHECK-LE-LABEL: test_lllesll_sext_z:116; CHECK-LE:       # %bb.0: # %entry117; CHECK-LE-NEXT:    addi r4, r3, -1118; CHECK-LE-NEXT:    or r3, r4, r3119; CHECK-LE-NEXT:    sradi r3, r3, 63120; CHECK-LE-NEXT:    blr121entry:122  %cmp = icmp slt i64 %a, 1123  %conv1 = sext i1 %cmp to i64124  ret i64 %conv1125}126 127; Function Attrs: norecurse nounwind128define dso_local void @test_lllesll_store(i64 %a, i64 %b) {129; CHECK-LABEL: test_lllesll_store:130; CHECK:       # %bb.0: # %entry131; CHECK-NEXT:    sradi r6, r4, 63132; CHECK-NEXT:    addis r5, r2, glob@toc@ha133; CHECK-NEXT:    subfc r4, r3, r4134; CHECK-NEXT:    rldicl r3, r3, 1, 63135; CHECK-NEXT:    adde r3, r6, r3136; CHECK-NEXT:    std r3, glob@toc@l(r5)137; CHECK-NEXT:    blr138; CHECK-BE-LABEL: test_lllesll_store:139; CHECK-BE:       # %bb.0: # %entry140; CHECK-BE-NEXT:    rldicl r5, r3, 1, 63141; CHECK-BE-NEXT:    sradi r6, r4, 63142; CHECK-BE-NEXT:    subc r3, r4, r3143; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha144; CHECK-BE-NEXT:    adde r3, r6, r5145; CHECK-BE-NEXT:    std r3, glob@toc@l(r4)146; CHECK-BE-NEXT:    blr147;148; CHECK-LE-LABEL: test_lllesll_store:149; CHECK-LE:       # %bb.0: # %entry150; CHECK-LE-NEXT:    rldicl r5, r3, 1, 63151; CHECK-LE-NEXT:    sradi r6, r4, 63152; CHECK-LE-NEXT:    subc r3, r4, r3153; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha154; CHECK-LE-NEXT:    adde r3, r6, r5155; CHECK-LE-NEXT:    std r3, glob@toc@l(r4)156; CHECK-LE-NEXT:    blr157entry:158  %cmp = icmp sle i64 %a, %b159  %conv1 = zext i1 %cmp to i64160  store i64 %conv1, ptr @glob, align 8161  ret void162}163 164; Function Attrs: norecurse nounwind165define dso_local void @test_lllesll_sext_store(i64 %a, i64 %b) {166; CHECK-LABEL: test_lllesll_sext_store:167; CHECK:       # %bb.0: # %entry168; CHECK-NEXT:    sradi r6, r4, 63169; CHECK-NEXT:    addis r5, r2, glob@toc@ha170; CHECK-NEXT:    subfc r4, r3, r4171; CHECK-NEXT:    rldicl r3, r3, 1, 63172; CHECK-NEXT:    adde r3, r6, r3173; CHECK-NEXT:    neg r3, r3174; CHECK-NEXT:    std r3, glob@toc@l(r5)175; CHECK-NEXT:    blr176; CHECK-BE-LABEL: test_lllesll_sext_store:177; CHECK-BE:       # %bb.0: # %entry178; CHECK-BE-NEXT:    rldicl r5, r3, 1, 63179; CHECK-BE-NEXT:    sradi r6, r4, 63180; CHECK-BE-NEXT:    subc r3, r4, r3181; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha182; CHECK-BE-NEXT:    adde r3, r6, r5183; CHECK-BE-NEXT:    neg r3, r3184; CHECK-BE-NEXT:    std r3, glob@toc@l(r4)185; CHECK-BE-NEXT:    blr186;187; CHECK-LE-LABEL: test_lllesll_sext_store:188; CHECK-LE:       # %bb.0: # %entry189; CHECK-LE-NEXT:    rldicl r5, r3, 1, 63190; CHECK-LE-NEXT:    sradi r6, r4, 63191; CHECK-LE-NEXT:    subc r3, r4, r3192; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha193; CHECK-LE-NEXT:    adde r3, r6, r5194; CHECK-LE-NEXT:    neg r3, r3195; CHECK-LE-NEXT:    std r3, glob@toc@l(r4)196; CHECK-LE-NEXT:    blr197entry:198  %cmp = icmp sle i64 %a, %b199  %conv1 = sext i1 %cmp to i64200  store i64 %conv1, ptr @glob, align 8201  ret void202}203 204; Function Attrs: norecurse nounwind205define dso_local void @test_lllesll_z_store(i64 %a) {206; CHECK-LABEL: test_lllesll_z_store:207; CHECK:       # %bb.0: # %entry208; CHECK-NEXT:    addi r5, r3, -1209; CHECK-NEXT:    addis r4, r2, glob@toc@ha210; CHECK-NEXT:    or r3, r5, r3211; CHECK-NEXT:    rldicl r3, r3, 1, 63212; CHECK-NEXT:    std r3, glob@toc@l(r4)213; CHECK-NEXT:    blr214; CHECK-BE-LABEL: test_lllesll_z_store:215; CHECK-BE:       # %bb.0: # %entry216; CHECK-BE-NEXT:    addi r4, r3, -1217; CHECK-BE-NEXT:    or r3, r4, r3218; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha219; CHECK-BE-NEXT:    rldicl r3, r3, 1, 63220; CHECK-BE-NEXT:    std r3, glob@toc@l(r4)221; CHECK-BE-NEXT:    blr222;223; CHECK-LE-LABEL: test_lllesll_z_store:224; CHECK-LE:       # %bb.0: # %entry225; CHECK-LE-NEXT:    addi r4, r3, -1226; CHECK-LE-NEXT:    or r3, r4, r3227; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha228; CHECK-LE-NEXT:    rldicl r3, r3, 1, 63229; CHECK-LE-NEXT:    std r3, glob@toc@l(r4)230; CHECK-LE-NEXT:    blr231entry:232  %cmp = icmp slt i64 %a, 1233  %conv1 = zext i1 %cmp to i64234  store i64 %conv1, ptr @glob, align 8235  ret void236}237 238; Function Attrs: norecurse nounwind239define dso_local void @test_lllesll_sext_z_store(i64 %a) {240; CHECK-LABEL: test_lllesll_sext_z_store:241; CHECK:       # %bb.0: # %entry242; CHECK-NEXT:    addi r5, r3, -1243; CHECK-NEXT:    addis r4, r2, glob@toc@ha244; CHECK-NEXT:    or r3, r5, r3245; CHECK-NEXT:    sradi r3, r3, 63246; CHECK-NEXT:    std r3, glob@toc@l(r4)247; CHECK-NEXT:    blr248; CHECK-BE-LABEL: test_lllesll_sext_z_store:249; CHECK-BE:       # %bb.0: # %entry250; CHECK-BE-NEXT:    addi r4, r3, -1251; CHECK-BE-NEXT:    or r3, r4, r3252; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha253; CHECK-BE-NEXT:    sradi r3, r3, 63254; CHECK-BE-NEXT:    std r3, glob@toc@l(r4)255; CHECK-BE-NEXT:    blr256;257; CHECK-LE-LABEL: test_lllesll_sext_z_store:258; CHECK-LE:       # %bb.0: # %entry259; CHECK-LE-NEXT:    addi r4, r3, -1260; CHECK-LE-NEXT:    or r3, r4, r3261; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha262; CHECK-LE-NEXT:    sradi r3, r3, 63263; CHECK-LE-NEXT:    std r3, glob@toc@l(r4)264; CHECK-LE-NEXT:    blr265entry:266  %cmp = icmp slt i64 %a, 1267  %conv1 = sext i1 %cmp to i64268  store i64 %conv1, ptr @glob, align 8269  ret void270}271