brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.8 KiB · 2dbf414 Raw
182 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -verify-machineinstrs -mcpu=pwr9 -ppc-asm-full-reg-names \3; RUN:   -mtriple=powerpc64le-unknown-linux-gnu < %s | \4; RUN:   FileCheck %s --check-prefix=CHECK-LE-P95; RUN: llc -verify-machineinstrs -mcpu=pwr9 -ppc-asm-full-reg-names \6; RUN:   -mtriple=powerpc64-unknown-linux-gnu < %s | \7; RUN:   FileCheck %s --check-prefix=CHECK-BE-P98; RUN: llc -verify-machineinstrs -mcpu=pwr9 -ppc-asm-full-reg-names \9; RUN:    -mtriple=powerpc64-ibm-aix < %s | \10; RUN:   FileCheck %s --check-prefix=CHECK-AIX-64-P911 12define noundef i32 @_Z11memcmp_testPKvS0_m(ptr noundef readonly captures(none) %ptr1, ptr noundef readonly captures(none) %ptr2, i64 noundef %num) nounwind {13; CHECK-LE-P9-LABEL: _Z11memcmp_testPKvS0_m:14; CHECK-LE-P9:       # %bb.0: # %entry15; CHECK-LE-P9-NEXT:    mflr r016; CHECK-LE-P9-NEXT:    stdu r1, -32(r1)17; CHECK-LE-P9-NEXT:    std r0, 48(r1)18; CHECK-LE-P9-NEXT:    bl memcmp19; CHECK-LE-P9-NEXT:    nop20; CHECK-LE-P9-NEXT:    addi r1, r1, 3221; CHECK-LE-P9-NEXT:    ld r0, 16(r1)22; CHECK-LE-P9-NEXT:    mtlr r023; CHECK-LE-P9-NEXT:    blr24;25; CHECK-BE-P9-LABEL: _Z11memcmp_testPKvS0_m:26; CHECK-BE-P9:       # %bb.0: # %entry27; CHECK-BE-P9-NEXT:    mflr r028; CHECK-BE-P9-NEXT:    stdu r1, -112(r1)29; CHECK-BE-P9-NEXT:    std r0, 128(r1)30; CHECK-BE-P9-NEXT:    bl memcmp31; CHECK-BE-P9-NEXT:    nop32; CHECK-BE-P9-NEXT:    addi r1, r1, 11233; CHECK-BE-P9-NEXT:    ld r0, 16(r1)34; CHECK-BE-P9-NEXT:    mtlr r035; CHECK-BE-P9-NEXT:    blr36;37; CHECK-AIX-64-P9-LABEL: _Z11memcmp_testPKvS0_m:38; CHECK-AIX-64-P9:       # %bb.0: # %entry39; CHECK-AIX-64-P9-NEXT:    mflr r040; CHECK-AIX-64-P9-NEXT:    stdu r1, -112(r1)41; CHECK-AIX-64-P9-NEXT:    std r0, 128(r1)42; CHECK-AIX-64-P9-NEXT:    bl .___memcmp64[PR]43; CHECK-AIX-64-P9-NEXT:    nop44; CHECK-AIX-64-P9-NEXT:    addi r1, r1, 11245; CHECK-AIX-64-P9-NEXT:    ld r0, 16(r1)46; CHECK-AIX-64-P9-NEXT:    mtlr r047; CHECK-AIX-64-P9-NEXT:    blr48entry:49  %call = tail call i32 @memcmp(ptr noundef %ptr1, ptr noundef %ptr2, i64 noundef %num)50  ret i32 %call51}52 53declare i32 @memcmp(ptr noundef captures(none), ptr noundef captures(none), i64 noundef) nounwind54 55define i64 @strlen_test(ptr noundef %str) nounwind {56; CHECK-LE-P9-LABEL: strlen_test:57; CHECK-LE-P9:       # %bb.0: # %entry58; CHECK-LE-P9-NEXT:    mflr r059; CHECK-LE-P9-NEXT:    stdu r1, -48(r1)60; CHECK-LE-P9-NEXT:    std r0, 64(r1)61; CHECK-LE-P9-NEXT:    std r3, 40(r1)62; CHECK-LE-P9-NEXT:    bl strlen63; CHECK-LE-P9-NEXT:    nop64; CHECK-LE-P9-NEXT:    addi r1, r1, 4865; CHECK-LE-P9-NEXT:    ld r0, 16(r1)66; CHECK-LE-P9-NEXT:    mtlr r067; CHECK-LE-P9-NEXT:    blr68;69; CHECK-BE-P9-LABEL: strlen_test:70; CHECK-BE-P9:       # %bb.0: # %entry71; CHECK-BE-P9-NEXT:    mflr r072; CHECK-BE-P9-NEXT:    stdu r1, -128(r1)73; CHECK-BE-P9-NEXT:    std r0, 144(r1)74; CHECK-BE-P9-NEXT:    std r3, 120(r1)75; CHECK-BE-P9-NEXT:    bl strlen76; CHECK-BE-P9-NEXT:    nop77; CHECK-BE-P9-NEXT:    addi r1, r1, 12878; CHECK-BE-P9-NEXT:    ld r0, 16(r1)79; CHECK-BE-P9-NEXT:    mtlr r080; CHECK-BE-P9-NEXT:    blr81;82; CHECK-AIX-64-P9-LABEL: strlen_test:83; CHECK-AIX-64-P9:       # %bb.0: # %entry84; CHECK-AIX-64-P9-NEXT:    mflr r085; CHECK-AIX-64-P9-NEXT:    stdu r1, -128(r1)86; CHECK-AIX-64-P9-NEXT:    std r0, 144(r1)87; CHECK-AIX-64-P9-NEXT:    std r3, 120(r1)88; CHECK-AIX-64-P9-NEXT:    bl .___strlen64[PR]89; CHECK-AIX-64-P9-NEXT:    nop90; CHECK-AIX-64-P9-NEXT:    addi r1, r1, 12891; CHECK-AIX-64-P9-NEXT:    ld r0, 16(r1)92; CHECK-AIX-64-P9-NEXT:    mtlr r093; CHECK-AIX-64-P9-NEXT:    blr94entry:95  %str.addr = alloca ptr, align 896  store ptr %str, ptr %str.addr, align 897  %0 = load ptr, ptr %str.addr, align 898  %call = call i64 @strlen(ptr noundef %0)99  ret i64 %call100}101 102declare i64 @strlen(ptr noundef) nounwind103 104define ptr @test_memmove(ptr noundef %destination, ptr noundef %source, i64 noundef %num) #0 {105; CHECK-LE-P9-LABEL: test_memmove:106; CHECK-LE-P9:       # %bb.0: # %entry107; CHECK-LE-P9-NEXT:    mflr r0108; CHECK-LE-P9-NEXT:    .cfi_def_cfa_offset 80109; CHECK-LE-P9-NEXT:    .cfi_offset lr, 16110; CHECK-LE-P9-NEXT:    .cfi_offset r30, -16111; CHECK-LE-P9-NEXT:    std r30, -16(r1) # 8-byte Folded Spill112; CHECK-LE-P9-NEXT:    stdu r1, -80(r1)113; CHECK-LE-P9-NEXT:    std r0, 96(r1)114; CHECK-LE-P9-NEXT:    mr r30, r3115; CHECK-LE-P9-NEXT:    std r3, 56(r1)116; CHECK-LE-P9-NEXT:    std r4, 48(r1)117; CHECK-LE-P9-NEXT:    std r5, 40(r1)118; CHECK-LE-P9-NEXT:    bl memmove119; CHECK-LE-P9-NEXT:    nop120; CHECK-LE-P9-NEXT:    mr r3, r30121; CHECK-LE-P9-NEXT:    addi r1, r1, 80122; CHECK-LE-P9-NEXT:    ld r0, 16(r1)123; CHECK-LE-P9-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload124; CHECK-LE-P9-NEXT:    mtlr r0125; CHECK-LE-P9-NEXT:    blr126;127; CHECK-BE-P9-LABEL: test_memmove:128; CHECK-BE-P9:       # %bb.0: # %entry129; CHECK-BE-P9-NEXT:    mflr r0130; CHECK-BE-P9-NEXT:    stdu r1, -160(r1)131; CHECK-BE-P9-NEXT:    std r0, 176(r1)132; CHECK-BE-P9-NEXT:    .cfi_def_cfa_offset 160133; CHECK-BE-P9-NEXT:    .cfi_offset lr, 16134; CHECK-BE-P9-NEXT:    .cfi_offset r30, -16135; CHECK-BE-P9-NEXT:    std r30, 144(r1) # 8-byte Folded Spill136; CHECK-BE-P9-NEXT:    mr r30, r3137; CHECK-BE-P9-NEXT:    std r3, 136(r1)138; CHECK-BE-P9-NEXT:    std r4, 128(r1)139; CHECK-BE-P9-NEXT:    std r5, 120(r1)140; CHECK-BE-P9-NEXT:    bl memmove141; CHECK-BE-P9-NEXT:    nop142; CHECK-BE-P9-NEXT:    mr r3, r30143; CHECK-BE-P9-NEXT:    ld r30, 144(r1) # 8-byte Folded Reload144; CHECK-BE-P9-NEXT:    addi r1, r1, 160145; CHECK-BE-P9-NEXT:    ld r0, 16(r1)146; CHECK-BE-P9-NEXT:    mtlr r0147; CHECK-BE-P9-NEXT:    blr148;149; CHECK-AIX-64-P9-LABEL: test_memmove:150; CHECK-AIX-64-P9:       # %bb.0: # %entry151; CHECK-AIX-64-P9-NEXT:    mflr r0152; CHECK-AIX-64-P9-NEXT:    stdu r1, -144(r1)153; CHECK-AIX-64-P9-NEXT:    std r0, 160(r1)154; CHECK-AIX-64-P9-NEXT:    std r31, 136(r1) # 8-byte Folded Spill155; CHECK-AIX-64-P9-NEXT:    mr r31, r3156; CHECK-AIX-64-P9-NEXT:    std r3, 128(r1)157; CHECK-AIX-64-P9-NEXT:    std r4, 120(r1)158; CHECK-AIX-64-P9-NEXT:    std r5, 112(r1)159; CHECK-AIX-64-P9-NEXT:    bl .___memmove64[PR]160; CHECK-AIX-64-P9-NEXT:    nop161; CHECK-AIX-64-P9-NEXT:    mr r3, r31162; CHECK-AIX-64-P9-NEXT:    ld r31, 136(r1) # 8-byte Folded Reload163; CHECK-AIX-64-P9-NEXT:    addi r1, r1, 144164; CHECK-AIX-64-P9-NEXT:    ld r0, 16(r1)165; CHECK-AIX-64-P9-NEXT:    mtlr r0166; CHECK-AIX-64-P9-NEXT:    blr167entry:168  %destination.addr = alloca ptr, align 8169  %source.addr = alloca ptr, align 8170  %num.addr = alloca i64, align 8171  store ptr %destination, ptr %destination.addr, align 8172  store ptr %source, ptr %source.addr, align 8173  store i64 %num, ptr %num.addr, align 8174  %0 = load ptr, ptr %destination.addr, align 8175  %1 = load ptr, ptr %source.addr, align 8176  %2 = load i64, ptr %num.addr, align 8177  call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr align 1 %1, i64 %2, i1 false)178  ret ptr %0179}180 181declare void @llvm.memmove.p0.p0.i32(ptr writeonly captures(none), ptr readonly captures(none), i32, i1 immarg)182