Hexagon integrated assembler

Hi LLVMdev-ers,

I wanted to give everybody a heads-up that over the next few months, we will work on adding an integrated assembler for Hexagon. Jyotsna and Sid (cc'd on this email) are adding support for the Hexagon integrated assembler and they will push patches for review as they make progress. As always, we'll appreciate any community feedback on the patches.

Thanks
-Anshu

This is awesome :slight_smile:

Hi Anshu,

I wanted to give everybody a heads-up that over the next few months, we
will work on adding an integrated assembler for Hexagon. Jyotsna and Sid
(cc'd on this email) are adding support for the Hexagon integrated
assembler and they will push patches for review as they make progress.

I saw that the week before last you added disassembler support for
Hexagon. Assembler support is still missing though IIUC?

Looking at the 3.5.0 release, the Hexagon target seems to rely on an
external "hexagon-as" assembler:

$ clang -target hexagon-elf test.c -v
clang version 3.5.0 (tags/RELEASE_350/final 216961)
Target: hexagon---elf
Thread model: posix
"/usr/bin/clang-3.5" -cc1 -triple hexagon---elf -S -disable-free
-disable-llvm-verifier -main-file-name test.c -mrelocation-model static
-mdisable-fp-elim -fmath-errno -no-integrated-as -mconstructor-aliases
-target-cpu hexagonv4 -fno-signed-char -mqdsp6-compat -Wreturn-type
-fshort-enums -mllvm -machine-sink-split=0 -v -dwarf-column-info
-resource-dir /usr/bin/../lib64/clang/3.5.0 -internal-externc-isystem
/usr/bin/../../gnu/lib/gcc/hexagon/0.0.0/include
-internal-externc-isystem
/usr/bin/../../gnu/lib/gcc/hexagon/0.0.0/include-fixed
-internal-externc-isystem /usr/bin/../../gnu/hexagon/include
-fno-dwarf-directory-asm -fdebug-compilation-dir
/home/andreas/MCU/Hexagon -ferror-limit 19 -fmessage-length 80
-mstackrealign -fshort-enums -fno-use-cxa-atexit -fobjc-runtime=gcc
-fdiagnostics-show-option -fcolor-diagnostics -o /tmp/test-d50479.s -x c
test.c
clang -cc1 version 3.5.0 based upon LLVM 3.5.0svn default target
x86_64-suse-linux
ignoring nonexistent directory
"/usr/bin/../../gnu/lib/gcc/hexagon/0.0.0/include"
ignoring nonexistent directory
"/usr/bin/../../gnu/lib/gcc/hexagon/0.0.0/include-fixed"
ignoring nonexistent directory "/usr/bin/../../gnu/hexagon/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/bin/../lib64/clang/3.5.0/include
/usr/include
End of search list.
"hexagon-as" -march=v4 -o /tmp/test-45bcff.o /tmp/test-d50479.s
clang-3.5: error: unable to execute command: Executable "hexagon-as"
doesn't exist!
clang-3.5: error: hexagon-as command failed with exit code 1 (use -v to
see invocation)

However, binutils 2.24 does not include support for --target=hexagon or
--target=hexagon-elf.

Are you basing your LLVM work on these old patches or something else?
https://www.codeaurora.org/patches/quic/hexagon/dev/

Will your ongoing LLVM work supersede that apparently stalled work on
binutils/gcc, or are you in parallel still working towards getting
Hexagon support into binutils for clang to use?

Thanks,
Andreas