[all-commits] [llvm/llvm-project] eb7d16: [PowerPC] make expensive mflr be away from its use...

Chen Zheng via All-commits all-commits at lists.llvm.org
Mon Nov 14 18:14:44 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: eb7d16ea25649909373e324e6ebf36774cabdbfa
      https://github.com/llvm/llvm-project/commit/eb7d16ea25649909373e324e6ebf36774cabdbfa
  Author: Chen Zheng <czhengsz at cn.ibm.com>
  Date:   2022-11-14 (Mon, 14 Nov 2022)

  Changed paths:
    M llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
    M llvm/test/CodeGen/PowerPC/2007-09-08-unaligned.ll
    M llvm/test/CodeGen/PowerPC/2007-11-16-landingpad-split.ll
    M llvm/test/CodeGen/PowerPC/2008-10-28-f128-i32.ll
    M llvm/test/CodeGen/PowerPC/2010-05-03-retaddr1.ll
    M llvm/test/CodeGen/PowerPC/CSR-fit.ll
    M llvm/test/CodeGen/PowerPC/Frames-dyn-alloca-with-func-call.ll
    M llvm/test/CodeGen/PowerPC/MCSE-caller-preserved-reg.ll
    M llvm/test/CodeGen/PowerPC/P10-stack-alignment.ll
    M llvm/test/CodeGen/PowerPC/PR35812-neg-cmpxchg.ll
    M llvm/test/CodeGen/PowerPC/aix-cc-abi.ll
    M llvm/test/CodeGen/PowerPC/aix-cc-byval-mem.ll
    M llvm/test/CodeGen/PowerPC/aix-cc-byval.ll
    M llvm/test/CodeGen/PowerPC/aix-cc-ext-vec-abi.ll
    M llvm/test/CodeGen/PowerPC/aix-crspill.ll
    M llvm/test/CodeGen/PowerPC/aix-csr.ll
    M llvm/test/CodeGen/PowerPC/aix-emit-tracebacktable.ll
    M llvm/test/CodeGen/PowerPC/aix-framepointer-save-restore.ll
    M llvm/test/CodeGen/PowerPC/aix-llvm-intrinsic.ll
    M llvm/test/CodeGen/PowerPC/aix-lr.ll
    M llvm/test/CodeGen/PowerPC/aix-sret-param.ll
    M llvm/test/CodeGen/PowerPC/aix-tls-gd-double.ll
    M llvm/test/CodeGen/PowerPC/aix-tls-gd-int.ll
    M llvm/test/CodeGen/PowerPC/aix-tls-gd-longlong.ll
    M llvm/test/CodeGen/PowerPC/aix-tls-xcoff-reloc-large.ll
    M llvm/test/CodeGen/PowerPC/aix-tls-xcoff-reloc.ll
    M llvm/test/CodeGen/PowerPC/aix-user-defined-memcpy.ll
    M llvm/test/CodeGen/PowerPC/aix-vec-arg-spills.ll
    M llvm/test/CodeGen/PowerPC/aix-vector-stack-caller.ll
    M llvm/test/CodeGen/PowerPC/aix-xcoff-reloc.ll
    M llvm/test/CodeGen/PowerPC/aix-xcoff-symbol-rename.ll
    M llvm/test/CodeGen/PowerPC/all-atomics.ll
    M llvm/test/CodeGen/PowerPC/alloca-crspill.ll
    M llvm/test/CodeGen/PowerPC/atomics-i128-ldst.ll
    M llvm/test/CodeGen/PowerPC/atomics-i128.ll
    M llvm/test/CodeGen/PowerPC/atomics-indexed.ll
    M llvm/test/CodeGen/PowerPC/atomics.ll
    M llvm/test/CodeGen/PowerPC/branch-on-store-cond.ll
    M llvm/test/CodeGen/PowerPC/byval.ll
    M llvm/test/CodeGen/PowerPC/canonical-merge-shuffles.ll
    M llvm/test/CodeGen/PowerPC/constant-pool.ll
    M llvm/test/CodeGen/PowerPC/csr-split.ll
    M llvm/test/CodeGen/PowerPC/ctrloop-constrained-fp.ll
    M llvm/test/CodeGen/PowerPC/ctrloop-fp128.ll
    M llvm/test/CodeGen/PowerPC/cxx_tlscc64.ll
    M llvm/test/CodeGen/PowerPC/disable-ctr-ppcf128.ll
    M llvm/test/CodeGen/PowerPC/elf64-byval-cc.ll
    M llvm/test/CodeGen/PowerPC/expand-foldable-isel.ll
    M llvm/test/CodeGen/PowerPC/f128-aggregates.ll
    M llvm/test/CodeGen/PowerPC/f128-arith.ll
    M llvm/test/CodeGen/PowerPC/f128-branch-cond.ll
    M llvm/test/CodeGen/PowerPC/f128-compare.ll
    M llvm/test/CodeGen/PowerPC/f128-conv.ll
    M llvm/test/CodeGen/PowerPC/f128-fma.ll
    M llvm/test/CodeGen/PowerPC/f128-passByValue.ll
    M llvm/test/CodeGen/PowerPC/f128-rounding.ll
    M llvm/test/CodeGen/PowerPC/f128-truncateNconv.ll
    M llvm/test/CodeGen/PowerPC/fast-isel-branch.ll
    M llvm/test/CodeGen/PowerPC/float-load-store-pair.ll
    M llvm/test/CodeGen/PowerPC/fmf-propagation.ll
    M llvm/test/CodeGen/PowerPC/fminnum.ll
    M llvm/test/CodeGen/PowerPC/fp-int128-fp-combine.ll
    M llvm/test/CodeGen/PowerPC/fp-strict-conv-f128.ll
    M llvm/test/CodeGen/PowerPC/fp-strict-conv-spe.ll
    M llvm/test/CodeGen/PowerPC/fp-strict-f128.ll
    M llvm/test/CodeGen/PowerPC/fp-strict-fcmp.ll
    M llvm/test/CodeGen/PowerPC/fp-strict-round.ll
    M llvm/test/CodeGen/PowerPC/fp-strict.ll
    M llvm/test/CodeGen/PowerPC/fp128-bitcast-after-operation.ll
    M llvm/test/CodeGen/PowerPC/frem.ll
    M llvm/test/CodeGen/PowerPC/funnel-shift.ll
    M llvm/test/CodeGen/PowerPC/handle-f16-storage-type.ll
    M llvm/test/CodeGen/PowerPC/inlineasm-i64-reg.ll
    M llvm/test/CodeGen/PowerPC/jump-tables-collapse-rotate.ll
    M llvm/test/CodeGen/PowerPC/larger-than-red-zone.ll
    M llvm/test/CodeGen/PowerPC/lower-intrinsics-afn-mass_notail.ll
    M llvm/test/CodeGen/PowerPC/lower-intrinsics-fast-mass_notail.ll
    M llvm/test/CodeGen/PowerPC/machine-pre.ll
    M llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll
    M llvm/test/CodeGen/PowerPC/no-duplicate.ll
    M llvm/test/CodeGen/PowerPC/not-fixed-frame-object.ll
    M llvm/test/CodeGen/PowerPC/out-of-range-dform.ll
    M llvm/test/CodeGen/PowerPC/pcrel_ldst.ll
    M llvm/test/CodeGen/PowerPC/pow-025-075-intrinsic-scalar-mass-fast.ll
    M llvm/test/CodeGen/PowerPC/pow-025-075-nointrinsic-scalar-mass-fast.ll
    M llvm/test/CodeGen/PowerPC/ppc-prologue.ll
    M llvm/test/CodeGen/PowerPC/ppc-shrink-wrapping.ll
    M llvm/test/CodeGen/PowerPC/ppc32-nest.ll
    M llvm/test/CodeGen/PowerPC/ppc64-P9-setb.ll
    M llvm/test/CodeGen/PowerPC/ppc64-byval-larger-struct.ll
    M llvm/test/CodeGen/PowerPC/ppc64-byval-multi-store.ll
    M llvm/test/CodeGen/PowerPC/ppc64-inlineasm-clobber.ll
    M llvm/test/CodeGen/PowerPC/ppc64-nest.ll
    M llvm/test/CodeGen/PowerPC/ppc64-notoc-rm-relocation.ll
    M llvm/test/CodeGen/PowerPC/ppc64-rop-protection-aix.ll
    M llvm/test/CodeGen/PowerPC/ppc64-rop-protection.ll
    M llvm/test/CodeGen/PowerPC/ppcf128-constrained-fp-intrinsics.ll
    M llvm/test/CodeGen/PowerPC/ppcf128-endian.ll
    M llvm/test/CodeGen/PowerPC/pr33547.ll
    M llvm/test/CodeGen/PowerPC/pr36292.ll
    M llvm/test/CodeGen/PowerPC/pr41088.ll
    M llvm/test/CodeGen/PowerPC/pr43527.ll
    M llvm/test/CodeGen/PowerPC/pr43976.ll
    M llvm/test/CodeGen/PowerPC/pr44183.ll
    M llvm/test/CodeGen/PowerPC/pr45301.ll
    M llvm/test/CodeGen/PowerPC/pr45432.ll
    M llvm/test/CodeGen/PowerPC/pr47373.ll
    M llvm/test/CodeGen/PowerPC/pr48519.ll
    M llvm/test/CodeGen/PowerPC/pr48527.ll
    M llvm/test/CodeGen/PowerPC/pr49092.ll
    M llvm/test/CodeGen/PowerPC/pr55463.ll
    M llvm/test/CodeGen/PowerPC/pr56469.ll
    M llvm/test/CodeGen/PowerPC/read-set-flm.ll
    M llvm/test/CodeGen/PowerPC/recipest.ll
    M llvm/test/CodeGen/PowerPC/reg-scavenging.ll
    M llvm/test/CodeGen/PowerPC/remove-redundant-load-imm.ll
    M llvm/test/CodeGen/PowerPC/retaddr.ll
    M llvm/test/CodeGen/PowerPC/retaddr2.ll
    M llvm/test/CodeGen/PowerPC/retaddr_multi_levels.ll
    M llvm/test/CodeGen/PowerPC/scalar-rounding-ops.ll
    M llvm/test/CodeGen/PowerPC/sms-cpy-1.ll
    M llvm/test/CodeGen/PowerPC/sms-phi-1.ll
    M llvm/test/CodeGen/PowerPC/sms-phi-3.ll
    M llvm/test/CodeGen/PowerPC/spe.ll
    M llvm/test/CodeGen/PowerPC/srem-lkk.ll
    M llvm/test/CodeGen/PowerPC/srem-seteq-illegal-types.ll
    M llvm/test/CodeGen/PowerPC/stack-restore-with-setjmp.ll
    M llvm/test/CodeGen/PowerPC/store_fptoi.ll
    M llvm/test/CodeGen/PowerPC/tailcall-speculatable-callee.ll
    M llvm/test/CodeGen/PowerPC/testComparesi32gtu.ll
    M llvm/test/CodeGen/PowerPC/testComparesi32ltu.ll
    M llvm/test/CodeGen/PowerPC/tocSaveInPrologue.ll
    M llvm/test/CodeGen/PowerPC/urem-lkk.ll
    M llvm/test/CodeGen/PowerPC/vector-constrained-fp-intrinsics.ll
    M llvm/test/CodeGen/PowerPC/vector-reduce-fadd.ll
    M llvm/test/DebugInfo/XCOFF/explicit-section.ll

  Log Message:
  -----------
  [PowerPC] make expensive mflr be away from its user in the function prologue

mflr is kind of expensive on Power version smaller than 10, so we should
schedule the store for the mflr's def away from mflr.

In epilogue, the expensive mtlr has no user for its def, so it doesn't
matter that the load and the mtlr are back-to-back.

Reviewed By: RolandF

Differential Revision: https://reviews.llvm.org/D137423




More information about the All-commits mailing list