[cfe-dev] [llvm-dev] ARM float16 intrinsic test
Sjoerd Meijer via cfe-dev
cfe-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.
>
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190712/17f9e871/attachment.html>
More information about the cfe-dev
mailing list