Fwd: Re: still no accelerated X ($#!$*)
Kevin Hendricks
khendricks at ivey.uwo.ca
Fri Jan 21 05:12:49 EST 2000
Hi,
Can anyone explain this to me?
> Finally I got it!
> asm("stwbrx %0,%1,%2": : "r"(regdata), "r"(regindex), "r"(base_addr));
> asm("lwbrx %0,%1,%2": "=r"(val):"r"(regindex), "r"(base_addr));
> asm("stwbrx %0,%1,%2": : "r"(regdata), "b"(regindex), "r"(base_addr));
> asm("lwbrx %0,%1,%2": "=r"(val):"b"(regindex), "r"(base_addr));
> Don't know if this is correct (no clue about ppc assembly), but it works...
Well I did the following with the attached sample program:
gcc -O0 -S testit.c
then I looked at testit.s (the assembler).
old_regw:
stwu 1,-32(1)
stw 31,28(1)
mr 31,1
stw 3,8(31)
mr 0,4
lis 11,mach64MemReg at ha
lwz 9,mach64MemReg at l(11)
lwz 11,8(31)
stwbrx 0,11,9
.L2:
lwz 11,0(1)
lwz 31,-4(11)
mr 1,11
blr
.Lfe2:
.size old_regw,.Lfe2-old_regw
.align 2
.type old_regr, at function
old_regr:
stwu 1,-32(1)
stw 31,28(1)
mr 31,1
stw 3,8(31)
lis 9,mach64MemReg at ha
lwz 0,mach64MemReg at l(9)
lwz 11,8(31)
lwbrx 9,11,0
mr 3,9
b .L3
.L3:
lwz 11,0(1)
lwz 31,-4(11)
mr 1,11
blr
.Lfe3:
.size old_regr,.Lfe3-old_regr
.align 2
:regw:
stwu 1,-32(1)
stw 31,28(1)
mr 31,1
stw 3,8(31)
mr 0,4
lis 11,mach64MemReg at ha
lwz 9,mach64MemReg at l(11)
lwz 11,8(31)
stwbrx 0,11,9
.L4:
lwz 11,0(1)
lwz 31,-4(11)
mr 1,11
blr
.Lfe4:
.size regw,.Lfe4-regw
.align 2
.type regr, at function
regr:
stwu 1,-32(1)
stw 31,28(1)
mr 31,1
stw 3,8(31)
lis 9,mach64MemReg at ha
lwz 0,mach64MemReg at l(9)
lwz 11,8(31)
lwbrx 9,11,0
mr 3,9
b .L5
.L5:
lwz 11,0(1)
lwz 31,-4(11)
mr 1,11
blr
And I simply can not see any difference in the actual code produced by each
bunch of asm statements which leads me to believe that there is something else
going on here.
I would love to know exactly what.
Will you please try compiling the code I attached to get the assembler out and
compare old_regr and regr and old_rew and regw and see if you find any
differences.
Are you sure you haven't changed *anything* else?
Thanks,
Kevin
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: testit.c
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20000120/a65010eb/attachment.asc>
More information about the Linuxppc-dev
mailing list