From nobody Tue Oct 06 16:38:31 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hzhlW3Kxxz4n9f5 for ; Tue, 06 Oct 2026 16:38:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hzhlW1nX5z4mbp for ; Tue, 06 Oct 2026 16:38:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791304711; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=45AS1rSLfmzCNS17BlsDZNkQwqEPUQS07lzU+Fumj0Y=; b=TQoiwXF8ThMwnz3MYvxB9R0WcN7mG2pguYC3VACGqqp+TF+qE8jlTKd6FFJHRzRqkkCPhr Lr+ZGfvLBJyvSEv4F+1vnBl0636Et2TKd5BPIxWIXrkasYS32Brd01wGw/kVAqhpZapnRP yKt4KWJoVUmWVe4RYJnu2oOPY9NX3NN5HiJf/AjuoSHqPe5u0iPJV9P8K6dP5jqE8RfEWL AM3VFe2LZIN42fnZHqMWZp/eCjHZkz6tURmEANsIXrJeUF2ZzYPs1WbaQVnr4EUz6phR77 htpYTKL/nk0/hdBFHkuZKJlG66GRieMoXMeunyhIqG+cZIfNQ66IWE2M4a/vWA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791304711; b=m5arKNOtc4murJBXHfxjNm1ppe00eqSal2VoDeNqakSwtcxBzswXYhBOrjuvE+WMcNB981 FvLWATbPkrBXWrVd3iXadnjo3nPLykyEudNiylCpbT57hQqLSJxYmOzXWvxlB3saLrMV5F Sb6lrC0oI0D+TzNbNrKeF2LzO1eZWoodYav/CUPEIIk6B22Ss1kBl4TbtmEqmgbzHq8xjf W2BBICF1X+23rD8bgO210cAvTSPdsdq5B3k9m/8rYPWjc3GsuivR/fBnCq6vWW7+jie/Dk Li7/xHbVqan66DC1RkwK3D7WWqx3TfTLY6bFaE7rnza4qgESldL1PBpTW/zD8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791304711; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=45AS1rSLfmzCNS17BlsDZNkQwqEPUQS07lzU+Fumj0Y=; b=UJLqGeozRxvjqluIJ4Uyv/TGsAOmhyrfMQDeyOtXbjasolUXzTl2cjMj03eJD4T0fAXKsj ijlMhaFo3Khyl+CKtMHomX5inGmO3wUHtD+5P0PsN9dI8XhCX0WDipAs9JQ3BFSHEJjH1g LX7Je6zE7TUW4hA2vS1xHhDC/1xl3aiflIQ5zcr9yzlsz9drnsMY3MQxzC+gj4RvFEiQ/c ZwAwxrYMtZ0ktfT3KST4lIAXrF+TnDuKXb+J0/QQ6m5Qog9OGcaGgrUPpRnBcLmg85FXDJ jFjuEzuK+CiW/D7NoAkUUX5ueZl/aR2Wv0KSDX7xwQAYA81sf1h+xP/b4OLumQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzhlW0MbtzDn3 for ; Tue, 06 Oct 2026 16:38:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 30fa9 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 06 Oct 2026 16:38:31 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Xiaoqiang Zhao From: Dimitry Andric Subject: git: 8b754816e803 - stable/15 - llvm: add LoongArch target support, not enabled by default List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 8b754816e8032ceac791a9cfd5b6b9f589d81755 Auto-Submitted: auto-generated Date: Tue, 06 Oct 2026 16:38:31 +0000 Message-Id: <6ac52407.30fa9.7764f8fa@gitrepo.freebsd.org> The branch stable/15 has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=8b754816e8032ceac791a9cfd5b6b9f589d81755 commit 8b754816e8032ceac791a9cfd5b6b9f589d81755 Author: Xiaoqiang Zhao AuthorDate: 2026-09-28 15:14:09 +0000 Commit: Dimitry Andric CommitDate: 2026-10-06 16:37:45 +0000 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 2f49e40a684a4bffd8e368a6878384ec4f735ea8) --- lib/clang/include/llvm/Config/AsmParsers.def | 3 ++ lib/clang/include/llvm/Config/AsmPrinters.def | 3 ++ lib/clang/include/llvm/Config/Disassemblers.def | 3 ++ lib/clang/include/llvm/Config/Targets.def | 3 ++ lib/clang/libllvm/Makefile | 55 ++++++++++++++++++++--- lib/clang/llvm.build.mk | 6 +++ share/man/man5/src.conf.5 | 7 ++- share/mk/src.opts.mk | 2 +- tools/build/options/WITHOUT_LLVM_TARGET_BPF | 1 + tools/build/options/WITHOUT_LLVM_TARGET_LOONGARCH | 1 + tools/build/options/WITH_LLVM_TARGET_BPF | 3 -- tools/build/options/WITH_LLVM_TARGET_LOONGARCH | 1 + 12 files changed, 74 insertions(+), 14 deletions(-) diff --git a/lib/clang/include/llvm/Config/AsmParsers.def b/lib/clang/include/llvm/Config/AsmParsers.def index 8cf3ffd6b0d4..a10e12bb10c7 100644 --- a/lib/clang/include/llvm/Config/AsmParsers.def +++ b/lib/clang/include/llvm/Config/AsmParsers.def @@ -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 diff --git a/lib/clang/include/llvm/Config/AsmPrinters.def b/lib/clang/include/llvm/Config/AsmPrinters.def index b88e60ada874..2f45fe174db7 100644 --- a/lib/clang/include/llvm/Config/AsmPrinters.def +++ b/lib/clang/include/llvm/Config/AsmPrinters.def @@ -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 diff --git a/lib/clang/include/llvm/Config/Disassemblers.def b/lib/clang/include/llvm/Config/Disassemblers.def index 72c0dcab0ab3..2530e01e635f 100644 --- a/lib/clang/include/llvm/Config/Disassemblers.def +++ b/lib/clang/include/llvm/Config/Disassemblers.def @@ -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 diff --git a/lib/clang/include/llvm/Config/Targets.def b/lib/clang/include/llvm/Config/Targets.def index 725efe253ced..70ef796f5d0a 100644 --- a/lib/clang/include/llvm/Config/Targets.def +++ b/lib/clang/include/llvm/Config/Targets.def @@ -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 diff --git a/lib/clang/libllvm/Makefile b/lib/clang/libllvm/Makefile index e7c146d9c0bf..3553aa44d2b2 100644 --- a/lib/clang/libllvm/Makefile +++ b/lib/clang/libllvm/Makefile @@ -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} diff --git a/lib/clang/llvm.build.mk b/lib/clang/llvm.build.mk index b975b3c964a2..a1d39f6d5cb7 100644 --- a/lib/clang/llvm.build.mk +++ b/lib/clang/llvm.build.mk @@ -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" diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5 index 18dc3b2f2eac..1bd7f0ca28b4 100644 --- a/share/man/man5/src.conf.5 +++ b/share/man/man5/src.conf.5 @@ -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 @@ -1065,9 +1065,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 diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk index 8e67ced5a9a6..63a1b17ea19f 100644 --- a/share/mk/src.opts.mk +++ b/share/mk/src.opts.mk @@ -295,7 +295,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 diff --git a/tools/build/options/WITHOUT_LLVM_TARGET_BPF b/tools/build/options/WITHOUT_LLVM_TARGET_BPF new file mode 100644 index 000000000000..392e930d8008 --- /dev/null +++ b/tools/build/options/WITHOUT_LLVM_TARGET_BPF @@ -0,0 +1 @@ +Do not build LLVM target support for BPF. diff --git a/tools/build/options/WITHOUT_LLVM_TARGET_LOONGARCH b/tools/build/options/WITHOUT_LLVM_TARGET_LOONGARCH new file mode 100644 index 000000000000..e6d5d8be834f --- /dev/null +++ b/tools/build/options/WITHOUT_LLVM_TARGET_LOONGARCH @@ -0,0 +1 @@ +Do not build LLVM target support for LoongArch. diff --git a/tools/build/options/WITH_LLVM_TARGET_BPF b/tools/build/options/WITH_LLVM_TARGET_BPF index 664cc85a52b9..45811be6174d 100644 --- a/tools/build/options/WITH_LLVM_TARGET_BPF +++ b/tools/build/options/WITH_LLVM_TARGET_BPF @@ -1,4 +1 @@ Build LLVM target support for BPF. -The -.Va LLVM_TARGET_ALL -option should be used rather than this in most cases. diff --git a/tools/build/options/WITH_LLVM_TARGET_LOONGARCH b/tools/build/options/WITH_LLVM_TARGET_LOONGARCH new file mode 100644 index 000000000000..157b18a9df9a --- /dev/null +++ b/tools/build/options/WITH_LLVM_TARGET_LOONGARCH @@ -0,0 +1 @@ +Build LLVM target support for LoongArch.