[Libre-soc-isa] [Bug 996] add shaddsw or replace shadduw with shaddsw since i32 indexes are waay more common than u32

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Tue Apr 18 09:45:31 BST 2023


--- Comment #14 from Jacob Lifshay <programmerjake at gmail.com> ---
(In reply to Luke Kenneth Casson Leighton from comment #12)
> hum hum should add+1 be included?
> (or, more like 1<<sm)

well, if we're doing that, just do:
RT = (RA << sh) + RB + imm

or similar...this is what x86 lea supports (except with up to full 32-bit
immediate instead of a tiny immediate)

maybe 3-bit imm?

immediate not shifted because then sh is log2(struct_size) and imm is field
offset for struct S[]

struct S {
    uint8_t a;
    uint16_t b;

uint16_t *f(struct S *p, int i) {
    return &p[i].b;

    shaddiw r3, r3, r4, 3, 2  # r3 = r3 + (r4 << 3) + 2

You are receiving this mail because:
You are on the CC list for the bug.

More information about the Libre-SOC-ISA mailing list