URL
https://opencores.org/ocsvn/amber/amber/trunk
Subversion Repositories amber
[/] [amber/] [trunk/] [hw/] [tests/] [mla.S] - Rev 63
Go to most recent revision | Compare with Previous | Blame | View Log
/*****************************************************************// //// Amber 2 Core Instruction Test //// //// This file is part of the Amber project //// http://www.opencores.org/project,amber //// //// Description //// Tests the mla (multiply and accumulate) instruction. //// //// Uses a testset of 16 numbers and multiplies them //// with each other in every combination. //// Checks each result against an expected result //// //// Author(s): //// - Conor Santifort, csantifort.amber@gmail.com //// ////////////////////////////////////////////////////////////////////// //// Copyright (C) 2010 Authors and OPENCORES.ORG //// //// This source file may be used and distributed without //// restriction provided that this copyright statement is not //// removed from the file and that any derivative work contains //// the original copyright notice and the associated disclaimer. //// //// This source file is free software; you can redistribute it //// and/or modify it under the terms of the GNU Lesser General //// Public License as published by the Free Software Foundation; //// either version 2.1 of the License, or (at your option) any //// later version. //// //// This source is distributed in the hope that it will be //// useful, but WITHOUT ANY WARRANTY; without even the implied //// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //// PURPOSE. See the GNU Lesser General Public License for more //// details. //// //// You should have received a copy of the GNU Lesser General //// Public License along with this source; if not, download it //// from http://www.opencores.org/lgpl.shtml //// //*****************************************************************/#include "amber_registers.h".section .text.globl mainmain:@ -------------------------------@ Test mla@ -------------------------------mov r6, #0ldr r8, AdrTestsetloop: and r2, r6, #0xfldr r7, [r8, r2, lsl #2]and r4, r6, #0xf0ldr r5, [r8, r4, lsr #2]and r9, r6, #0xf00ldr r4, [r8, r9, lsr #6]mla r12, r7, r5, r4@ -------------------------------@ Check Result@ -------------------------------ldr r9, AdrAnswersldr r10, [r9, r6, lsl #2]cmp r12, r10bne testfailadd r6, r6, #1cmp r6, #512beq test2b looptest2:@-------------------------------@ Test Flags@ Ensure that C and V retain their@ old values@ -------------------------------@ clear flags firstmov r2, pcldr r7, PCMaskbic r2, r2, r7 @ clear pc bitsbic r2, r2, #0xf0000000 @ clear condition clagsorr r2, r2, #0x10000000 @ set C and V flagsteqp pc, r2mov r0, #0mov r1, #-1mov r3, #-27@ mla{<cond>}{S} <Rd>, <Rm>, <Rs>, <Rn>@ Rd = (Rm * Rs + Rn)[31:0]mlas r5, r0, r1, r3mov r4, pcldr r7, PCMaskbic r4, r4, r7 @ clear pc bitsand r4, r4, #0xf0000000 @ clear non-flag bitscmp r4, #0x90000000 @ negate flag ( bit [31] ) set by mlasmovne r10, #110bne testfail2cmp r5, #-27movne r10, #120bne testfail2test3:@-------------------------------@ Test complex sequence of instructions@ -------------------------------mov r0, #1mov r1, #2mov r2, #7mov r3, #3mov r4, #5mov r5, #6mov r6, #7cmp r0, #-1ldreq r1, Data1ldrne r2, Data2@ mla{<cond>}{S} <Rd>, <Rm>, <Rs>, <Rn>@ Rd = (Rm * Rs + Rn)[31:0]mlane r3, r1, r2, r4ldreq r5, Data3ldrne r6, Data3cmp r3, #19movne r10, #200bne testfail2cmp r5, #6movne r10, #210bne testfail2cmp r6, #0movne r10, #220bne testfail2@ ------------------------------------------@ ------------------------------------------b testpasstestfail:ldr r11, AdrTestStatusstr r10, [r11]b testfailtestfail2:ldr r11, AdrTestStatusstr r10, [r11]b testfail2testpass:ldr r11, AdrTestStatusmov r10, #17str r10, [r11]b testpass@ ------------------------------------------@ ------------------------------------------/* Write 17 to this address to generate a Test Passed message */AdrTestStatus: .word ADR_AMBER_TEST_STATUSAdrTestset: .word TestsetAdrAnswers: .word AnswersData1: .word 0x3Data2: .word 0x7Data3: .word 0PCMask: .word 0x03fffffcTestset:.word 0.word 1.word 2.word 3.word 27.word 0x0000ffff.word 0x40000000.word 0x7fffffff.word 0x7ffffffe.word 0xffffffff.word 0xfffffffe.word 0xfffffffd.word 0xffffffe5.word 0x8fff0000.word 0x80000000.word 0x80000001Answers:.word 0x00000000.word 0x00000000.word 0x00000000.word 0x00000000.word 0x00000000.word 0x00000000.word 0x00000000.word 0x00000000.word 0x00000000.word 0x00000000.word 0x00000000.word 0x00000000.word 0x00000000.word 0x00000000.word 0x00000000.word 0x00000000.word 0x00000000.word 0x00000001.word 0x00000002.word 0x00000003.word 0x0000001b.word 0x0000ffff.word 0x40000000.word 0x7fffffff.word 0x7ffffffe.word 0xffffffff.word 0xfffffffe.word 0xfffffffd.word 0xffffffe5.word 0x8fff0000.word 0x80000000.word 0x80000001.word 0x00000000.word 0x00000002.word 0x00000004.word 0x00000006.word 0x00000036.word 0x0001fffe.word 0x80000000.word 0xfffffffe.word 0xfffffffc.word 0xfffffffe.word 0xfffffffc.word 0xfffffffa.word 0xffffffca.word 0x1ffe0000.word 0x00000000.word 0x00000002.word 0x00000000.word 0x00000003.word 0x00000006.word 0x00000009.word 0x00000051.word 0x0002fffd.word 0xc0000000.word 0x7ffffffd.word 0x7ffffffa.word 0xfffffffd.word 0xfffffffa.word 0xfffffff7.word 0xffffffaf.word 0xaffd0000.word 0x80000000.word 0x80000003.word 0x00000000.word 0x0000001b.word 0x00000036.word 0x00000051.word 0x000002d9.word 0x001affe5.word 0xc0000000.word 0x7fffffe5.word 0x7fffffca.word 0xffffffe5.word 0xffffffca.word 0xffffffaf.word 0xfffffd27.word 0x2fe50000.word 0x80000000.word 0x8000001b.word 0x00000000.word 0x0000ffff.word 0x0001fffe.word 0x0002fffd.word 0x001affe5.word 0xfffe0001.word 0xc0000000.word 0x7fff0001.word 0x7ffe0002.word 0xffff0001.word 0xfffe0002.word 0xfffd0003.word 0xffe5001b.word 0x70010000.word 0x80000000.word 0x8000ffff.word 0x00000000.word 0x40000000.word 0x80000000.word 0xc0000000.word 0xc0000000.word 0xc0000000.word 0x00000000.word 0xc0000000.word 0x80000000.word 0xc0000000.word 0x80000000.word 0x40000000.word 0x40000000.word 0x00000000.word 0x00000000.word 0x40000000.word 0x00000000.word 0x7fffffff.word 0xfffffffe.word 0x7ffffffd.word 0x7fffffe5.word 0x7fff0001.word 0xc0000000.word 0x00000001.word 0x80000002.word 0x80000001.word 0x00000002.word 0x80000003.word 0x8000001b.word 0x70010000.word 0x80000000.word 0xffffffff.word 0x00000000.word 0x7ffffffe.word 0xfffffffc.word 0x7ffffffa.word 0x7fffffca.word 0x7ffe0002.word 0x80000000.word 0x80000002.word 0x00000004.word 0x80000002.word 0x00000004.word 0x80000006.word 0x80000036.word 0xe0020000.word 0x00000000.word 0x7ffffffe.word 0x00000000.word 0xffffffff.word 0xfffffffe.word 0xfffffffd.word 0xffffffe5.word 0xffff0001.word 0xc0000000.word 0x80000001.word 0x80000002.word 0x00000001.word 0x00000002.word 0x00000003.word 0x0000001b.word 0x70010000.word 0x80000000.word 0x7fffffff.word 0x00000000.word 0xfffffffe.word 0xfffffffc.word 0xfffffffa.word 0xffffffca.word 0xfffe0002.word 0x80000000.word 0x00000002.word 0x00000004.word 0x00000002.word 0x00000004.word 0x00000006.word 0x00000036.word 0xe0020000.word 0x00000000.word 0xfffffffe.word 0x00000000.word 0xfffffffd.word 0xfffffffa.word 0xfffffff7.word 0xffffffaf.word 0xfffd0003.word 0x40000000.word 0x80000003.word 0x80000006.word 0x00000003.word 0x00000006.word 0x00000009.word 0x00000051.word 0x50030000.word 0x80000000.word 0x7ffffffd.word 0x00000000.word 0xffffffe5.word 0xffffffca.word 0xffffffaf.word 0xfffffd27.word 0xffe5001b.word 0x40000000.word 0x8000001b.word 0x80000036.word 0x0000001b.word 0x00000036.word 0x00000051.word 0x000002d9.word 0xd01b0000.word 0x80000000.word 0x7fffffe5.word 0x00000000.word 0x8fff0000.word 0x1ffe0000.word 0xaffd0000.word 0x2fe50000.word 0x70010000.word 0x00000000.word 0x70010000.word 0xe0020000.word 0x70010000.word 0xe0020000.word 0x50030000.word 0xd01b0000.word 0x00000000.word 0x00000000.word 0x8fff0000.word 0x00000000.word 0x80000000.word 0x00000000.word 0x80000000.word 0x80000000.word 0x80000000.word 0x00000000.word 0x80000000.word 0x00000000.word 0x80000000.word 0x00000000.word 0x80000000.word 0x80000000.word 0x00000000.word 0x00000000.word 0x80000000.word 0x00000000.word 0x80000001.word 0x00000002.word 0x80000003.word 0x8000001b.word 0x8000ffff.word 0x40000000.word 0xffffffff.word 0x7ffffffe.word 0x7fffffff.word 0xfffffffe.word 0x7ffffffd.word 0x7fffffe5.word 0x8fff0000.word 0x80000000.word 0x00000001.word 0x00000001.word 0x00000001.word 0x00000001.word 0x00000001.word 0x00000001.word 0x00000001.word 0x00000001.word 0x00000001.word 0x00000001.word 0x00000001.word 0x00000001.word 0x00000001.word 0x00000001.word 0x00000001.word 0x00000001.word 0x00000001.word 0x00000001.word 0x00000002.word 0x00000003.word 0x00000004.word 0x0000001c.word 0x00010000.word 0x40000001.word 0x80000000.word 0x7fffffff.word 0x00000000.word 0xffffffff.word 0xfffffffe.word 0xffffffe6.word 0x8fff0001.word 0x80000001.word 0x80000002.word 0x00000001.word 0x00000003.word 0x00000005.word 0x00000007.word 0x00000037.word 0x0001ffff.word 0x80000001.word 0xffffffff.word 0xfffffffd.word 0xffffffff.word 0xfffffffd.word 0xfffffffb.word 0xffffffcb.word 0x1ffe0001.word 0x00000001.word 0x00000003.word 0x00000001.word 0x00000004.word 0x00000007.word 0x0000000a.word 0x00000052.word 0x0002fffe.word 0xc0000001.word 0x7ffffffe.word 0x7ffffffb.word 0xfffffffe.word 0xfffffffb.word 0xfffffff8.word 0xffffffb0.word 0xaffd0001.word 0x80000001.word 0x80000004.word 0x00000001.word 0x0000001c.word 0x00000037.word 0x00000052.word 0x000002da.word 0x001affe6.word 0xc0000001.word 0x7fffffe6.word 0x7fffffcb.word 0xffffffe6.word 0xffffffcb.word 0xffffffb0.word 0xfffffd28.word 0x2fe50001.word 0x80000001.word 0x8000001c.word 0x00000001.word 0x00010000.word 0x0001ffff.word 0x0002fffe.word 0x001affe6.word 0xfffe0002.word 0xc0000001.word 0x7fff0002.word 0x7ffe0003.word 0xffff0002.word 0xfffe0003.word 0xfffd0004.word 0xffe5001c.word 0x70010001.word 0x80000001.word 0x80010000.word 0x00000001.word 0x40000001.word 0x80000001.word 0xc0000001.word 0xc0000001.word 0xc0000001.word 0x00000001.word 0xc0000001.word 0x80000001.word 0xc0000001.word 0x80000001.word 0x40000001.word 0x40000001.word 0x00000001.word 0x00000001.word 0x40000001.word 0x00000001.word 0x80000000.word 0xffffffff.word 0x7ffffffe.word 0x7fffffe6.word 0x7fff0002.word 0xc0000001.word 0x00000002.word 0x80000003.word 0x80000002.word 0x00000003.word 0x80000004.word 0x8000001c.word 0x70010001.word 0x80000001.word 0x00000000.word 0x00000001.word 0x7fffffff.word 0xfffffffd.word 0x7ffffffb.word 0x7fffffcb.word 0x7ffe0003.word 0x80000001.word 0x80000003.word 0x00000005.word 0x80000003.word 0x00000005.word 0x80000007.word 0x80000037.word 0xe0020001.word 0x00000001.word 0x7fffffff.word 0x00000001.word 0x00000000.word 0xffffffff.word 0xfffffffe.word 0xffffffe6.word 0xffff0002.word 0xc0000001.word 0x80000002.word 0x80000003.word 0x00000002.word 0x00000003.word 0x00000004.word 0x0000001c.word 0x70010001.word 0x80000001.word 0x80000000.word 0x00000001.word 0xffffffff.word 0xfffffffd.word 0xfffffffb.word 0xffffffcb.word 0xfffe0003.word 0x80000001.word 0x00000003.word 0x00000005.word 0x00000003.word 0x00000005.word 0x00000007.word 0x00000037.word 0xe0020001.word 0x00000001.word 0xffffffff.word 0x00000001.word 0xfffffffe.word 0xfffffffb.word 0xfffffff8.word 0xffffffb0.word 0xfffd0004.word 0x40000001.word 0x80000004.word 0x80000007.word 0x00000004.word 0x00000007.word 0x0000000a.word 0x00000052.word 0x50030001.word 0x80000001.word 0x7ffffffe.word 0x00000001.word 0xffffffe6.word 0xffffffcb.word 0xffffffb0.word 0xfffffd28.word 0xffe5001c.word 0x40000001.word 0x8000001c.word 0x80000037.word 0x0000001c.word 0x00000037.word 0x00000052.word 0x000002da.word 0xd01b0001.word 0x80000001.word 0x7fffffe6.word 0x00000001.word 0x8fff0001.word 0x1ffe0001.word 0xaffd0001.word 0x2fe50001.word 0x70010001.word 0x00000001.word 0x70010001.word 0xe0020001.word 0x70010001.word 0xe0020001.word 0x50030001.word 0xd01b0001.word 0x00000001.word 0x00000001.word 0x8fff0001.word 0x00000001.word 0x80000001.word 0x00000001.word 0x80000001.word 0x80000001.word 0x80000001.word 0x00000001.word 0x80000001.word 0x00000001.word 0x80000001.word 0x00000001.word 0x80000001.word 0x80000001.word 0x00000001.word 0x00000001.word 0x80000001.word 0x00000001.word 0x80000002.word 0x00000003.word 0x80000004.word 0x8000001c.word 0x80010000.word 0x40000001.word 0x00000000.word 0x7fffffff.word 0x80000000.word 0xffffffff.word 0x7ffffffe.word 0x7fffffe6.word 0x8fff0001.word 0x80000001.word 0x00000002.word 0x00000002.word 0x00000002.word 0x00000002.word 0x00000002.word 0x00000002.word 0x00000002.word 0x00000002.word 0x00000002.word 0x00000002.word 0x00000002.word 0x00000002.word 0x00000002.word 0x00000002.word 0x00000002.word 0x00000002.word 0x00000002.word 0x00000002.word 0x00000003.word 0x00000004.word 0x00000005.word 0x0000001d.word 0x00010001.word 0x40000002.word 0x80000001.word 0x80000000.word 0x00000001.word 0x00000000.word 0xffffffff.word 0xffffffe7.word 0x8fff0002.word 0x80000002.word 0x80000003.word 0x00000002.word 0x00000004.word 0x00000006.word 0x00000008.word 0x00000038.word 0x00020000.word 0x80000002.word 0x00000000.word 0xfffffffe.word 0x00000000.word 0xfffffffe.word 0xfffffffc.word 0xffffffcc.word 0x1ffe0002.word 0x00000002.word 0x00000004.word 0x00000002.word 0x00000005.word 0x00000008.word 0x0000000b.word 0x00000053.word 0x0002ffff.word 0xc0000002.word 0x7fffffff.word 0x7ffffffc.word 0xffffffff.word 0xfffffffc.word 0xfffffff9.word 0xffffffb1.word 0xaffd0002.word 0x80000002.word 0x80000005.word 0x00000002.word 0x0000001d.word 0x00000038.word 0x00000053.word 0x000002db.word 0x001affe7.word 0xc0000002.word 0x7fffffe7.word 0x7fffffcc.word 0xffffffe7.word 0xffffffcc.word 0xffffffb1.word 0xfffffd29.word 0x2fe50002.word 0x80000002.word 0x8000001d.word 0x00000002.word 0x00010001.word 0x00020000.word 0x0002ffff.word 0x001affe7.word 0xfffe0003.word 0xc0000002.word 0x7fff0003.word 0x7ffe0004.word 0xffff0003.word 0xfffe0004.word 0xfffd0005.word 0xffe5001d.word 0x70010002.word 0x80000002.word 0x80010001.word 0x00000002.word 0x40000002.word 0x80000002.word 0xc0000002.word 0xc0000002.word 0xc0000002.word 0x00000002.word 0xc0000002.word 0x80000002.word 0xc0000002.word 0x80000002.word 0x40000002.word 0x40000002.word 0x00000002.word 0x00000002.word 0x40000002.word 0x00000002.word 0x80000001.word 0x00000000.word 0x7fffffff.word 0x7fffffe7.word 0x7fff0003.word 0xc0000002.word 0x00000003.word 0x80000004.word 0x80000003.word 0x00000004.word 0x80000005.word 0x8000001d.word 0x70010002.word 0x80000002.word 0x00000001.word 0x00000002.word 0x80000000.word 0xfffffffe.word 0x7ffffffc.word 0x7fffffcc.word 0x7ffe0004.word 0x80000002.word 0x80000004.word 0x00000006.word 0x80000004.word 0x00000006.word 0x80000008.word 0x80000038.word 0xe0020002.word 0x00000002.word 0x80000000.word 0x00000002.word 0x00000001.word 0x00000000.word 0xffffffff.word 0xffffffe7.word 0xffff0003.word 0xc0000002.word 0x80000003.word 0x80000004.word 0x00000003.word 0x00000004.word 0x00000005.word 0x0000001d.word 0x70010002.word 0x80000002.word 0x80000001.word 0x00000002.word 0x00000000.word 0xfffffffe.word 0xfffffffc.word 0xffffffcc.word 0xfffe0004.word 0x80000002.word 0x00000004.word 0x00000006.word 0x00000004.word 0x00000006.word 0x00000008.word 0x00000038.word 0xe0020002.word 0x00000002.word 0x00000000.word 0x00000002.word 0xffffffff.word 0xfffffffc.word 0xfffffff9.word 0xffffffb1.word 0xfffd0005.word 0x40000002.word 0x80000005.word 0x80000008.word 0x00000005.word 0x00000008.word 0x0000000b.word 0x00000053.word 0x50030002.word 0x80000002.word 0x7fffffff.word 0x00000002.word 0xffffffe7.word 0xffffffcc.word 0xffffffb1.word 0xfffffd29.word 0xffe5001d.word 0x40000002.word 0x8000001d.word 0x80000038.word 0x0000001d.word 0x00000038.word 0x00000053.word 0x000002db.word 0xd01b0002.word 0x80000002.word 0x7fffffe7.word 0x00000002.word 0x8fff0002.word 0x1ffe0002.word 0xaffd0002.word 0x2fe50002.word 0x70010002.word 0x00000002.word 0x70010002.word 0xe0020002.word 0x70010002.word 0xe0020002.word 0x50030002.word 0xd01b0002.word 0x00000002.word 0x00000002.word 0x8fff0002.word 0x00000002.word 0x80000002.word 0x00000002.word 0x80000002.word 0x80000002.word 0x80000002.word 0x00000002.word 0x80000002.word 0x00000002.word 0x80000002.word 0x00000002.word 0x80000002.word 0x80000002.word 0x00000002.word 0x00000002.word 0x80000002.word 0x00000002.word 0x80000003.word 0x00000004.word 0x80000005.word 0x8000001d.word 0x80010001.word 0x40000002.word 0x00000001.word 0x80000000.word 0x80000001.word 0x00000000.word 0x7fffffff.word 0x7fffffe7.word 0x8fff0002.word 0x80000002.word 0x00000003.word 0x00000003.word 0x00000003.word 0x00000003.word 0x00000003.word 0x00000003.word 0x00000003.word 0x00000003.word 0x00000003.word 0x00000003.word 0x00000003.word 0x00000003.word 0x00000003.word 0x00000003.word 0x00000003.word 0x00000003.word 0x00000003.word 0x00000003.word 0x00000004.word 0x00000005.word 0x00000006.word 0x0000001e.word 0x00010002.word 0x40000003.word 0x80000002.word 0x80000001.word 0x00000002.word 0x00000001.word 0x00000000.word 0xffffffe8.word 0x8fff0003.word 0x80000003.word 0x80000004.word 0x00000003.word 0x00000005
Go to most recent revision | Compare with Previous | Blame | View Log
