Skip to content

unhandled case in copyPhysReg after few operations over aie::accum<accfloat, 16> #734

@AngryLoki

Description

@AngryLoki

Hi, the code below is a minimized version of a compilation issue that is mentioned in https://github.com/amd/IRON/blob/devel/aie_kernels/aie2p/layer_norm.cc#L60

#include <aie_api/aie.hpp>

void test(float *restrict output)
{
    aie::accum<accfloat, 16> reg_a;
    reg_a = aie::mul(reg_a.to_vector<float>(), reg_a.to_vector<float>());
    reg_a = aie::mul(reg_a.to_vector<float>(), reg_a.to_vector<float>());
    aie::store_v(output, reg_a.to_vector<float>());
}

If fails with:

 ./ironenv/lib/python3.13/site-packages/llvm-aie/bin/clang++ -O2 -std=c++20 --target=aie2p-none-unknown-elf -Iironenv/lib/python3.13/site-packages/mlir_aie/include -c test.cpp -o test.o

unhandled case in copyPhysReg
UNREACHABLE executed at /project/llvm-aie/llvm/lib/Target/AIE/aie2p/AIE2PInstrInfo.cpp:829!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: ./ironenv/lib/python3.13/site-packages/llvm-aie/bin/clang++ -O2 -std=c++20 --target=aie2p-none-unknown-elf -Iironenv/lib/python3.13/site-packages/mlir_aie/include -c test.cpp -o test.o
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'test.cpp'.
4.      Running pass 'Post-RA pseudo instruction expansion pass' on function '@_Z4testPf'
 #0 0x00007f2820f8f31b llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libLLVM.so+0xb8f31b)
 #1 0x00007f2820f8c834 llvm::sys::CleanupOnSignal(unsigned long) (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libLLVM.so+0xb8c834)
 #2 0x00007f2820e7f650 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007f281fe6db10 (/usr/lib64/libc.so.6+0x3eb10)
 #4 0x00007f281fec8a1c (/usr/lib64/libc.so.6+0x99a1c)
 #5 0x00007f281fe6d9e6 raise (/usr/lib64/libc.so.6+0x3e9e6)
 #6 0x00007f281fe5441a abort (/usr/lib64/libc.so.6+0x2541a)
 #7 0x00007f2820e9b44a (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libLLVM.so+0xa9b44a)
 #8 0x00007f28242d4517 (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libLLVM.so+0x3ed4517)
 #9 0x00007f282195bb6c llvm::TargetInstrInfo::lowerCopy(llvm::MachineInstr*, llvm::TargetRegisterInfo const*) const (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libLLVM.so+0x155bb6c)
#10 0x00007f282140d654 (anonymous namespace)::ExpandPostRA::runOnMachineFunction(llvm::MachineFunction&) ExpandPostRAPseudos.cpp:0:0
#11 0x00007f28215d7f40 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#12 0x00007f282119009c llvm::FPPassManager::runOnFunction(llvm::Function&) (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libLLVM.so+0xd9009c)
#13 0x00007f28211904b1 llvm::FPPassManager::runOnModule(llvm::Module&) (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libLLVM.so+0xd904b1)
#14 0x00007f2821190e0d llvm::legacy::PassManagerImpl::run(llvm::Module&) (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libLLVM.so+0xd90e0d)
#15 0x00007f2829423d4b clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, 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>>, clang::BackendConsumer*) (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libclang-cpp.so+0x2623d4b)
#16 0x00007f2829989cd4 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libclang-cpp.so+0x2b89cd4)
#17 0x00007f2827bf887c clang::ParseAST(clang::Sema&, bool, bool) (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libclang-cpp.so+0xdf887c)
#18 0x00007f282a5a0873 clang::FrontendAction::Execute() (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libclang-cpp.so+0x37a0873)
#19 0x00007f282a519526 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libclang-cpp.so+0x3719526)
#20 0x00007f282a64933c clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libclang-cpp.so+0x384933c)
#21 0x0000000000414ac4 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (./ironenv/lib/python3.13/site-packages/llvm-aie/bin/clang+++0x414ac4)
#22 0x000000000040b9a0 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#23 0x00007f282a053259 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#24 0x00007f2820e7fb12 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libLLVM.so+0xa7fb12)
#25 0x00007f282a05560e clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#26 0x00007f282a00f05b clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libclang-cpp.so+0x320f05b)
#27 0x00007f282a0100cf clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libclang-cpp.so+0x32100cf)
#28 0x00007f282a01dae4 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin/../lib/libclang-cpp.so+0x321dae4)
#29 0x0000000000410c53 clang_main(int, char**, llvm::ToolContext const&) (./ironenv/lib/python3.13/site-packages/llvm-aie/bin/clang+++0x410c53)
#30 0x000000000040af83 main (./ironenv/lib/python3.13/site-packages/llvm-aie/bin/clang+++0x40af83)
#31 0x00007f281fe5657b (/usr/lib64/libc.so.6+0x2757b)
#32 0x00007f281fe5662b __libc_start_main (/usr/lib64/libc.so.6+0x2762b)
#33 0x000000000040afce _start (./ironenv/lib/python3.13/site-packages/llvm-aie/bin/clang+++0x40afce)
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 20.0.0 (https://github.com/Xilinx/llvm-aie 8a4e029eb6779531fe54a124bc3bac5cbec92519)
Target: aie2p-none-unknown-elf
Thread model: posix
InstalledDir: /src/IRON/ironenv/lib/python3.13/site-packages/llvm-aie/bin
Build config: +assertions
clang++: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang++: note: diagnostic msg: /tmp/test-d77fd4.cpp
clang++: note: diagnostic msg: /tmp/test-d77fd4.sh
clang++: note: diagnostic msg: 

********************

Is it something that can be fixed in llvm-aie? Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions