brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.9 KiB · d9f3924 Raw
171 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple powerpc64le-unknown-linux | FileCheck %s3; RUN: llc < %s -mtriple powerpc64le-unknown-linux -debug-only=machine-scheduler \4; RUN:   2>&1 | FileCheck %s --check-prefix=LOG5; REQUIRES: asserts6 7define double @in_nostrict(double %a, double %b, double %c, double %d) {8; CHECK-LABEL: in_nostrict:9; CHECK:       # %bb.0: # %entry10; CHECK-NEXT:    mffs 011; CHECK-NEXT:    xsdivdp 1, 1, 212; CHECK-NEXT:    xsadddp 1, 1, 313; CHECK-NEXT:    xsadddp 0, 1, 014; CHECK-NEXT:    mtfsf 255, 415; CHECK-NEXT:    xsdivdp 1, 3, 416; CHECK-NEXT:    xsadddp 1, 1, 217; CHECK-NEXT:    xsadddp 1, 0, 118; CHECK-NEXT:    blr19;20; LOG: *** MI Scheduling ***21; LOG-NEXT: in_nostrict:%bb.0 entry22; LOG: ExitSU: MTFSF 255, %{{[0-9]+}}:f8rc, 0, 023; LOG: *** MI Scheduling ***24; LOG-NEXT: in_nostrict:%bb.0 entry25; LOG: ExitSU: %{{[0-9]+}}:f8rc = MFFS implicit $rm26;27; LOG: *** MI Scheduling ***28; LOG-NEXT: in_nostrict:%bb.0 entry29; LOG: ExitSU: MTFSF 255, renamable $f{{[0-9]+}}, 0, 030entry:31  %0 = tail call double @llvm.ppc.readflm()32  %1 = fdiv double %a, %b33  %2 = fadd double %1, %c34  %3 = fadd double %2, %035  call double @llvm.ppc.setflm(double %d)36  %5 = fdiv double %c, %d37  %6 = fadd double %5, %b38  %7 = fadd double %3, %639  ret double %740}41 42define double @in_strict(double %a, double %b, double %c, double %d) #0 {43; CHECK-LABEL: in_strict:44; CHECK:       # %bb.0: # %entry45; CHECK-NEXT:    mffs 046; CHECK-NEXT:    xsdivdp 1, 1, 247; CHECK-NEXT:    xsadddp 1, 1, 348; CHECK-NEXT:    xsadddp 0, 1, 049; CHECK-NEXT:    mtfsf 255, 450; CHECK-NEXT:    xsdivdp 1, 3, 451; CHECK-NEXT:    xsadddp 1, 1, 252; CHECK-NEXT:    xsadddp 1, 0, 153; CHECK-NEXT:    blr54;55; LOG: ***** MI Scheduling *****56; LOG-NEXT: in_strict:%bb.0 entry57; LOG: ExitSU: MTFSF 255, %{{[0-9]+}}:f8rc, 0, 058; LOG: ***** MI Scheduling *****59; LOG-NEXT: in_strict:%bb.0 entry60; LOG: ExitSU: %{{[0-9]+}}:f8rc = MFFS implicit $rm61;62; LOG: ***** MI Scheduling *****63; LOG-NEXT: in_strict:%bb.0 entry64; LOG: ExitSU: MTFSF 255, renamable $f{{[0-9]+}}, 0, 065entry:66  %0 = tail call double @llvm.ppc.readflm()67  %1 = call double @llvm.experimental.constrained.fdiv.f64(double %a, double %b, metadata !"round.dynamic", metadata !"fpexcept.strict") #068  %2 = call double @llvm.experimental.constrained.fadd.f64(double %1, double %c, metadata !"round.dynamic", metadata !"fpexcept.strict") #069  %3 = call double @llvm.experimental.constrained.fadd.f64(double %2, double %0, metadata !"round.dynamic", metadata !"fpexcept.strict") #070  call double @llvm.ppc.setflm(double %d)71  %5 = call double @llvm.experimental.constrained.fdiv.f64(double %c, double %d, metadata !"round.dynamic", metadata !"fpexcept.strict") #072  %6 = call double @llvm.experimental.constrained.fadd.f64(double %5, double %b, metadata !"round.dynamic", metadata !"fpexcept.strict") #073  %7 = call double @llvm.experimental.constrained.fadd.f64(double %3, double %6, metadata !"round.dynamic", metadata !"fpexcept.strict") #074  ret double %775}76 77define void @cse_nomerge(ptr %f1, ptr %f2, double %f3) #0 {78; CHECK-LABEL: cse_nomerge:79; CHECK:       # %bb.0: # %entry80; CHECK-NEXT:    mflr 081; CHECK-NEXT:    .cfi_def_cfa_offset 6482; CHECK-NEXT:    .cfi_offset lr, 1683; CHECK-NEXT:    .cfi_offset r30, -2484; CHECK-NEXT:    .cfi_offset f31, -885; CHECK-NEXT:    std 30, -24(1) # 8-byte Folded Spill86; CHECK-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill87; CHECK-NEXT:    stdu 1, -64(1)88; CHECK-NEXT:    std 0, 80(1)89; CHECK-NEXT:    fmr 31, 190; CHECK-NEXT:    mr 30, 491; CHECK-NEXT:    mffs 092; CHECK-NEXT:    stfd 0, 0(3)93; CHECK-NEXT:    bl effect_func94; CHECK-NEXT:    nop95; CHECK-NEXT:    mffs 096; CHECK-NEXT:    stfd 0, 0(30)97; CHECK-NEXT:    mtfsf 255, 3198; CHECK-NEXT:    addi 1, 1, 6499; CHECK-NEXT:    ld 0, 16(1)100; CHECK-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload101; CHECK-NEXT:    ld 30, -24(1) # 8-byte Folded Reload102; CHECK-NEXT:    mtlr 0103; CHECK-NEXT:    blr104entry:105  %0 = call double @llvm.ppc.readflm()106  store double %0, ptr %f1, align 8107  call void @effect_func()108  %1 = call double @llvm.ppc.readflm()109  store double %1, ptr %f2, align 8110  %2 = call contract double @llvm.ppc.setflm(double %f3)111  ret void112}113 114define void @cse_nomerge_readonly(ptr %f1, ptr %f2, double %f3) #0 {115; CHECK-LABEL: cse_nomerge_readonly:116; CHECK:       # %bb.0: # %entry117; CHECK-NEXT:    mflr 0118; CHECK-NEXT:    .cfi_def_cfa_offset 64119; CHECK-NEXT:    .cfi_offset lr, 16120; CHECK-NEXT:    .cfi_offset r30, -24121; CHECK-NEXT:    .cfi_offset f31, -8122; CHECK-NEXT:    std 30, -24(1) # 8-byte Folded Spill123; CHECK-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill124; CHECK-NEXT:    stdu 1, -64(1)125; CHECK-NEXT:    std 0, 80(1)126; CHECK-NEXT:    fmr 31, 1127; CHECK-NEXT:    mr 30, 4128; CHECK-NEXT:    mffs 0129; CHECK-NEXT:    stfd 0, 0(3)130; CHECK-NEXT:    bl readonly_func131; CHECK-NEXT:    nop132; CHECK-NEXT:    mffs 0133; CHECK-NEXT:    stfd 0, 0(30)134; CHECK-NEXT:    mtfsf 255, 31135; CHECK-NEXT:    addi 1, 1, 64136; CHECK-NEXT:    ld 0, 16(1)137; CHECK-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload138; CHECK-NEXT:    ld 30, -24(1) # 8-byte Folded Reload139; CHECK-NEXT:    mtlr 0140; CHECK-NEXT:    blr141entry:142  %0 = call double @llvm.ppc.readflm()143  store double %0, ptr %f1, align 8144  call void @readonly_func()145  %1 = call double @llvm.ppc.readflm()146  store double %1, ptr %f2, align 8147  %2 = call contract double @llvm.ppc.setflm(double %f3)148  ret void149}150 151define double @mffsl() {152; CHECK-LABEL: mffsl:153; CHECK:       # %bb.0: # %entry154; CHECK-NEXT:    mffsl 1155; CHECK-NEXT:    blr156entry:157  %x = call double @llvm.ppc.mffsl()158  ret double %x159}160 161declare void @effect_func()162declare void @readonly_func() #1163declare double @llvm.ppc.mffsl()164declare double @llvm.ppc.readflm()165declare double @llvm.ppc.setflm(double)166declare double @llvm.experimental.constrained.fadd.f64(double, double, metadata, metadata)167declare double @llvm.experimental.constrained.fdiv.f64(double, double, metadata, metadata)168 169attributes #0 = { strictfp }170attributes #1 = { readonly }171