[llvm-dev] [cfe-dev] ARM float16 intrinsic test
Sjoerd Meijer via llvm-dev
llvm-dev at lists.llvm.org
Fri Jul 12 02:41:04 PDT 2019
Ah, sorry! You are using a clang-8 build, but I was lazy and quickly tried a trunk build. I can reproduce it yes with clang-8. FP16 in the ARM backend was a bit of work-in-progress around that time, it had some rough edges, and you're hitting one of them. But we have fixed a lot of them recently, and so it is in a good state now, that's why my top of trunk build works. As workarounds, which I realise might not be ideal, but you can try using a trunk build, or wait for clang-9 (or avoid this intrinsic if the rest works for you).
Hope this helps,
Sjoerd.
________________________________
From: Nancy <nancydreaming at gmail.com>
Sent: 12 July 2019 10:21
To: Sjoerd Meijer
Cc: cfe-dev at lists.llvm.org; LLVM Developers Mailing List
Subject: Re: [llvm-dev] [cfe-dev] ARM float16 intrinsic test
Hi,
I do not get your result. Do I miss something?
$COMP_ROOT/clang++ --target=arm-arm-eabihf -march=armv8.2a+fp16
arm.cpp -S -o - -O3
.text
.syntax unified
.eabi_attribute 67, "2.09"
.eabi_attribute 6, 14
.eabi_attribute 7, 65
.eabi_attribute 8, 1
.eabi_attribute 9, 2
.fpu crypto-neon-fp-armv8
.eabi_attribute 12, 4
.eabi_attribute 36, 1
.eabi_attribute 42, 1
.eabi_attribute 34, 0
.eabi_attribute 68, 3
.eabi_attribute 17, 1
.eabi_attribute 20, 1
.eabi_attribute 21, 1
.eabi_attribute 23, 3
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.eabi_attribute 28, 1
.eabi_attribute 38, 1
.eabi_attribute 18, 4
.eabi_attribute 26, 2
.eabi_attribute 14, 0
.file "arm.cpp"
unhandled vld/vst lane type
UNREACHABLE executed at
/home/nancy/rpp_llvm/llvm-project/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:2072!
Stack dump:
0. Program arguments:
/home/nancy/rpp_llvm/build-project/bin/clang-8 -cc1 -triple
armv8.2a-arm-unknown-eabihf -S -disable-free -main-file-name arm.cpp
-mrelocation-model static -mthread-model posix -mdisable-fp-elim
-fmath-errno -mconstructor-aliases -nostdsysteminc -target-cpu generic
-target-feature +fullfp16 -target-feature +strict-align -target-abi
aapcs -mfloat-abi hard -fallow-half-arguments-and-returns
-dwarf-column-info -debugger-tuning=gdb -coverage-notes-file
/home/nancy/rpp_llvm/test/-.gcno -resource-dir
/home/nancy/rpp_llvm/build-project/lib/clang/8.0.0 -internal-isystem
/home/nancy/rpp_llvm/build-project/lib/clang/8.0.0/include
-internal-isystem include -O3 -fdeprecated-macro
-fdebug-compilation-dir /home/nancy/rpp_llvm/test -ferror-limit 19
-fmessage-length 81 -fno-signed-char -fobjc-runtime=gcc
-fcxx-exceptions -fexceptions -fdiagnostics-show-option
-vectorize-loops -vectorize-slp -o - -x c++ arm.cpp -faddrsig
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'arm.cpp'.
4. Running pass 'ARM Instruction Selection' on function
'@_Z18test_vst4_lane_f16PDh13float16x4x4_t'
#0 0x000000000444190d llvm::sys::PrintStackTrace(llvm::raw_ostream&)
/home/nancy/rpp_llvm/llvm-project/llvm/lib/Support/Unix/Signals.inc:495:0
#1 0x00000000044419a0 PrintStackTraceSignalHandler(void*)
/home/nancy/rpp_llvm/llvm-project/llvm/lib/Support/Unix/Signals.inc:559:0
#2 0x000000000443f55a llvm::sys::RunSignalHandlers()
/home/nancy/rpp_llvm/llvm-project/llvm/lib/Support/Signals.cpp:69:0
#3 0x0000000004441308 SignalHandler(int)
/home/nancy/rpp_llvm/llvm-project/llvm/lib/Support/Unix/Signals.inc:358:0
#4 0x00007fc6fa271390 __restore_rt
(/lib/x86_64-linux-gnu/libpthread.so.0+0x11390)
#5 0x00007fc6f8fe3428 gsignal
/build/glibc-LK5gWL/glibc-2.23/signal/../sysdeps/unix/sysv/linux/raise.c:54:0
#6 0x00007fc6f8fe502a abort /build/glibc-LK5gWL/glibc-2.23/stdlib/abort.c:91:0
#7 0x00000000043abcc4 bindingsErrorHandler(void*,
std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, bool)
/home/nancy/rpp_llvm/llvm-project/llvm/lib/Support/ErrorHandling.cpp:231:0
#8 0x0000000002db244e (anonymous
namespace)::ARMDAGToDAGISel::SelectVLDSTLane(llvm::SDNode*, bool,
bool, unsigned int, unsigned short const*, unsigned short const*)
/home/nancy/rpp_llvm/llvm-project/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:2074:0
#9 0x0000000002dbc3ad (anonymous
namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)
/home/nancy/rpp_llvm/llvm-project/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:3781:0
#10 0x000000000559dc93
llvm::SelectionDAGISel::DoInstructionSelection()
/home/nancy/rpp_llvm/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1068:0
#11 0x000000000559cfdd llvm::SelectionDAGISel::CodeGenAndEmitDAG()
/home/nancy/rpp_llvm/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:907:0
#12 0x000000000559b467
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&)
/home/nancy/rpp_llvm/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:670:0
#13 0x00000000055a19ed
llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&)
/home/nancy/rpp_llvm/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1789:0
#14 0x000000000559a134
llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&)
/home/nancy/rpp_llvm/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:472:0
#15 0x0000000002d9f8af (anonymous
namespace)::ARMDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&)
/home/nancy/rpp_llvm/llvm-project/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:66:0
#16 0x0000000003689502
llvm::MachineFunctionPass::runOnFunction(llvm::Function&)
/home/nancy/rpp_llvm/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:74:0
#17 0x0000000003b752e7
llvm::FPPassManager::runOnFunction(llvm::Function&)
/home/nancy/rpp_llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1644:0
#18 0x0000000003b75559 llvm::FPPassManager::runOnModule(llvm::Module&)
/home/nancy/rpp_llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1679:0
#19 0x0000000003b75960 (anonymous
namespace)::MPPassManager::runOnModule(llvm::Module&)
/home/nancy/rpp_llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1744:0
#20 0x0000000003b7616d
llvm::legacy::PassManagerImpl::run(llvm::Module&)
/home/nancy/rpp_llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1857:0
#21 0x0000000003b763b1 llvm::legacy::PassManager::run(llvm::Module&)
/home/nancy/rpp_llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1889:0
#22 0x000000000473cfa9 (anonymous
namespace)::EmitAssemblyHelper::EmitAssembly(clang::BackendAction,
std::unique_ptr<llvm::raw_pwrite_stream,
std::default_delete<llvm::raw_pwrite_stream> >)
/home/nancy/rpp_llvm/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:881:0
#23 0x00000000047404ee
clang::EmitBackendOutput(clang::DiagnosticsEngine&,
clang::HeaderSearchOptions const&, clang::CodeGenOptions const&,
clang::TargetOptions const&, clang::LangOptions const&,
llvm::DataLayout const&, llvm::Module*, clang::BackendAction,
std::unique_ptr<llvm::raw_pwrite_stream,
std::default_delete<llvm::raw_pwrite_stream> >)
/home/nancy/rpp_llvm/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1318:0
#24 0x0000000005692719
clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&)
/home/nancy/rpp_llvm/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:295:0
#25 0x0000000006bf44fb clang::ParseAST(clang::Sema&, bool, bool)
/home/nancy/rpp_llvm/llvm-project/clang/lib/Parse/ParseAST.cpp:177:0
#26 0x0000000004f12e87 clang::ASTFrontendAction::ExecuteAction()
/home/nancy/rpp_llvm/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1037:0
#27 0x0000000005690548 clang::CodeGenAction::ExecuteAction()
/home/nancy/rpp_llvm/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:1049:0
#28 0x0000000004f12866 clang::FrontendAction::Execute()
/home/nancy/rpp_llvm/llvm-project/clang/lib/Frontend/FrontendAction.cpp:939:0
#29 0x0000000004e98ebc
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
/home/nancy/rpp_llvm/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:956:0
#30 0x00000000050718fd
clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
/home/nancy/rpp_llvm/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:268:0
#31 0x00000000024795a0 cc1_main(llvm::ArrayRef<char const*>, char
const*, void*) /home/nancy/rpp_llvm/llvm-project/clang/tools/driver/cc1_main.cpp:219:0
#32 0x000000000246e87c ExecuteCC1Tool(llvm::ArrayRef<char const*>,
llvm::StringRef)
/home/nancy/rpp_llvm/llvm-project/clang/tools/driver/driver.cpp:310:0
#33 0x000000000246f5c1 main
/home/nancy/rpp_llvm/llvm-project/clang/tools/driver/driver.cpp:382:0
#34 0x00007fc6f8fce830 __libc_start_main
/build/glibc-LK5gWL/glibc-2.23/csu/../csu/libc-start.c:325:0
#35 0x000000000246c199 _start
(/home/nancy/rpp_llvm/build-project/bin/clang-8+0x246c199)
clang-8: error: unable to execute command: Aborted (core dumped)
clang-8: error: clang frontend command failed due to signal (use -v to
see invocation)
clang version 8.0.0
Target: arm-arm-unknown-eabihf
Thread model: posix
InstalledDir: /home/nancy/rpp_llvm/build-project/bin
clang-8: note: diagnostic msg: PLEASE submit a bug report to
https://bugs.llvm.org/ and include the crash backtrace, preprocessed
source, and associated run script.
clang-8: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-8: note: diagnostic msg: /tmp/arm-e3b4b0.cpp
clang-8: note: diagnostic msg: /tmp/arm-e3b4b0.sh
clang-8: note: diagnostic msg:
********************
On Fri, Jul 12, 2019 at 4:29 PM Sjoerd Meijer <Sjoerd.Meijer at arm.com> wrote:
>
> Hello,
>
> The compiler really shouldn't crash, we should raise a bug report for that, but I think this is an options problem.
>
> Looks like you want to target FP16 because you're using -target-feature +fullfp16. FP16 is an extension to Armv8.2-A, and so something like this worked for me:
>
> clang++ --target=arm-arm-eabihf -march=armv8.2a+fp16 arm.cpp -S -o - -O3
>
> and gives:
>
> _Z18test_vst4_lane_f16PDh13float16x4x4_t:
> vst4.16 {d0[3], d1[3], d2[3], d3[3]}, [r0]
> bx lr
>
> Is that what you were looking for?
> Cheers,
> Sjoerd.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190712/17f9e871/attachment.html>
More information about the llvm-dev
mailing list