[PATCH] D38128: Handle COPYs of physregs better (regalloc hints)

Jonas Paulsson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 7 00:46:38 PST 2017


jonpa updated this revision to Diff 121843.
jonpa added a comment.

@Nemanja:

> Just looking at the number and placement of reg-reg moves for PowerPC seems fine. It doesn't seem like there are regressions but no huge reduction in the number of copies. However, since the diff is without context, it's hard to tell exactly what is going on in the test cases. I'll apply this patch to ToT and have a look at how things change before signing off on the PPC changes.

Sorry about forgetting the context - fixed.

@Tom:

> The AMDGPU tests look OK, but the CHECK lines for test/CodeGen/AMDGPU/sgpr-control-flow.ll should be updated like this: https://reviews.llvm.org/P8044

Thanks! sgpr-control-flow.ll updated, but there is also still the multilevel-break.ll failure. This is the only test that is failing even with this patch, and the reason for this is that I was not sure how to update it. We discussed this on Oct 11 here on Phabricator. Could you please take a look?

Test updates in need of review:

TODO:
CodeGen   : BPF Hexagon Mips PowerPC SPARC Thumb Thumb2 X86 XCore
DebugInfo : COFF X86

PARTIALLY DONE (still more tests in need of review):
 CodeGen :

- AArch64  :  win64_vararg.ll, arm64-aapcs.ll, func-argpassing.ll (Martin Storsjo) swifterror.ll: small regression, needs approval (Martin Storsjo)
- AMDGPU: (Tom Stellard) All reviewed, but multilevel-break.ll needs updating (fails with patch)

DONE:
 CodeGen :

- ARM (Eli Friedman)


https://reviews.llvm.org/D38128

