OpenCores
URL https://opencores.org/ocsvn/amber/amber/trunk

Subversion Repositories amber

[/] [amber/] [trunk/] [hw/] [tests/] [barrel_shift.S] - Diff between revs 2 and 36

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 2 Rev 36
Line 37... Line 37...
// from http://www.opencores.org/lgpl.shtml                     //
// from http://www.opencores.org/lgpl.shtml                     //
//                                                              //
//                                                              //
*****************************************************************/
*****************************************************************/
 
 
#include "amber_registers.h"
#include "amber_registers.h"
 
#include "amber_macros.h"
 
 
        .section .text
        .section .text
        .globl  main
        .globl  main
main:
main:
 
 
 
        @ Run through the test 4 times
 
        @ 1 - cache off
 
        @ 2 - cache on but empty
 
        @ 3 - cache on and loaded
 
        @ 4 - same as 3
 
        mov     r10, #4
 
 
 
 
/* lsl 0 */
/* lsl 0 */
        mov     r1, #1
1:      mov     r1, #1
        mov     r2, r1, lsl #0
        mov     r2, r1, lsl #0
        mov     r3, #0x1
        expect  r2, 1, __LINE__
        cmp     r2, r3
 
        bne     testfail
 
 
 
/* lsl 1 */
/* lsl 1 */
        mov     r4, #1
        mov     r4, #1
        mov     r5, r4, lsl #1
        mov     r5, r4, lsl #1
        mov     r6, #2
        expect  r5, 2, __LINE__
        cmp     r5, r6
 
        bne     testfail
 
 
 
/* lsl 31 */
/* lsl 31 */
        mov     r7, #1
        mov     r7, #1
        mov     r8, r1, lsl #31
        mov     r8, r1, lsl #31
        mov     r9, #0x80000000
        expect  r8, 0x80000000, __LINE__
        cmp     r8, r9
 
        bne     testfail
 
 
 
/* lsr 1 */
/* lsr 1 */
        mov     r1, #2
        mov     r1, #2
        mov     r2, r1, lsr #1
        mov     r2, r1, lsr #1
        mov     r3, #0x1
        expect  r2, 1, __LINE__
        cmp     r2, r3
 
        bne     testfail
 
 
 
/* lsr 8 */
/* lsr 8 */
        mov     r4, #0xff00
        mov     r4, #0xff00
        mov     r5, r4, lsr #8
        mov     r5, r4, lsr #8
        cmp     r5, #0xff
        expect  r5, 0xff, __LINE__
        bne     testfail
 
 
 
/* ror 8 */
/* ror 8 */
        ldr     r6, Data1
        ldr     r6, Data1
        mov     r7, r6, ror #8
        mov     r7, r6, ror #8
        ldr     r8, Data2
        ldr     r8, Data2
        cmp     r7, r8
        compare r7, r8, __LINE__
        bne     testfail
 
 
 
 
        @ ---------------------
 
        @ Sequences of shift operations
 
        @ ---------------------
 
 
 
        @ lsl
 
        mov     r0, #0
 
        mov     r1, #1
 
        mov     r2, #2
 
        mov     r3, #3
 
        mov     r4, #4
 
        mov     r5, #5
 
 
 
        mov     r6, r3, lsl #31
 
        mov     r7, r0, lsl #2
 
        mov     r8, r1, lsl #11
 
        mov     r9, r2, lsl #17
 
 
 
        expect  r6, 0x80000000, __LINE__
 
        expect  r7, 0x00000000, __LINE__
 
        expect  r8, 0x00000800, __LINE__
 
        expect  r9, 0x00040000, __LINE__
 
 
 
        mov     r6, r3, lsl #30
 
        mov     r7, r1, lsl #2
 
        mov     r8, r2, lsl #4
 
        mov     r9, r3, lsl #5
 
 
 
        expect  r6, 0xc0000000, __LINE__
 
        expect  r7, 0x00000004, __LINE__
 
        expect  r8, 0x00000020, __LINE__
 
        expect  r9, 0x00000060, __LINE__
 
 
 
        @ lsr
 
        mov     r0, #0x80000000
 
        mov     r1, #0x7f000000
 
        mov     r2, #0x80000001
 
        mov     r3, #0x7fffffff
 
        mov     r4, #0x7ffffffe
 
        mov     r5, #0x55000000
 
        orr     r5, r5, #0x55
 
 
 
        mov     r6, r0, lsr #1
 
        mov     r7, r0, lsr #2
 
        mov     r8, r1, lsr #24
 
        mov     r9, r2, lsr #1
 
 
 
        expect  r6, 0x40000000, __LINE__
 
        expect  r7, 0x20000000, __LINE__
 
        expect  r8, 0x0000007f, __LINE__
 
        expect  r9, 0x40000000, __LINE__
 
 
 
        @ ---------------------
 
        @ Enable the cache
 
        @ ---------------------
 
        mvn     r0,  #0
 
        mcr     15, 0, r0, cr3, cr0, 0   @ cacheable area
 
        mov     r0,  #1
 
        mcr     15, 0, r0, cr2, cr0, 0   @ cache enable
 
 
 
        subs    r10, r10, #1
 
        bne     1b
 
 
        b       testpass
        b       testpass
 
 
 
 
testfail:
testfail:

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.