From 8af13799695f8801bb1e0d7d4dc0b98ac21b440a Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Wed, 27 Dec 2023 18:57:34 +0000 Subject: [PATCH 1/2] Add `m68k` to `Triple.swift` 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. --- Sources/SwiftDriver/Utilities/Triple.swift | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Sources/SwiftDriver/Utilities/Triple.swift b/Sources/SwiftDriver/Utilities/Triple.swift index e3cc71dbb..73491a2a4 100644 --- a/Sources/SwiftDriver/Utilities/Triple.swift +++ b/Sources/SwiftDriver/Utilities/Triple.swift @@ -438,6 +438,8 @@ extension Triple { case bpfeb /// Hexagon: hexagon case hexagon + // M68k: Motorola 680x0 family + case m68k /// MIPS: mips, mipsallegrex, mipsr6 case mips /// MIPSEL: mipsel, mipsallegrexe, mipsr6el @@ -561,6 +563,8 @@ extension Triple { return .thumbeb case "avr": return .avr + case "m68k": + return .m68k case "msp430": return .msp430 case "mips", "mipseb", "mipsallegrex", "mipsisa32r6", "mipsr6": @@ -818,7 +822,7 @@ extension Triple { case .arc, .arm, .armeb, .hexagon, .le32, .mips, .mipsel, .nvptx, .ppc, .r600, .riscv32, .sparc, .sparcel, .tce, .tcele, .thumb, .thumbeb, .x86, .xcore, .amdil, .hsail, .spir, .kalimba,.lanai, - .shave, .wasm32, .renderscript32, .aarch64_32: + .shave, .wasm32, .renderscript32, .aarch64_32, .m68k: return 32 case .aarch64, .aarch64e, .aarch64_be, .amdgcn, .bpfel, .bpfeb, .le64, .mips64, @@ -1394,6 +1398,7 @@ extension Triple { case .kalimba: fallthrough case .le32: fallthrough case .le64: fallthrough + case .m68k: fallthrough case .mips: fallthrough case .mips64: fallthrough case .mips64el: fallthrough From d14e172461f3e450b7c6ba1d68ee1c0baf9db99b Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Wed, 27 Dec 2023 19:13:48 +0000 Subject: [PATCH 2/2] Update TripleTests.swift --- Tests/SwiftDriverTests/TripleTests.swift | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Tests/SwiftDriverTests/TripleTests.swift b/Tests/SwiftDriverTests/TripleTests.swift index f085629f5..fb02197b8 100644 --- a/Tests/SwiftDriverTests/TripleTests.swift +++ b/Tests/SwiftDriverTests/TripleTests.swift @@ -18,6 +18,7 @@ final class TripleTests: XCTestCase { func testBasics() throws { XCTAssertEqual(Triple("").arch, nil) XCTAssertEqual(Triple("kalimba").arch, .kalimba) + XCTAssertEqual(Triple("m68k-unknown-linux-gnu").arch, .m68k) XCTAssertEqual(Triple("x86_64-apple-macosx").arch, .x86_64) XCTAssertEqual(Triple("blah-apple").arch, nil) XCTAssertEqual(Triple("x86_64-apple-macosx").vendor, .apple) @@ -260,6 +261,11 @@ final class TripleTests: XCTestCase { XCTAssertEqual(T.vendor, nil) XCTAssertEqual(T.os, nil) + T = Triple("m68k-unknown-unknown") + XCTAssertEqual(T.arch, Triple.Arch.m68k) + XCTAssertEqual(T.vendor, nil) + XCTAssertEqual(T.os, nil) + T = Triple("sparcel-unknown-unknown") XCTAssertEqual(T.arch, Triple.Arch.sparcel) XCTAssertEqual(T.vendor, nil) @@ -401,6 +407,12 @@ final class TripleTests: XCTestCase { XCTAssertEqual(T.os, Triple.OS.haiku) XCTAssertEqual(T.environment, nil) + T = Triple("m68k-suse-linux-gnu") + XCTAssertEqual(T.arch, Triple.Arch.m68k) + XCTAssertEqual(T.vendor, Triple.Vendor.suse) + XCTAssertEqual(T.os, Triple.OS.linux) + XCTAssertEqual(T.environment, Triple.Environment.gnu) + T = Triple("mips-mti-linux-gnu") XCTAssertEqual(T.arch, Triple.Arch.mips) XCTAssertEqual(T.vendor, Triple.Vendor.mipsTechnologies) @@ -1376,6 +1388,7 @@ final class TripleTests: XCTestCase { assertToolchain("armv7hl-suse-linux-gnueabi", GenericUnixToolchain.self) assertToolchain("i586-pc-haiku", GenericUnixToolchain.self) assertToolchain("x86_64-unknown-haiku", GenericUnixToolchain.self) + assertToolchain("m68k-suse-linux-gnu", GenericUnixToolchain.self) assertToolchain("mips-mti-linux-gnu", GenericUnixToolchain.self) assertToolchain("mipsel-img-linux-gnu", GenericUnixToolchain.self) assertToolchain("mips64-mti-linux-gnu", GenericUnixToolchain.self)