[PATCH] D147243: [X86] MatchVectorAllZeroTest - add support for icmp(bitcast(icmp_ne(X,Y)),0) vector reduction patterns

Alexander Kornienko via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 5 10:34:43 PDT 2023


alexfh added a comment.

This is an llvm-reduce'd test case:

  target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
  target triple = "x86_64-unknown-linux-gnu"
  
  define i1 @q(<4 x i256> %0) {
  entry:
    %1 = icmp ne <4 x i256> %0, zeroinitializer
    %2 = bitcast <4 x i1> %1 to i4
    %3 = icmp eq i4 %2, 0
    br i1 %3, label %l2, label %l1
  
  l1:                        ; preds = %entry
    ret i1 false
  
  l2:                                  ; preds = %entry
    ret i1 false
  }



  $ clang -c reduced.ll
  assert.h assertion failed at llvm/include/llvm/CodeGen/ValueTypes.h:434 in EVT llvm::EVT::getHalfNumVectorElementsVT(LLVMContext &) const: EltCnt.isKnownEven() && "Splitting vector, but not in half!"
  *** Check failure stack trace: ***
      @     0x55fb590ae6a4  __assert_fail
      @     0x55fb5633411d  llvm::EVT::getHalfNumVectorElementsVT()
      @     0x55fb57abc892  llvm::SelectionDAG::GetSplitDestVTs()
      @     0x55fb5715222d  LowerVectorAllEqual()
      @     0x55fb570aab19  MatchVectorAllEqualTest()
      @     0x55fb5713d07b  combineSetCC()
      @     0x55fb571141e2  llvm::X86TargetLowering::PerformDAGCombine()
      @     0x55fb579a7e98  (anonymous namespace)::DAGCombiner::combine()
      @     0x55fb579a55ed  llvm::SelectionDAG::Combine()
      @     0x55fb57b2534e  llvm::SelectionDAGISel::CodeGenAndEmitDAG()
      @     0x55fb57b240dc  llvm::SelectionDAGISel::SelectAllBasicBlocks()
      @     0x55fb57b20b0e  llvm::SelectionDAGISel::runOnMachineFunction()
      @     0x55fb572d357e  (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction()
      @     0x55fb577a8e45  llvm::MachineFunctionPass::runOnFunction()
      @     0x55fb58d7585d  llvm::FPPassManager::runOnFunction()
      @     0x55fb58d7d844  llvm::FPPassManager::runOnModule()
      @     0x55fb58d75fec  llvm::legacy::PassManagerImpl::run()
      @     0x55fb53ee8265  clang::EmitBackendOutput()
      @     0x55fb53ee3355  clang::CodeGenAction::ExecuteAction()
      @     0x55fb54b21863  clang::FrontendAction::Execute()
      @     0x55fb54a953cd  clang::CompilerInstance::ExecuteAction()
      @     0x55fb53ac0768  clang::ExecuteCompilerInvocation()
      @     0x55fb53ab4611  cc1_main()
      @     0x55fb53ab0908  ExecuteCC1Tool()
      @     0x55fb53aaf66e  clang_main()
      @     0x55fb53aac9c4  main
      @     0x7f2387986633  __libc_start_main
      @     0x55fb53aac92a  _start


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D147243/new/

https://reviews.llvm.org/D147243



More information about the llvm-commits mailing list