| #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 |
| |