/* Tests instructions l.and, l.andi. Copyright (C) 2017-2023 Free Software Foundation, Inc. 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 . */ # mach: or1k # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0xffffffff);\n # output: report(0xffffffff);\n # output: report(0xffffffff);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0xaaaaaaaa);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0xaaaaaaaa);\n # output: report(0xaaaaaaaa);\n # output: report(0xaaaaaaaa);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0x55555555);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0x55555555);\n # output: report(0x55555555);\n # output: report(0x55555555);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0xaaaaaaaa);\n # output: report(0x55555555);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0x4c70f07c);\n # output: report(0xb38f0f83);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0x4c70f07c);\n # output: report(0xc4c70f07);\n # output: report(0x44400004);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0xb38f0f83);\n # output: report(0x38f0f83b);\n # output: report(0x30800803);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0xffffffff);\n # output: report(0x0000ffff);\n # output: report(0x0000ffff);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0xaaaaaaaa);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0xaaaaaaaa);\n # output: report(0x0000aaaa);\n # output: report(0x0000aaaa);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0x55555555);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0x55555555);\n # output: report(0x00005555);\n # output: report(0x00005555);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0xaaaaaaaa);\n # output: report(0x00005555);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0x4c70f07c);\n # output: report(0x00000f83);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0x4c70f07c);\n # output: report(0x00000f07);\n # output: report(0x00000004);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: report(0xb38f0f83);\n # output: report(0x0000f83b);\n # output: report(0x00000803);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: report(0x00000000);\n # output: \n # output: exit(0)\n #include "or1k-asm-test-helpers.h" STANDARD_TEST_ENVIRONMENT .section .text start_tests: PUSH LINK_REGISTER_R9 /* Always set OVE. We should never trigger an exception, even if this bit is set. */ SET_SPR_SR_FLAGS SPR_SR_OVE, r2, r3 /* Test the l.and instruction with a range of operands. */ TEST_INST_I32_I32 l.and, 0x00000000, 0x00000000 TEST_INST_I32_I32 l.and, 0xffffffff, 0xffffffff TEST_INST_I32_I32 l.and, 0xaaaaaaaa, 0x00000000 TEST_INST_I32_I32 l.and, 0xaaaaaaaa, 0xaaaaaaaa TEST_INST_I32_I32 l.and, 0x55555555, 0x00000000 TEST_INST_I32_I32 l.and, 0x55555555, 0x55555555 TEST_INST_I32_I32 l.and, 0xaaaaaaaa, 0x55555555 TEST_INST_I32_I32 l.and, 0x4c70f07c, 0xb38f0f83 TEST_INST_I32_I32 l.and, 0x4c70f07c, 0xc4c70f07 TEST_INST_I32_I32 l.and, 0xb38f0f83, 0x38f0f83b /* Test the l.andi instruction with a range of operands. */ TEST_INST_I32_I16 l.andi, 0x00000000, 0x0000 TEST_INST_I32_I16 l.andi, 0xffffffff, 0xffff TEST_INST_I32_I16 l.andi, 0xaaaaaaaa, 0x0000 TEST_INST_I32_I16 l.andi, 0xaaaaaaaa, 0xaaaa TEST_INST_I32_I16 l.andi, 0x55555555, 0x0000 TEST_INST_I32_I16 l.andi, 0x55555555, 0x5555 TEST_INST_I32_I16 l.andi, 0xaaaaaaaa, 0x5555 TEST_INST_I32_I16 l.andi, 0x4c70f07c, 0x0f83 TEST_INST_I32_I16 l.andi, 0x4c70f07c, 0x0f07 TEST_INST_I32_I16 l.andi, 0xb38f0f83, 0xf83b POP LINK_REGISTER_R9 RETURN_TO_LINK_REGISTER_R9