brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.3 KiB · 3c60f67 Raw
263 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_ilesll(i64 %a, i64 %b) {11; CHECK-LABEL: test_ilesll:12; CHECK:       # %bb.0: # %entry13; CHECK-NEXT:    sradi r5, r4, 6314; CHECK-NEXT:    rldicl r6, r3, 1, 6315; CHECK-NEXT:    subfc r3, r3, r416; CHECK-NEXT:    adde r3, r5, r617; CHECK-NEXT:    blr18; CHECK-BE-LABEL: test_ilesll:19; CHECK-BE:       # %bb.0: # %entry20; CHECK-BE-NEXT:    rldicl r5, r3, 1, 6321; CHECK-BE-NEXT:    sradi r6, r4, 6322; CHECK-BE-NEXT:    subc r3, r4, r323; CHECK-BE-NEXT:    adde r3, r6, r524; CHECK-BE-NEXT:    blr25;26; CHECK-LE-LABEL: test_ilesll:27; CHECK-LE:       # %bb.0: # %entry28; CHECK-LE-NEXT:    rldicl r5, r3, 1, 6329; CHECK-LE-NEXT:    sradi r6, r4, 6330; CHECK-LE-NEXT:    subc r3, r4, r331; CHECK-LE-NEXT:    adde r3, r6, r532; CHECK-LE-NEXT:    blr33entry:34  %cmp = icmp sle i64 %a, %b35  %conv = zext i1 %cmp to i3236  ret i32 %conv37}38 39define dso_local signext i32 @test_ilesll_sext(i64 %a, i64 %b) {40; CHECK-LABEL: test_ilesll_sext:41; CHECK:       # %bb.0: # %entry42; CHECK-NEXT:    sradi r5, r4, 6343; CHECK-NEXT:    rldicl r6, r3, 1, 6344; CHECK-NEXT:    subfc r3, r3, r445; CHECK-NEXT:    adde r3, r5, r646; CHECK-NEXT:    neg r3, r347; CHECK-NEXT:    blr48; CHECK-BE-LABEL: test_ilesll_sext:49; CHECK-BE:       # %bb.0: # %entry50; CHECK-BE-NEXT:    rldicl r5, r3, 1, 6351; CHECK-BE-NEXT:    sradi r6, r4, 6352; CHECK-BE-NEXT:    subc r3, r4, r353; CHECK-BE-NEXT:    adde r3, r6, r554; CHECK-BE-NEXT:    neg r3, r355; CHECK-BE-NEXT:    blr56;57; CHECK-LE-LABEL: test_ilesll_sext:58; CHECK-LE:       # %bb.0: # %entry59; CHECK-LE-NEXT:    rldicl r5, r3, 1, 6360; CHECK-LE-NEXT:    sradi r6, r4, 6361; CHECK-LE-NEXT:    subc r3, r4, r362; CHECK-LE-NEXT:    adde r3, r6, r563; CHECK-LE-NEXT:    neg r3, r364; CHECK-LE-NEXT:    blr65entry:66  %cmp = icmp sle i64 %a, %b67  %sub = sext i1 %cmp to i3268  ret i32 %sub69}70 71define dso_local signext i32 @test_ilesll_z(i64 %a) {72; CHECK-LABEL: test_ilesll_z:73; CHECK:       # %bb.0: # %entry74; CHECK-NEXT:    addi r4, r3, -175; CHECK-NEXT:    or r3, r4, r376; CHECK-NEXT:    rldicl r3, r3, 1, 6377; CHECK-NEXT:    blr78; CHECK-BE-LABEL: test_ilesll_z:79; CHECK-BE:       # %bb.0: # %entry80; CHECK-BE-NEXT:    addi r4, r3, -181; CHECK-BE-NEXT:    or r3, r4, r382; CHECK-BE-NEXT:    rldicl r3, r3, 1, 6383; CHECK-BE-NEXT:    blr84;85; CHECK-LE-LABEL: test_ilesll_z:86; CHECK-LE:       # %bb.0: # %entry87; CHECK-LE-NEXT:    addi r4, r3, -188; CHECK-LE-NEXT:    or r3, r4, r389; CHECK-LE-NEXT:    rldicl r3, r3, 1, 6390; CHECK-LE-NEXT:    blr91entry:92  %cmp = icmp slt i64 %a, 193  %conv = zext i1 %cmp to i3294  ret i32 %conv95}96 97define dso_local signext i32 @test_ilesll_sext_z(i64 %a) {98; CHECK-LABEL: test_ilesll_sext_z:99; CHECK:       # %bb.0: # %entry100; CHECK-NEXT:    addi r4, r3, -1101; CHECK-NEXT:    or r3, r4, r3102; CHECK-NEXT:    sradi r3, r3, 63103; CHECK-NEXT:    blr104; CHECK-BE-LABEL: test_ilesll_sext_z:105; CHECK-BE:       # %bb.0: # %entry106; CHECK-BE-NEXT:    addi r4, r3, -1107; CHECK-BE-NEXT:    or r3, r4, r3108; CHECK-BE-NEXT:    sradi r3, r3, 63109; CHECK-BE-NEXT:    blr110;111; CHECK-LE-LABEL: test_ilesll_sext_z:112; CHECK-LE:       # %bb.0: # %entry113; CHECK-LE-NEXT:    addi r4, r3, -1114; CHECK-LE-NEXT:    or r3, r4, r3115; CHECK-LE-NEXT:    sradi r3, r3, 63116; CHECK-LE-NEXT:    blr117entry:118  %cmp = icmp slt i64 %a, 1119  %sub = sext i1 %cmp to i32120  ret i32 %sub121}122 123define dso_local void @test_ilesll_store(i64 %a, i64 %b) {124; CHECK-LABEL: test_ilesll_store:125; CHECK:       # %bb.0: # %entry126; CHECK-NEXT:    sradi r6, r4, 63127; CHECK-NEXT:    addis r5, r2, glob@toc@ha128; CHECK-NEXT:    subfc r4, r3, r4129; CHECK-NEXT:    rldicl r3, r3, 1, 63130; CHECK-NEXT:    adde r3, r6, r3131; CHECK-NEXT:    std r3, glob@toc@l(r5)132; CHECK-NEXT:    blr133; CHECK-BE-LABEL: test_ilesll_store:134; CHECK-BE:       # %bb.0: # %entry135; CHECK-BE-NEXT:    rldicl r5, r3, 1, 63136; CHECK-BE-NEXT:    sradi r6, r4, 63137; CHECK-BE-NEXT:    subc r3, r4, r3138; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha139; CHECK-BE-NEXT:    adde r3, r6, r5140; CHECK-BE-NEXT:    std r3, glob@toc@l(r4)141; CHECK-BE-NEXT:    blr142;143; CHECK-LE-LABEL: test_ilesll_store:144; CHECK-LE:       # %bb.0: # %entry145; CHECK-LE-NEXT:    rldicl r5, r3, 1, 63146; CHECK-LE-NEXT:    sradi r6, r4, 63147; CHECK-LE-NEXT:    subc r3, r4, r3148; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha149; CHECK-LE-NEXT:    adde r3, r6, r5150; CHECK-LE-NEXT:    std r3, glob@toc@l(r4)151; CHECK-LE-NEXT:    blr152entry:153  %cmp = icmp sle i64 %a, %b154  %conv1 = zext i1 %cmp to i64155  store i64 %conv1, ptr @glob, align 8156  ret void157}158 159define dso_local void @test_ilesll_sext_store(i64 %a, i64 %b) {160; CHECK-LABEL: test_ilesll_sext_store:161; CHECK:       # %bb.0: # %entry162; CHECK-NEXT:    sradi r6, r4, 63163; CHECK-NEXT:    addis r5, r2, glob@toc@ha164; CHECK-NEXT:    subfc r4, r3, r4165; CHECK-NEXT:    rldicl r3, r3, 1, 63166; CHECK-NEXT:    adde r3, r6, r3167; CHECK-NEXT:    neg r3, r3168; CHECK-NEXT:    std r3, glob@toc@l(r5)169; CHECK-NEXT:    blr170; CHECK-BE-LABEL: test_ilesll_sext_store:171; CHECK-BE:       # %bb.0: # %entry172; CHECK-BE-NEXT:    rldicl r5, r3, 1, 63173; CHECK-BE-NEXT:    sradi r6, r4, 63174; CHECK-BE-NEXT:    subc r3, r4, r3175; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha176; CHECK-BE-NEXT:    adde r3, r6, r5177; CHECK-BE-NEXT:    neg r3, r3178; CHECK-BE-NEXT:    std r3, glob@toc@l(r4)179; CHECK-BE-NEXT:    blr180;181; CHECK-LE-LABEL: test_ilesll_sext_store:182; CHECK-LE:       # %bb.0: # %entry183; CHECK-LE-NEXT:    rldicl r5, r3, 1, 63184; CHECK-LE-NEXT:    sradi r6, r4, 63185; CHECK-LE-NEXT:    subc r3, r4, r3186; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha187; CHECK-LE-NEXT:    adde r3, r6, r5188; CHECK-LE-NEXT:    neg r3, r3189; CHECK-LE-NEXT:    std r3, glob@toc@l(r4)190; CHECK-LE-NEXT:    blr191entry:192  %cmp = icmp sle i64 %a, %b193  %conv1 = sext i1 %cmp to i64194  store i64 %conv1, ptr @glob, align 8195  ret void196}197 198define dso_local void @test_ilesll_z_store(i64 %a) {199; CHECK-LABEL: test_ilesll_z_store:200; CHECK:       # %bb.0: # %entry201; CHECK-NEXT:    addi r5, r3, -1202; CHECK-NEXT:    addis r4, r2, glob@toc@ha203; CHECK-NEXT:    or r3, r5, r3204; CHECK-NEXT:    rldicl r3, r3, 1, 63205; CHECK-NEXT:    std r3, glob@toc@l(r4)206; CHECK-NEXT:    blr207; CHECK-BE-LABEL: test_ilesll_z_store:208; CHECK-BE:       # %bb.0: # %entry209; CHECK-BE-NEXT:    addi r4, r3, -1210; CHECK-BE-NEXT:    or r3, r4, r3211; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha212; CHECK-BE-NEXT:    rldicl r3, r3, 1, 63213; CHECK-BE-NEXT:    std r3, glob@toc@l(r4)214; CHECK-BE-NEXT:    blr215;216; CHECK-LE-LABEL: test_ilesll_z_store:217; CHECK-LE:       # %bb.0: # %entry218; CHECK-LE-NEXT:    addi r4, r3, -1219; CHECK-LE-NEXT:    or r3, r4, r3220; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha221; CHECK-LE-NEXT:    rldicl r3, r3, 1, 63222; CHECK-LE-NEXT:    std r3, glob@toc@l(r4)223; CHECK-LE-NEXT:    blr224entry:225  %cmp = icmp slt i64 %a, 1226  %conv1 = zext i1 %cmp to i64227  store i64 %conv1, ptr @glob, align 8228  ret void229}230 231define dso_local void @test_ilesll_sext_z_store(i64 %a) {232; CHECK-LABEL: test_ilesll_sext_z_store:233; CHECK:       # %bb.0: # %entry234; CHECK-NEXT:    addi r5, r3, -1235; CHECK-NEXT:    addis r4, r2, glob@toc@ha236; CHECK-NEXT:    or r3, r5, r3237; CHECK-NEXT:    sradi r3, r3, 63238; CHECK-NEXT:    std r3, glob@toc@l(r4)239; CHECK-NEXT:    blr240; CHECK-BE-LABEL: test_ilesll_sext_z_store:241; CHECK-BE:       # %bb.0: # %entry242; CHECK-BE-NEXT:    addi r4, r3, -1243; CHECK-BE-NEXT:    or r3, r4, r3244; CHECK-BE-NEXT:    addis r4, r2, glob@toc@ha245; CHECK-BE-NEXT:    sradi r3, r3, 63246; CHECK-BE-NEXT:    std r3, glob@toc@l(r4)247; CHECK-BE-NEXT:    blr248;249; CHECK-LE-LABEL: test_ilesll_sext_z_store:250; CHECK-LE:       # %bb.0: # %entry251; CHECK-LE-NEXT:    addi r4, r3, -1252; CHECK-LE-NEXT:    or r3, r4, r3253; CHECK-LE-NEXT:    addis r4, r2, glob@toc@ha254; CHECK-LE-NEXT:    sradi r3, r3, 63255; CHECK-LE-NEXT:    std r3, glob@toc@l(r4)256; CHECK-LE-NEXT:    blr257entry:258  %cmp = icmp slt i64 %a, 1259  %conv1 = sext i1 %cmp to i64260  store i64 %conv1, ptr @glob, align 8261  ret void262}263