blob: e57a20e2e841cf084a2b1793c9980073e72e6d3c [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, 4
#else
#define fsize 64
#define lrsave 4
#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