blob: f0fd23fcb18714f321c1cff90a0a59a5954e9876 [file] [log] [blame]
/* speed test for basic CPU operations */
/* Marco Bucci <marco.bucci@inwind.it> */
/* This code was developed with the Code Warrior integrate ppc assembler.
* Macros are use to hide illegal constructs whether you are using a
* "normal" assembler or the "C integrated" assembler.
*/
#if 0
.text
.align 4
.globl b_call_reg
.globl _b_call_reg
.globl b_call_imm
.globl _b_call_imm
.globl b_add
.globl _b_add
.globl b_load
.globl _b_load
.set fsize, 64
.set lrsave, 8
#else
#define fsize 64
#define lrsave 8
#endif
#if 0
.if 0
#endif
asm void b_null(void)
{
#if 0
.endif
#endif
#if 0
b_null:
#endif
blr
#if 0
.if 0
#endif
}
#if 0
.endif
#endif
/* actually the same as the following. How to get "b_null" address?
* I didnt find the right sintax or the right way.
* I should take the current PC, then the difference to "b_null"
* (making the difference beween the labels), perform the sum and go?!
*/
#if 0
.if 0
#endif
asm void b_call_reg(long n)
{
#if 0
.endif
#endif
#if 0
b_call_reg:
_b_call_reg:
#endif
mflr r0
stw r31,-4(r1)
stw r30,-8(r1)
stw r0,lrsave(r1)
stwu r1,-fsize(r1)
mr r30,r3
li r31,0
b L1
L0:
bl b_null
bl b_null
bl b_null
bl b_null
bl b_null
addi r31,r31,5
L1:
cmpw r31,r30
blt L0
lwz r0,lrsave+fsize(r1)
mtlr r0
lwz r31,-4+fsize(r1)
lwz r30,-8+fsize(r1)
addi r1,r1,fsize
blr
#if 0
.if 0
#endif
}
#if 0
.endif
#endif
#if 0
.if 0
#endif
asm void b_call_imm(long n)
{
#if 0
.endif
#endif
#if 0
b_call_imm:
_b_call_imm:
#endif
mflr r0
stw r31,-4(r1)
stw r30,-8(r1)
stw r0,lrsave(r1)
stwu r1,-fsize(r1)
mr r30,r3
li r31,0
b L3
L2:
bl b_null
bl b_null
bl b_null
bl b_null
bl b_null
addi r31,r31,5
L3:
cmpw r31,r30
blt L2
lwz r0,lrsave+fsize(r1)
mtlr r0
lwz r31,-4+fsize(r1)
lwz r30,-8+fsize(r1)
addi r1,r1,fsize
blr
#if 0
.if 0
#endif
}
#if 0
.endif
#endif
#if 0
.if 0
#endif
asm void b_add(long n)
{
#if 0
.endif
#endif
#if 0
b_add:
_b_add:
#endif
mflr r0
stw r31,-4(r1)
stw r30,-8(r1)
stw r0,lrsave(r1)
stwu r1,-fsize(r1)
mr r30,r3
li r31,0
b L5
L4:
addi r3,r3,5
addi r4,r4,5
addi r5,r5,5
addi r6,r6,5
addi r7,r7,5
addi r3,r3,5
addi r4,r4,5
addi r5,r5,5
addi r6,r6,5
addi r7,r7,5
addi r31,r31,10
L5:
cmpw r31,r30
blt L4
lwz r0,lrsave+fsize(r1)
mtlr r0
lwz r31,-4+fsize(r1)
lwz r30,-8+fsize(r1)
addi r1,r1,fsize
blr
#if 0
.if 0
#endif
}
#if 0
.endif
#endif
#if 0
.if 0
#endif
asm void b_load(long n)
{
#if 0
.endif
#endif
#if 0
b_load:
_b_load:
#endif
mflr r0
stw r31,-4(r1)
stw r30,-8(r1)
stw r0,lrsave(r1)
stwu r1,-fsize(r1)
mr r30,r3
li r31,0
b L7
L6:
lwz r3,4(r1)
lwz r4,8(r1)
lwz r5,12(r1)
lwz r6,16(r1)
lwz r7,20(r1)
lwz r3,24(r1)
lwz r4,28(r1)
lwz r5,32(r1)
lwz r6,36(r1)
lwz r7,40(r1)
addi r31,r31,10
L7:
cmpw r31,r30
blt L6
lwz r0,lrsave+fsize(r1)
mtlr r0
lwz r31,-4+fsize(r1)
lwz r30,-8+fsize(r1)
addi r1,r1,fsize
blr
#if 0
.if 0
#endif
}
#if 0
.endif
#endif