Files:
  include/llvm/CodeGen/MachineRegisterInfo.h
  include/llvm/Target/TargetRegisterInfo.h
  lib/CodeGen/CalcSpillWeights.cpp
  lib/CodeGen/TargetRegisterInfo.cpp
  test/CodeGen/AArch64/arm64-aapcs.ll
  test/CodeGen/AArch64/func-argpassing.ll
  test/CodeGen/AArch64/swifterror.ll
  test/CodeGen/AArch64/win64_vararg.ll
  test/CodeGen/AMDGPU/callee-special-input-sgprs.ll
  test/CodeGen/AMDGPU/callee-special-input-vgprs.ll
  test/CodeGen/AMDGPU/llvm.amdgcn.fcmp.ll
  test/CodeGen/AMDGPU/llvm.amdgcn.icmp.ll
  test/CodeGen/AMDGPU/ret.ll
  test/CodeGen/AMDGPU/sgpr-control-flow.ll
  test/CodeGen/ARM/longMAC.ll
  test/CodeGen/ARM/select_xform.ll
  test/CodeGen/ARM/ssp-data-layout.ll
  test/CodeGen/ARM/struct_byval_arm_t1_t2.ll
  test/CodeGen/ARM/swifterror.ll
  test/CodeGen/BPF/alu8.ll
  test/CodeGen/BPF/basictest.ll
  test/CodeGen/BPF/cmp.ll
  test/CodeGen/BPF/dwarfdump.ll
  test/CodeGen/BPF/intrinsics.ll
  test/CodeGen/BPF/objdump_intrinsics.ll
  test/CodeGen/BPF/sanity.ll
  test/CodeGen/BPF/shifts.ll
  test/CodeGen/Hexagon/mul64-sext.ll
  test/CodeGen/Hexagon/pred-absolute-store.ll
  test/CodeGen/Mips/Fast-ISel/sel1.ll
  test/CodeGen/Mips/analyzebranch.ll
  test/CodeGen/Mips/llvm-ir/select-dbl.ll
  test/CodeGen/Mips/llvm-ir/select-flt.ll
  test/CodeGen/Mips/o32_cc_byval.ll
  test/CodeGen/Mips/select.ll
  test/CodeGen/PowerPC/licm-tocReg.ll
  test/CodeGen/PowerPC/load-two-flts.ll
  test/CodeGen/PowerPC/ppc64-byval-align.ll
  test/CodeGen/PowerPC/select-i1-vs-i1.ll
  test/CodeGen/SPARC/32abi.ll
  test/CodeGen/SPARC/64abi.ll
  test/CodeGen/SPARC/64cond.ll
  test/CodeGen/SystemZ/call-03.ll
  test/CodeGen/SystemZ/swift-return.ll
  test/CodeGen/SystemZ/swifterror.ll
  test/CodeGen/Thumb/long.ll
  test/CodeGen/Thumb2/aapcs.ll
  test/CodeGen/Thumb2/thumb2-select_xform.ll
  test/CodeGen/X86/GlobalISel/add-scalar.ll
  test/CodeGen/X86/GlobalISel/and-scalar.ll
  test/CodeGen/X86/GlobalISel/binop.ll
  test/CodeGen/X86/GlobalISel/callingconv.ll
  test/CodeGen/X86/GlobalISel/ext-x86-64.ll
  test/CodeGen/X86/GlobalISel/ext.ll
  test/CodeGen/X86/GlobalISel/memop-scalar.ll
  test/CodeGen/X86/GlobalISel/mul-scalar.ll
  test/CodeGen/X86/GlobalISel/or-scalar.ll
  test/CodeGen/X86/GlobalISel/phi.ll
  test/CodeGen/X86/GlobalISel/sub-scalar.ll
  test/CodeGen/X86/GlobalISel/trunc.ll
  test/CodeGen/X86/GlobalISel/undef.ll
  test/CodeGen/X86/GlobalISel/xor-scalar.ll
  test/CodeGen/X86/add.ll
  test/CodeGen/X86/addcarry.ll
  test/CodeGen/X86/andimm8.ll
  test/CodeGen/X86/anyext.ll
  test/CodeGen/X86/apm.ll
  test/CodeGen/X86/atomic-eflags-reuse.ll
  test/CodeGen/X86/atomic128.ll
  test/CodeGen/X86/avg.ll
  test/CodeGen/X86/avx-intel-ocl.ll
  test/CodeGen/X86/avx-vinsertf128.ll
  test/CodeGen/X86/avx512-arith.ll
  test/CodeGen/X86/avx512-calling-conv.ll
  test/CodeGen/X86/avx512-insert-extract.ll
  test/CodeGen/X86/avx512-mask-op.ll
  test/CodeGen/X86/avx512-regcall-NoMask.ll
  test/CodeGen/X86/avx512-schedule.ll
  test/CodeGen/X86/avx512-select.ll
  test/CodeGen/X86/avx512bw-mask-op.ll
  test/CodeGen/X86/avx512dq-mask-op.ll
  test/CodeGen/X86/avx512vl-arith.ll
  test/CodeGen/X86/bigstructret.ll
  test/CodeGen/X86/bitcast-i256.ll
  test/CodeGen/X86/bitcast-int-to-vector-bool.ll
  test/CodeGen/X86/bitreverse.ll
  test/CodeGen/X86/bmi-intrinsics-fast-isel-x86_64.ll
  test/CodeGen/X86/bmi-intrinsics-fast-isel.ll
  test/CodeGen/X86/bmi.ll
  test/CodeGen/X86/bool-simplify.ll
  test/CodeGen/X86/bswap-rotate.ll
  test/CodeGen/X86/bswap-wide-int.ll
  test/CodeGen/X86/bswap_tree.ll
  test/CodeGen/X86/bswap_tree2.ll
  test/CodeGen/X86/bt.ll
  test/CodeGen/X86/bypass-slow-division-64.ll
  test/CodeGen/X86/cmov-into-branch.ll
  test/CodeGen/X86/cmov.ll
  test/CodeGen/X86/cmovcmov.ll
  test/CodeGen/X86/cmp.ll
  test/CodeGen/X86/combine-add.ll
  test/CodeGen/X86/conditional-indecrement.ll
  test/CodeGen/X86/divide-by-constant.ll
  test/CodeGen/X86/divrem.ll
  test/CodeGen/X86/divrem8_ext.ll
  test/CodeGen/X86/fast-isel-fold-mem.ll
  test/CodeGen/X86/fast-isel-select-cmov.ll
  test/CodeGen/X86/fast-isel-select-cmov2.ll
  test/CodeGen/X86/fast-isel-select-pseudo-cmov.ll
  test/CodeGen/X86/fast-isel-sext-zext.ll
  test/CodeGen/X86/fast-isel-shift.ll
  test/CodeGen/X86/fast-isel-store.ll
  test/CodeGen/X86/fixup-bw-copy.ll
  test/CodeGen/X86/fold-vector-sext-crash2.ll
  test/CodeGen/X86/ghc-cc64.ll
  test/CodeGen/X86/hipe-cc64.ll
  test/CodeGen/X86/iabs.ll
  test/CodeGen/X86/imul.ll
  test/CodeGen/X86/ipra-local-linkage.ll
  test/CodeGen/X86/legalize-shift-64.ll
  test/CodeGen/X86/legalize-shl-vec.ll
  test/CodeGen/X86/machine-combiner-int.ll
  test/CodeGen/X86/machine-cse.ll
  test/CodeGen/X86/mask-negated-bool.ll
  test/CodeGen/X86/misched-matmul.ll
  test/CodeGen/X86/mul-constant-i16.ll
  test/CodeGen/X86/mul-constant-i32.ll
  test/CodeGen/X86/mul-constant-i64.ll
  test/CodeGen/X86/mul-i1024.ll
  test/CodeGen/X86/mul-i256.ll
  test/CodeGen/X86/mul-i512.ll
  test/CodeGen/X86/mul128.ll
  test/CodeGen/X86/mul64.ll
  test/CodeGen/X86/mwaitx.ll
  test/CodeGen/X86/negate-i1.ll
  test/CodeGen/X86/negate-shift.ll
  test/CodeGen/X86/negate.ll
  test/CodeGen/X86/no-sse2-avg.ll
  test/CodeGen/X86/not-and-simplify.ll
  test/CodeGen/X86/palignr.ll
  test/CodeGen/X86/peep-setb.ll
  test/CodeGen/X86/pku.ll
  test/CodeGen/X86/pr12312.ll
  test/CodeGen/X86/pr15705.ll
  test/CodeGen/X86/pr15981.ll
  test/CodeGen/X86/pr23664.ll
  test/CodeGen/X86/pr28173.ll
  test/CodeGen/X86/pr34657.ll
  test/CodeGen/X86/replace-load-and-with-bzhi.ll
  test/CodeGen/X86/rot16.ll
  test/CodeGen/X86/rot64.ll
  test/CodeGen/X86/rotate.ll
  test/CodeGen/X86/rotate4.ll
  test/CodeGen/X86/sad.ll
  test/CodeGen/X86/sar_fold64.ll
  test/CodeGen/X86/select.ll
  test/CodeGen/X86/select_const.ll
  test/CodeGen/X86/setcc-logic.ll
  test/CodeGen/X86/sext-i1.ll
  test/CodeGen/X86/shift-and.ll
  test/CodeGen/X86/shift-bmi2.ll
  test/CodeGen/X86/shift-double-x86_64.ll
  test/CodeGen/X86/sret-implicit.ll
  test/CodeGen/X86/sse1.ll
  test/CodeGen/X86/sse3-schedule.ll
  test/CodeGen/X86/sse42-intrinsics-fast-isel-x86_64.ll
  test/CodeGen/X86/sse42-intrinsics-fast-isel.ll
  test/CodeGen/X86/sse42-intrinsics-x86_64.ll
  test/CodeGen/X86/sse42-schedule.ll
  test/CodeGen/X86/subcarry.ll
  test/CodeGen/X86/swift-return.ll
  test/CodeGen/X86/swifterror.ll
  test/CodeGen/X86/system-intrinsics-xsetbv.ll
  test/CodeGen/X86/tbm-intrinsics-fast-isel-x86_64.ll
  test/CodeGen/X86/tbm-intrinsics-fast-isel.ll
  test/CodeGen/X86/tbm_patterns.ll
  test/CodeGen/X86/twoaddr-lea.ll
  test/CodeGen/X86/umul-with-overflow.ll
  test/CodeGen/X86/urem-power-of-two.ll
  test/CodeGen/X86/use-add-flags.ll
  test/CodeGen/X86/vector-bitreverse.ll
  test/CodeGen/X86/vector-blend.ll
  test/CodeGen/X86/vector-compare-results.ll
  test/CodeGen/X86/vector-interleave.ll
  test/CodeGen/X86/vector-pcmp.ll
  test/CodeGen/X86/vector-rotate-128.ll
  test/CodeGen/X86/vector-shift-ashr-128.ll
  test/CodeGen/X86/vector-shift-lshr-128.ll
  test/CodeGen/X86/vector-shift-shl-128.ll
  test/CodeGen/X86/vector-shuffle-128-v2.ll
  test/CodeGen/X86/vector-shuffle-combining-sse4a.ll
  test/CodeGen/X86/vector-shuffle-combining-ssse3.ll
  test/CodeGen/X86/vector-shuffle-combining.ll
  test/CodeGen/X86/vector-zext.ll
  test/CodeGen/X86/vectorcall.ll
  test/CodeGen/X86/vselect-minmax.ll
  test/CodeGen/X86/vselect.ll
  test/CodeGen/X86/widen_bitops-0.ll
  test/CodeGen/X86/widen_bitops-1.ll
  test/CodeGen/X86/widen_load-2.ll
  test/CodeGen/X86/widen_load-3.ll
  test/CodeGen/X86/win64_vararg.ll
  test/CodeGen/X86/x86-cmov-converter.ll
  test/CodeGen/X86/x86-shrink-wrapping.ll
  test/CodeGen/X86/xaluo.ll
  test/CodeGen/X86/xchg-nofold.ll
  test/CodeGen/X86/xmulo.ll
  test/CodeGen/XCore/byVal.ll
  test/DebugInfo/COFF/pieces.ll
  test/DebugInfo/X86/live-debug-values.ll
  test/DebugInfo/X86/live-debug-variables.ll
  test/DebugInfo/X86/pieces-3.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D38128.121843.patch
Type: text/x-patch
Size: 1394186 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171107/f633e220/attachment-0001.bin>


More information about the llvm-commits mailing list