[llvm] [HEXAGON] Utilize new mask instruction (PR #92365)
Nathan Chancellor via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 8 08:05:02 PDT 2024
nathanchance wrote:
I notice a backend error when building the Linux kernel for `ARCH=hexagon` after this change.
```c
int atmel_console_get_options_mr;
_Bool atmel_console_setup_atmel_port_3;
void __attribute__((__cold__)) atmel_console_setup() {
int flow = atmel_console_setup_atmel_port_3, __trans_tmp_12, quot,
__trans_tmp_5, val;
asm("" : "=&r"(val));
__trans_tmp_5 = val;
__trans_tmp_12 = __trans_tmp_5;
quot = __trans_tmp_12 & ~0UL >> 5;
if (quot)
atmel_console_get_options_mr = flow;
}
```
```
$ clang --target=hexagon -c -o /dev/null atmel_serial.i
$ clang --target=hexagon -c -o /dev/null atmel_serial.i -O2
fatal error: error in backend: Attempting to emit S2_mask instruction but the Feature_HasV66 predicate(s) are not met
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: clang --target=hexagon -c -o /dev/null atmel_serial.i -O2
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'atmel_serial.i'.
4. Running pass 'Hexagon Assembly Printer' on function '@atmel_console_setup'
#0 0x00005598a69c8496 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x5650496)
#1 0x00005598a69c5f5e llvm::sys::RunSignalHandlers() (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x564df5e)
#2 0x00005598a6947ec7 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) CrashRecoveryContext.cpp:0:0
#3 0x00005598a6947e5f llvm::CrashRecoveryContext::HandleExit(int) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x55cfe5f)
#4 0x00005598a69c27f7 llvm::sys::Process::Exit(int, bool) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x564a7f7)
#5 0x00005598a4a1c7c3 (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x36a47c3)
#6 0x00005598a694e339 llvm::report_fatal_error(llvm::Twine const&, bool) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x55d6339)
#7 0x00005598a694e226 (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x55d6226)
#8 0x00005598a5228fc3 llvm::Hexagon_MC::verifyInstructionPredicates(unsigned int, llvm::FeatureBitset const&) HexagonMCTargetDesc.cpp:0:0
#9 0x00005598a505fbcf llvm::HexagonAsmPrinter::emitInstruction(llvm::MachineInstr const*) HexagonAsmPrinter.cpp:0:0
#10 0x00005598a7a5a4f0 llvm::AsmPrinter::emitFunctionBody() (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x66e24f0)
#11 0x00005598a5060160 llvm::HexagonAsmPrinter::runOnMachineFunction(llvm::MachineFunction&) HexagonAsmPrinter.cpp:0:0
#12 0x00005598a5f3caf2 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x4bc4af2)
#13 0x00005598a64c02c8 llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x51482c8)
#14 0x00005598a64c8c82 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x5150c82)
#15 0x00005598a64c0df2 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x5148df2)
#16 0x00005598a7207dd0 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>>, clang::BackendConsumer*) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x5e8fdd0)
#17 0x00005598a722f007 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x5eb7007)
#18 0x00005598a86bfe99 clang::ParseAST(clang::Sema&, bool, bool) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x7347e99)
#19 0x00005598a76c5c0d clang::FrontendAction::Execute() (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x634dc0d)
#20 0x00005598a7629cad clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x62b1cad)
#21 0x00005598a77a262c clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x642a62c)
#22 0x00005598a4a1c395 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x36a4395)
#23 0x00005598a4a189dd ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#24 0x00005598a744e269 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::$_0>(long) Job.cpp:0:0
#25 0x00005598a6947df6 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x55cfdf6)
#26 0x00005598a744d903 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x60d5903)
#27 0x00005598a7405537 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x608d537)
#28 0x00005598a7405a97 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x608da97)
#29 0x00005598a74281c9 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x60b01c9)
#30 0x00005598a4a17e7d clang_main(int, char**, llvm::ToolContext const&) (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x369fe7d)
#31 0x00005598a4a29806 main (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x36b1806)
#32 0x00007f423fa0be08 (/usr/lib/libc.so.6+0x25e08)
#33 0x00007f423fa0becc __libc_start_main (/usr/lib/libc.so.6+0x25ecc)
#34 0x00005598a4a162a5 _start (/home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin/clang-20+0x369e2a5)
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
ClangBuiltLinux clang version 20.0.0git (https://github.com/llvm/llvm-project.git c04857cb2c9f6f2e8add61192c62e48a83938efd)
Target: hexagon
Thread model: posix
InstalledDir: /home/nathan/tmp/cvise.oHgX5B9Sms/install/llvm-bad/bin
Build config: +assertions
clang: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.
```
https://github.com/llvm/llvm-project/pull/92365
More information about the llvm-commits
mailing list