[clang] 5fa8331 - [SPARC] Add LEON5 processor (#222912)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Sep 13 22:51:01 PDT 2026
Author: Daniel Cederman
Date: 2026-09-14T07:50:56+02:00
New Revision: 5fa83314adddbd13e4347ec8fc22e235d5710978
URL: https://github.com/llvm/llvm-project/commit/5fa83314adddbd13e4347ec8fc22e235d5710978
DIFF: https://github.com/llvm/llvm-project/commit/5fa83314adddbd13e4347ec8fc22e235d5710978.diff
LOG: [SPARC] Add LEON5 processor (#222912)
Same target exists in GCC.
Added:
Modified:
clang/lib/Basic/Targets/Sparc.cpp
clang/lib/Basic/Targets/Sparc.h
clang/lib/Driver/ToolChains/Arch/Sparc.cpp
clang/test/Driver/sparc-as.c
clang/test/Misc/target-invalid-cpu-note/sparc.c
llvm/lib/Target/Sparc/Sparc.td
llvm/test/CodeGen/SPARC/LeonCASAInstructionUT.ll
llvm/test/CodeGen/SPARC/readcycle.ll
llvm/test/MC/Sparc/leon-pwrpsr-instruction.s
Removed:
################################################################################
diff --git a/clang/lib/Basic/Targets/Sparc.cpp b/clang/lib/Basic/Targets/Sparc.cpp
index fe1aad6804aa6..00c4a45c24562 100644
--- a/clang/lib/Basic/Targets/Sparc.cpp
+++ b/clang/lib/Basic/Targets/Sparc.cpp
@@ -106,6 +106,7 @@ static constexpr SparcCPUInfo CPUInfo[] = {
{{"gr712rc"}, SparcTargetInfo::CK_LEON3_GR712RC, SparcTargetInfo::CG_V8},
{{"leon4"}, SparcTargetInfo::CK_LEON4, SparcTargetInfo::CG_V8},
{{"gr740"}, SparcTargetInfo::CK_LEON4_GR740, SparcTargetInfo::CG_V8},
+ {{"leon5"}, SparcTargetInfo::CK_LEON5, SparcTargetInfo::CG_V8},
};
SparcTargetInfo::CPUGeneration
diff --git a/clang/lib/Basic/Targets/Sparc.h b/clang/lib/Basic/Targets/Sparc.h
index 95b69ff2be4bb..afe44eeff773c 100644
--- a/clang/lib/Basic/Targets/Sparc.h
+++ b/clang/lib/Basic/Targets/Sparc.h
@@ -118,7 +118,8 @@ class LLVM_LIBRARY_VISIBILITY SparcTargetInfo : public TargetInfo {
CK_LEON3_UT699,
CK_LEON3_GR712RC,
CK_LEON4,
- CK_LEON4_GR740
+ CK_LEON4_GR740,
+ CK_LEON5,
} CPU = CK_GENERIC;
enum CPUGeneration {
diff --git a/clang/lib/Driver/ToolChains/Arch/Sparc.cpp b/clang/lib/Driver/ToolChains/Arch/Sparc.cpp
index 49256d80cbdf6..de18c5614ee25 100644
--- a/clang/lib/Driver/ToolChains/Arch/Sparc.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/Sparc.cpp
@@ -79,6 +79,7 @@ const char *sparc::getSparcAsmModeForCPU(StringRef Name,
.Case("gr712rc", "-Aleon")
.Case("leon4", "-Aleon")
.Case("gr740", "-Aleon")
+ .Case("leon5", "-Aleon")
.Default(DefV8CPU);
}
}
diff --git a/clang/test/Driver/sparc-as.c b/clang/test/Driver/sparc-as.c
index 30b685434de20..7b3740c8ff1fd 100644
--- a/clang/test/Driver/sparc-as.c
+++ b/clang/test/Driver/sparc-as.c
@@ -152,6 +152,10 @@
// RUN: -no-integrated-as --sysroot=%S/Inputs/basic_netbsd_tree -### %s 2>&1 \
// RUN: | FileCheck -check-prefix=SPARC-LEON %s
+// RUN: %clang -mcpu=leon5 --target=sparc \
+// RUN: -no-integrated-as --sysroot=%S/Inputs/basic_netbsd_tree -### %s 2>&1 \
+// RUN: | FileCheck -check-prefix=SPARC-LEON %s
+
// SPARC: as{{.*}}" "-32" "-Av8" "-o"
// SPARC-V8: as{{.*}}" "-32" "-Av8" "-o"
// SPARC-LEON: as{{.*}}" "-32" "-Aleon" "-o"
diff --git a/clang/test/Misc/target-invalid-cpu-note/sparc.c b/clang/test/Misc/target-invalid-cpu-note/sparc.c
index 443c801904e60..0ae9da51cdc42 100644
--- a/clang/test/Misc/target-invalid-cpu-note/sparc.c
+++ b/clang/test/Misc/target-invalid-cpu-note/sparc.c
@@ -39,6 +39,7 @@
// SPARC-SAME: {{^}}, gr712rc
// SPARC-SAME: {{^}}, leon4
// SPARC-SAME: {{^}}, gr740
+// SPARC-SAME: {{^}}, leon5
// SPARC-SAME: {{$}}
// RUN: not %clang_cc1 -triple sparcv9--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix SPARCV9
diff --git a/llvm/lib/Target/Sparc/Sparc.td b/llvm/lib/Target/Sparc/Sparc.td
index 94e1746949a65..a06f50a8fbb0b 100644
--- a/llvm/lib/Target/Sparc/Sparc.td
+++ b/llvm/lib/Target/Sparc/Sparc.td
@@ -264,6 +264,10 @@ def : Processor<"gr740", LEON4Itineraries,
[FeatureLeon, UMACSMACSupport, LeonCASA, LeonCycleCounter,
FeaturePWRPSR]>;
+// LEON 5 generic
+def : ProcessorModel<"leon5", NoSchedModel,
+ [FeatureLeon, LeonCASA, LeonCycleCounter, FeaturePWRPSR]>;
+
//===----------------------------------------------------------------------===//
// Declare the target which we are implementing
//===----------------------------------------------------------------------===//
diff --git a/llvm/test/CodeGen/SPARC/LeonCASAInstructionUT.ll b/llvm/test/CodeGen/SPARC/LeonCASAInstructionUT.ll
index 785eb00e90182..2cafb0ab71849 100644
--- a/llvm/test/CodeGen/SPARC/LeonCASAInstructionUT.ll
+++ b/llvm/test/CodeGen/SPARC/LeonCASAInstructionUT.ll
@@ -2,6 +2,7 @@
; RUN: llc %s -O0 -mtriple=sparc -mcpu=gr712rc -o - | FileCheck %s
; RUN: llc %s -O0 -mtriple=sparc -mcpu=leon4 -o - | FileCheck %s
; RUN: llc %s -O0 -mtriple=sparc -mcpu=gr740 -o - | FileCheck %s
+; RUN: llc %s -O0 -mtriple=sparc -mcpu=leon5 -o - | FileCheck %s
; RUN: llc %s -O0 -mtriple=sparc -mcpu=myriad2 -o - | FileCheck %s
; RUN: llc %s -O0 -mtriple=sparc -mcpu=myriad2.1 -o - | FileCheck %s
; RUN: llc %s -O0 -mtriple=sparc -mcpu=myriad2.2 -o - | FileCheck %s
diff --git a/llvm/test/CodeGen/SPARC/readcycle.ll b/llvm/test/CodeGen/SPARC/readcycle.ll
index d77a725b8f358..ab71ad221aa5b 100644
--- a/llvm/test/CodeGen/SPARC/readcycle.ll
+++ b/llvm/test/CodeGen/SPARC/readcycle.ll
@@ -1,4 +1,5 @@
; RUN: llc < %s -mtriple=sparc -mcpu=gr740 -verify-machineinstrs | FileCheck %s
+; RUN: llc < %s -mtriple=sparc -mcpu=leon5 -verify-machineinstrs | FileCheck %s
; CHECK: rd %asr23, %o1
; CHECK: mov %g0, %o0
diff --git a/llvm/test/MC/Sparc/leon-pwrpsr-instruction.s b/llvm/test/MC/Sparc/leon-pwrpsr-instruction.s
index d3eb7c6cd3d42..d4cbf186e5f35 100644
--- a/llvm/test/MC/Sparc/leon-pwrpsr-instruction.s
+++ b/llvm/test/MC/Sparc/leon-pwrpsr-instruction.s
@@ -1,4 +1,5 @@
! RUN: llvm-mc %s -triple=sparc -mcpu=gr740 -show-encoding | FileCheck %s
+! RUN: llvm-mc %s -triple=sparc -mcpu=leon5 -show-encoding | FileCheck %s
! CHECK: pwr %g0, 0, %psr ! encoding: [0x83,0x88,0x20,0x00]
pwr 0, %psr
More information about the cfe-commits
mailing list