Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added 48 bit Routines #453

Open
wants to merge 22 commits into
base: master
Choose a base branch
from
Open

Commits on Nov 7, 2023

  1. Added 48 bit Routines

    Added:
    
    slland: 348 cycles
    sllor: 348 cycles
    sllxor: 381 cycles
    sllnot: 158 cycles
    sllcmpu: 210 cycles
    sllcmpzero: 45 cycles
    sllshl: varies
    sllshru: varies
    sllshrs: varies
    sllmulu: 1592 cycles
    fundudeone committed Nov 7, 2023
    Configuration menu
    Copy the full SHA
    23079e3 View commit details
    Browse the repository at this point in the history
  2. Fixed and optimized sllnot

    Fixed interrupt issue and optimized to 108 cycles
    fundudeone committed Nov 7, 2023
    Configuration menu
    Copy the full SHA
    ea4461c View commit details
    Browse the repository at this point in the history
  3. Updated sllmulu

    No longer backs up alt registers. Disables interrupts during the routine.
    fundudeone committed Nov 7, 2023
    Configuration menu
    Copy the full SHA
    262100f View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    fe47158 View commit details
    Browse the repository at this point in the history

Commits on Nov 8, 2023

  1. Update sllcmpu

    Updated documentation and made a very minor optimization
    fundudeone committed Nov 8, 2023
    Configuration menu
    Copy the full SHA
    bb6b56a View commit details
    Browse the repository at this point in the history
  2. Improved sllcmpzero

    Comparison of de to 0 simplified to comparison of de to hl
    fundudeone committed Nov 8, 2023
    Configuration menu
    Copy the full SHA
    a55233e View commit details
    Browse the repository at this point in the history
  3. Updated sllmulu (again)

    Interrupt enabling and disabling now handled conditionally
    fundudeone committed Nov 8, 2023
    Configuration menu
    Copy the full SHA
    6fcb615 View commit details
    Browse the repository at this point in the history
  4. Rewrote sllshl

    Now uses ude:uhl for minor shifts instead of uiy:uhl. Now uses stack for large shifts
    fundudeone committed Nov 8, 2023
    Configuration menu
    Copy the full SHA
    c59e627 View commit details
    Browse the repository at this point in the history

Commits on Nov 9, 2023

  1. Update sllshru/s

    Condensed routines. Eliminated most of sllshru. Fixed a bug where shifting 0 would cause a shift of 256.
    fundudeone committed Nov 9, 2023
    Configuration menu
    Copy the full SHA
    a42b949 View commit details
    Browse the repository at this point in the history

Commits on Nov 14, 2023

  1. Configuration menu
    Copy the full SHA
    d2d9bfc View commit details
    Browse the repository at this point in the history

Commits on Nov 23, 2023

  1. Added slldvrmu

    Added slldvrmu for 48 bit unsigned division and modulo (~6000 cycles). This is called from the slldivu and sllremu which are in one file as they share cleanup behavior.
    fundudeone committed Nov 23, 2023
    Configuration menu
    Copy the full SHA
    ddc833e View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    1637512 View commit details
    Browse the repository at this point in the history

Commits on Dec 16, 2023

  1. Renamed Files to Match New Clang

    Updated file names and documentation to use i48 instead of sll
    fundudeone committed Dec 16, 2023
    Configuration menu
    Copy the full SHA
    db29708 View commit details
    Browse the repository at this point in the history

Commits on Dec 19, 2023

  1. Changed i48cmpu to no longer use arguments from stack

    i48cmpu has been changed to the old commented out version which doesn't use arguments off stack. Also minor optimization.
    fundudeone committed Dec 19, 2023
    Configuration menu
    Copy the full SHA
    9157a1f View commit details
    Browse the repository at this point in the history

Commits on Dec 30, 2023

  1. Optimized i48cmpu

    Removed multiple stack uses, now about 100 cycles
    fundudeone committed Dec 30, 2023
    Configuration menu
    Copy the full SHA
    7ab68d3 View commit details
    Browse the repository at this point in the history

Commits on Jan 6, 2024

  1. Corrected how i48dvrmu Outputs

    Changed i48dvrmu to put remainder in uiy:ubc rather than on the stack. i48dvrmu now restores interrupts and fully cleans up rather than partially relying on i48divu and i48remu.
    fundudeone committed Jan 6, 2024
    Configuration menu
    Copy the full SHA
    2744d4c View commit details
    Browse the repository at this point in the history

Commits on Jan 7, 2024

  1. Added i48cmps

    Added i48cmps for signed int48_t comparison. 105 cycles.
    fundudeone committed Jan 7, 2024
    Configuration menu
    Copy the full SHA
    08cb04c View commit details
    Browse the repository at this point in the history
  2. Added routines for i48 bit manipulation intrensics

    Added i48bitrev, i48bswap, i48ctlz, i48popcnt. Significant optimization on i48bitrev and i48bswap may be possible. i48bitrev just does ibitrev twice without restoring af until the end, but an entirely new approach may perform better.  i48bswap could be improved by using sp directly to manipulate stack values rather than hl (as lbswap does), but I was warned against doing this on prior routines.
    fundudeone committed Jan 7, 2024
    Configuration menu
    Copy the full SHA
    bd5c933 View commit details
    Browse the repository at this point in the history

Commits on Jan 8, 2024

  1. i48cmpzero now outputs correct sign flag

    Switched the order of register comparison so that routine outputs a sign flag matching the sign of the number.
    fundudeone committed Jan 8, 2024
    Configuration menu
    Copy the full SHA
    092c1a3 View commit details
    Browse the repository at this point in the history

Commits on Feb 18, 2024

  1. Added i48neg, i48divs, and i48rems

    i48neg contains routines for getting the negative of both uhl:ude and uiy:ubc. Signed division and remainder are about 10-500 more cycles than unsigned.
    fundudeone committed Feb 18, 2024
    Configuration menu
    Copy the full SHA
    1b0c873 View commit details
    Browse the repository at this point in the history

Commits on Jun 13, 2024

  1. Optimized large right shifts

    Cycles per loop is now 52 instead of 143. Base cost is slightly higher however (80 --> 279 cycles).
    fundudeone committed Jun 13, 2024
    Configuration menu
    Copy the full SHA
    f6a61e3 View commit details
    Browse the repository at this point in the history

Commits on Jun 20, 2024

  1. Decreased size and increased speed of division related routines

    Removed backing up alt registers from i48dvrmu because based on other examples, they don't seem to need to be backed up. Streamlined other routines by reducing the amount of jumps used.
    fundudeone committed Jun 20, 2024
    Configuration menu
    Copy the full SHA
    2974b43 View commit details
    Browse the repository at this point in the history