50 lines
1.1 KiB
Text
50 lines
1.1 KiB
Text
#mach: crisv10
|
|
#output: Basic clock cycles, total @: 45\n
|
|
#output: Memory source stall cycles: 0\n
|
|
#output: Memory read-after-write stall cycles: 0\n
|
|
#output: Movem source stall cycles: 0\n
|
|
#output: Movem destination stall cycles: 0\n
|
|
#output: Movem address stall cycles: 0\n
|
|
#output: Multiplication source stall cycles: 0\n
|
|
#output: Jump source stall cycles: 0\n
|
|
#output: Branch misprediction stall cycles: 0\n
|
|
#output: Jump target stall cycles: 0\n
|
|
#sim: --cris-cycles=basic
|
|
|
|
; Check that movem to register basically looks ok cycle-wise.
|
|
; Nothing deep.
|
|
|
|
.include "testutils.inc"
|
|
startnostack
|
|
move.d 0f,r5
|
|
moveq 0,r8
|
|
moveq 0,r9
|
|
|
|
; Adapted from crisv32 movem-to-memory penalty examples many
|
|
; revisions ago.
|
|
|
|
movem [r5],r4
|
|
test.d [r3] ; 3 cycle penalty on v32 (2 memory source, 1 movem dest).
|
|
movem [r5],r4
|
|
subq 1,r8
|
|
test.d [r3] ; 2 cycle penalty on v32.
|
|
movem [r5],r4
|
|
subq 1,r1 ; 3 cycle penalty on v32.
|
|
movem [r5],r4
|
|
add.d r8,r9
|
|
subq 1,r1 ; 2 cycle penalty on v32.
|
|
movem [r5],r4
|
|
add.d r8,r9
|
|
subq 1, r9
|
|
subq 1, r1 ; 1 cycle penalty on v32.
|
|
break 15
|
|
|
|
.data
|
|
.p2align 5
|
|
0:
|
|
.dword 0b
|
|
.dword 0b
|
|
.dword 0b
|
|
.dword 0b
|
|
.dword 0b
|
|
|