[llvm] AMDGPU/GlobalISel: RegBankLegalize rules for wave_reduce intrinsics (PR #192377)

via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 16 10:43:42 PDT 2026


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results

* 61543 tests passed
* 1593 tests skipped

All executed tests passed, but another part of the build **failed**. Click on a failure below to see the details.

<details>
<summary>[code=4294967295] bin/llvm-mca.exe</summary>

```
FAILED: [code=4294967295] bin/llvm-mca.exe
C:\Windows\system32\cmd.exe /C "cd . && C:\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe -E vs_link_exe --msvc-ver=1944 --intdir=tools\llvm-mca\CMakeFiles\llvm-mca.dir --rc="C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\rc.exe" --mt="C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\mt.exe" --manifests  -- C:\clang\clang-msvc\bin\lld-link.exe /nologo @CMakeFiles\llvm-mca.rsp  /out:bin\llvm-mca.exe /implib:lib\llvm-mca.lib /pdb:bin\llvm-mca.pdb /version:0.0 /MANIFEST:NO /STACK:10000000 /INCREMENTAL:NO /subsystem:console && cd ."
LINK: command "C:\clang\clang-msvc\bin\lld-link.exe /nologo @CMakeFiles\llvm-mca.rsp /out:bin\llvm-mca.exe /implib:lib\llvm-mca.lib /pdb:bin\llvm-mca.pdb /version:0.0 /MANIFEST:NO /STACK:10000000 /INCREMENTAL:NO /subsystem:console" failed (exit code 1) with the following output:
lld-link: error: undefined symbol: class llvm::MCAsmParser * __cdecl llvm::createMCAsmParser(class llvm::SourceMgr &, class llvm::MCContext &, class llvm::MCStreamer &, class llvm::MCAsmInfo const &, unsigned int)
>>> referenced by tools\llvm-mca\CMakeFiles\llvm-mca.dir\CodeRegionGenerator.cpp.obj:(public: virtual class llvm::Expected<class llvm::mca::CodeRegions const &> __cdecl llvm::mca::AsmCodeRegionGenerator::parseCodeRegions(class std::unique_ptr<class llvm::MCInstPrinter, struct std::default_delete<class llvm::MCInstPrinter>> const &, bool))

lld-link: error: undefined symbol: public: void __cdecl llvm::MCAsmParser::setTargetParser(class llvm::MCTargetAsmParser &)
>>> referenced by tools\llvm-mca\CMakeFiles\llvm-mca.dir\CodeRegionGenerator.cpp.obj:(public: virtual class llvm::Expected<class llvm::mca::CodeRegions const &> __cdecl llvm::mca::AsmCodeRegionGenerator::parseCodeRegions(class std::unique_ptr<class llvm::MCInstPrinter, struct std::default_delete<class llvm::MCInstPrinter>> const &, bool))

lld-link: error: undefined symbol: protected: __cdecl llvm::MCTargetAsmParser::MCTargetAsmParser(class llvm::MCTargetOptions const &, class llvm::MCSubtargetInfo const &, class llvm::MCInstrInfo const &)
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: static class llvm::MCTargetAsmParser * __cdecl llvm::RegisterMCAsmParser<class `anonymous namespace'::AArch64AsmParser>::Allocator(class llvm::MCSubtargetInfo const &, class llvm::MCAsmParser &, class llvm::MCInstrInfo const &, class llvm::MCTargetOptions const &))
>>> referenced by LLVMAMDGPUAsmParser.lib(AMDGPUAsmParser.cpp.obj):(private: static class llvm::MCTargetAsmParser * __cdecl llvm::RegisterMCAsmParser<class `anonymous namespace'::AMDGPUAsmParser>::Allocator(class llvm::MCSubtargetInfo const &, class llvm::MCAsmParser &, class llvm::MCInstrInfo const &, class llvm::MCTargetOptions const &))
>>> referenced by LLVMARMAsmParser.lib(ARMAsmParser.cpp.obj):(private: static class llvm::MCTargetAsmParser * __cdecl llvm::RegisterMCAsmParser<class `anonymous namespace'::ARMAsmParser>::Allocator(class llvm::MCSubtargetInfo const &, class llvm::MCAsmParser &, class llvm::MCInstrInfo const &, class llvm::MCTargetOptions const &))
>>> referenced 14 more times

lld-link: error: undefined symbol: public: virtual void __cdecl llvm::MCAsmParserExtension::Initialize(class llvm::MCAsmParser &)
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: static class llvm::MCTargetAsmParser * __cdecl llvm::RegisterMCAsmParser<class `anonymous namespace'::AArch64AsmParser>::Allocator(class llvm::MCSubtargetInfo const &, class llvm::MCAsmParser &, class llvm::MCInstrInfo const &, class llvm::MCTargetOptions const &))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(const `anonymous namespace'::AArch64AsmParser::`vftable')
>>> referenced by LLVMAMDGPUAsmParser.lib(AMDGPUAsmParser.cpp.obj):(private: static class llvm::MCTargetAsmParser * __cdecl llvm::RegisterMCAsmParser<class `anonymous namespace'::AMDGPUAsmParser>::Allocator(class llvm::MCSubtargetInfo const &, class llvm::MCAsmParser &, class llvm::MCInstrInfo const &, class llvm::MCTargetOptions const &))
>>> referenced 23 more times

lld-link: error: undefined symbol: public: class llvm::MCSubtargetInfo const & __cdecl llvm::MCTargetAsmParser::getSTI(void) const
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: static class llvm::MCTargetAsmParser * __cdecl llvm::RegisterMCAsmParser<class `anonymous namespace'::AArch64AsmParser>::Allocator(class llvm::MCSubtargetInfo const &, class llvm::MCAsmParser &, class llvm::MCInstrInfo const &, class llvm::MCTargetOptions const &))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(public: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseInstruction(struct llvm::ParseInstructionInfo &, class ParseInstructionInfo::StringRef, class ParseInstructionInfo::SMLoc, class ParseInstructionInfo::SmallVectorImpl<class std::unique_ptr<class llvm::MCParsedAsmOperand, struct std::default_delete<class llvm::MCParsedAsmOperand>>> &))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(public: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseInstruction(struct llvm::ParseInstructionInfo &, class ParseInstructionInfo::StringRef, class ParseInstructionInfo::SMLoc, class ParseInstructionInfo::SmallVectorImpl<class std::unique_ptr<class llvm::MCParsedAsmOperand, struct std::default_delete<class llvm::MCParsedAsmOperand>>> &))
>>> referenced 737 more times

lld-link: error: undefined symbol: public: bool __cdecl llvm::MCAsmParser::parseOptionalToken(enum llvm::AsmToken::TokenKind)
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced 99 more times

lld-link: error: undefined symbol: public: class llvm::AsmToken const & __cdecl llvm::MCAsmParser::getTok(void) const
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced 1177 more times

lld-link: error: undefined symbol: public: class llvm::SMLoc __cdecl llvm::AsmToken::getLoc(void) const
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced 857 more times

lld-link: error: undefined symbol: public: bool __cdecl llvm::MCAsmParser::parseExpression(class llvm::MCExpr const *&)
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: bool __cdecl `anonymous namespace'::AArch64AsmParser::parseOperand(class llvm::SmallVectorImpl<class std::unique_ptr<class llvm::MCParsedAsmOperand, struct std::default_delete<class llvm::MCParsedAsmOperand>>> &, bool, bool))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: bool __cdecl `anonymous namespace'::AArch64AsmParser::parseOperand(class llvm::SmallVectorImpl<class std::unique_ptr<class llvm::MCParsedAsmOperand, struct std::default_delete<class llvm::MCParsedAsmOperand>>> &, bool, bool))
>>> referenced 101 more times

lld-link: error: undefined symbol: public: bool __cdecl llvm::MCAsmParser::parseToken(enum llvm::AsmToken::TokenKind, class llvm::Twine const &)
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced 59 more times

lld-link: error: undefined symbol: public: bool __cdecl llvm::MCAsmParser::TokError(class llvm::Twine const &, class llvm::SMRange)
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced 76 more times

lld-link: error: undefined symbol: public: bool __cdecl llvm::MCAsmParser::Error(class llvm::SMLoc, class llvm::Twine const &, class llvm::SMRange)
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(public: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseInstruction(struct llvm::ParseInstructionInfo &, class ParseInstructionInfo::StringRef, class ParseInstructionInfo::SMLoc, class ParseInstructionInfo::SmallVectorImpl<class std::unique_ptr<class llvm::MCParsedAsmOperand, struct std::default_delete<class llvm::MCParsedAsmOperand>>> &))
>>> referenced 496 more times

lld-link: error: undefined symbol: public: class llvm::SMLoc __cdecl llvm::AsmToken::getEndLoc(void) const
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDataExpr(class llvm::MCExpr const *&))
>>> referenced by LLVMAMDGPUAsmParser.lib(AMDGPUAsmParser.cpp.obj):(public: class std::unique_ptr<class `anonymous namespace'::AMDGPUOperand, struct std::default_delete<class `anonymous namespace'::AMDGPUOperand>> __cdecl `anonymous namespace'::AMDGPUAsmParser::parseRegister(bool))
>>> referenced by LLVMAMDGPUAsmParser.lib(AMDGPUAsmParser.cpp.obj):(public: class llvm::ParseStatus __cdecl `anonymous namespace'::AMDGPUAsmParser::parseDim(class ParseStatus::SmallVectorImpl<class std::unique_ptr<class llvm::MCParsedAsmOperand, struct std::default_delete<class llvm::MCParsedAsmOperand>>> &))
>>> referenced 56 more times

lld-link: error: undefined symbol: public: bool __cdecl llvm::MCAsmParser::parseEOL(void)
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(public: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::parseInstruction(struct llvm::ParseInstructionInfo &, class ParseInstructionInfo::StringRef, class ParseInstructionInfo::SMLoc, class ParseInstructionInfo::SmallVectorImpl<class std::unique_ptr<class llvm::MCParsedAsmOperand, struct std::default_delete<class llvm::MCParsedAsmOperand>>> &))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(public: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::ParseDirective(class llvm::AsmToken))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(public: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::ParseDirective(class llvm::AsmToken))
>>> referenced 75 more times

lld-link: error: undefined symbol: public: bool __cdecl llvm::MCAsmParser::check(bool, class llvm::SMLoc, class llvm::Twine const &)
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(public: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::ParseDirective(class llvm::AsmToken))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: bool __cdecl `anonymous namespace'::AArch64AsmParser::parseSyspAlias(class llvm::StringRef, class StringRef::SMLoc, class StringRef::SmallVectorImpl<class std::unique_ptr<class llvm::MCParsedAsmOperand, struct std::default_delete<class llvm::MCParsedAsmOperand>>> &))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: class llvm::ParseStatus __cdecl `anonymous namespace'::AArch64AsmParser::tryParseSyspXzrPair(class ParseStatus::SmallVectorImpl<class std::unique_ptr<class llvm::MCParsedAsmOperand, struct std::default_delete<class llvm::MCParsedAsmOperand>>> &))
>>> referenced 46 more times

lld-link: error: undefined symbol: protected: class llvm::MCSubtargetInfo & __cdecl llvm::MCTargetAsmParser::copySTI(void)
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(public: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::ParseDirective(class llvm::AsmToken))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(public: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::ParseDirective(class llvm::AsmToken))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: bool __cdecl `anonymous namespace'::AArch64AsmParser::parseDirectiveArchExtension(class llvm::SMLoc))
>>> referenced 69 more times

lld-link: error: undefined symbol: public: virtual bool __cdecl llvm::MCTargetAsmParser::areEqualRegs(class llvm::MCParsedAsmOperand const &, class llvm::MCParsedAsmOperand const &) const
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(public: virtual bool __cdecl `anonymous namespace'::AArch64AsmParser::areEqualRegs(class llvm::MCParsedAsmOperand const &, class llvm::MCParsedAsmOperand const &) const)
>>> referenced by LLVMAMDGPUAsmParser.lib(AMDGPUAsmParser.cpp.obj):(const `anonymous namespace'::AMDGPUAsmParser::`vftable')
>>> referenced by LLVMARMAsmParser.lib(ARMAsmParser.cpp.obj):(const `anonymous namespace'::ARMAsmParser::`vftable')
>>> referenced 13 more times

lld-link: error: undefined symbol: public: virtual __cdecl llvm::MCTargetAsmParser::~MCTargetAsmParser(void)
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(public: virtual void * __cdecl `anonymous namespace'::AArch64AsmParser::`scalar deleting dtor'(unsigned int))
>>> referenced by LLVMAMDGPUAsmParser.lib(AMDGPUAsmParser.cpp.obj):(public: virtual void * __cdecl `anonymous namespace'::AMDGPUAsmParser::`scalar deleting dtor'(unsigned int))
>>> referenced by LLVMARMAsmParser.lib(ARMAsmParser.cpp.obj):(public: virtual void * __cdecl `anonymous namespace'::ARMAsmParser::`scalar deleting dtor'(unsigned int))
>>> referenced 14 more times

lld-link: error: undefined symbol: public: unsigned __int64 __cdecl llvm::AsmLexer::peekTokens(class llvm::MutableArrayRef<class llvm::AsmToken>, bool)
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: bool __cdecl `anonymous namespace'::AArch64AsmParser::parseOperand(class llvm::SmallVectorImpl<class std::unique_ptr<class llvm::MCParsedAsmOperand, struct std::default_delete<class llvm::MCParsedAsmOperand>>> &, bool, bool))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: bool __cdecl `anonymous namespace'::AArch64AsmParser::parseOptionalMulOperand(class llvm::SmallVectorImpl<class std::unique_ptr<class llvm::MCParsedAsmOperand, struct std::default_delete<class llvm::MCParsedAsmOperand>>> &))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: bool __cdecl `anonymous namespace'::AArch64AsmParser::parseOptionalMulOperand(class llvm::SmallVectorImpl<class std::unique_ptr<class llvm::MCParsedAsmOperand, struct std::default_delete<class llvm::MCParsedAsmOperand>>> &))
>>> referenced 32 more times

lld-link: error: undefined symbol: public: bool __cdecl llvm::MCAsmParser::parseAtSpecifier(class llvm::MCExpr const *&, class llvm::SMLoc &)
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: bool __cdecl `anonymous namespace'::AArch64AsmParser::parseOperand(class llvm::SmallVectorImpl<class std::unique_ptr<class llvm::MCParsedAsmOperand, struct std::default_delete<class llvm::MCParsedAsmOperand>>> &, bool, bool))
>>> referenced by LLVMAArch64AsmParser.lib(AArch64AsmParser.cpp.obj):(private: bool __cdecl `anonymous namespace'::AArch64AsmParser::parseSymbolicImmVal(class llvm::MCExpr const *&))

lld-link: error: too many errors emitted, stopping now (use /errorlimit:0 to see all errors)
```
</details>

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.

https://github.com/llvm/llvm-project/pull/192377


More information about the llvm-commits mailing list