mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-28 11:25:21 +01:00
llvm: add LoongArch target support, not enabled by default
Note there is ongoing work to add LoongArch support to the base system,
but having target support in llvm is an essential component.
This must be explicitly enabled using WITH_LLVM_TARGET_LOONGARCH.
Reviewed by: dim
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D59899
(cherry picked from commit 2f49e40a68)
This commit is contained in:
1 parent
3108ab6747
commit
bceab8be40
12 files changed
+74
-14
No files matched your search
@@ -33,6 +33,9 @@ LLVM_ASM_PARSER(ARM)
|
||||
#ifdef LLVM_TARGET_ENABLE_BPF
|
||||
LLVM_ASM_PARSER(BPF)
|
||||
#endif
|
||||
#ifdef LLVM_TARGET_ENABLE_LOONGARCH
|
||||
LLVM_ASM_PARSER(LoongArch)
|
||||
#endif
|
||||
#ifdef LLVM_TARGET_ENABLE_POWERPC
|
||||
LLVM_ASM_PARSER(PowerPC)
|
||||
#endif
|
||||
|
||||
@@ -33,6 +33,9 @@ LLVM_ASM_PRINTER(ARM)
|
||||
#ifdef LLVM_TARGET_ENABLE_BPF
|
||||
LLVM_ASM_PRINTER(BPF)
|
||||
#endif
|
||||
#ifdef LLVM_TARGET_ENABLE_LOONGARCH
|
||||
LLVM_ASM_PRINTER(LoongArch)
|
||||
#endif
|
||||
#ifdef LLVM_TARGET_ENABLE_POWERPC
|
||||
LLVM_ASM_PRINTER(PowerPC)
|
||||
#endif
|
||||
|
||||
@@ -33,6 +33,9 @@ LLVM_DISASSEMBLER(ARM)
|
||||
#ifdef LLVM_TARGET_ENABLE_BPF
|
||||
LLVM_DISASSEMBLER(BPF)
|
||||
#endif
|
||||
#ifdef LLVM_TARGET_ENABLE_LOONGARCH
|
||||
LLVM_DISASSEMBLER(LoongArch)
|
||||
#endif
|
||||
#ifdef LLVM_TARGET_ENABLE_POWERPC
|
||||
LLVM_DISASSEMBLER(PowerPC)
|
||||
#endif
|
||||
|
||||
@@ -32,6 +32,9 @@ LLVM_TARGET(ARM)
|
||||
#ifdef LLVM_TARGET_ENABLE_BPF
|
||||
LLVM_TARGET(BPF)
|
||||
#endif
|
||||
#ifdef LLVM_TARGET_ENABLE_LOONGARCH
|
||||
LLVM_TARGET(LoongArch)
|
||||
#endif
|
||||
#ifdef LLVM_TARGET_ENABLE_POWERPC
|
||||
LLVM_TARGET(PowerPC)
|
||||
#endif
|
||||
|
||||
@@ -23,14 +23,15 @@ CFLAGS+= -I${.OBJDIR}
|
||||
CFLAGS+= -I${SRCTOP}/sys/contrib/zstd/lib
|
||||
|
||||
.if ${MK_LLVM_TARGET_AARCH64} == "no" && ${MK_LLVM_TARGET_ARM} == "no" && \
|
||||
${MK_LLVM_TARGET_BPF} == "no" && ${MK_LLVM_TARGET_POWERPC} == "no" && \
|
||||
${MK_LLVM_TARGET_RISCV} == "no" && ${MK_LLVM_TARGET_X86} == "no"
|
||||
${MK_LLVM_TARGET_BPF} == "no" && ${MK_LLVM_TARGET_LOONGARCH} == "no" && \
|
||||
${MK_LLVM_TARGET_POWERPC} == "no" && ${MK_LLVM_TARGET_RISCV} == "no" && \
|
||||
${MK_LLVM_TARGET_X86} == "no"
|
||||
.error Please enable at least one of: MK_LLVM_TARGET_AARCH64,\
|
||||
MK_LLVM_TARGET_ARM, MK_LLVM_TARGET_BPF, MK_LLVM_TARGET_POWERPC,\
|
||||
MK_LLVM_TARGET_RISCV, or MK_LLVM_TARGET_X86
|
||||
MK_LLVM_TARGET_ARM, MK_LLVM_TARGET_BPF, MK_LLVM_TARGET_LOONGARCH, \
|
||||
MK_LLVM_TARGET_POWERPC, MK_LLVM_TARGET_RISCV, or MK_LLVM_TARGET_X86
|
||||
.endif
|
||||
|
||||
.for arch in AArch64 ARM BPF PowerPC RISCV X86
|
||||
.for arch in AArch64 ARM BPF LoongArch PowerPC RISCV X86
|
||||
. if ${MK_LLVM_TARGET_${arch:tu}} != "no"
|
||||
CFLAGS+= -I${LLVM_SRCS}/lib/Target/${arch}
|
||||
. endif
|
||||
@@ -1754,6 +1755,36 @@ SRCS_MIN+= Target/X86/X86VZeroUpper.cpp
|
||||
SRCS_MIN+= Target/X86/X86WinEHState.cpp
|
||||
SRCS_MIN+= Target/X86/X86WinEHUnwindV2.cpp
|
||||
.endif # MK_LLVM_TARGET_X86
|
||||
.if ${MK_LLVM_TARGET_LOONGARCH} != "no"
|
||||
SRCS_MIN+= Target/LoongArch/AsmParser/LoongArchAsmParser.cpp
|
||||
SRCS_MIN+= Target/LoongArch/Disassembler/LoongArchDisassembler.cpp
|
||||
SRCS_MIN+= Target/LoongArch/LoongArchAsmPrinter.cpp
|
||||
SRCS_MIN+= Target/LoongArch/LoongArchDeadRegisterDefinitions.cpp
|
||||
SRCS_MIN+= Target/LoongArch/LoongArchExpandAtomicPseudoInsts.cpp
|
||||
SRCS_MIN+= Target/LoongArch/LoongArchExpandPseudoInsts.cpp
|
||||
SRCS_MIN+= Target/LoongArch/LoongArchFrameLowering.cpp
|
||||
SRCS_MIN+= Target/LoongArch/LoongArchISelDAGToDAG.cpp
|
||||
SRCS_MIN+= Target/LoongArch/LoongArchISelLowering.cpp
|
||||
SRCS_MIN+= Target/LoongArch/LoongArchInstrInfo.cpp
|
||||
SRCS_MIN+= Target/LoongArch/LoongArchMCInstLower.cpp
|
||||
SRCS_MIN+= Target/LoongArch/LoongArchMergeBaseOffset.cpp
|
||||
SRCS_MIN+= Target/LoongArch/LoongArchOptWInstrs.cpp
|
||||
SRCS_MIN+= Target/LoongArch/LoongArchRegisterInfo.cpp
|
||||
SRCS_MIN+= Target/LoongArch/LoongArchSubtarget.cpp
|
||||
SRCS_MIN+= Target/LoongArch/LoongArchTargetMachine.cpp
|
||||
SRCS_MIN+= Target/LoongArch/LoongArchTargetTransformInfo.cpp
|
||||
SRCS_MIN+= Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp
|
||||
SRCS_MIN+= Target/LoongArch/MCTargetDesc/LoongArchBaseInfo.cpp
|
||||
SRCS_MIN+= Target/LoongArch/MCTargetDesc/LoongArchELFObjectWriter.cpp
|
||||
SRCS_MIN+= Target/LoongArch/MCTargetDesc/LoongArchELFStreamer.cpp
|
||||
SRCS_MIN+= Target/LoongArch/MCTargetDesc/LoongArchInstPrinter.cpp
|
||||
SRCS_MIN+= Target/LoongArch/MCTargetDesc/LoongArchMCAsmInfo.cpp
|
||||
SRCS_MIN+= Target/LoongArch/MCTargetDesc/LoongArchMCCodeEmitter.cpp
|
||||
SRCS_MIN+= Target/LoongArch/MCTargetDesc/LoongArchMCTargetDesc.cpp
|
||||
SRCS_MIN+= Target/LoongArch/MCTargetDesc/LoongArchMatInt.cpp
|
||||
SRCS_MIN+= Target/LoongArch/MCTargetDesc/LoongArchTargetStreamer.cpp
|
||||
SRCS_MIN+= Target/LoongArch/TargetInfo/LoongArchTargetInfo.cpp
|
||||
.endif # MK_LLVM_TARGET_LOONGARCH
|
||||
SRCS_MIN+= TargetParser/AArch64TargetParser.cpp
|
||||
SRCS_MIN+= TargetParser/ARMTargetParser.cpp
|
||||
SRCS_MIN+= TargetParser/ARMTargetParserCommon.cpp
|
||||
@@ -2268,7 +2299,8 @@ beforebuild:
|
||||
|
||||
# Note: some rules are superfluous, not every combination is valid.
|
||||
.for arch in \
|
||||
AArch64/AArch64 ARM/ARM BPF/BPF PowerPC/PPC RISCV/RISCV X86/X86
|
||||
AArch64/AArch64 ARM/ARM BPF/BPF LoongArch/LoongArch PowerPC/PPC \
|
||||
RISCV/RISCV X86/X86
|
||||
. for hdr in \
|
||||
AsmMatcher/-gen-asm-matcher \
|
||||
AsmWriter/-gen-asm-writer \
|
||||
@@ -2415,6 +2447,17 @@ TGHDRS+= X86GenRegisterBank.inc
|
||||
TGHDRS+= X86GenRegisterInfo.inc
|
||||
TGHDRS+= X86GenSubtargetInfo.inc
|
||||
.endif # MK_LLVM_TARGET_X86
|
||||
.if ${MK_LLVM_TARGET_LOONGARCH} != "no"
|
||||
TGHDRS+= LoongArchGenAsmMatcher.inc
|
||||
TGHDRS+= LoongArchGenAsmWriter.inc
|
||||
TGHDRS+= LoongArchGenDAGISel.inc
|
||||
TGHDRS+= LoongArchGenDisassemblerTables.inc
|
||||
TGHDRS+= LoongArchGenInstrInfo.inc
|
||||
TGHDRS+= LoongArchGenMCCodeEmitter.inc
|
||||
TGHDRS+= LoongArchGenMCPseudoLowering.inc
|
||||
TGHDRS+= LoongArchGenRegisterInfo.inc
|
||||
TGHDRS+= LoongArchGenSubtargetInfo.inc
|
||||
.endif # MK_LLVM_TARGET_LOONGARCH
|
||||
|
||||
DEPENDFILES+= ${TGHDRS:C/$/.d/}
|
||||
DPSRCS+= ${TGHDRS}
|
||||
|
||||
@@ -83,6 +83,12 @@ CFLAGS+= -DLLVM_TARGET_ENABLE_RISCV
|
||||
LLVM_NATIVE_ARCH= RISCV
|
||||
. endif
|
||||
.endif
|
||||
.if ${MK_LLVM_TARGET_LOONGARCH} != "no"
|
||||
CFLAGS+= -DLLVM_TARGET_ENABLE_LOONGARCH
|
||||
. if ${MACHINE_CPUARCH} == "loongarch"
|
||||
LLVM_NATIVE_ARCH= LoongArch
|
||||
. endif
|
||||
.endif
|
||||
.if ${MK_LLVM_TARGET_X86} != "no"
|
||||
CFLAGS+= -DLLVM_TARGET_ENABLE_X86
|
||||
. if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
.\" DO NOT EDIT-- this file is @generated by tools/build/options/makeman.
|
||||
.Dd October 1, 2026
|
||||
.Dd October 6, 2026
|
||||
.Dt SRC.CONF 5
|
||||
.Os
|
||||
.Sh NAME
|
||||
@@ -1021,9 +1021,8 @@ The
|
||||
option should be used rather than this in most cases.
|
||||
.It Va WITH_LLVM_TARGET_BPF
|
||||
Build LLVM target support for BPF.
|
||||
The
|
||||
.Va LLVM_TARGET_ALL
|
||||
option should be used rather than this in most cases.
|
||||
.It Va WITH_LLVM_TARGET_LOONGARCH
|
||||
Build LLVM target support for LoongArch.
|
||||
.It Va WITHOUT_LLVM_TARGET_POWERPC
|
||||
Do not build LLVM target support for PowerPC.
|
||||
The
|
||||
|
||||
@@ -288,7 +288,7 @@ __DEFAULT_DEPENDENT_OPTIONS+= LLVM_TARGET_${__llt:${__LLVM_TARGET_FILT}:tu}/LLVM
|
||||
.endif
|
||||
.endfor
|
||||
|
||||
__DEFAULT_NO_OPTIONS+=LLVM_TARGET_BPF
|
||||
__DEFAULT_NO_OPTIONS+=LLVM_TARGET_BPF LLVM_TARGET_LOONGARCH
|
||||
|
||||
.include <bsd.compiler.mk>
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Do not build LLVM target support for BPF.
|
||||
@@ -0,0 +1 @@
|
||||
Do not build LLVM target support for LoongArch.
|
||||
@@ -1,4 +1 @@
|
||||
Build LLVM target support for BPF.
|
||||
The
|
||||
.Va LLVM_TARGET_ALL
|
||||
option should be used rather than this in most cases.
|
||||
@@ -0,0 +1 @@
|
||||
Build LLVM target support for LoongArch.
|
||||
Reference in new issue
Block a user