Skip to content

Releases: llvm-mos/llvm-mos-sdk

SDK v2.0.1

10 Jul 00:03
3159f8b
Compare
Choose a tag to compare

Bug fixes

  • #135 - Fix #elseif typo causing VIC20 defines to be used on all Commodore targets. -- @XarkLabs

Optimizations

  • llvm-mos/llvm-mos#311 -- Expand small memory operations inline for all targets; emit HuC6280 block instructions -- @asiekierka
    • Since the LLVM code generator will often emit very small memcpy operations, this can replace calls to memcpy with a much smaller and faster sequence of loads and stores.
  • llvm-mos/llvm-mos#313 -- Emit 65C02 indirect (non-indexed) addressing mode -- @asiekierka
  • llvm-mos/llvm-mos#314 -- Improve HuC6280 cycle counting. -- @asiekierka
  • #133 - Add __attribute__((leaf)) for commodore targets, particularly cx16. This prevents the compiler from pessimizing KERNAL calls. -- @XarkLabs

SDK v2.0.0

04 Jul 21:39
37bde1b
Compare
Choose a tag to compare

Breaking Changes

  • #131 -- Changed cbm_k_load and cbm_k_save to use void* rather than unsigned.

Library

  • #131 -- Support for Commander X16-specific KERNAL functions. Thanks @XarkLabs !

Misc

  • llvm-mos/llvm-mos#312 -- Model bytes and cycles separately in cost calculations. This can slightly improve register allocation by giving more specific costs when optimizing for size, speed, or both.

SDK v1.2.0

02 Jul 23:01
fdb1bd0
Compare
Choose a tag to compare

Pessimizations

  • Prevent power-of-two memcpy's of more than one byte from being lowered to integer loads and stores. This causes memcpy to be emitted in more places for now, but preserves the fact that the source and destination cannot alias. This will allow a more efficient lowering of these memcpy's in a nearby release.

New target

Bug fixes

  • #125 -- Corrected X16 imaginary register layout WRT callee/caller saved registers. -- @asiekierka

Optimizations

  • Enable alias analysis in machine scheduler, which allows loads and stores that cannot alias to move past each other to reduce register pressure.

Libraries

SDK v1.1.0

26 Jun 03:51
Compare
Choose a tag to compare

All of the following by @asiekierka :

New platforms

  • PC Engine/TurboGrafx-16 - This is a target I didn't figure we'd ever support well, given the complexities of targeting a heavily modified 6502 with a sort of MMU in it, but I'm very happy to be proven wrong. Enormous thanks, @asiekierka!

Compiler Optimizations

Bug fixes

  • llvm-mos/llvm-mos#304 - Emit correct (and new) ELF relocations for HuC6280 opcodes.
  • llvm-mos/llvm-mos#307 - Fix max instruction length calculation for HuC6280, which could possibly result in emitting too-far branches.
  • llvm-mos/llvm-mos#308 - Slightly correct cost calculations for imaginary register load/store on HuC6280.
  • llvm-mos/llvm-mos#309 - Add accidentally missing indirect zero page opcodes (the CC1 family) to 65C02.
  • #123 - Fix alignment between the Commander X16 and llvm-mos calling convention.

SDK v1.0.0

19 Jun 04:01
1e761df
Compare
Choose a tag to compare

Process

  • The compiler has been stable enough for long enough that it makes sense to
    start using semver more formally. So, without further ado, version 1.0.0!

Breaking changes

  • #115 - Breaking! - Replace cpm_parse_filename library function with a syscall, but with different parameters. - @davidgiven

Compiler

By @asiekierka:

SDK

  • #114 - Update CPM65; add some missing ctype and string functions. - @davidgiven
  • #117 - On Mega65 unmap $A000-$BFFF ROM region to provide 45KB of contiguous RAM. - @gurcei

By @asiekierka:

  • #119 and later - Add RCP8/e platform for the RedPower Minecraft mod's CPU.
  • #122 - Fix off-by-one stack pointer initializations in various targets, obtaining one more byte of soft stack.

SDK v0.13.2

14 May 22:38
Compare
Choose a tag to compare

Bug fixes

  • #112: Fix a bug in the cpm65 linker script causing certain addresses not to be relocated. Thanks @davidgiven !

Miscellaneous

  • Merged from upstream LLVM

  • Reduce distribution size by removing niche utilities.

SDK v0.13.1

06 Apr 02:18
adafbc0
Compare
Choose a tag to compare

New targets

Bug fixes

  • The CPM/65 elftocpm65 tool no longer attempts to relocate absolute addresses. Thanks @davidgiven !

  • The NES targets now once again compute DPCM offsets correctly. This caused DPCM samples not to work with the included ft2 library.

Library improvements

  • Made string/mem libc functions weak, so they can be easily overridden by user code.

  • The CX16 stack has been moved from banked RAM to main RAM, allowing use of the banked area. Thanks @XarkLabs !

SDK v0.13.0

10 Mar 18:48
Compare
Choose a tag to compare

Breaking Changes

  • Removed OVERLAY section type extension from linker script language. It isn't needed any more in our stock linker scripts, and is better done by either using the OVERLAY section type, or more preferably, using the high bits of the 32-bit VMA to separate out banks. The latter allows encoding the bank number directly into a symbol's address.

  • Removed OUTPUT_FORMAT(binary) from linker script. This decreases the diff from upstream, and we no longer need it. It's difficult to use and kind of a misfeature; the custom output format extension completely supersedes it.

SDK v0.12.1

22 Feb 18:30
Compare
Choose a tag to compare

Bug Fixes

  • Fixed a bug in the NES targets that caused incorrect Mesen labels to be generated when the C symbols were placed in PRG-RAM and the data segment was nonempty.
  • Fixed #99, which caused non-zero return values for various cbm_k_* functions in the Commodore targets on successful return. (Thanks @mlund, @cnelson20 !)

SDK v0.12.0

10 Feb 20:10
Compare
Choose a tag to compare

Breaking Changes

  • The SDK no longer includes the additional libraries, headers, and tools needed for building rust-mos. These are huge, and the SDK is already a quite hefty download and install.

Optimizations

  • Fixed llvm-mos/llvm-mos#182, where .zp.data and .zp.bss references would use absolute addressing modes.
  • Fixed llvm-mos/llvm-mos#279, where negating a boolean would be done with control flow rather than EOR #1.

Miscellaneous