[PATCH] D54119: [X86] Avoid creating a critical edge during cmov expansion

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 5 12:01:54 PST 2018


craig.topper created this revision.
craig.topper added reviewers: MatzeB, RKSimon, spatel.
Herald added subscribers: jfb, javed.absar.

As suggested in PR39534, this patch teaches cmov expansion to avoid creating a critical edge by creating a diamond control flow rather than a triangle control flow.

Unfortunately, it doesn't seem to fix the problem reported in that PR. But maybe it gets us closer to being able to fix it?


https://reviews.llvm.org/D54119

Files:
  lib/Target/X86/X86ISelLowering.cpp
  test/CodeGen/X86/2011-12-26-extractelement-duplicate-load.ll
  test/CodeGen/X86/MachineSink-eflags.ll
  test/CodeGen/X86/atomic32.ll
  test/CodeGen/X86/avx-select.ll
  test/CodeGen/X86/avx512-calling-conv.ll
  test/CodeGen/X86/avx512-mask-op.ll
  test/CodeGen/X86/avx512-schedule.ll
  test/CodeGen/X86/avx512-select.ll
  test/CodeGen/X86/btc_bts_btr.ll
  test/CodeGen/X86/clear-highbits.ll
  test/CodeGen/X86/clz.ll
  test/CodeGen/X86/cmov-promotion.ll
  test/CodeGen/X86/cmov.ll
  test/CodeGen/X86/cmovcmov.ll
  test/CodeGen/X86/cmpxchg-clobber-flags.ll
  test/CodeGen/X86/copy-eflags.ll
  test/CodeGen/X86/dagcombine-select.ll
  test/CodeGen/X86/extract-bits.ll
  test/CodeGen/X86/extract-lowbits.ll
  test/CodeGen/X86/fast-isel-select-pseudo-cmov.ll
  test/CodeGen/X86/fdiv-combine.ll
  test/CodeGen/X86/fp-cvt.ll
  test/CodeGen/X86/fp128-cast.ll
  test/CodeGen/X86/fp128-compare.ll
  test/CodeGen/X86/fp128-i128.ll
  test/CodeGen/X86/fp128-select.ll
  test/CodeGen/X86/half.ll
  test/CodeGen/X86/i386-shrink-wrapping.ll
  test/CodeGen/X86/i686-win-shrink-wrapping.ll
  test/CodeGen/X86/legalize-shift-64.ll
  test/CodeGen/X86/machine-trace-metrics-crash.ll
  test/CodeGen/X86/mul-constant-result.ll
  test/CodeGen/X86/pr15981.ll
  test/CodeGen/X86/pr32345.ll
  test/CodeGen/X86/pr5145.ll
  test/CodeGen/X86/pseudo_cmov_lower2.ll
  test/CodeGen/X86/rotate.ll
  test/CodeGen/X86/rotate4.ll
  test/CodeGen/X86/sat-add.ll
  test/CodeGen/X86/scalar-fp-to-i64.ll
  test/CodeGen/X86/scalar-int-to-fp.ll
  test/CodeGen/X86/scheduler-backtracking.ll
  test/CodeGen/X86/select-mmx.ll
  test/CodeGen/X86/select.ll
  test/CodeGen/X86/select_const.ll
  test/CodeGen/X86/sse-scalar-fp-arith.ll
  test/CodeGen/X86/sse1.ll
  test/CodeGen/X86/uadd_sat.ll
  test/CodeGen/X86/uint64-to-float.ll
  test/CodeGen/X86/urem-seteq-optsize.ll
  test/CodeGen/X86/vec_floor.ll
  test/CodeGen/X86/vec_int_to_fp.ll
  test/CodeGen/X86/x86-shrink-wrapping.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D54119.172630.patch
Type: text/x-patch
Size: 417717 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181105/65fcb4f3/attachment-0001.bin>


More information about the llvm-commits mailing list