| # Check that multiplication works. |
| # mach: pru |
| |
| # Copyright (C) 2016-2024 Free Software Foundation, Inc. |
| # Contributed by Dimitar Dimitrov <dimitar@dinux.eu> |
| # |
| # This file is part of the GNU simulators. |
| # |
| # This program is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 3 of the License, or |
| # (at your option) any later version. |
| # |
| # This program 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 General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program. If not, see <http://www.gnu.org/licenses/>. |
| |
| .include "testutils.inc" |
| |
| start |
| |
| # MUL: Test regular case |
| ldi r28, 1001 |
| ldi r29, 4567 |
| nop |
| xin 0, r26, 4 |
| qbne32 2f, r26, (1001 * 4567) |
| |
| # MUL: Test the pipeline emulation |
| ldi r28, 1002 |
| ldi r29, 1003 |
| ldi r29, 4004 |
| xin 0, r26, 4 |
| qbne32 2f, r26, (1002 * 1003) |
| xin 0, r26, 4 |
| qbne32 2f, r26, (1002 * 4004) |
| |
| # MUL: Test 64-bit result |
| ldi32 r28, 0x12345678 |
| ldi32 r29, 0xaabbccdd |
| nop |
| xin 0, r26, 8 |
| qbne32 2f, r26, 0x45BE4598 |
| qbne32 2f, r27, 0xC241C38 |
| |
| # MAC: Test regular case |
| ldi r25, 1 |
| xout 0, r25, 1 |
| ldi r25, 3 |
| xout 0, r25, 1 |
| |
| ldi r25, 1 |
| ldi r28, 1001 |
| ldi r29, 2002 |
| xout 0, r25, 1 |
| ldi r28, 3003 |
| ldi r29, 4004 |
| xout 0, r25, 1 |
| |
| xin 0, r26, 4 |
| qbne32 2f, r26, ((1001 * 2002) + (3003 * 4004)) |
| |
| # MAC: Test 64-bit result |
| ldi r25, 3 |
| xout 0, r25, 1 |
| |
| ldi r25, 1 |
| ldi32 r28, 0x10203040 |
| ldi32 r29, 0x50607080 |
| xout 0, r25, 1 |
| ldi32 r28, 0xa0b0c0d0 |
| ldi32 r29, 0x11223344 |
| xout 0, r25, 1 |
| |
| xin 0, r26, 8 |
| qbne32 2f, r26, 0x8E30C740 |
| qbne32 2f, r27, 0xFD156B1 |
| |
| jmp 1f |
| |
| fail |
| |
| 1: |
| pass |
| 2: fail |