[all-commits] [llvm/llvm-project] e71dd7: [X86][SSE] getFauxShuffle - don't combine shuffles...

Simon Pilgrim via All-commits all-commits at lists.llvm.org
Sun Apr 19 05:35:56 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: e71dd7c011a35b6969b53c168a0e57afa1a57792
      https://github.com/llvm/llvm-project/commit/e71dd7c011a35b6969b53c168a0e57afa1a57792
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2020-04-19 (Sun, 19 Apr 2020)

  Changed paths:
    M llvm/lib/Target/X86/X86ISelLowering.cpp
    M llvm/test/CodeGen/X86/buildvec-extract.ll
    M llvm/test/CodeGen/X86/buildvec-insertvec.ll
    M llvm/test/CodeGen/X86/extract-concat.ll
    M llvm/test/CodeGen/X86/vector-shuffle-combining.ll

  Log Message:
  -----------
  [X86][SSE] getFauxShuffle - don't combine shuffles with small truncated scalars (PR45604)

getFauxShuffle attempts to combine INSERT_VECTOR_ELT(TRUNCATE/EXTEND(EXTRACT_VECTOR_ELT(x))) patterns into a target shuffle chain.

PR45604 identified an issue where the scalar was truncated to a size smaller than the destination vector element and then zero extended back, which requires the upper bits to be zero'd which we don't currently do.

To avoid the bug I've added an early out in these truncation cases, a future commit should allow us to handle this by inserting the necessary SM_SentinelZero padding.




More information about the All-commits mailing list