[PATCH] D142254: [X86] Transform vector SET{LE/ULT/ULE} -> SETLT and SET{GE/UGT/UGE} -> SETGT if possible

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 16 00:15:58 PST 2023


craig.topper added a comment.

In D142254#4131211 <https://reviews.llvm.org/D142254#4131211>, @goldstein.w.n wrote:

> In D142254#4131085 <https://reviews.llvm.org/D142254#4131085>, @craig.topper wrote:
>
>> In D142254#4131039 <https://reviews.llvm.org/D142254#4131039>, @saugustine wrote:
>>
>>>> I don't see any vectors in that test...
>>>
>>> The failing stack trace is slightly different, but it still goes through incDecVectorConstant, and would be guarded by the earlier fix:
>>>
>>>   1.	Code generation
>>>   2.	Running pass 'Function Pass Manager' on module 'reduced.ll'.
>>>   3.	Running pass 'X86 DAG->DAG Instruction Selection' on function '@failing'
>>>    #0 0x000055e7138c52fa llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/Support/Unix/Signals.inc:567:11
>>>    #1 0x000055e7138c54ab PrintStackTraceSignalHandler(void*) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/Support/Unix/Signals.inc:641:1
>>>    #2 0x000055e7138c3a16 llvm::sys::RunSignalHandlers() /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/Support/Signals.cpp:104:5
>>>    #3 0x000055e7138c5cc5 SignalHandler(int) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/Support/Unix/Signals.inc:412:1
>>>    #4 0x00007ff5bee5af90 (/lib/x86_64-linux-gnu/libc.so.6+0x3bf90)
>>>    #5 0x00007ff5beea9ccc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
>>>    #6 0x00007ff5bee5aef2 raise ./signal/../sysdeps/posix/raise.c:27:6
>>>    #7 0x00007ff5bee45472 abort ./stdlib/abort.c:81:7
>>>    #8 0x00007ff5bee45395 _nl_load_domain ./intl/loadmsgcat.c:1177:9
>>>    #9 0x00007ff5bee53df2 (/lib/x86_64-linux-gnu/libc.so.6+0x34df2)
>>>   #10 0x000055e711a165cc llvm::EVT::getSimpleVT() const /usr/local/google/home/saugustine/llvm/llvm-project/llvm/include/llvm/CodeGen/ValueTypes.h:0:7
>>>   #11 0x000055e711b59fb5 llvm::SDValue::getSimpleValueType() const /usr/local/google/home/saugustine/llvm/llvm-project/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:191:27
>>>   #12 0x000055e711ca56db incDecVectorConstant(llvm::SDValue, llvm::SelectionDAG&, bool, bool) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/Target/X86/X86ISelLowering.cpp:24734:14
>>>   #13 0x000055e711c8227a combineSetCC(llvm::SDNode*, llvm::SelectionDAG&, llvm::TargetLowering::DAGCombinerInfo&, llvm::X86Subtarget const&) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/Target/X86/X86ISelLowering.cpp:54098:35
>>>   #14 0x000055e711c5a41e llvm::X86TargetLowering::PerformDAGCombine(llvm::SDNode*, llvm::TargetLowering::DAGCombinerInfo&) const /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/Target/X86/X86ISelLowering.cpp:56987:36
>>>   #15 0x000055e71516819f (anonymous namespace)::DAGCombiner::combine(llvm::SDNode*) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:2000:16
>>>   #16 0x000055e7151676a6 (anonymous namespace)::DAGCombiner::Run(llvm::CombineLevel) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1781:18
>>>   #17 0x000055e715166f8f llvm::SelectionDAG::Combine(llvm::CombineLevel, llvm::AAResults*, llvm::CodeGenOpt::Level) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:26965:3
>>>   #18 0x000055e7153b990f llvm::SelectionDAGISel::CodeGenAndEmitDAG() /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:784:3
>>>   #19 0x000055e7153b94bd llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, bool&) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:700:1
>>>   #20 0x000055e7153b8f4e llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1638:11
>>>   #21 0x000055e7153b6480 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:480:3
>>>   #22 0x000055e711b26f0a (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:192:7
>>>   #23 0x000055e7125d1495 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:91:8
>>>   #24 0x000055e712e6f3c6 llvm::FPPassManager::runOnFunction(llvm::Function&) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1430:23
>>>   #25 0x000055e712e741f2 llvm::FPPassManager::runOnModule(llvm::Module&) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1476:16
>>>   #26 0x000055e712e6fc99 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1545:23
>>>   #27 0x000055e712e6f80d llvm::legacy::PassManagerImpl::run(llvm::Module&) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:535:16
>>>   #28 0x000055e712e744d1 llvm::legacy::PassManager::run(llvm::Module&) /usr/local/google/home/saugustine/llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1672:3
>>>   #29 0x000055e713e6db6a (anonymous namespace)::EmitAssemblyHelper::RunCodegenPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&) /usr/local/google/home/saugustine/llvm/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1079:3
>>>   #30 0x000055e713e67fd2 (anonymous namespace)::EmitAssemblyHelper::EmitAssembly(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) /usr/local/google/home/saugustine/llvm/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1102:7
>>>   #31 0x000055e713e67497 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) /usr/local/google/home/saugustine/llvm/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1261:3
>>>   #32 0x000055e715558630 clang::CodeGenAction::ExecuteAction() /usr/local/google/home/saugustine/llvm/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:1242:3
>>>   #33 0x000055e714aac24c clang::FrontendAction::Execute() /usr/local/google/home/saugustine/llvm/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1062:7
>>>   #34 0x000055e7149d5518 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /usr/local/google/home/saugustine/llvm/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1049:23
>>>   #35 0x000055e714c73927 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /usr/local/google/home/saugustine/llvm/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:264:8
>>>   #36 0x000055e7119a02d0 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /usr/local/google/home/saugustine/llvm/llvm-project/clang/tools/driver/cc1_main.cpp:251:13
>>>   #37 0x000055e71198affa ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) /usr/local/google/home/saugustine/llvm/llvm-project/clang/tools/driver/driver.cpp:363:5
>>>   #38 0x000055e711989cdd clang_main(int, char**, llvm::ToolContext const&) /usr/local/google/home/saugustine/llvm/llvm-project/clang/tools/driver/driver.cpp:441:5
>>>   #39 0x000055e7119c267d main /usr/local/google/home/saugustine/llvm/build/tools/clang/tools/driver/clang-driver.cpp:15:3
>>>   #40 0x00007ff5bee4618a __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
>>>   #41 0x00007ff5bee46245 call_init ./csu/../csu/libc-start.c:128:20
>>>   #42 0x00007ff5bee46245 __libc_start_main ./csu/../csu/libc-start.c:368:5
>>>   #43 0x000055e711989451 _start (/usr/local/google/home/saugustine/llvm/build/bin/clang-16+0x1b2a451)
>>
>> Oh I missed that the test needs to go through the middle end optimizer which vectorizes to 2xi128. So we'll need to use the output of the middle end as the test case for llc.
>
> where does that happen? I dont see any vectors: https://godbolt.org/z/TEdExxvao

Not sure. It happens with clang instead of opt https://godbolt.org/z/saYYosG1x


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D142254



More information about the llvm-commits mailing list