Skip to content

Commit c90fedf

Browse files
authored
Add m68k to Triple.swift (#1514)
This architecture is available in [LLVM's `Triple` implementation](https://github.com/llvm/llvm-project/blob/a01b58aef0e42fb1b52e358adf4c56678a884d37/llvm/include/llvm/TargetParser/Triple.h#L62C55-L63C51) and has [an experimental LLVM backend] available in upstream LLVM sources. It would be great to have this supported, as this architecture is relatively popular in retrocomputing enthusiast circles. It was used in Amiga, Atari ST, Sega Genesis, and of course Apple Lisa and Apple Macintosh.
1 parent ef287b5 commit c90fedf

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

Sources/SwiftDriver/Utilities/Triple.swift

+6-1
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,8 @@ extension Triple {
438438
case bpfeb
439439
/// Hexagon: hexagon
440440
case hexagon
441+
// M68k: Motorola 680x0 family
442+
case m68k
441443
/// MIPS: mips, mipsallegrex, mipsr6
442444
case mips
443445
/// MIPSEL: mipsel, mipsallegrexe, mipsr6el
@@ -561,6 +563,8 @@ extension Triple {
561563
return .thumbeb
562564
case "avr":
563565
return .avr
566+
case "m68k":
567+
return .m68k
564568
case "msp430":
565569
return .msp430
566570
case "mips", "mipseb", "mipsallegrex", "mipsisa32r6", "mipsr6":
@@ -818,7 +822,7 @@ extension Triple {
818822
case .arc, .arm, .armeb, .hexagon, .le32, .mips, .mipsel, .nvptx,
819823
.ppc, .r600, .riscv32, .sparc, .sparcel, .tce, .tcele, .thumb,
820824
.thumbeb, .x86, .xcore, .amdil, .hsail, .spir, .kalimba,.lanai,
821-
.shave, .wasm32, .renderscript32, .aarch64_32:
825+
.shave, .wasm32, .renderscript32, .aarch64_32, .m68k:
822826
return 32
823827

824828
case .aarch64, .aarch64e, .aarch64_be, .amdgcn, .bpfel, .bpfeb, .le64, .mips64,
@@ -1394,6 +1398,7 @@ extension Triple {
13941398
case .kalimba: fallthrough
13951399
case .le32: fallthrough
13961400
case .le64: fallthrough
1401+
case .m68k: fallthrough
13971402
case .mips: fallthrough
13981403
case .mips64: fallthrough
13991404
case .mips64el: fallthrough

Tests/SwiftDriverTests/TripleTests.swift

+13
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ final class TripleTests: XCTestCase {
1818
func testBasics() throws {
1919
XCTAssertEqual(Triple("").arch, nil)
2020
XCTAssertEqual(Triple("kalimba").arch, .kalimba)
21+
XCTAssertEqual(Triple("m68k-unknown-linux-gnu").arch, .m68k)
2122
XCTAssertEqual(Triple("x86_64-apple-macosx").arch, .x86_64)
2223
XCTAssertEqual(Triple("blah-apple").arch, nil)
2324
XCTAssertEqual(Triple("x86_64-apple-macosx").vendor, .apple)
@@ -260,6 +261,11 @@ final class TripleTests: XCTestCase {
260261
XCTAssertEqual(T.vendor, nil)
261262
XCTAssertEqual(T.os, nil)
262263

264+
T = Triple("m68k-unknown-unknown")
265+
XCTAssertEqual(T.arch, Triple.Arch.m68k)
266+
XCTAssertEqual(T.vendor, nil)
267+
XCTAssertEqual(T.os, nil)
268+
263269
T = Triple("sparcel-unknown-unknown")
264270
XCTAssertEqual(T.arch, Triple.Arch.sparcel)
265271
XCTAssertEqual(T.vendor, nil)
@@ -401,6 +407,12 @@ final class TripleTests: XCTestCase {
401407
XCTAssertEqual(T.os, Triple.OS.haiku)
402408
XCTAssertEqual(T.environment, nil)
403409

410+
T = Triple("m68k-suse-linux-gnu")
411+
XCTAssertEqual(T.arch, Triple.Arch.m68k)
412+
XCTAssertEqual(T.vendor, Triple.Vendor.suse)
413+
XCTAssertEqual(T.os, Triple.OS.linux)
414+
XCTAssertEqual(T.environment, Triple.Environment.gnu)
415+
404416
T = Triple("mips-mti-linux-gnu")
405417
XCTAssertEqual(T.arch, Triple.Arch.mips)
406418
XCTAssertEqual(T.vendor, Triple.Vendor.mipsTechnologies)
@@ -1376,6 +1388,7 @@ final class TripleTests: XCTestCase {
13761388
assertToolchain("armv7hl-suse-linux-gnueabi", GenericUnixToolchain.self)
13771389
assertToolchain("i586-pc-haiku", GenericUnixToolchain.self)
13781390
assertToolchain("x86_64-unknown-haiku", GenericUnixToolchain.self)
1391+
assertToolchain("m68k-suse-linux-gnu", GenericUnixToolchain.self)
13791392
assertToolchain("mips-mti-linux-gnu", GenericUnixToolchain.self)
13801393
assertToolchain("mipsel-img-linux-gnu", GenericUnixToolchain.self)
13811394
assertToolchain("mips64-mti-linux-gnu", GenericUnixToolchain.self)

0 commit comments

Comments
 (0)