[all-commits] [llvm/llvm-project] 9fde88: [X86][AVX] splitIntVSETCC - handle separate (canon...

Simon Pilgrim via All-commits all-commits at lists.llvm.org
Thu Mar 25 03:19:28 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 9fde88c3e21cc552af5fbb0b016fe186bad5c0f5
      https://github.com/llvm/llvm-project/commit/9fde88c3e21cc552af5fbb0b016fe186bad5c0f5
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2021-03-25 (Thu, 25 Mar 2021)

  Changed paths:
    M llvm/lib/Target/X86/X86ISelLowering.cpp
    M llvm/test/CodeGen/X86/bitcast-int-to-vector-bool-sext.ll
    M llvm/test/CodeGen/X86/bitcast-int-to-vector-bool-zext.ll
    M llvm/test/CodeGen/X86/bitcast-int-to-vector-bool.ll
    M llvm/test/CodeGen/X86/vector-sext.ll

  Log Message:
  -----------
  [X86][AVX] splitIntVSETCC - handle separate (canonicalized) SETCC operands

LowerVSETCC calls splitIntVSETCC after canonicalizing certain patterns, in particular (X & CPow2 != 0) -> (X & CPow2 == CPow2).

Unfortunately if we're splitting for AVX1/non-AVX512BW cases, we lose these canonicalizations as we call the split with the original SetCC node, and when the split nodes are later lowered in LowerVSETCC the patterns are lost behind extract_subvector etc. But if we pass the canonicalized operands for splitting we retain the optimizations.

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




More information about the All-commits mailing list