powerpc

code generated for

void sub(codegendata *cd, int a, int b, int c)
{
        M_IADD(a, b, c);
}

with | and <<

_sub:
        slwi r6,r6,21
        slwi r4,r4,16
        or r6,r6,r4
        slwi r5,r5,11
        or r6,r6,r5
        lwz r9,0(r3)
        oris r6,r6,0x7c00
        ori r6,r6,532
        stw r6,0(r9)
        lwz r2,0(r3)
        addi r2,r2,4
        stw r2,0(r3)
        blr

with bitfields

_sub:
        li r2,31
        li r0,0
        rlwimi r0,r2,26,0,5
        rlwinm r6,r6,0,27,31
        rlwinm r4,r4,0,27,31
        rlwimi r0,r6,21,6,10
        rlwinm r5,r5,0,27,31
        rlwimi r0,r4,16,11,15
        lwz r9,0(r3)
        li r2,266
        rlwimi r0,r5,11,16,21
        rlwimi r0,r2,1,22,31
        stw r0,0(r9)
        lwz r2,0(r3)
        addi r2,r2,4
        stw r2,0(r3)
        blr

cacaowiki: CodeGenerationMacros (last edited 2006-12-06 19:51:57 by ChristianThalinger)