Skip to content

Commit fac5222

Browse files
committed
[SOL] Create sbpfv0 and sbpfv4 targets (#148)
1 parent 7c7ec42 commit fac5222

File tree

6 files changed

+35
-2
lines changed

6 files changed

+35
-2
lines changed

llvm/include/llvm/TargetParser/Triple.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,11 @@ class Triple {
179179
DXILSubArch_v1_8,
180180
LatestDXILSubArch = DXILSubArch_v1_8,
181181

182+
SBFSubArch_v0,
182183
SBFSubArch_v1,
183184
SBFSubArch_v2,
184185
SBFSubArch_v3,
186+
SBFSubArch_v4,
185187
};
186188
enum VendorType {
187189
UnknownVendor,

llvm/lib/Target/SBF/TargetInfo/SBFTargetInfo.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ Target &llvm::getTheSBFXTarget() {
1919
std::string llvm::cpuFromSubArch(const Triple &TT, const std::string &CPU) {
2020
std::string CpuType;
2121
switch (TT.getSubArch()) {
22+
case Triple::SBFSubArch_v0:
23+
CpuType = "generic";
24+
break;
2225
case Triple::SBFSubArch_v1:
2326
CpuType = "v1";
2427
break;
@@ -28,6 +31,9 @@ std::string llvm::cpuFromSubArch(const Triple &TT, const std::string &CPU) {
2831
case Triple::SBFSubArch_v3:
2932
CpuType = "v3";
3033
break;
34+
case Triple::SBFSubArch_v4:
35+
CpuType = "v4";
36+
break;
3137
default:
3238
break;
3339
}

llvm/lib/TargetParser/Triple.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -418,8 +418,9 @@ static Triple::ArchType parseBPFArch(StringRef ArchName) {
418418
} else if (ArchName == "bpf_le" || ArchName == "bpfel") {
419419
return Triple::bpfel;
420420
} else if (ArchName == "sbf" || ArchName == "sbpf" ||
421-
ArchName == "sbpfv1" || ArchName == "sbpfv2" ||
422-
ArchName == "sbpfv3") {
421+
ArchName == "sbpfv0" || ArchName == "sbpfv1" ||
422+
ArchName == "sbpfv2" || ArchName == "sbpfv3" ||
423+
ArchName == "sbpfv4") {
423424
return Triple::sbf;
424425
} else {
425426
return Triple::UnknownArch;
@@ -835,9 +836,11 @@ static Triple::SubArchType parseSubArch(StringRef SubArchName) {
835836

836837
if (SubArchName.starts_with("sbpf")) {
837838
return StringSwitch<Triple::SubArchType>(SubArchName)
839+
.EndsWith("v0", Triple::SBFSubArch_v0)
838840
.EndsWith("v1", Triple::SBFSubArch_v1)
839841
.EndsWith("v2", Triple::SBFSubArch_v2)
840842
.EndsWith("v3", Triple::SBFSubArch_v3)
843+
.EndsWith("v4", Triple::SBFSubArch_v4)
841844
.Default(Triple::NoSubArch);
842845
}
843846

llvm/test/CodeGen/SBF/ninline_asm.ll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
; RUN: llc < %s -march=sbf -verify-machineinstrs | FileCheck %s
2+
; RUN: llc < %s -mtriple=sbpf-solana-solana -verify-machineinstrs | FileCheck %s
3+
; RUN: llc < %s -mtriple=sbpfv0-solana-solana -verify-machineinstrs | FileCheck %s
24

35
@g = common global [2 x i32] zeroinitializer, align 4
46

llvm/test/MC/SBF/elf-flags.s

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
# RUN: llvm-mc -triple=sbpf-solana-solana -filetype=obj < %s \
55
# RUN: | llvm-readobj --file-headers - \
66
# RUN: | FileCheck -check-prefix=CHECK-NONE %s
7+
# RUN: llvm-mc -triple=sbpfv0-solana-solana -filetype=obj < %s \
8+
# RUN: | llvm-readobj --file-headers - \
9+
# RUN: | FileCheck -check-prefix=CHECK-NONE %s
710
# RUN: llvm-mc -triple=sbf-solana-solana -mcpu=v1 -filetype=obj < %s \
811
# RUN: | llvm-readobj --file-headers - \
912
# RUN: | FileCheck -check-prefix=CHECK-SBFV1 %s
@@ -25,6 +28,9 @@
2528
# RUN: llvm-mc -triple=sbf-solana-solana -mcpu=v4 -filetype=obj < %s \
2629
# RUN: | llvm-readobj --file-headers - \
2730
# RUN: | FileCheck -check-prefix=CHECK-SBFV4 %s
31+
# RUN: llvm-mc -triple=sbpfv4-solana-solana -filetype=obj < %s \
32+
# RUN: | llvm-readobj --file-headers - \
33+
# RUN: | FileCheck -check-prefix=CHECK-SBFV4 %s
2834

2935
# CHECK-NONE: Flags [ (0x0)
3036
# CHECK-NONE-NEXT: ]

llvm/unittests/TargetParser/TripleTest.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,13 @@ TEST(TripleTest, ParsedIDs) {
763763
EXPECT_EQ(Triple::SolanaOS, T.getOS());
764764
EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment());
765765

766+
T = Triple("sbpfv0-solana-solana");
767+
EXPECT_EQ(Triple::sbf, T.getArch());
768+
EXPECT_EQ(Triple::SBFSubArch_v0, T.getSubArch());
769+
EXPECT_EQ(Triple::Solana, T.getVendor());
770+
EXPECT_EQ(Triple::SolanaOS, T.getOS());
771+
EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment());
772+
766773
T = Triple("sbpfv1-solana-solana");
767774
EXPECT_EQ(Triple::sbf, T.getArch());
768775
EXPECT_EQ(Triple::SBFSubArch_v1, T.getSubArch());
@@ -784,6 +791,13 @@ TEST(TripleTest, ParsedIDs) {
784791
EXPECT_EQ(Triple::SolanaOS, T.getOS());
785792
EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment());
786793

794+
T = Triple("sbpfv4-solana-solana");
795+
EXPECT_EQ(Triple::sbf, T.getArch());
796+
EXPECT_EQ(Triple::SBFSubArch_v4, T.getSubArch());
797+
EXPECT_EQ(Triple::Solana, T.getVendor());
798+
EXPECT_EQ(Triple::SolanaOS, T.getOS());
799+
EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment());
800+
787801
T = Triple("sbf-unknown-unknown");
788802
EXPECT_EQ(Triple::sbf, T.getArch());
789803
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());

0 commit comments

Comments
 (0)