This commit was manufactured by cvs2svn to create branch
'cagney_writestrings-20030508-branch'.
Sprout from jimb-ppc64-linux-20030509-branch 2003-05-09 16:41:43 UTC nobody 'This commit was manufactured by cvs2svn to create branch 'jimb-'
Cherrypick from master 2003-05-09 11:35:35 UTC Alan Modra <amodra@gmail.com> ' * cpu-arm.c (arm_check_note): Warning fix.':
bfd/ChangeLog
bfd/elf32-s390.c
bfd/elf64-s390.c
Delete:
COPYING.LIBGLOSS
sim/testsuite/sim/arm/adc.cgs
sim/testsuite/sim/arm/add.cgs
sim/testsuite/sim/arm/allinsn.exp
sim/testsuite/sim/arm/and.cgs
sim/testsuite/sim/arm/b.cgs
sim/testsuite/sim/arm/bic.cgs
sim/testsuite/sim/arm/bl.cgs
sim/testsuite/sim/arm/bx.cgs
sim/testsuite/sim/arm/cmn.cgs
sim/testsuite/sim/arm/cmp.cgs
sim/testsuite/sim/arm/eor.cgs
sim/testsuite/sim/arm/hello.ms
sim/testsuite/sim/arm/iwmmxt/iwmmxt.exp
sim/testsuite/sim/arm/iwmmxt/tbcst.cgs
sim/testsuite/sim/arm/iwmmxt/testutils.inc
sim/testsuite/sim/arm/iwmmxt/textrm.cgs
sim/testsuite/sim/arm/iwmmxt/tinsr.cgs
sim/testsuite/sim/arm/iwmmxt/tmia.cgs
sim/testsuite/sim/arm/iwmmxt/tmiaph.cgs
sim/testsuite/sim/arm/iwmmxt/tmiaxy.cgs
sim/testsuite/sim/arm/iwmmxt/tmovmsk.cgs
sim/testsuite/sim/arm/iwmmxt/wacc.cgs
sim/testsuite/sim/arm/iwmmxt/wadd.cgs
sim/testsuite/sim/arm/iwmmxt/waligni.cgs
sim/testsuite/sim/arm/iwmmxt/walignr.cgs
sim/testsuite/sim/arm/iwmmxt/wand.cgs
sim/testsuite/sim/arm/iwmmxt/wandn.cgs
sim/testsuite/sim/arm/iwmmxt/wavg2.cgs
sim/testsuite/sim/arm/iwmmxt/wcmpeq.cgs
sim/testsuite/sim/arm/iwmmxt/wcmpgt.cgs
sim/testsuite/sim/arm/iwmmxt/wmac.cgs
sim/testsuite/sim/arm/iwmmxt/wmadd.cgs
sim/testsuite/sim/arm/iwmmxt/wmax.cgs
sim/testsuite/sim/arm/iwmmxt/wmin.cgs
sim/testsuite/sim/arm/iwmmxt/wmov.cgs
sim/testsuite/sim/arm/iwmmxt/wmul.cgs
sim/testsuite/sim/arm/iwmmxt/wor.cgs
sim/testsuite/sim/arm/iwmmxt/wpack.cgs
sim/testsuite/sim/arm/iwmmxt/wror.cgs
sim/testsuite/sim/arm/iwmmxt/wsad.cgs
sim/testsuite/sim/arm/iwmmxt/wshufh.cgs
sim/testsuite/sim/arm/iwmmxt/wsll.cgs
sim/testsuite/sim/arm/iwmmxt/wsra.cgs
sim/testsuite/sim/arm/iwmmxt/wsrl.cgs
sim/testsuite/sim/arm/iwmmxt/wsub.cgs
sim/testsuite/sim/arm/iwmmxt/wunpckeh.cgs
sim/testsuite/sim/arm/iwmmxt/wunpckel.cgs
sim/testsuite/sim/arm/iwmmxt/wunpckih.cgs
sim/testsuite/sim/arm/iwmmxt/wunpckil.cgs
sim/testsuite/sim/arm/iwmmxt/wxor.cgs
sim/testsuite/sim/arm/iwmmxt/wzero.cgs
sim/testsuite/sim/arm/ldm.cgs
sim/testsuite/sim/arm/ldr.cgs
sim/testsuite/sim/arm/ldrb.cgs
sim/testsuite/sim/arm/ldrh.cgs
sim/testsuite/sim/arm/ldrsb.cgs
sim/testsuite/sim/arm/ldrsh.cgs
sim/testsuite/sim/arm/misaligned1.ms
sim/testsuite/sim/arm/misaligned2.ms
sim/testsuite/sim/arm/misaligned3.ms
sim/testsuite/sim/arm/misc.exp
sim/testsuite/sim/arm/mla.cgs
sim/testsuite/sim/arm/mov.cgs
sim/testsuite/sim/arm/mrs.cgs
sim/testsuite/sim/arm/msr.cgs
sim/testsuite/sim/arm/mul.cgs
sim/testsuite/sim/arm/mvn.cgs
sim/testsuite/sim/arm/orr.cgs
sim/testsuite/sim/arm/rsb.cgs
sim/testsuite/sim/arm/rsc.cgs
sim/testsuite/sim/arm/sbc.cgs
sim/testsuite/sim/arm/smlal.cgs
sim/testsuite/sim/arm/smull.cgs
sim/testsuite/sim/arm/stm.cgs
sim/testsuite/sim/arm/str.cgs
sim/testsuite/sim/arm/strb.cgs
sim/testsuite/sim/arm/strh.cgs
sim/testsuite/sim/arm/sub.cgs
sim/testsuite/sim/arm/swi.cgs
sim/testsuite/sim/arm/swp.cgs
sim/testsuite/sim/arm/swpb.cgs
sim/testsuite/sim/arm/teq.cgs
sim/testsuite/sim/arm/testutils.inc
sim/testsuite/sim/arm/thumb/adc.cgs
sim/testsuite/sim/arm/thumb/add-hd-hs.cgs
sim/testsuite/sim/arm/thumb/add-hd-rs.cgs
sim/testsuite/sim/arm/thumb/add-rd-hs.cgs
sim/testsuite/sim/arm/thumb/add-sp.cgs
sim/testsuite/sim/arm/thumb/add.cgs
sim/testsuite/sim/arm/thumb/addi.cgs
sim/testsuite/sim/arm/thumb/addi8.cgs
sim/testsuite/sim/arm/thumb/allthumb.exp
sim/testsuite/sim/arm/thumb/and.cgs
sim/testsuite/sim/arm/thumb/asr.cgs
sim/testsuite/sim/arm/thumb/b.cgs
sim/testsuite/sim/arm/thumb/bcc.cgs
sim/testsuite/sim/arm/thumb/bcs.cgs
sim/testsuite/sim/arm/thumb/beq.cgs
sim/testsuite/sim/arm/thumb/bge.cgs
sim/testsuite/sim/arm/thumb/bgt.cgs
sim/testsuite/sim/arm/thumb/bhi.cgs
sim/testsuite/sim/arm/thumb/bic.cgs
sim/testsuite/sim/arm/thumb/bl-hi.cgs
sim/testsuite/sim/arm/thumb/bl-lo.cgs
sim/testsuite/sim/arm/thumb/ble.cgs
sim/testsuite/sim/arm/thumb/bls.cgs
sim/testsuite/sim/arm/thumb/blt.cgs
sim/testsuite/sim/arm/thumb/bmi.cgs
sim/testsuite/sim/arm/thumb/bne.cgs
sim/testsuite/sim/arm/thumb/bpl.cgs
sim/testsuite/sim/arm/thumb/bvc.cgs
sim/testsuite/sim/arm/thumb/bvs.cgs
sim/testsuite/sim/arm/thumb/bx-hs.cgs
sim/testsuite/sim/arm/thumb/bx-rs.cgs
sim/testsuite/sim/arm/thumb/cmn.cgs
sim/testsuite/sim/arm/thumb/cmp-hd-hs.cgs
sim/testsuite/sim/arm/thumb/cmp-hd-rs.cgs
sim/testsuite/sim/arm/thumb/cmp-rd-hs.cgs
sim/testsuite/sim/arm/thumb/cmp.cgs
sim/testsuite/sim/arm/thumb/eor.cgs
sim/testsuite/sim/arm/thumb/lda-pc.cgs
sim/testsuite/sim/arm/thumb/lda-sp.cgs
sim/testsuite/sim/arm/thumb/ldmia.cgs
sim/testsuite/sim/arm/thumb/ldr-imm.cgs
sim/testsuite/sim/arm/thumb/ldr-pc.cgs
sim/testsuite/sim/arm/thumb/ldr-sprel.cgs
sim/testsuite/sim/arm/thumb/ldr.cgs
sim/testsuite/sim/arm/thumb/ldrb-imm.cgs
sim/testsuite/sim/arm/thumb/ldrb.cgs
sim/testsuite/sim/arm/thumb/ldrh-imm.cgs
sim/testsuite/sim/arm/thumb/ldrh.cgs
sim/testsuite/sim/arm/thumb/ldsb.cgs
sim/testsuite/sim/arm/thumb/ldsh.cgs
sim/testsuite/sim/arm/thumb/lsl.cgs
sim/testsuite/sim/arm/thumb/lsr.cgs
sim/testsuite/sim/arm/thumb/mov-hd-hs.cgs
sim/testsuite/sim/arm/thumb/mov-hd-rs.cgs
sim/testsuite/sim/arm/thumb/mov-rd-hs.cgs
sim/testsuite/sim/arm/thumb/mov.cgs
sim/testsuite/sim/arm/thumb/mul.cgs
sim/testsuite/sim/arm/thumb/mvn.cgs
sim/testsuite/sim/arm/thumb/neg.cgs
sim/testsuite/sim/arm/thumb/orr.cgs
sim/testsuite/sim/arm/thumb/pop-pc.cgs
sim/testsuite/sim/arm/thumb/pop.cgs
sim/testsuite/sim/arm/thumb/push-lr.cgs
sim/testsuite/sim/arm/thumb/push.cgs
sim/testsuite/sim/arm/thumb/ror.cgs
sim/testsuite/sim/arm/thumb/sbc.cgs
sim/testsuite/sim/arm/thumb/stmia.cgs
sim/testsuite/sim/arm/thumb/str-imm.cgs
sim/testsuite/sim/arm/thumb/str-sprel.cgs
sim/testsuite/sim/arm/thumb/str.cgs
sim/testsuite/sim/arm/thumb/strb-imm.cgs
sim/testsuite/sim/arm/thumb/strb.cgs
sim/testsuite/sim/arm/thumb/strh-imm.cgs
sim/testsuite/sim/arm/thumb/strh.cgs
sim/testsuite/sim/arm/thumb/sub-sp.cgs
sim/testsuite/sim/arm/thumb/sub.cgs
sim/testsuite/sim/arm/thumb/subi.cgs
sim/testsuite/sim/arm/thumb/subi8.cgs
sim/testsuite/sim/arm/thumb/swi.cgs
sim/testsuite/sim/arm/thumb/testutils.inc
sim/testsuite/sim/arm/thumb/tst.cgs
sim/testsuite/sim/arm/tst.cgs
sim/testsuite/sim/arm/umlal.cgs
sim/testsuite/sim/arm/umull.cgs
sim/testsuite/sim/arm/xscale/blx.cgs
sim/testsuite/sim/arm/xscale/mia.cgs
sim/testsuite/sim/arm/xscale/miaph.cgs
sim/testsuite/sim/arm/xscale/miaxy.cgs
sim/testsuite/sim/arm/xscale/mra.cgs
sim/testsuite/sim/arm/xscale/testutils.inc
sim/testsuite/sim/arm/xscale/xscale.exp
sim/testsuite/sim/h8300/ChangeLog
sim/testsuite/sim/h8300/add.b.s
sim/testsuite/sim/h8300/add.l.s
sim/testsuite/sim/h8300/add.w.s
sim/testsuite/sim/h8300/adds.s
sim/testsuite/sim/h8300/addx.s
sim/testsuite/sim/h8300/allinsn.exp
sim/testsuite/sim/h8300/and.b.s
sim/testsuite/sim/h8300/and.l.s
sim/testsuite/sim/h8300/and.w.s
sim/testsuite/sim/h8300/bfld.s
sim/testsuite/sim/h8300/bra.s
sim/testsuite/sim/h8300/brabc.s
sim/testsuite/sim/h8300/bset.s
sim/testsuite/sim/h8300/cmp.b.s
sim/testsuite/sim/h8300/cmp.l.s
sim/testsuite/sim/h8300/cmp.w.s
sim/testsuite/sim/h8300/daa.s
sim/testsuite/sim/h8300/das.s
sim/testsuite/sim/h8300/dec.s
sim/testsuite/sim/h8300/ext.l.s
sim/testsuite/sim/h8300/ext.w.s
sim/testsuite/sim/h8300/inc.s
sim/testsuite/sim/h8300/jmp.s
sim/testsuite/sim/h8300/ldc.s
sim/testsuite/sim/h8300/mac.s
sim/testsuite/sim/h8300/mov.b.s
sim/testsuite/sim/h8300/mov.l.s
sim/testsuite/sim/h8300/mov.w.s
sim/testsuite/sim/h8300/movmd.s
sim/testsuite/sim/h8300/movsd.s
sim/testsuite/sim/h8300/neg.s
sim/testsuite/sim/h8300/nop.s
sim/testsuite/sim/h8300/not.s
sim/testsuite/sim/h8300/or.b.s
sim/testsuite/sim/h8300/or.l.s
sim/testsuite/sim/h8300/or.w.s
sim/testsuite/sim/h8300/rotl.s
sim/testsuite/sim/h8300/rotr.s
sim/testsuite/sim/h8300/rotxl.s
sim/testsuite/sim/h8300/rotxr.s
sim/testsuite/sim/h8300/shal.s
sim/testsuite/sim/h8300/shar.s
sim/testsuite/sim/h8300/shll.s
sim/testsuite/sim/h8300/shlr.s
sim/testsuite/sim/h8300/stc.s
sim/testsuite/sim/h8300/sub.b.s
sim/testsuite/sim/h8300/sub.l.s
sim/testsuite/sim/h8300/sub.w.s
sim/testsuite/sim/h8300/testutils.inc
sim/testsuite/sim/h8300/xor.b.s
sim/testsuite/sim/h8300/xor.l.s
sim/testsuite/sim/h8300/xor.w.sdiff --git a/COPYING.LIBGLOSS b/COPYING.LIBGLOSS
deleted file mode 100644
index 741bc2f..0000000
--- a/COPYING.LIBGLOSS
+++ /dev/null
@@ -1,297 +0,0 @@
-The libgloss subdirectory is a collection of software from several sources.
-Each have their own copyrights embedded in each file that they concern.
-
-(1) University of California, Berkeley
-
-[1a]
-
-Copyright (c) 1990 The Regents of the University of California.
-All rights reserved.
-
-Redistribution and use in source and binary forms are permitted
-provided that the above copyright notice and this paragraph are
-duplicated in all such forms and that any documentation,
-and other materials related to such distribution and use
-acknowledge that the software was developed
-by the University of California, Berkeley. The name of the
-University may not be used to endorse or promote products derived
-from this software without specific prior written permission.
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-[1b]
-
-Copyright (c) 1991, 2000 The Regents of the University of California.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. All advertising materials mentioning features or use of this software
- must display the following acknowledgement:
- This product includes software developed by the University of
- California, Berkeley and its contributors.
-4. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-[1c]
-
-Copyright (c) 1991, 1998, 2001 The Regents of the University of California.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. [rescinded 22 July 1999]
-4. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
--------------------------------------------------------------
- Please note that in some of the above alternate licenses, there is a
- statement regarding that acknowledgement must be made in any
- advertising materials for products using the code. This restriction
- no longer applies due to the following license change:
-
- ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change
-
- In some cases the defunct clause has been removed in modified newlib code and
- in some cases, the clause has been left as-is.
--------------------------------------------------------------
-
-(2) DJ Delorie
-
-Copyright (C) 1993 DJ Delorie
-All rights reserved.
-
-Redistribution and use in source and binary forms is permitted
-provided that the above copyright notice and following paragraph are
-duplicated in all such forms.
-
-This file is distributed WITHOUT ANY WARRANTY; without even the implied
-warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-(3) GPL (fr30 directory only)
-
-Copyright (C) 1998 Free Software Foundation, Inc.
-Contributed by Cygnus Solutions.
-
-This file is part of GNU CC.
-
-GNU CC 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 2, or (at your option)
-any later version.
-
-GNU CC 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 GNU CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.
-
-(4) Advanced Micro Devices
-
-Copyright 1989, 1990 Advanced Micro Devices, Inc.
-
-This software is the property of Advanced Micro Devices, Inc (AMD) which
-specifically grants the user the right to modify, use and distribute this
-software provided this notice is not removed or altered. All other rights
-are reserved by AMD.
-
-AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS
-SOFTWARE. IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL
-DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR
-USE OF THIS SOFTWARE.
-
-So that all may benefit from your experience, please report any problems
-or suggestions about this software to the 29K Technical Support Center at
-800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131 in the UK, or
-0031-11-1129 in Japan, toll free. The direct dial number is 512-462-4118.
-
-Advanced Micro Devices, Inc.
-29K Support Products
-Mail Stop 573
-5900 E. Ben White Blvd.
-Austin, TX 78741
-800-292-9263
-
-(5) Array Technology Corporation and MIPS (mips/lsi33k-stub.h)
-
-COPYRIGHT (C) 1991, 1992 ARRAY TECHNOLOGY CORPORATION
- All Rights Reserved
-
-This software is confidential information which is proprietary to and
-a trade secret of ARRAY Technology Corporation. Use, duplication, or
-disclosure is subject to the terms of a separate license agreement.
-
-Copyright 1985 by MIPS Computer Systems, Inc.
-
-(6) University of Utah and the Computer Systems Laboratory (CSL)
- [applies only to hppa*-*-pro* targets]
-
-Copyright (c) 1990,1994 The University of Utah and
-the Computer Systems Laboratory (CSL). All rights reserved.
-
-Permission to use, copy, modify and distribute this software is hereby
-granted provided that (1) source code retains these copyright, permission,
-and disclaimer notices, and (2) redistributions including binaries
-reproduce the notices in supporting documentation, and (3) all advertising
-materials mentioning features or use of this software display the following
-acknowledgement: ``This product includes software developed by the
-Computer Systems Laboratory at the University of Utah.''
-
-THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
-IS" CONDITION. THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
-ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
-
-CSL requests users of this software to return to csl-dist@cs.utah.edu any
-improvements that they make and grant CSL redistribution rights.
-
-(7) Sun Microsystems
-
-Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
-
-Developed at SunPro, a Sun Microsystems, Inc. business.
-Permission to use, copy, modify, and distribute this
-software is freely granted, provided that this notice
-is preserved.
-
-(8) Hewlett Packard
-
-(c) Copyright 1986 HEWLETT-PACKARD COMPANY
-
-To anyone who acknowledges that this file is provided "AS IS"
-without any express or implied warranty:
- permission to use, copy, modify, and distribute this file
-for any purpose is hereby granted without fee, provided that
-the above copyright notice and this notice appears in all
-copies, and that the name of Hewlett-Packard Company not be
-used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-Hewlett-Packard Company makes no representations about the
-suitability of this software for any purpose.
-
-(9) Hans-Peter Nilsson
-
-Copyright (C) 2001 Hans-Peter Nilsson
-
-Permission to use, copy, modify, and distribute this software is
-freely granted, provided that the above copyright notice, this notice
-and the following disclaimer are preserved with no changes.
-
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.
-
-(10) No Copyright
-
-THIS SOFTWARE IS NOT COPYRIGHTED
-
-(11) Cygnus Support / Cygnus Solutions
-
-Copyright (c) 1995, 1996, 1997, 1998, 1999 Cygnus Support
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
----------------------------------------------------------------
- Please note that the copyright above may be used with the name
- Cygnus Solutions instead of Cygnus Support. Both names should
- be considered interchangeable. These copyrights are now owned
- by Red Hat Incorporated.
----------------------------------------------------------------
-
-(12) Red Hat Incorporated
-
-Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-(13) Default copyright
-
-Unless otherwise stated in each remaining libgloss file, the remaining
-files in the libgloss subdirectory are governed by the following copyright.
-
-Copyright (c) 1994, 1997, 2001, 2002 Red Hat Incorporated.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- The name of Red Hat Incorporated may not be used to endorse
- or promote products derived from this software without specific
- prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 0cf4ea3..b9fb970 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,29 +1,3 @@
-2003-05-09 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * elf32-s390.c (allocate_dynrelocs, elf_s390_relocate_section):
- Fix WILL_CALL_FINISH_DYNAMIC_SYMBOL call.
- (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO.
- * elf64-s390.c: Likewise.
-
-2003-05-09 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * elf32-s390.c (ELIMINATE_COPY_RELOCS): Define as one.
- (elf_s390_adjust_dynamic_symbol): For weak symbols, copy
- ELF_LINK_NON_GOT_REF from weakdef.
- (elf_s390_copy_indirect_symbol): Test whether the weakdef sym has
- already been adjusted before treating it specially.
- * el64-s390.c: Likwise.
-
-2003-05-09 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * elf32-s390.c (allocate_dynrelocs): For undef weak syms with
- non-default visibility, a) don't make them dynamic, b) discard
- space for dynamic relocs.
- (elf_s390_relocate_section): Initialize the GOT entries and skip
- R_390_{8,16,32}/R_390_PC{16,16DBL,32DBL,32} for weak undefined
- symbols with non-default visibility.
- * elf64-s390.c: Likewise.
-
2003-05-09 Alan Modra <amodra@bigpond.net.au>
* cpu-arm.c (arm_check_note): Warning fix.
diff --git a/bfd/elf32-s390.c b/bfd/elf32-s390.c
index 9475f60..857b7a0 100644
--- a/bfd/elf32-s390.c
+++ b/bfd/elf32-s390.c
@@ -383,12 +383,6 @@
#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
-/* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid
- copying dynamic variables from a shared lib into an app's dynbss
- section, and instead use a dynamic relocation to point into the
- shared lib. */
-#define ELIMINATE_COPY_RELOCS 1
-
/* The size in bytes of the first entry in the procedure linkage table. */
#define PLT_FIRST_ENTRY_SIZE 32
/* The size in bytes of an entry in the procedure linkage table. */
@@ -834,18 +828,7 @@
eind->tls_type = GOT_UNKNOWN;
}
- if (ELIMINATE_COPY_RELOCS
- && ind->root.type != bfd_link_hash_indirect
- && (dir->elf_link_hash_flags & ELF_LINK_HASH_DYNAMIC_ADJUSTED) != 0)
- /* If called to transfer flags for a weakdef during processing
- of elf_adjust_dynamic_symbol, don't copy ELF_LINK_NON_GOT_REF.
- We clear it ourselves for ELIMINATE_COPY_RELOCS. */
- dir->elf_link_hash_flags |=
- (ind->elf_link_hash_flags & (ELF_LINK_HASH_REF_DYNAMIC
- | ELF_LINK_HASH_REF_REGULAR
- | ELF_LINK_HASH_REF_REGULAR_NONWEAK));
- else
- _bfd_elf_link_hash_copy_indirect (bed, dir, ind);
+ _bfd_elf_link_hash_copy_indirect (bed, dir, ind);
}
static int
@@ -1166,8 +1149,7 @@
|| h->root.type == bfd_link_hash_defweak
|| (h->elf_link_hash_flags
& ELF_LINK_HASH_DEF_REGULAR) == 0))))
- || (ELIMINATE_COPY_RELOCS
- && !info->shared
+ || (!info->shared
&& (sec->flags & SEC_ALLOC) != 0
&& h != NULL
&& (h->root.type == bfd_link_hash_defweak
@@ -1498,6 +1480,8 @@
struct elf_link_hash_entry *h;
{
struct elf_s390_link_hash_table *htab;
+ struct elf_s390_link_hash_entry * eh;
+ struct elf_s390_dyn_relocs *p;
asection *s;
unsigned int power_of_two;
@@ -1543,10 +1527,6 @@
|| h->weakdef->root.type == bfd_link_hash_defweak);
h->root.u.def.section = h->weakdef->root.u.def.section;
h->root.u.def.value = h->weakdef->root.u.def.value;
- if (ELIMINATE_COPY_RELOCS || info->nocopyreloc)
- h->elf_link_hash_flags
- = ((h->elf_link_hash_flags & ~ELF_LINK_NON_GOT_REF)
- | (h->weakdef->elf_link_hash_flags & ELF_LINK_NON_GOT_REF));
return TRUE;
}
@@ -1572,26 +1552,20 @@
return TRUE;
}
- if (ELIMINATE_COPY_RELOCS)
+ eh = (struct elf_s390_link_hash_entry *) h;
+ for (p = eh->dyn_relocs; p != NULL; p = p->next)
{
- struct elf_s390_link_hash_entry * eh;
- struct elf_s390_dyn_relocs *p;
+ s = p->sec->output_section;
+ if (s != NULL && (s->flags & SEC_READONLY) != 0)
+ break;
+ }
- eh = (struct elf_s390_link_hash_entry *) h;
- for (p = eh->dyn_relocs; p != NULL; p = p->next)
- {
- s = p->sec->output_section;
- if (s != NULL && (s->flags & SEC_READONLY) != 0)
- break;
- }
-
- /* If we didn't find any dynamic relocs in read-only sections, then
- we'll be keeping the dynamic relocs and avoiding the copy reloc. */
- if (p == NULL)
- {
- h->elf_link_hash_flags &= ~ELF_LINK_NON_GOT_REF;
- return TRUE;
- }
+ /* If we didn't find any dynamic relocs in read-only sections, then
+ we'll be keeping the dynamic relocs and avoiding the copy reloc. */
+ if (p == NULL)
+ {
+ h->elf_link_hash_flags &= ~ELF_LINK_NON_GOT_REF;
+ return TRUE;
}
/* We must allocate the symbol in our .dynbss section, which will
@@ -1644,9 +1618,9 @@
will be called from elflink.h. If elflink.h doesn't call our
finish_dynamic_symbol routine, we'll need to do something about
initializing any .plt and .got entries in elf_s390_relocate_section. */
-#define WILL_CALL_FINISH_DYNAMIC_SYMBOL(DYN, SHARED, H) \
+#define WILL_CALL_FINISH_DYNAMIC_SYMBOL(DYN, INFO, H) \
((DYN) \
- && ((SHARED) \
+ && ((INFO)->shared \
|| ((H)->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0) \
&& ((H)->dynindx != -1 \
|| ((H)->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0))
@@ -1677,9 +1651,7 @@
htab = elf_s390_hash_table (info);
if (htab->elf.dynamic_sections_created
- && h->plt.refcount > 0
- && (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
- || h->root.type != bfd_link_hash_undefweak))
+ && h->plt.refcount > 0)
{
/* Make sure this symbol is output as a dynamic symbol.
Undefined weak syms won't yet be marked as dynamic. */
@@ -1690,8 +1662,7 @@
return FALSE;
}
- if (info->shared
- || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, 0, h))
+ if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, info, h))
{
asection *s = htab->splt;
@@ -1787,10 +1758,7 @@
htab->srelgot->_raw_size += sizeof (Elf32_External_Rela);
else if (tls_type == GOT_TLS_GD)
htab->srelgot->_raw_size += 2 * sizeof (Elf32_External_Rela);
- else if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
- || h->root.type != bfd_link_hash_undefweak)
- && (info->shared
- || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h)))
+ else if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info, h))
htab->srelgot->_raw_size += sizeof (Elf32_External_Rela);
}
else
@@ -1824,14 +1792,8 @@
pp = &p->next;
}
}
-
- /* Also discard relocs on undefined weak syms with non-default
- visibility. */
- if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
- && h->root.type == bfd_link_hash_undefweak)
- eh->dyn_relocs = NULL;
}
- else if (ELIMINATE_COPY_RELOCS)
+ else
{
/* For the non-shared case, discard space for relocs against
symbols which turn out to need copy relocs or are not
@@ -2339,14 +2301,12 @@
off = h->got.offset;
dyn = htab->elf.dynamic_sections_created;
- if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h)
+ if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info, h)
|| (info->shared
&& (info->symbolic
|| h->dynindx == -1
|| (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL))
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR))
- || (ELF_ST_VISIBILITY (h->other)
- && h->root.type == bfd_link_hash_undefweak))
+ && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)))
{
/* This is actually a static link, or it is a
-Bsymbolic link and the symbol is defined
@@ -2511,9 +2471,6 @@
break;
if ((info->shared
- && (h == NULL
- || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
- || h->root.type != bfd_link_hash_undefweak)
&& ((r_type != R_390_PC16
&& r_type != R_390_PC16DBL
&& r_type != R_390_PC32DBL
@@ -2523,8 +2480,7 @@
&& (! info->symbolic
|| (h->elf_link_hash_flags
& ELF_LINK_HASH_DEF_REGULAR) == 0))))
- || (ELIMINATE_COPY_RELOCS
- && !info->shared
+ || (!info->shared
&& h != NULL
&& h->dynindx != -1
&& (h->elf_link_hash_flags & ELF_LINK_NON_GOT_REF) == 0
diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c
index 98555f2..37fcf72 100644
--- a/bfd/elf64-s390.c
+++ b/bfd/elf64-s390.c
@@ -405,12 +405,6 @@
#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
-/* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid
- copying dynamic variables from a shared lib into an app's dynbss
- section, and instead use a dynamic relocation to point into the
- shared lib. */
-#define ELIMINATE_COPY_RELOCS 1
-
/* The size in bytes of the first entry in the procedure linkage table. */
#define PLT_FIRST_ENTRY_SIZE 32
/* The size in bytes of an entry in the procedure linkage table. */
@@ -788,18 +782,7 @@
eind->tls_type = GOT_UNKNOWN;
}
- if (ELIMINATE_COPY_RELOCS
- && ind->root.type != bfd_link_hash_indirect
- && (dir->elf_link_hash_flags & ELF_LINK_HASH_DYNAMIC_ADJUSTED) != 0)
- /* If called to transfer flags for a weakdef during processing
- of elf_adjust_dynamic_symbol, don't copy ELF_LINK_NON_GOT_REF.
- We clear it ourselves for ELIMINATE_COPY_RELOCS. */
- dir->elf_link_hash_flags |=
- (ind->elf_link_hash_flags & (ELF_LINK_HASH_REF_DYNAMIC
- | ELF_LINK_HASH_REF_REGULAR
- | ELF_LINK_HASH_REF_REGULAR_NONWEAK));
- else
- _bfd_elf_link_hash_copy_indirect (bed, dir, ind);
+ _bfd_elf_link_hash_copy_indirect (bed, dir, ind);
}
static int
@@ -1131,8 +1114,7 @@
|| h->root.type == bfd_link_hash_defweak
|| (h->elf_link_hash_flags
& ELF_LINK_HASH_DEF_REGULAR) == 0))))
- || (ELIMINATE_COPY_RELOCS
- && !info->shared
+ || (!info->shared
&& (sec->flags & SEC_ALLOC) != 0
&& h != NULL
&& (h->root.type == bfd_link_hash_defweak
@@ -1470,6 +1452,8 @@
struct elf_link_hash_entry *h;
{
struct elf_s390_link_hash_table *htab;
+ struct elf_s390_link_hash_entry * eh;
+ struct elf_s390_dyn_relocs *p;
asection *s;
unsigned int power_of_two;
@@ -1515,10 +1499,6 @@
|| h->weakdef->root.type == bfd_link_hash_defweak);
h->root.u.def.section = h->weakdef->root.u.def.section;
h->root.u.def.value = h->weakdef->root.u.def.value;
- if (ELIMINATE_COPY_RELOCS || info->nocopyreloc)
- h->elf_link_hash_flags
- = ((h->elf_link_hash_flags & ~ELF_LINK_NON_GOT_REF)
- | (h->weakdef->elf_link_hash_flags & ELF_LINK_NON_GOT_REF));
return TRUE;
}
@@ -1544,26 +1524,20 @@
return TRUE;
}
- if (ELIMINATE_COPY_RELOCS)
+ eh = (struct elf_s390_link_hash_entry *) h;
+ for (p = eh->dyn_relocs; p != NULL; p = p->next)
{
- struct elf_s390_link_hash_entry * eh;
- struct elf_s390_dyn_relocs *p;
+ s = p->sec->output_section;
+ if (s != NULL && (s->flags & SEC_READONLY) != 0)
+ break;
+ }
- eh = (struct elf_s390_link_hash_entry *) h;
- for (p = eh->dyn_relocs; p != NULL; p = p->next)
- {
- s = p->sec->output_section;
- if (s != NULL && (s->flags & SEC_READONLY) != 0)
- break;
- }
-
- /* If we didn't find any dynamic relocs in read-only sections, then
- we'll be keeping the dynamic relocs and avoiding the copy reloc. */
- if (p == NULL)
- {
- h->elf_link_hash_flags &= ~ELF_LINK_NON_GOT_REF;
- return TRUE;
- }
+ /* If we didn't find any dynamic relocs in read-only sections, then
+ we'll be keeping the dynamic relocs and avoiding the copy reloc. */
+ if (p == NULL)
+ {
+ h->elf_link_hash_flags &= ~ELF_LINK_NON_GOT_REF;
+ return TRUE;
}
/* We must allocate the symbol in our .dynbss section, which will
@@ -1616,9 +1590,9 @@
will be called from elflink.h. If elflink.h doesn't call our
finish_dynamic_symbol routine, we'll need to do something about
initializing any .plt and .got entries in elf_s390_relocate_section. */
-#define WILL_CALL_FINISH_DYNAMIC_SYMBOL(DYN, SHARED, H) \
+#define WILL_CALL_FINISH_DYNAMIC_SYMBOL(DYN, INFO, H) \
((DYN) \
- && ((SHARED) \
+ && ((INFO)->shared \
|| ((H)->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0) \
&& ((H)->dynindx != -1 \
|| ((H)->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0))
@@ -1649,9 +1623,7 @@
htab = elf_s390_hash_table (info);
if (htab->elf.dynamic_sections_created
- && h->plt.refcount > 0
- && (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
- || h->root.type != bfd_link_hash_undefweak))
+ && h->plt.refcount > 0)
{
/* Make sure this symbol is output as a dynamic symbol.
Undefined weak syms won't yet be marked as dynamic. */
@@ -1662,8 +1634,7 @@
return FALSE;
}
- if (info->shared
- || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, 0, h))
+ if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, info, h))
{
asection *s = htab->splt;
@@ -1759,10 +1730,7 @@
htab->srelgot->_raw_size += sizeof (Elf64_External_Rela);
else if (tls_type == GOT_TLS_GD)
htab->srelgot->_raw_size += 2 * sizeof (Elf64_External_Rela);
- else if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
- || h->root.type != bfd_link_hash_undefweak)
- && (info->shared
- || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h)))
+ else if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info, h))
htab->srelgot->_raw_size += sizeof (Elf64_External_Rela);
}
else
@@ -1796,14 +1764,8 @@
pp = &p->next;
}
}
-
- /* Also discard relocs on undefined weak syms with non-default
- visibility. */
- if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
- && h->root.type == bfd_link_hash_undefweak)
- eh->dyn_relocs = NULL;
}
- else if (ELIMINATE_COPY_RELOCS)
+ else
{
/* For the non-shared case, discard space for relocs against
symbols which turn out to need copy relocs or are not
@@ -2312,14 +2274,12 @@
off = h->got.offset;
dyn = htab->elf.dynamic_sections_created;
- if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h)
+ if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info, h)
|| (info->shared
&& (info->symbolic
|| h->dynindx == -1
|| (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL))
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR))
- || (ELF_ST_VISIBILITY (h->other)
- && h->root.type == bfd_link_hash_undefweak))
+ && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)))
{
/* This is actually a static link, or it is a
-Bsymbolic link and the symbol is defined
@@ -2489,9 +2449,6 @@
break;
if ((info->shared
- && (h == NULL
- || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
- || h->root.type != bfd_link_hash_undefweak)
&& ((r_type != R_390_PC16
&& r_type != R_390_PC16DBL
&& r_type != R_390_PC32
@@ -2502,8 +2459,7 @@
&& (! info->symbolic
|| (h->elf_link_hash_flags
& ELF_LINK_HASH_DEF_REGULAR) == 0))))
- || (ELIMINATE_COPY_RELOCS
- && !info->shared
+ || (!info->shared
&& h != NULL
&& h->dynindx != -1
&& (h->elf_link_hash_flags & ELF_LINK_NON_GOT_REF) == 0
diff --git a/sim/testsuite/sim/arm/adc.cgs b/sim/testsuite/sim/arm/adc.cgs
deleted file mode 100644
index b6659a1..0000000
--- a/sim/testsuite/sim/arm/adc.cgs
+++ /dev/null
@@ -1,43 +0,0 @@
-# arm testcase for adc
-# mach: all
-
-# ??? Unfinished, more tests needed.
-
- .include "testutils.inc"
-
- start
-
-# adc$cond${set-cc?} $rd,$rn,$imm12
-
- .global adc_imm
-adc_imm:
- mvi_h_gr r4,1
- mvi_h_cnvz 0,0,0,0
- adc r5,r4,#1
- test_h_cnvz 0,0,0,0
- test_h_gr r5,2
-
-# adc$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftimm}
-
- .global adc_reg_imm_shift
-adc_reg_imm_shift:
- mvi_h_gr r4,1
- mvi_h_gr r5,1
- mvi_h_cnvz 0,0,0,0
- adc r6,r4,r5,lsl #2
- test_h_cnvz 0,0,0,0
- test_h_gr r6,5
-
-# adc$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftreg}
-
- .global adc_reg_reg_shift
-adc_reg_reg_shift:
- mvi_h_gr r4,1
- mvi_h_gr r5,1
- mvi_h_gr r6,2
- mvi_h_cnvz 0,0,0,0
- adc r7,r4,r5,lsl r6
- test_h_cnvz 0,0,0,0
- test_h_gr r7,5
-
- pass
diff --git a/sim/testsuite/sim/arm/add.cgs b/sim/testsuite/sim/arm/add.cgs
deleted file mode 100644
index eba32e0..0000000
--- a/sim/testsuite/sim/arm/add.cgs
+++ /dev/null
@@ -1,43 +0,0 @@
-# arm testcase for add
-# mach: all
-
-# ??? Unfinished, more tests needed.
-
- .include "testutils.inc"
-
- start
-
-# add$cond${set-cc?} $rd,$rn,$imm12
-
- .global add_imm
-add_imm:
- mvi_h_gr r4,1
- mvi_h_cnvz 0,0,0,0
- add r5,r4,#1
- test_h_cnvz 0,0,0,0
- test_h_gr r5,2
-
-# add$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftimm}
-
- .global add_reg_imm_shift
-add_reg_imm_shift:
- mvi_h_gr r4,1
- mvi_h_gr r5,1
- mvi_h_cnvz 0,0,0,0
- add r6,r4,r5,lsl #2
- test_h_cnvz 0,0,0,0
- test_h_gr r6,5
-
-# add$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftreg}
-
- .global add_reg_reg_shift
-add_reg_reg_shift:
- mvi_h_gr r4,1
- mvi_h_gr r5,1
- mvi_h_gr r6,2
- mvi_h_cnvz 0,0,0,0
- add r7,r4,r5,lsl r6
- test_h_cnvz 0,0,0,0
- test_h_gr r7,5
-
- pass
diff --git a/sim/testsuite/sim/arm/allinsn.exp b/sim/testsuite/sim/arm/allinsn.exp
deleted file mode 100644
index ec8402f..0000000
--- a/sim/testsuite/sim/arm/allinsn.exp
+++ /dev/null
@@ -1,28 +0,0 @@
-# ARM simulator testsuite.
-
-if { [istarget arm*-*-*] || [istarget xscale*-*-*] } {
- # load support procs (none yet)
- # load_lib cgen.exp
-
- # all machines
- set all_machs "xscale"
-
- if [is_remote host] {
- remote_download host $srcdir/$subdir/testutils.inc
- }
-
- # The .cgs suffix is for "cgen .s".
- foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.cgs]] {
- # If we're only testing specific files and this isn't one of them,
- # skip it.
- if ![runtest_file_p $runtests $src] {
- continue
- }
-
- run_sim_test $src $all_machs
- }
-
- if [is_remote host] {
- remote_file host delete testutils.inc
- }
-}
diff --git a/sim/testsuite/sim/arm/and.cgs b/sim/testsuite/sim/arm/and.cgs
deleted file mode 100644
index cd8f003..0000000
--- a/sim/testsuite/sim/arm/and.cgs
+++ /dev/null
@@ -1,43 +0,0 @@
-# arm testcase for and
-# mach: all
-
-# ??? Unfinished, more tests needed.
-
- .include "testutils.inc"
-
- start
-
-# and$cond${set-cc?} $rd,$rn,$imm12
-
- .global and_imm
-and_imm:
- mvi_h_gr r4,1
- mvi_h_cnvz 0,0,0,0
- and r5,r4,#1
- test_h_cnvz 0,0,0,0
- test_h_gr r5,1
-
-# and$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftimm}
-
- .global and_reg_imm_shift
-and_reg_imm_shift:
- mvi_h_gr r4,1
- mvi_h_gr r5,1
- mvi_h_cnvz 0,0,0,0
- and r6,r4,r5,lsl #1
- test_h_cnvz 0,0,0,0
- test_h_gr r6,0
-
-# and$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftreg}
-
- .global and_reg_reg_shift
-and_reg_reg_shift:
- mvi_h_gr r4,1
- mvi_h_gr r5,1
- mvi_h_gr r6,1
- mvi_h_cnvz 0,0,0,0
- and r7,r4,r5,lsl r6
- test_h_cnvz 0,0,0,0
- test_h_gr r7,0
-
- pass
diff --git a/sim/testsuite/sim/arm/b.cgs b/sim/testsuite/sim/arm/b.cgs
deleted file mode 100644
index 414b963..0000000
--- a/sim/testsuite/sim/arm/b.cgs
+++ /dev/null
@@ -1,261 +0,0 @@
-# arm testcase for b$cond $offset24
-# mach: all
-
-# ??? Still need to test edge cases.
-
- .include "testutils.inc"
-
- start
-
- .global b
-b:
-
-# b foo
-
- b balways1
- fail
-balways1:
-
-# beq foo
-
- mvi_h_gr r4,4
- mvi_h_gr r5,4
- cmp r4,r5
- beq beq1
- fail
-beq1:
- mvi_h_gr r5,5
- cmp r4,r5
- beq beq2
- b beq3
-beq2:
- fail
-beq3:
-
-# bne foo
-
- mvi_h_gr r4,4
- mvi_h_gr r5,5
- cmp r4,r5
- bne bne1
- fail
-bne1:
- mvi_h_gr r5,4
- cmp r4,r5
- bne bne2
- b bne3
-bne2:
- fail
-bne3:
-
-# bcs foo
-
- mvi_h_cnvz 1,0,0,0
- bcs bcs1
- fail
-bcs1:
- mvi_h_cnvz 0,0,0,0
- bcs bcs2
- b bcs3
-bcs2:
- fail
-bcs3:
-
-# bcc foo
-
- mvi_h_cnvz 0,0,0,0
- bcc bcc1
- fail
-bcc1:
- mvi_h_cnvz 1,0,0,0
- bcc bcc2
- b bcc3
-bcc2:
- fail
-bcc3:
-
-# bmi foo
-
- mvi_h_cnvz 0,1,0,0
- bmi bmi1
- fail
-bmi1:
- mvi_h_cnvz 0,0,0,0
- bmi bmi2
- b bmi3
-bmi2:
- fail
-bmi3:
-
-# bpl foo
-
- mvi_h_cnvz 0,0,0,0
- bpl bpl1
- fail
-bpl1:
- mvi_h_cnvz 0,1,0,0
- bpl bpl2
- b bpl3
-bpl2:
- fail
-bpl3:
-
-# bvs foo
-
- mvi_h_cnvz 0,0,1,0
- bvs bvs1
- fail
-bvs1:
- mvi_h_cnvz 0,0,0,0
- bvs bvs2
- b bvs3
-bvs2:
- fail
-bvs3:
-
-# bvc foo
-
- mvi_h_cnvz 0,0,0,0
- bvc bvc1
- fail
-bvc1:
- mvi_h_cnvz 0,0,1,0
- bvc bvc2
- b bvc3
-bvc2:
- fail
-bvc3:
-
-# bhi foo
-
- mvi_h_gr r4,5
- mvi_h_gr r5,4
- cmp r4,r5
- bhi bhi1
- fail
-bhi1:
- mvi_h_gr r5,5
- cmp r4,r5
- bhi bhi2
- b bhi3
-bhi2:
- fail
-bhi3:
- mvi_h_gr r5,6
- cmp r4,r5
- bhi bhi4
- b bhi5
-bhi4:
- fail
-bhi5:
-
-# bls foo
-
- mvi_h_gr r4,4
- mvi_h_gr r5,5
- cmp r4,r5
- bls bls1
- fail
-bls1:
- mvi_h_gr r5,4
- cmp r4,r5
- bls bls2
- fail
-bls2:
- mvi_h_gr r5,3
- cmp r4,r5
- bls bls3
- b bls4
-bls3:
- fail
-bls4:
-
-# bge foo
-
- mvi_h_gr r4,4
- mvi_h_gr r5,4
- cmp r4,r5
- bge bge1
- fail
-bge1:
- mvi_h_gr r5,3
- cmp r4,r5
- bge bge2
- fail
-bge2:
- mvi_h_gr r5,5
- cmp r4,r5
- bge bge3
- b bge4
-bge3:
- fail
-bge4:
-
-# blt foo
-
- mvi_h_gr r4,4
- mvi_h_gr r5,5
- cmp r4,r5
- blt blt1
- fail
-blt1:
- mvi_h_gr r5,4
- cmp r4,r5
- blt blt2
- b blt3
-blt2:
- fail
-blt3:
- mvi_h_gr r5,3
- cmp r4,r5
- blt blt4
- b blt5
-blt4:
- fail
-blt5:
-
-# bgt foo
-
- mvi_h_gr r4,4
- mvi_h_gr r5,3
- cmp r4,r5
- bgt bgt1
- fail
-bgt1:
- mvi_h_gr r5,4
- cmp r4,r5
- bgt bgt2
- b bgt3
-bgt2:
- fail
-bgt3:
- mvi_h_gr r5,5
- cmp r4,r5
- bgt bgt4
- b bgt5
-bgt4:
- fail
-bgt5:
-
-# ble foo
-
- mvi_h_gr r4,4
- mvi_h_gr r5,4
- cmp r4,r5
- ble ble1
- fail
-ble1:
- mvi_h_gr r5,5
- cmp r4,r5
- ble ble2
- fail
-ble2:
- mvi_h_gr r5,3
- cmp r4,r5
- ble ble3
- b ble4
-ble3:
- fail
-ble4:
-
- pass
diff --git a/sim/testsuite/sim/arm/bic.cgs b/sim/testsuite/sim/arm/bic.cgs
deleted file mode 100644
index 37a9b6c..0000000
--- a/sim/testsuite/sim/arm/bic.cgs
+++ /dev/null
@@ -1,43 +0,0 @@
-# arm testcase for bic
-# mach: all
-
-# ??? Unfinished, more tests needed.
-
- .include "testutils.inc"
-
- start
-
-# bic$cond${set-cc?} $rd,$rn,$imm12
-
- .global bic_imm
-bic_imm:
- mvi_h_gr r4,1
- mvi_h_cnvz 0,0,0,0
- bic r5,r4,#0
- test_h_cnvz 0,0,0,0
- test_h_gr r5,1
-
-# bic$cond${set-cc?} $rd,$rn,$rm,${operbic2-shifttype} ${operbic2-shiftimm}
-
- .global bic_reg_imm_shift
-bic_reg_imm_shift:
- mvi_h_gr r4,7
- mvi_h_gr r5,1
- mvi_h_cnvz 0,0,0,0
- bic r6,r4,r5,lsl #1
- test_h_cnvz 0,0,0,0
- test_h_gr r6,5
-
-# bic$cond${set-cc?} $rd,$rn,$rm,${operbic2-shifttype} ${operbic2-shiftreg}
-
- .global bic_reg_reg_shift
-bic_reg_reg_shift:
- mvi_h_gr r4,7
- mvi_h_gr r5,1
- mvi_h_gr r6,1
- mvi_h_cnvz 0,0,0,0
- bic r7,r4,r5,lsl r6
- test_h_cnvz 0,0,0,0
- test_h_gr r7,5
-
- pass
diff --git a/sim/testsuite/sim/arm/bl.cgs b/sim/testsuite/sim/arm/bl.cgs
deleted file mode 100644
index fbc7ef5..0000000
--- a/sim/testsuite/sim/arm/bl.cgs
+++ /dev/null
@@ -1,21 +0,0 @@
-# arm testcase for bl$cond $offset24
-# mach: all
-
- .include "testutils.inc"
-
- start
-
- .global bl
-bl:
- mvi_h_gr r14,0
- bl bl2
-bl1:
- fail
-bl2:
- mvaddr_h_gr r4,bl1
- cmp r14,r4
- beq bl3
- fail
-bl3:
-
- pass
diff --git a/sim/testsuite/sim/arm/bx.cgs b/sim/testsuite/sim/arm/bx.cgs
deleted file mode 100644
index 4c18af4..0000000
--- a/sim/testsuite/sim/arm/bx.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bx$cond $rn
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global bx
-bx:
- bx0 pc
-
- pass
diff --git a/sim/testsuite/sim/arm/cmn.cgs b/sim/testsuite/sim/arm/cmn.cgs
deleted file mode 100644
index 1829fc7..0000000
--- a/sim/testsuite/sim/arm/cmn.cgs
+++ /dev/null
@@ -1,36 +0,0 @@
-# arm testcase for cmn${cond}${set-cc?} $rn,$imm12
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global cmn_imm
-cmn_imm:
- cmn00 pc,0
-
- pass
-# arm testcase for cmn$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftimm}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global cmn_reg_imm_shift
-cmn_reg_imm_shift:
- cmn00 pc,pc,pc,lsl 0
-
- pass
-# arm testcase for cmn$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftreg}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global cmn_reg_reg_shift
-cmn_reg_reg_shift:
- cmn00 pc,pc,pc,lsl pc
-
- pass
diff --git a/sim/testsuite/sim/arm/cmp.cgs b/sim/testsuite/sim/arm/cmp.cgs
deleted file mode 100644
index ab9dd59..0000000
--- a/sim/testsuite/sim/arm/cmp.cgs
+++ /dev/null
@@ -1,36 +0,0 @@
-# arm testcase for cmp${cond}${set-cc?} $rn,$imm12
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global cmp_imm
-cmp_imm:
- cmp00 pc,0
-
- pass
-# arm testcase for cmp$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftimm}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global cmp_reg_imm_shift
-cmp_reg_imm_shift:
- cmp00 pc,pc,pc,lsl 0
-
- pass
-# arm testcase for cmp$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftreg}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global cmp_reg_reg_shift
-cmp_reg_reg_shift:
- cmp00 pc,pc,pc,lsl pc
-
- pass
diff --git a/sim/testsuite/sim/arm/eor.cgs b/sim/testsuite/sim/arm/eor.cgs
deleted file mode 100644
index 5bbb1c6..0000000
--- a/sim/testsuite/sim/arm/eor.cgs
+++ /dev/null
@@ -1,36 +0,0 @@
-# arm testcase for eor$cond${set-cc?} $rd,$rn,$imm12
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global eor_imm
-eor_imm:
- eor00 pc,pc,0
-
- pass
-# arm testcase for eor$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftimm}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global eor_reg_imm_shift
-eor_reg_imm_shift:
- eor00 pc,pc,pc,lsl 0
-
- pass
-# arm testcase for eor$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftreg}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global eor_reg_reg_shift
-eor_reg_reg_shift:
- eor00 pc,pc,pc,lsl pc
-
- pass
diff --git a/sim/testsuite/sim/arm/hello.ms b/sim/testsuite/sim/arm/hello.ms
deleted file mode 100644
index b063c29..0000000
--- a/sim/testsuite/sim/arm/hello.ms
+++ /dev/null
@@ -1,91 +0,0 @@
-# output(): Hello, world.\n
-# mach(): all
-
-# Emit hello world while switching back and forth between arm/thumb.
-# ??? Unfinished
-
- .macro invalid
-# This is "undefined" but it's not properly decoded yet.
- .word 0x07ffffff
-# This is stc which isn't recognized yet.
- stc 0,cr0,[r0]
- .endm
-
- .global _start
-_start:
-# Run some simple insns to confirm the engine is at least working.
- nop
-
-# Skip over output text.
-
- bl skip_output
-
-hello_text:
- .asciz "Hello, world.\n"
-
- .p2align 2
-skip_output:
-
-# Prime loop.
-
- mov r4, r14
-
-output_next:
-
-# Switch arm->thumb to output next chacter.
-# At this point r4 must point to the next character to output.
-
- adr r0, into_thumb + 1
- bx r0
-
-into_thumb:
- .thumb
-
-# Output a character.
-
- mov r0,#3 @ writec angel call
- mov r1,r4
- swi 0xab @ ??? Confirm number.
-
-# Switch thumb->arm.
-
- adr r5, back_to_arm
- bx r5
-
- .p2align 2
-back_to_arm:
- .arm
-
-# Load next character, see if done.
-
- add r4,r4,#1
- sub r3,r3,r3
- ldrb r5,[r4,r3]
- teq r5,#0
- beq done
-
-# Output a character (in arm mode).
-
- mov r0,#3
- mov r1,r4
- swi #0x123456
-
-# Load next character, see if done.
-
- add r4,r4,#1
- sub r3,r3,r3
- ldrb r5,[r4,r3]
- teq r5,#0
- bne output_next
-
-done:
- mov r0,#0x18
- ldr r1,exit_code
- swi #0x123456
-
-# If that fails, try to die with an invalid insn.
-
- invalid
-
-exit_code:
- .word 0x20026
diff --git a/sim/testsuite/sim/arm/iwmmxt/iwmmxt.exp b/sim/testsuite/sim/arm/iwmmxt/iwmmxt.exp
deleted file mode 100644
index f3d0f0a..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/iwmmxt.exp
+++ /dev/null
@@ -1,28 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology simulator testsuite.
-
-if { [istarget xscale*-*-*] } {
- # load support procs (none yet)
- # load_lib cgen.exp
-
- # all machines
- set all_machs "xscale"
-
- if [is_remote host] {
- remote_download host $srcdir/$subdir/testutils.inc
- }
-
- # The .cgs suffix is for "cgen .s".
- foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.cgs]] {
- # If we're only testing specific files and this isn't one of them,
- # skip it.
- if ![runtest_file_p $runtests $src] {
- continue
- }
-
- run_sim_test $src $all_machs
- }
-
- if [is_remote host] {
- remote_file host delete testutils.inc
- }
-}
diff --git a/sim/testsuite/sim/arm/iwmmxt/tbcst.cgs b/sim/testsuite/sim/arm/iwmmxt/tbcst.cgs
deleted file mode 100644
index b7138df..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/tbcst.cgs
+++ /dev/null
@@ -1,65 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for TBCST
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global tbcst
-tbcst:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Byte Wide Broadcast
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x111111ff
-
- tmcrr wr0, r0, r1
-
- tbcstb wr0, r2
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0xffffffff
- test_h_gr r1, 0xffffffff
- test_h_gr r2, 0x111111ff
-
- # Test Half Word Wide Broadcast
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x111111ff
-
- tmcrr wr0, r0, r1
-
- tbcsth wr0, r2
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x11ff11ff
- test_h_gr r1, 0x11ff11ff
- test_h_gr r2, 0x111111ff
-
- # Test Word Wide Broadcast
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x111111ff
-
- tmcrr wr0, r0, r1
-
- tbcstw wr0, r2
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x111111ff
- test_h_gr r1, 0x111111ff
- test_h_gr r2, 0x111111ff
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/testutils.inc b/sim/testsuite/sim/arm/iwmmxt/testutils.inc
deleted file mode 100644
index ae49db8..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/testutils.inc
+++ /dev/null
@@ -1,118 +0,0 @@
-# r0-r3 are used as tmps, consider them call clobbered by these macros.
-# This uses the angel rom monitor calls.
-# ??? How do we use the \@ facility of .macros ???
-# @ is the comment char!
-
- .macro mvi_h_gr reg, val
- ldr \reg,[pc]
- b . + 8
- .word \val
- .endm
-
- .macro mvaddr_h_gr reg, addr
- ldr \reg,[pc]
- b . + 8
- .word \addr
- .endm
-
- .macro start
- .data
-failmsg:
- .asciz "fail\n"
-passmsg:
- .asciz "pass\n"
- .text
-
-do_pass:
- ldr r1, passmsg_addr
- mov r0, #4
- swi #0x123456
- exit 0
-passmsg_addr:
- .word passmsg
-
-do_fail:
- ldr r1, failmsg_addr
- mov r0, #4
- swi #0x123456
- exit 1
-failmsg_addr:
- .word failmsg
-
- .global _start
-_start:
- .endm
-
-# *** Other macros know pass/fail are 4 bytes in size! Yuck.
-
- .macro pass
- b do_pass
- .endm
-
- .macro fail
- b do_fail
- .endm
-
- .macro exit rc
- # ??? This works with the ARMulator but maybe not others.
- #mov r0, #\rc
- #swi #1
- # This seems to be portable (though it ignores rc).
- mov r0,#0x18
- mvi_h_gr r1, 0x20026
- swi #0x123456
- # If that returns, punt with a sigill.
- stc 0,cr0,[r0]
- .endm
-
-# Other macros know this only clobbers r0.
-# WARNING: It also clobbers the condition codes (FIXME).
- .macro test_h_gr reg, val
- mvaddr_h_gr r0, \val
- cmp \reg, r0
- beq . + 8
- fail
- .endm
-
- .macro mvi_h_cnvz c, n, v, z
- mov r0, #0
- .if \c
- orr r0, r0, #0x20000000
- .endif
- .if \n
- orr r0, r0, #0x80000000
- .endif
- .if \v
- orr r0, r0, #0x10000000
- .endif
- .if \z
- orr r0, r0, #0x40000000
- .endif
- mrs r1, cpsr
- bic r1, r1, #0xf0000000
- orr r1, r1, r0
- msr cpsr, r1
- # ??? nops needed
- .endm
-
-# ??? Preserve condition codes?
- .macro test_h_cnvz c, n, v, z
- mov r0, #0
- .if \c
- orr r0, r0, #0x20000000
- .endif
- .if \n
- orr r0, r0, #0x80000000
- .endif
- .if \v
- orr r0, r0, #0x10000000
- .endif
- .if \z
- orr r0, r0, #0x40000000
- .endif
- mrs r1, cpsr
- and r1, r1, #0xf0000000
- cmp r0, r1
- beq . + 8
- fail
- .endm
diff --git a/sim/testsuite/sim/arm/iwmmxt/textrm.cgs b/sim/testsuite/sim/arm/iwmmxt/textrm.cgs
deleted file mode 100644
index fb3dc94..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/textrm.cgs
+++ /dev/null
@@ -1,113 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for TEXTRM
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global textrm
-textrm:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Unsigned Byte Wide Extraction
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x111111ff
-
- tmcrr wr0, r0, r1
-
- textrmub r2, wr0, #3
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x00000012
-
- # Test Signed Byte Wide Extraction
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x111111ff
-
- tmcrr wr0, r0, r1
-
- textrmsb r2, wr0, #4
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0xfffffff0
-
- # Test Unsigned Half Word Wide Extraction
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x111111ff
-
- tmcrr wr0, r0, r1
-
- textrmuh r2, wr0, #3
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x00009abc
-
- # Test Signed Half Word Wide Extraction
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x111111ff
-
- tmcrr wr0, r0, r1
-
- textrmsh r2, wr0, #1
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x00001234
-
- # Test Unsigned Word Wide Extraction
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x111111ff
-
- tmcrr wr0, r0, r1
-
- textrmuw r2, wr0, #0
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x12345678
-
- # Test Signed Word Wide Extraction
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x111111ff
-
- tmcrr wr0, r0, r1
-
- textrmsw r2, wr0, #1
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x9abcdef0
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/tinsr.cgs b/sim/testsuite/sim/arm/iwmmxt/tinsr.cgs
deleted file mode 100644
index f457b19..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/tinsr.cgs
+++ /dev/null
@@ -1,65 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for TINSR
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global tinsr
-tinsr:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Byte Wide Insertion
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x111111ff
-
- tmcrr wr0, r0, r1
-
- tinsrb wr0, r2, #3
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0xff345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x111111ff
-
- # Test Half Word Wide Insertion
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x111111ff
-
- tmcrr wr0, r0, r1
-
- tinsrh wr0, r2, #2
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abc11ff
- test_h_gr r2, 0x111111ff
-
- # Test Word Wide Insertion
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x111111ff
-
- tmcrr wr0, r0, r1
-
- tinsrw wr0, r2, #1
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x111111ff
- test_h_gr r2, 0x111111ff
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/tmia.cgs b/sim/testsuite/sim/arm/iwmmxt/tmia.cgs
deleted file mode 100644
index 0b0da66..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/tmia.cgs
+++ /dev/null
@@ -1,35 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for TMIA
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global tmia
-tmia:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Multilply Accumulate
-
- mvi_h_gr r0, 0x11223344
- mvi_h_gr r1, 0x55667788
- mvi_h_gr r2, 0x12345678
- mvi_h_gr r3, 0x9abcdef0
-
- tmcrr wr0, r0, r1
-
- tmia wr0, r2, r3
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x354f53c4
- test_h_gr r1, 0x4e330b5e
- test_h_gr r2, 0x12345678
- test_h_gr r3, 0x9abcdef0
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/tmiaph.cgs b/sim/testsuite/sim/arm/iwmmxt/tmiaph.cgs
deleted file mode 100644
index 3778b0a..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/tmiaph.cgs
+++ /dev/null
@@ -1,35 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for TMIAPH
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global tmiaph
-tmiaph:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Multilply Accumulate
-
- mvi_h_gr r0, 0x11223344
- mvi_h_gr r1, 0x55667788
- mvi_h_gr r2, 0x12345678
- mvi_h_gr r3, 0x9abcdef0
-
- tmcrr wr0, r0, r1
-
- tmiaph wr0, r2, r3
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0xfec3f9f4
- test_h_gr r1, 0x55667787
- test_h_gr r2, 0x12345678
- test_h_gr r3, 0x9abcdef0
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/tmiaxy.cgs b/sim/testsuite/sim/arm/iwmmxt/tmiaxy.cgs
deleted file mode 100644
index e7a7b73..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/tmiaxy.cgs
+++ /dev/null
@@ -1,89 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for TMIAxy
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global tmiaXY
-tmiaXY:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Bottom Bottom Multilply Accumulate
-
- mvi_h_gr r0, 0x11223344
- mvi_h_gr r1, 0x55667788
- mvi_h_gr r2, 0x12345678
- mvi_h_gr r3, 0x9abcdef0
-
- tmcrr wr0, r0, r1
-
- tmiaBB wr0, r2, r3
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x05f753c4
- test_h_gr r1, 0x55667788
- test_h_gr r2, 0x12345678
- test_h_gr r3, 0x9abcdef0
-
- # Test Bottom Top Multilply Accumulate
-
- mvi_h_gr r0, 0x11223344
- mvi_h_gr r1, 0x55667788
- mvi_h_gr r2, 0x12345678
- mvi_h_gr r3, 0x9abcdef0
-
- tmcrr wr0, r0, r1
-
- tmiaBT wr0, r2, r3
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0xeeede364
- test_h_gr r1, 0x55667787
- test_h_gr r2, 0x12345678
- test_h_gr r3, 0x9abcdef0
-
- # Test Top Bottom Multilply Accumulate
-
- mvi_h_gr r0, 0x11223344
- mvi_h_gr r1, 0x55667788
- mvi_h_gr r2, 0x12345678
- mvi_h_gr r3, 0x9abcdef0
-
- tmcrr wr0, r0, r1
-
- tmiaTB wr0, r2, r3
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x0ec85c04
- test_h_gr r1, 0x55667788
- test_h_gr r2, 0x12345678
- test_h_gr r3, 0x9abcdef0
-
- # Test Top Top Multilply Accumulate
-
- mvi_h_gr r0, 0x11223344
- mvi_h_gr r1, 0x55667788
- mvi_h_gr r2, 0x12345678
- mvi_h_gr r3, 0x9abcdef0
-
- tmcrr wr0, r0, r1
-
- tmiaTT wr0, r2, r3
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x09eed974
- test_h_gr r1, 0x55667788
- test_h_gr r2, 0x12345678
- test_h_gr r3, 0x9abcdef0
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/tmovmsk.cgs b/sim/testsuite/sim/arm/iwmmxt/tmovmsk.cgs
deleted file mode 100644
index cfea5b7..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/tmovmsk.cgs
+++ /dev/null
@@ -1,65 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for TMOVMSK
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global tmovmsk
-tmovmsk:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Byte Wide Mask Transfer
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
-
- tmcrr wr0, r0, r1
-
- tmovmskb r2, wr0
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x000000f0
-
- # Test Half Word Wide Mask Transfer
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
-
- tmcrr wr0, r0, r1
-
- tmovmskh r2, wr0
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x0000000c
-
- # Test Word Wide Mask Transfer
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
-
- tmcrr wr0, r0, r1
-
- tmovmskw r2, wr0
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x00000002
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wacc.cgs b/sim/testsuite/sim/arm/iwmmxt/wacc.cgs
deleted file mode 100644
index b3ffea1..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wacc.cgs
+++ /dev/null
@@ -1,77 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WACC
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wacc
-wacc:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Unsigned Byte Wide Accumulation
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- waccb wr1, wr0
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x00000438
- test_h_gr r3, 0x00000000
-
- # Test Unsigned Half Word Wide Accumulation
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- wacch wr1, wr0
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x0001e258
- test_h_gr r3, 0x00000000
-
- # Test Unsigned Word Wide Accumulation
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- waccw wr1, wr0
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0xacf13568
- test_h_gr r3, 0x00000000
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wadd.cgs b/sim/testsuite/sim/arm/iwmmxt/wadd.cgs
deleted file mode 100644
index bb4d0ab..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wadd.cgs
+++ /dev/null
@@ -1,251 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WADD
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wadd
-wadd:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test UnSaturated Byte Addition
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- waddb wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x23456789
- test_h_gr r5, 0xabcdef11
-
- # Test Unsigned Saturated Byte Addition
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- waddbus wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x23456789
- test_h_gr r5, 0xabcdef11
-
- # Test Signed Saturated Byte Addition
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- waddbss wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x2345677f
- test_h_gr r5, 0xabcdef11
-
- # Test UnSaturated Halfword Addition
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- waddh wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x23456789
- test_h_gr r5, 0xabcdef11
-
- # Test Unsigned Saturated Halfword Addition
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- waddhus wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x23456789
- test_h_gr r5, 0xabcdef11
-
- # Test Signed Saturated Halfword Addition
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- waddhss wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x23456789
- test_h_gr r5, 0xabcdef11
-
- # Test UnSaturated Word Addition
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- waddw wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x23456789
- test_h_gr r5, 0xabcdef11
-
- # Test Unsigned Saturated Word Addition
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- waddwus wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x23456789
- test_h_gr r5, 0xabcdef11
-
- # Test Signed Saturated Word Addition
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- waddwss wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x23456789
- test_h_gr r5, 0xabcdef11
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/waligni.cgs b/sim/testsuite/sim/arm/iwmmxt/waligni.cgs
deleted file mode 100644
index dc99dae..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/waligni.cgs
+++ /dev/null
@@ -1,43 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WALIGNI
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global waligni
-waligni:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test 2 byte align
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- waligni wr2, wr0, wr1, #2
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0xdef01234
- test_h_gr r5, 0x11119abc
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/walignr.cgs b/sim/testsuite/sim/arm/iwmmxt/walignr.cgs
deleted file mode 100644
index 85df51e..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/walignr.cgs
+++ /dev/null
@@ -1,137 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WALIGNR
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global walignr
-walignr:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test 0 byte align
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
- mvi_h_gr r6, 3
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
- tmcr wcgr0, r6
-
- walignr0 wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
- tmrc r6, wcgr0
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0xbcdef012
- test_h_gr r5, 0x1111119a
- test_h_gr r6, 3
-
- # Test 1 byte align
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
- mvi_h_gr r6, 4
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
- tmcr wcgr1, r6
-
- walignr1 wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
- tmrc r6, wcgr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x9abcdef0
- test_h_gr r5, 0x11111111
- test_h_gr r6, 4
-
- # Test 2 byte align
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
- mvi_h_gr r6, 2
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
- tmcr wcgr2, r6
-
- walignr2 wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
- tmrc r6, wcgr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0xdef01234
- test_h_gr r5, 0x11119abc
- test_h_gr r6, 2
-
- # Test 3 byte align
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
- mvi_h_gr r6, 5
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
- tmcr wcgr3, r6
-
- walignr3 wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
- tmrc r6, wcgr3
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x119abcde
- test_h_gr r5, 0x00111111
- test_h_gr r6, 5
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wand.cgs b/sim/testsuite/sim/arm/iwmmxt/wand.cgs
deleted file mode 100644
index 018383f..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wand.cgs
+++ /dev/null
@@ -1,41 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WAND
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wand
-wand:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wand wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x10101010
- test_h_gr r5, 0x00000000
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wandn.cgs b/sim/testsuite/sim/arm/iwmmxt/wandn.cgs
deleted file mode 100644
index f2c2305..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wandn.cgs
+++ /dev/null
@@ -1,41 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WANDN
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wandn
-wandn:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wandn wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x02244668
- test_h_gr r5, 0x9abcdef0
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wavg2.cgs b/sim/testsuite/sim/arm/iwmmxt/wavg2.cgs
deleted file mode 100644
index cac2c1a..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wavg2.cgs
+++ /dev/null
@@ -1,121 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WAVG2
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wavg2
-wavg2:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Byte Wide Averaging
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wavg2b wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0x11223344
- test_h_gr r5, 0x5e6f8089
-
- # Test Byte Wide Averaging with Rounding
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wavg2br wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0x12233445
- test_h_gr r5, 0x5e6f8089
-
- # Test Half Word Wide Averaging
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wavg2h wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0x11a233c4
- test_h_gr r5, 0x5e6f8089
-
- # Test Half Word Wide Averaging with Rounding
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wavg2hr wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0x11a333c5
- test_h_gr r5, 0x5e6f8089
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wcmpeq.cgs b/sim/testsuite/sim/arm/iwmmxt/wcmpeq.cgs
deleted file mode 100644
index 13ef3dc..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wcmpeq.cgs
+++ /dev/null
@@ -1,95 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WCMPEQ
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wcmpeq
-wcmpeq:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Byte Wide Compare Equal To
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x9abcde00
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wcmpeqb wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x9abcde00
- test_h_gr r4, 0x00000000
- test_h_gr r5, 0xffffffff
-
- # Test Half Word Wide Compare Equal To
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x9abcde00
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wcmpeqh wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x9abcde00
- test_h_gr r4, 0x00000000
- test_h_gr r5, 0xffffffff
-
- # Test Word Wide Compare Equal To
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x9abcde00
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wcmpeqw wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x9abcde00
- test_h_gr r4, 0x00000000
- test_h_gr r5, 0xffffffff
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wcmpgt.cgs b/sim/testsuite/sim/arm/iwmmxt/wcmpgt.cgs
deleted file mode 100644
index 33086c9..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wcmpgt.cgs
+++ /dev/null
@@ -1,173 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WCMPGT
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wcmpgt
-wcmpgt:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Unsigned Byte Wide Compare Greater Than
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wcmpgtub wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0xffffffff
- test_h_gr r5, 0xffffff00
-
- # Test Signed Byte Wide Compare Greater Than
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wcmpgtsb wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0xffffffff
- test_h_gr r5, 0x00000000
-
- # Test Unsigned Half Word Wide Compare Greater Than
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wcmpgtuh wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0xffffffff
- test_h_gr r5, 0xffffffff
-
- # Test Signed Half Word Wide Compare Greater Than
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wcmpgtsh wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0xffffffff
- test_h_gr r5, 0x00000000
-
- # Test Unsigned Word Wide Compare Greater Than
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wcmpgtuw wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0xffffffff
- test_h_gr r5, 0xffffffff
-
- # Test Signed Word Wide Compare Greater Than
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wcmpgtsw wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0xffffffff
- test_h_gr r5, 0x00000000
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wmac.cgs b/sim/testsuite/sim/arm/iwmmxt/wmac.cgs
deleted file mode 100644
index 0857ef9..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wmac.cgs
+++ /dev/null
@@ -1,121 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WMAC
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wmac
-wmac:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Unsigned, Multiply Accumulate, Non-zeroing
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0x33333333
- mvi_h_gr r5, 0x44444444
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wmacu wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0x6c889377
- test_h_gr r5, 0x44444444
-
- # Test Unsigned, Multiply Accumulate, Zeroing
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0x33333333
- mvi_h_gr r5, 0x44444444
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wmacuz wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0x39556044
- test_h_gr r5, 0x00000000
-
- # Test Signed, Multiply Accumulate, Non-zeroing
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0x33333333
- mvi_h_gr r5, 0x44444444
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wmacs wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0x28449377
- test_h_gr r5, 0x44444444
-
- # Test Signed, Multiply Accumulate, Zeroing
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0x33333333
- mvi_h_gr r5, 0x44444444
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wmacsz wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0xf5116044
- test_h_gr r5, 0xffffffff
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wmadd.cgs b/sim/testsuite/sim/arm/iwmmxt/wmadd.cgs
deleted file mode 100644
index 564b3be..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wmadd.cgs
+++ /dev/null
@@ -1,69 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WMADD
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wmadd
-wmadd:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Unsigned, Multiply Addition
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wmaddu wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0x06fa5f6c
- test_h_gr r5, 0x325b00d8
-
- # Test Signed, Multiply Addition
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wmadds wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0x06fa5f6c
- test_h_gr r5, 0xee1700d8
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wmax.cgs b/sim/testsuite/sim/arm/iwmmxt/wmax.cgs
deleted file mode 100644
index 3a684ce..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wmax.cgs
+++ /dev/null
@@ -1,173 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WMAX
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wmax
-wmax:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Unsigned Byte Maximum
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wmaxub wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x12345678
- test_h_gr r5, 0x9abcde11
-
- # Test Signed Byte Maximum
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wmaxsb wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x12345678
- test_h_gr r5, 0x11111111
-
- # Test Unsigned Halfword Maximum
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wmaxuh wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x12345678
- test_h_gr r5, 0x9abcde00
-
- # Test Signed Halfword Maximum
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wmaxsh wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x12345678
- test_h_gr r5, 0x11111111
-
- # Test Unsigned Word Maximum
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wmaxuw wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x12345678
- test_h_gr r5, 0x9abcde00
-
- # Test Signed Word Maximum
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wmaxsw wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x12345678
- test_h_gr r5, 0x11111111
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wmin.cgs b/sim/testsuite/sim/arm/iwmmxt/wmin.cgs
deleted file mode 100644
index 3bc1c08..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wmin.cgs
+++ /dev/null
@@ -1,173 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WMIN
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wmin
-wmin:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Unsigned Byte Minimum
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wminub wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x11111111
- test_h_gr r5, 0x11111100
-
- # Test Signed Byte Minimum
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wminsb wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x11111111
- test_h_gr r5, 0x9abcde00
-
- # Test Unsigned Halfword Minimum
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wminuh wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x11111111
- test_h_gr r5, 0x11111111
-
- # Test Signed Halfword Minimum
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wminsh wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x11111111
- test_h_gr r5, 0x9abcde00
-
- # Test Unsigned Word Minimum
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wminuw wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x11111111
- test_h_gr r5, 0x11111111
-
- # Test Signed Word Minimum
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wminsw wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x11111111
- test_h_gr r5, 0x9abcde00
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wmov.cgs b/sim/testsuite/sim/arm/iwmmxt/wmov.cgs
deleted file mode 100644
index e86fed6..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wmov.cgs
+++ /dev/null
@@ -1,35 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WMOV
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wmov
-wmov:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- wmov wr1, wr0
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x12345678
- test_h_gr r3, 0x9abcdef0
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wmul.cgs b/sim/testsuite/sim/arm/iwmmxt/wmul.cgs
deleted file mode 100644
index 0978b63..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wmul.cgs
+++ /dev/null
@@ -1,121 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WMUL
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wmul
-wmul:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Unsigned, Most Significant Multiply
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wmulum wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0x013605c3
- test_h_gr r5, 0x14a11db9
-
- # Test Unsigned, Least Significant Multiply
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wmulul wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0xa974b5f8
- test_h_gr r5, 0x84f87be0
-
- # Test Signed, Most Significant Multiply
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wmulsm wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0x013605c3
- test_h_gr r5, 0xf27ffb97
-
- # Test Signed, Least Significant Multiply
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wmulsl wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0xa974b5f8
- test_h_gr r5, 0x84f87be0
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wor.cgs b/sim/testsuite/sim/arm/iwmmxt/wor.cgs
deleted file mode 100644
index 48d5f53..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wor.cgs
+++ /dev/null
@@ -1,41 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WOR
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wor
-wor:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wor wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x13355779
- test_h_gr r5, 0x9abcdef0
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wpack.cgs b/sim/testsuite/sim/arm/iwmmxt/wpack.cgs
deleted file mode 100644
index 0546bd4..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wpack.cgs
+++ /dev/null
@@ -1,173 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WPACK
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wpack
-wpack:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Halfword, Unsigned Saturation, Packing
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wpackhus wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x0000ffff
- test_h_gr r5, 0x0000ffff
-
- # Test Halfword, Signed Saturation, Packing
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wpackhss wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x80807f7f
- test_h_gr r5, 0x00007f7f
-
- # Test Word, Unsigned Saturation, Packing
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wpackwus wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x0000ffff
- test_h_gr r5, 0x0000ffff
-
- # Test Word, Signed Saturation, Packing
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wpackwss wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x80007fff
- test_h_gr r5, 0x00007fff
-
- # Test Double Word, Unsigned Saturation, Packing
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wpackdus wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x00000000
- test_h_gr r5, 0x11111111
-
- # Test Double Word, Signed Saturation, Packing
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wpackdss wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x80000000
- test_h_gr r5, 0x11111111
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wror.cgs b/sim/testsuite/sim/arm/iwmmxt/wror.cgs
deleted file mode 100644
index e329916..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wror.cgs
+++ /dev/null
@@ -1,167 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WROR
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wror
-wror:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Halfword wide rotate right by register
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wrorh wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x091a2b3c
- test_h_gr r5, 0x4d5e6f78
-
- # Test Halfword wide rotate right by CG register
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0
- mvi_h_gr r4, 0
-
- tmcrr wr0, r0, r1
- tmcr wcgr0, r2
- tmcrr wr1, r2, r3
-
- wrorhg wr1, wr0, wcgr0
-
- tmrrc r0, r1, wr0
- tmrc r2, wcgr0
- tmrrc r3, r4, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x091a2b3c
- test_h_gr r4, 0x4d5e6f78
-
- # Test Word wide rotate right by register
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wrorw wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x2b3c091a
- test_h_gr r5, 0x6f784d5e
-
- # Test Word wide rotate right by CG register
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0
- mvi_h_gr r4, 0
-
- tmcrr wr0, r0, r1
- tmcr wcgr0, r2
- tmcrr wr1, r2, r3
-
- wrorwg wr1, wr0, wcgr0
-
- tmrrc r0, r1, wr0
- tmrc r2, wcgr0
- tmrrc r3, r4, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x2b3c091a
- test_h_gr r4, 0x6f784d5e
-
- # Test Double Word wide rotate right by register
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wrord wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x6f78091a
- test_h_gr r5, 0x2b3c4d5e
-
- # Test Double Word wide rotate right by CG register
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0
- mvi_h_gr r4, 0
-
- tmcrr wr0, r0, r1
- tmcr wcgr0, r2
- tmcrr wr1, r2, r3
-
- wrordg wr1, wr0, wcgr0
-
- tmrrc r0, r1, wr0
- tmrc r2, wcgr0
- tmrrc r3, r4, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x6f78091a
- test_h_gr r4, 0x2b3c4d5e
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wsad.cgs b/sim/testsuite/sim/arm/iwmmxt/wsad.cgs
deleted file mode 100644
index 34a20cc..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wsad.cgs
+++ /dev/null
@@ -1,121 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WSAD
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wsad
-wsad:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Byte wide absolute accumulation
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0x22222222
- mvi_h_gr r5, 0x22222222
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsadb wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0x2222258e
- test_h_gr r5, 0x00000000
-
- # Test Byte wide absolute accumulation with zeroing
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0x22222222
- mvi_h_gr r5, 0x22222222
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsadbz wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0x0000036c
- test_h_gr r5, 0x00000000
-
- # Test Halfword wide absolute accumulation
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0x22222222
- mvi_h_gr r5, 0x22222222
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsadh wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0x22239e14
- test_h_gr r5, 0x00000000
-
- # Test Halfword wide absolute accumulation with zeroing
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x22222222
- mvi_h_gr r4, 0x22222222
- mvi_h_gr r5, 0x22222222
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsadhz wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x22222222
- test_h_gr r4, 0x00017bf2
- test_h_gr r5, 0x00000000
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wshufh.cgs b/sim/testsuite/sim/arm/iwmmxt/wshufh.cgs
deleted file mode 100644
index d5cff1e..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wshufh.cgs
+++ /dev/null
@@ -1,35 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WSHUFH
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wshufh
-wshufh:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- wshufh wr1, wr0, #0x1b
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0xdef09abc
- test_h_gr r3, 0x56781234
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wsll.cgs b/sim/testsuite/sim/arm/iwmmxt/wsll.cgs
deleted file mode 100644
index 17d7893..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wsll.cgs
+++ /dev/null
@@ -1,167 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WSLL
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wsll
-wsll:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Halfword Logical Shift Left
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsllh wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x23406780
- test_h_gr r5, 0xabc0ef00
-
- # Test Halfword Aritc Shift Left by CG register
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0
- mvi_h_gr r4, 0
-
- tmcrr wr0, r0, r1
- tmcr wcgr1, r2
- tmcrr wr1, r3, r4
-
- wsllhg wr1, wr0, wcgr1
-
- tmrrc r0, r1, wr0
- tmrc r2, wcgr1
- tmrrc r3, r4, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0x23406780
- test_h_gr r4, 0xabc0ef00
-
- # Test Word Logical Shift Left
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsllw wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x23456780
- test_h_gr r5, 0xabcdef00
-
- # Test Word Logical Shift Left by CG register
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0
- mvi_h_gr r4, 0
-
- tmcrr wr0, r0, r1
- tmcr wcgr2, r2
- tmcrr wr1, r3, r4
-
- wsllwg wr1, wr0, wcgr2
-
- tmrrc r0, r1, wr0
- tmrc r2, wcgr2
- tmrrc r3, r4, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0x23456780
- test_h_gr r4, 0xabcdef00
-
- # Test Double Word Logical Shift Left
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdefc
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wslld wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdefc
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x23456780
- test_h_gr r5, 0xabcdefc1
-
- # Test Double Word Logical Shift Left by CG register
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdefc
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0
- mvi_h_gr r4, 0
-
- tmcrr wr0, r0, r1
- tmcr wcgr3, r2
- tmcrr wr1, r3, r4
-
- wslldg wr1, wr0, wcgr3
-
- tmrrc r0, r1, wr0
- tmrc r2, wcgr3
- tmrrc r3, r4, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdefc
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0x23456780
- test_h_gr r4, 0xabcdefc1
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wsra.cgs b/sim/testsuite/sim/arm/iwmmxt/wsra.cgs
deleted file mode 100644
index db998bb..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wsra.cgs
+++ /dev/null
@@ -1,167 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WSRA
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wsra
-wsra:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Halfword Arithmetic Shift Right
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsrah wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x01230567
- test_h_gr r5, 0xf9abfdef
-
- # Test Halfword Arithmetic Shift Right by CG register
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0
- mvi_h_gr r4, 0
-
- tmcrr wr0, r0, r1
- tmcr wcgr1, r2
- tmcrr wr1, r3, r4
-
- wsrahg wr1, wr0, wcgr1
-
- tmrrc r0, r1, wr0
- tmrc r2, wcgr1
- tmrrc r3, r4, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0x01230567
- test_h_gr r4, 0xf9abfdef
-
- # Test Word Arithmetic Shift Right
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsraw wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x01234567
- test_h_gr r5, 0xf9abcdef
-
- # Test Word Arithmetic Shift Right by CG register
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0
- mvi_h_gr r4, 0
-
- tmcrr wr0, r0, r1
- tmcr wcgr2, r2
- tmcrr wr1, r3, r4
-
- wsrawg wr1, wr0, wcgr2
-
- tmrrc r0, r1, wr0
- tmrc r2, wcgr2
- tmrrc r3, r4, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0x01234567
- test_h_gr r4, 0xf9abcdef
-
- # Test Double Word Arithmetic Shift Right
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdefc
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsrad wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdefc
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0xc1234567
- test_h_gr r5, 0xf9abcdef
-
- # Test Double Word Arithmetic Shift Right by CG register
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdefc
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0
- mvi_h_gr r4, 0
-
- tmcrr wr0, r0, r1
- tmcr wcgr3, r2
- tmcrr wr1, r3, r4
-
- wsradg wr1, wr0, wcgr3
-
- tmrrc r0, r1, wr0
- tmrc r2, wcgr3
- tmrrc r3, r4, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdefc
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0xc1234567
- test_h_gr r4, 0xf9abcdef
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wsrl.cgs b/sim/testsuite/sim/arm/iwmmxt/wsrl.cgs
deleted file mode 100644
index 416a464..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wsrl.cgs
+++ /dev/null
@@ -1,167 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WSRL
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wsrl
-wsrl:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Halfword Logical Shift Right
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsrlh wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x01230567
- test_h_gr r5, 0x09ab0def
-
- # Test Halfword Logical Shift Right by CG register
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0
- mvi_h_gr r4, 0
-
- tmcrr wr0, r0, r1
- tmcr wcgr1, r2
- tmcrr wr1, r3, r4
-
- wsrlhg wr1, wr0, wcgr1
-
- tmrrc r0, r1, wr0
- tmrc r2, wcgr1
- tmrrc r3, r4, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0x01230567
- test_h_gr r4, 0x09ab0def
-
- # Test Word Logical Shift Right
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsrlw wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x01234567
- test_h_gr r5, 0x09abcdef
-
- # Test Word Logical Shift Right by CG register
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0
- mvi_h_gr r4, 0
-
- tmcrr wr0, r0, r1
- tmcr wcgr2, r2
- tmcrr wr1, r3, r4
-
- wsrlwg wr1, wr0, wcgr2
-
- tmrrc r0, r1, wr0
- tmrc r2, wcgr2
- tmrrc r3, r4, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0x01234567
- test_h_gr r4, 0x09abcdef
-
- # Test Double Word Logical Shift Right
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdefc
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsrld wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdefc
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0xc1234567
- test_h_gr r5, 0x09abcdef
-
- # Test Double Word Logical Shift Right by CG register
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdefc
- mvi_h_gr r2, 0x11111104
- mvi_h_gr r3, 0
- mvi_h_gr r4, 0
-
- tmcrr wr0, r0, r1
- tmcr wcgr3, r2
- tmcrr wr1, r3, r4
-
- wsrldg wr1, wr0, wcgr3
-
- tmrrc r0, r1, wr0
- tmrc r2, wcgr3
- tmrrc r3, r4, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdefc
- test_h_gr r2, 0x11111104
- test_h_gr r3, 0xc1234567
- test_h_gr r4, 0x09abcdef
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wsub.cgs b/sim/testsuite/sim/arm/iwmmxt/wsub.cgs
deleted file mode 100644
index b0e77be..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wsub.cgs
+++ /dev/null
@@ -1,251 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WSUB
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wsub
-wsub:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Unsaturated Byte subtraction
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsubb wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x01234567
- test_h_gr r5, 0x89abcdef
-
- # Test Unsigned saturated Byte subtraction
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsubbus wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x01234567
- test_h_gr r5, 0x89abcd00
-
- # Test Signed saturated Byte subtraction
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsubbss wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x01234567
- test_h_gr r5, 0x89abcdef
-
- # Test Unsaturated Halfword subtraction
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsubh wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x01234567
- test_h_gr r5, 0x89abccef
-
- # Test Unsigned saturated Halfword subtraction
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsubhus wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x01234567
- test_h_gr r5, 0x89abccef
-
- # Test Signed saturated Halfword subtraction
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsubhss wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x01234567
- test_h_gr r5, 0x89abccef
-
- # Test Unsaturated Word subtraction
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsubw wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x01234567
- test_h_gr r5, 0x89abccef
-
- # Test Unsigned saturated Word subtraction
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsubwus wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x01234567
- test_h_gr r5, 0x89abccef
-
- # Test Signed saturated Word subtraction
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcde00
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x11111111
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wsubwss wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcde00
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x11111111
- test_h_gr r4, 0x01234567
- test_h_gr r5, 0x89abccef
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wunpckeh.cgs b/sim/testsuite/sim/arm/iwmmxt/wunpckeh.cgs
deleted file mode 100644
index 32a70f4..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wunpckeh.cgs
+++ /dev/null
@@ -1,137 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WUNPCKEH
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wunpckeh
-wunpckeh:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Unsigned Byte Unpacking
-
- mvi_h_gr r0, 0x12345687
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- wunpckehub wr1, wr0
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x12345687
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x00de00f0
- test_h_gr r3, 0x009a00bc
-
- # Test Signed Byte Unpacking
-
- mvi_h_gr r0, 0x12345687
- mvi_h_gr r1, 0x7abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- wunpckehsb wr1, wr0
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x12345687
- test_h_gr r1, 0x7abcdef0
- test_h_gr r2, 0xffdefff0
- test_h_gr r3, 0x007affbc
-
- # Test Unsigned Halfword Unpacking
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- wunpckehuh wr1, wr0
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x0000def0
- test_h_gr r3, 0x00009abc
-
- # Test Signed Halfword Unpacking
-
- mvi_h_gr r0, 0x12348678
- mvi_h_gr r1, 0x7abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- wunpckehsh wr1, wr0
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x12348678
- test_h_gr r1, 0x7abcdef0
- test_h_gr r2, 0xffffdef0
- test_h_gr r3, 0x00007abc
-
- # Test Unsigned Word Unpacking
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- wunpckehuw wr1, wr0
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x9abcdef0
- test_h_gr r3, 0x00000000
-
- # Test Signed Word Unpacking
-
- mvi_h_gr r0, 0x82345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- wunpckehsw wr1, wr0
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x82345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x9abcdef0
- test_h_gr r3, 0xffffffff
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wunpckel.cgs b/sim/testsuite/sim/arm/iwmmxt/wunpckel.cgs
deleted file mode 100644
index a6ffb4f..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wunpckel.cgs
+++ /dev/null
@@ -1,137 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WUNPCKEL
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wunpckel
-wunpckel:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Unsigned Byte Unpacking
-
- mvi_h_gr r0, 0x12345687
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- wunpckelub wr1, wr0
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x12345687
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x00560087
- test_h_gr r3, 0x00120034
-
- # Test Signed Byte Unpacking
-
- mvi_h_gr r0, 0x12345687
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- wunpckelsb wr1, wr0
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x12345687
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x0056ff87
- test_h_gr r3, 0x00120034
-
- # Test Unsigned Halfword Unpacking
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- wunpckeluh wr1, wr0
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x00005678
- test_h_gr r3, 0x00001234
-
- # Test Signed Halfword Unpacking
-
- mvi_h_gr r0, 0x12348678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- wunpckelsh wr1, wr0
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x12348678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0xffff8678
- test_h_gr r3, 0x00001234
-
- # Test Unsigned Word Unpacking
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- wunpckeluw wr1, wr0
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x12345678
- test_h_gr r3, 0x00000000
-
- # Test Signed Word Unpacking
-
- mvi_h_gr r0, 0x82345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0
- mvi_h_gr r3, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
-
- wunpckelsw wr1, wr0
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
-
- test_h_gr r0, 0x82345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x82345678
- test_h_gr r3, 0xffffffff
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wunpckih.cgs b/sim/testsuite/sim/arm/iwmmxt/wunpckih.cgs
deleted file mode 100644
index 41fed0e..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wunpckih.cgs
+++ /dev/null
@@ -1,95 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WUNPCKIH
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wunpckih
-wunpckih:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Byte unpacking
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wunpckihb wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x00de00f0
- test_h_gr r5, 0x009a00bc
-
- # Test Halfword unpacking
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wunpckihh wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x0000def0
- test_h_gr r5, 0x00009abc
-
- # Test Word unpacking
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wunpckihw wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x9abcdef0
- test_h_gr r5, 0x00000000
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wunpckil.cgs b/sim/testsuite/sim/arm/iwmmxt/wunpckil.cgs
deleted file mode 100644
index 7bd7300..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wunpckil.cgs
+++ /dev/null
@@ -1,95 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WUNPCKIL
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wunpckil
-wunpckil:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Byte unpacking
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wunpckilb wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x11561178
- test_h_gr r5, 0x11121134
-
- # Test Halfword unpacking
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wunpckilh wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x11115678
- test_h_gr r5, 0x11111234
-
- # Test Word unpacking
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wunpckilw wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x12345678
- test_h_gr r5, 0x11111111
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wxor.cgs b/sim/testsuite/sim/arm/iwmmxt/wxor.cgs
deleted file mode 100644
index 95e1fc8..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wxor.cgs
+++ /dev/null
@@ -1,41 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WXOR
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wxor
-wxor:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
- mvi_h_gr r2, 0x11111111
- mvi_h_gr r3, 0x00000000
- mvi_h_gr r4, 0
- mvi_h_gr r5, 0
-
- tmcrr wr0, r0, r1
- tmcrr wr1, r2, r3
- tmcrr wr2, r4, r5
-
- wxor wr2, wr0, wr1
-
- tmrrc r0, r1, wr0
- tmrrc r2, r3, wr1
- tmrrc r4, r5, wr2
-
- test_h_gr r0, 0x12345678
- test_h_gr r1, 0x9abcdef0
- test_h_gr r2, 0x11111111
- test_h_gr r3, 0x00000000
- test_h_gr r4, 0x03254769
- test_h_gr r5, 0x9abcdef0
-
- pass
diff --git a/sim/testsuite/sim/arm/iwmmxt/wzero.cgs b/sim/testsuite/sim/arm/iwmmxt/wzero.cgs
deleted file mode 100644
index 78fa7c5..0000000
--- a/sim/testsuite/sim/arm/iwmmxt/wzero.cgs
+++ /dev/null
@@ -1,29 +0,0 @@
-# Intel(r) Wireless MMX(tm) technology testcase for WZERO
-# mach: xscale
-# as: -mcpu=xscale+iwmmxt
-
- .include "testutils.inc"
-
- start
-
- .global wzero
-wzero:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- mvi_h_gr r0, 0x12345678
- mvi_h_gr r1, 0x9abcdef0
-
- tmcrr wr0, r0, r1
-
- wzero wr0
-
- tmrrc r0, r1, wr0
-
- test_h_gr r0, 0x00000000
- test_h_gr r1, 0x00000000
-
- pass
diff --git a/sim/testsuite/sim/arm/ldm.cgs b/sim/testsuite/sim/arm/ldm.cgs
deleted file mode 100644
index 6831a83..0000000
--- a/sim/testsuite/sim/arm/ldm.cgs
+++ /dev/null
@@ -1,89 +0,0 @@
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldmda_wb
-ldmda_wb:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldmda
-ldmda:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldmdb_wb
-ldmdb_wb:
-
- pass
-# arm testcase for ldm$cond ..
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldmdb
-ldmdb:
- ldm0 ..
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldmia_wb
-ldmia_wb:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldmia
-ldmia:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldmib_wb
-ldmib_wb:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldmib
-ldmib:
-
- pass
diff --git a/sim/testsuite/sim/arm/ldr.cgs b/sim/testsuite/sim/arm/ldr.cgs
deleted file mode 100644
index 437b68c..0000000
--- a/sim/testsuite/sim/arm/ldr.cgs
+++ /dev/null
@@ -1,192 +0,0 @@
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_post_dec_imm_offset
-ldr_post_dec_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for ldr${cond}t $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_post_dec_nonpriv_imm_offset
-ldr_post_dec_nonpriv_imm_offset:
- ldr0t pc,???
-
- pass
-# arm testcase for ldr${cond}t $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_post_dec_nonpriv_reg_offset
-ldr_post_dec_nonpriv_reg_offset:
- ldr0t pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_post_dec_reg_offset
-ldr_post_dec_reg_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_post_inc_imm_offset
-ldr_post_inc_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for ldr${cond}t $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_post_inc_nonpriv_imm_offset
-ldr_post_inc_nonpriv_imm_offset:
- ldr0t pc,???
-
- pass
-# arm testcase for ldr${cond}t $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_post_inc_nonpriv_reg_offset
-ldr_post_inc_nonpriv_reg_offset:
- ldr0t pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_post_inc_reg_offset
-ldr_post_inc_reg_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_pre_dec_imm_offset
-ldr_pre_dec_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_pre_dec_reg_offset
-ldr_pre_dec_reg_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_pre_dec_wb_imm_offset
-ldr_pre_dec_wb_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_pre_dec_wb_reg_offset
-ldr_pre_dec_wb_reg_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_pre_inc_imm_offset
-ldr_pre_inc_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_pre_inc_reg_offset
-ldr_pre_inc_reg_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_pre_inc_wb_imm_offset
-ldr_pre_inc_wb_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_pre_inc_wb_reg_offset
-ldr_pre_inc_wb_reg_offset:
- ldr0 pc,???
-
- pass
diff --git a/sim/testsuite/sim/arm/ldrb.cgs b/sim/testsuite/sim/arm/ldrb.cgs
deleted file mode 100644
index b09880c..0000000
--- a/sim/testsuite/sim/arm/ldrb.cgs
+++ /dev/null
@@ -1,192 +0,0 @@
-# arm testcase for ldr${cond}b $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_post_dec_imm_offset
-ldrb_post_dec_imm_offset:
- ldr0b pc,???
-
- pass
-# arm testcase for ldr${cond}bt $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_post_dec_nonpriv_imm_offset
-ldrb_post_dec_nonpriv_imm_offset:
- ldr0bt pc,???
-
- pass
-# arm testcase for ldr${cond}bt $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_post_dec_nonpriv_reg_offset
-ldrb_post_dec_nonpriv_reg_offset:
- ldr0bt pc,???
-
- pass
-# arm testcase for ldr${cond}b $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_post_dec_reg_offset
-ldrb_post_dec_reg_offset:
- ldr0b pc,???
-
- pass
-# arm testcase for ldr${cond}b $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_post_inc_imm_offset
-ldrb_post_inc_imm_offset:
- ldr0b pc,???
-
- pass
-# arm testcase for ldr${cond}bt $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_post_inc_nonpriv_imm_offset
-ldrb_post_inc_nonpriv_imm_offset:
- ldr0bt pc,???
-
- pass
-# arm testcase for ldr${cond}bt $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_post_inc_nonpriv_reg_offset
-ldrb_post_inc_nonpriv_reg_offset:
- ldr0bt pc,???
-
- pass
-# arm testcase for ldr${cond}b $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_post_inc_reg_offset
-ldrb_post_inc_reg_offset:
- ldr0b pc,???
-
- pass
-# arm testcase for ldr${cond}b $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_pre_dec_imm_offset
-ldrb_pre_dec_imm_offset:
- ldr0b pc,???
-
- pass
-# arm testcase for ldr${cond}b $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_pre_dec_reg_offset
-ldrb_pre_dec_reg_offset:
- ldr0b pc,???
-
- pass
-# arm testcase for ldr${cond}b $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_pre_dec_wb_imm_offset
-ldrb_pre_dec_wb_imm_offset:
- ldr0b pc,???
-
- pass
-# arm testcase for ldr${cond}b $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_pre_dec_wb_reg_offset
-ldrb_pre_dec_wb_reg_offset:
- ldr0b pc,???
-
- pass
-# arm testcase for ldr${cond}b $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_pre_inc_imm_offset
-ldrb_pre_inc_imm_offset:
- ldr0b pc,???
-
- pass
-# arm testcase for ldr${cond}b $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_pre_inc_reg_offset
-ldrb_pre_inc_reg_offset:
- ldr0b pc,???
-
- pass
-# arm testcase for ldr${cond}b $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_pre_inc_wb_imm_offset
-ldrb_pre_inc_wb_imm_offset:
- ldr0b pc,???
-
- pass
-# arm testcase for ldr${cond}b $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_pre_inc_wb_reg_offset
-ldrb_pre_inc_wb_reg_offset:
- ldr0b pc,???
-
- pass
diff --git a/sim/testsuite/sim/arm/ldrh.cgs b/sim/testsuite/sim/arm/ldrh.cgs
deleted file mode 100644
index 16a4323..0000000
--- a/sim/testsuite/sim/arm/ldrh.cgs
+++ /dev/null
@@ -1,132 +0,0 @@
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrh_post_dec_imm_offset
-ldrh_post_dec_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrh_post_dec_reg_offset
-ldrh_post_dec_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrh_post_inc_imm_offset
-ldrh_post_inc_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrh_post_inc_reg_offset
-ldrh_post_inc_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrh_pre_dec_imm_offset
-ldrh_pre_dec_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrh_pre_dec_reg_offset
-ldrh_pre_dec_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrh_pre_dec_wb_imm_offset
-ldrh_pre_dec_wb_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrh_pre_dec_wb_reg_offset
-ldrh_pre_dec_wb_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrh_pre_inc_imm_offset
-ldrh_pre_inc_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrh_pre_inc_reg_offset
-ldrh_pre_inc_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrh_pre_inc_wb_imm_offset
-ldrh_pre_inc_wb_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrh_pre_inc_wb_reg_offset
-ldrh_pre_inc_wb_reg_offset:
-
- pass
diff --git a/sim/testsuite/sim/arm/ldrsb.cgs b/sim/testsuite/sim/arm/ldrsb.cgs
deleted file mode 100644
index 4d08f4c..0000000
--- a/sim/testsuite/sim/arm/ldrsb.cgs
+++ /dev/null
@@ -1,132 +0,0 @@
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsb_post_dec_imm_offset
-ldrsb_post_dec_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsb_post_dec_reg_offset
-ldrsb_post_dec_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsb_post_inc_imm_offset
-ldrsb_post_inc_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsb_post_inc_reg_offset
-ldrsb_post_inc_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsb_pre_dec_imm_offset
-ldrsb_pre_dec_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsb_pre_dec_reg_offset
-ldrsb_pre_dec_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsb_pre_dec_wb_imm_offset
-ldrsb_pre_dec_wb_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsb_pre_dec_wb_reg_offset
-ldrsb_pre_dec_wb_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsb_pre_inc_imm_offset
-ldrsb_pre_inc_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsb_pre_inc_reg_offset
-ldrsb_pre_inc_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsb_pre_inc_wb_imm_offset
-ldrsb_pre_inc_wb_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsb_pre_inc_wb_reg_offset
-ldrsb_pre_inc_wb_reg_offset:
-
- pass
diff --git a/sim/testsuite/sim/arm/ldrsh.cgs b/sim/testsuite/sim/arm/ldrsh.cgs
deleted file mode 100644
index 5a6e7c7..0000000
--- a/sim/testsuite/sim/arm/ldrsh.cgs
+++ /dev/null
@@ -1,132 +0,0 @@
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsh_post_dec_imm_offset
-ldrsh_post_dec_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsh_post_dec_reg_offset
-ldrsh_post_dec_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsh_post_inc_imm_offset
-ldrsh_post_inc_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsh_post_inc_reg_offset
-ldrsh_post_inc_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsh_pre_dec_imm_offset
-ldrsh_pre_dec_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsh_pre_dec_reg_offset
-ldrsh_pre_dec_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsh_pre_dec_wb_imm_offset
-ldrsh_pre_dec_wb_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsh_pre_dec_wb_reg_offset
-ldrsh_pre_dec_wb_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsh_pre_inc_imm_offset
-ldrsh_pre_inc_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsh_pre_inc_reg_offset
-ldrsh_pre_inc_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsh_pre_inc_wb_imm_offset
-ldrsh_pre_inc_wb_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrsh_pre_inc_wb_reg_offset
-ldrsh_pre_inc_wb_reg_offset:
-
- pass
diff --git a/sim/testsuite/sim/arm/misaligned1.ms b/sim/testsuite/sim/arm/misaligned1.ms
deleted file mode 100644
index 69fda47..0000000
--- a/sim/testsuite/sim/arm/misaligned1.ms
+++ /dev/null
@@ -1,61 +0,0 @@
-# Test LDR instructions with offsets misaligned by 1 byte.
-# mach(): all
-
- .macro invalid
-# This is "undefined" but it's not properly decoded yet.
- .word 0x07ffffff
-# This is stc which isn't recognized yet.
- stc 0,cr0,[r0]
- .endm
-
- .global _start
-_start:
-# Run some simple insns to confirm the engine is at least working.
- nop
-
-# Skip over output text.
- bl do_test
-
-pass:
- .asciz "pass\n"
- .p2align 2
-
-do_test:
- mov r4, r14
- bl continue
-word1:
- .word 0x5555
-continue:
- ldr r6, [r14, #1]
- ldr r7, word2
- cmp r6, r7
- # Failed.
- bne done
-
-output_next:
-# Output a character (in arm mode).
- mov r0,#3
- mov r1,r4
- swi #0x123456
-
-# Load next character, see if done.
- add r4,r4,#1
- sub r3,r3,r3
- ldrb r5,[r4,r3]
- teq r5,#0
- bne output_next
-
-done:
- mov r0,#0x18
- ldr r1,exit_code
- swi #0x123456
-
-# If that fails, try to die with an invalid insn.
- invalid
-
-exit_code:
- .word 0x20026
- .word 0xFFFFFFFF
-word2:
- .word 0x55000055
- .word 0xFFFFFFFF
diff --git a/sim/testsuite/sim/arm/misaligned2.ms b/sim/testsuite/sim/arm/misaligned2.ms
deleted file mode 100644
index 3a03326..0000000
--- a/sim/testsuite/sim/arm/misaligned2.ms
+++ /dev/null
@@ -1,60 +0,0 @@
-# Test LDR instructions with offsets misaligned by 2 bytes.
-# mach(): all
-
- .macro invalid
-# This is "undefined" but it's not properly decoded yet.
- .word 0x07ffffff
-# This is stc which isn't recognized yet.
- stc 0,cr0,[r0]
- .endm
-
- .global _start
-_start:
-# Run some simple insns to confirm the engine is at least working.
- nop
-
-# Skip over output text.
- bl do_test
-
-pass:
- .asciz "pass\n"
- .p2align 2
-
-do_test:
- mov r4, r14
- bl continue
-word1:
- .word 0x5555
-continue:
- ldr r6, [r14, #2]
- ldr r7, word2
- cmp r6, r7
- # Failed.
- bne done
-
-output_next:
-# Output a character (in arm mode).
- mov r0,#3
- mov r1,r4
- swi #0x123456
-
-# Load next character, see if done.
- add r4,r4,#1
- sub r3,r3,r3
- ldrb r5,[r4,r3]
- teq r5,#0
- bne output_next
-
-done:
- mov r0,#0x18
- ldr r1,exit_code
- swi #0x123456
-
-# If that fails, try to die with an invalid insn.
- invalid
-
-exit_code:
- .word 0x20026
-
-word2:
- .word 0x55550000
diff --git a/sim/testsuite/sim/arm/misaligned3.ms b/sim/testsuite/sim/arm/misaligned3.ms
deleted file mode 100644
index bf2d9f1..0000000
--- a/sim/testsuite/sim/arm/misaligned3.ms
+++ /dev/null
@@ -1,62 +0,0 @@
-# Test LDR instructions with offsets misaligned by 3 bytes.
-# mach(): all
-
- .macro invalid
-# This is "undefined" but it's not properly decoded yet.
- .word 0x07ffffff
-# This is stc which isn't recognized yet.
- stc 0,cr0,[r0]
- .endm
-
- .global _start
-_start:
-# Run some simple insns to confirm the engine is at least working.
- nop
-
-# Skip over output text.
- bl do_test
-
-pass:
- .asciz "pass\n"
- .p2align 2
-
-do_test:
- mov r4, r14
- bl continue
-word1:
- .word 0x5555
-continue:
- ldr r6, [r14, #3]
- ldr r7, word2
- cmp r6, r7
- # Failed.
- bne done
-
-output_next:
-# Output a character (in arm mode).
- mov r0,#3
- mov r1,r4
- swi #0x123456
-
-# Load next character, see if done.
- add r4,r4,#1
- sub r3,r3,r3
- ldrb r5,[r4,r3]
- teq r5,#0
- bne output_next
-
-done:
- mov r0,#0x18
- ldr r1,exit_code
- swi #0x123456
-
-# If that fails, try to die with an invalid insn.
- invalid
-
-exit_code:
- .word 0x20026
-
- .word 0xFFFFFFFF
-word2:
- .word 0x555500
- .word 0xFFFFFFFF
diff --git a/sim/testsuite/sim/arm/misc.exp b/sim/testsuite/sim/arm/misc.exp
deleted file mode 100644
index 1e8006f..0000000
--- a/sim/testsuite/sim/arm/misc.exp
+++ /dev/null
@@ -1,20 +0,0 @@
-# Miscellaneous ARM simulator testcases
-
-if { [istarget arm*-*-*] || [istarget thumb*-*-*] || [istarget xscale*-*-*] } {
- # load support procs
- # load_lib cgen.exp
-
- # all machines
- set all_machs "arm7tdmi"
-
- # The .ms suffix is for "miscellaneous .s".
- foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.ms]] {
- # If we're only testing specific files and this isn't one of them,
- # skip it.
- if ![runtest_file_p $runtests $src] {
- continue
- }
-
- run_sim_test $src $all_machs
- }
-}
diff --git a/sim/testsuite/sim/arm/mla.cgs b/sim/testsuite/sim/arm/mla.cgs
deleted file mode 100644
index c82dd0c..0000000
--- a/sim/testsuite/sim/arm/mla.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for mla$cond${set-cc?} ${mul-rd},$rm,$rs,${mul-rn}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global mla
-mla:
- mla00 pc,pc,pc,pc
-
- pass
diff --git a/sim/testsuite/sim/arm/mov.cgs b/sim/testsuite/sim/arm/mov.cgs
deleted file mode 100644
index d2a83d3..0000000
--- a/sim/testsuite/sim/arm/mov.cgs
+++ /dev/null
@@ -1,36 +0,0 @@
-# arm testcase for mov$cond${set-cc?} $rd,$imm12
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global mov_imm
-mov_imm:
- mov00 pc,0
-
- pass
-# arm testcase for mov$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftimm}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global mov_reg_imm_shift
-mov_reg_imm_shift:
- mov00 pc,pc,pc,lsl 0
-
- pass
-# arm testcase for mov$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftreg}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global mov_reg_reg_shift
-mov_reg_reg_shift:
- mov00 pc,pc,pc,lsl pc
-
- pass
diff --git a/sim/testsuite/sim/arm/mrs.cgs b/sim/testsuite/sim/arm/mrs.cgs
deleted file mode 100644
index 22c5e95..0000000
--- a/sim/testsuite/sim/arm/mrs.cgs
+++ /dev/null
@@ -1,24 +0,0 @@
-# arm testcase for mrs$cond $rd,cpsr
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global mrs_c
-mrs_c:
- mrs0 pc,cpsr
-
- pass
-# arm testcase for mrs$cond $rd,spsr
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global mrs_s
-mrs_s:
- mrs0 pc,spsr
-
- pass
diff --git a/sim/testsuite/sim/arm/msr.cgs b/sim/testsuite/sim/arm/msr.cgs
deleted file mode 100644
index c79f0bd..0000000
--- a/sim/testsuite/sim/arm/msr.cgs
+++ /dev/null
@@ -1,24 +0,0 @@
-# arm testcase for msr$cond cpsr,$rm
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global msr_c
-msr_c:
- msr0 cpsr,pc
-
- pass
-# arm testcase for msr$cond spsr,$rm
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global msr_s
-msr_s:
- msr0 spsr,pc
-
- pass
diff --git a/sim/testsuite/sim/arm/mul.cgs b/sim/testsuite/sim/arm/mul.cgs
deleted file mode 100644
index 4f0a926..0000000
--- a/sim/testsuite/sim/arm/mul.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for mul$cond${set-cc?} ${mul-rd},$rm,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global mul
-mul:
- mul00 pc,pc,pc
-
- pass
diff --git a/sim/testsuite/sim/arm/mvn.cgs b/sim/testsuite/sim/arm/mvn.cgs
deleted file mode 100644
index 92fd3a4..0000000
--- a/sim/testsuite/sim/arm/mvn.cgs
+++ /dev/null
@@ -1,36 +0,0 @@
-# arm testcase for mvn$cond${set-cc?} $rd,$imm12
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global mvn_imm
-mvn_imm:
- mvn00 pc,0
-
- pass
-# arm testcase for mvn$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftimm}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global mvn_reg_imm_shift
-mvn_reg_imm_shift:
- mvn00 pc,pc,pc,lsl 0
-
- pass
-# arm testcase for mvn$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftreg}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global mvn_reg_reg_shift
-mvn_reg_reg_shift:
- mvn00 pc,pc,pc,lsl pc
-
- pass
diff --git a/sim/testsuite/sim/arm/orr.cgs b/sim/testsuite/sim/arm/orr.cgs
deleted file mode 100644
index 3fc67ad..0000000
--- a/sim/testsuite/sim/arm/orr.cgs
+++ /dev/null
@@ -1,36 +0,0 @@
-# arm testcase for orr$cond${set-cc?} $rd,$rn,$imm12
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global orr_imm
-orr_imm:
- orr00 pc,pc,0
-
- pass
-# arm testcase for orr$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftimm}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global orr_reg_imm_shift
-orr_reg_imm_shift:
- orr00 pc,pc,pc,lsl 0
-
- pass
-# arm testcase for orr$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftreg}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global orr_reg_reg_shift
-orr_reg_reg_shift:
- orr00 pc,pc,pc,lsl pc
-
- pass
diff --git a/sim/testsuite/sim/arm/rsb.cgs b/sim/testsuite/sim/arm/rsb.cgs
deleted file mode 100644
index 14edc35..0000000
--- a/sim/testsuite/sim/arm/rsb.cgs
+++ /dev/null
@@ -1,36 +0,0 @@
-# arm testcase for rsb$cond${set-cc?} $rd,$rn,$imm12
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global rsb_imm
-rsb_imm:
- rsb00 pc,pc,0
-
- pass
-# arm testcase for rsb$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftimm}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global rsb_reg_imm_shift
-rsb_reg_imm_shift:
- rsb00 pc,pc,pc,lsl 0
-
- pass
-# arm testcase for rsb$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftreg}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global rsb_reg_reg_shift
-rsb_reg_reg_shift:
- rsb00 pc,pc,pc,lsl pc
-
- pass
diff --git a/sim/testsuite/sim/arm/rsc.cgs b/sim/testsuite/sim/arm/rsc.cgs
deleted file mode 100644
index 078fbcc..0000000
--- a/sim/testsuite/sim/arm/rsc.cgs
+++ /dev/null
@@ -1,36 +0,0 @@
-# arm testcase for rsc$cond${set-cc?} $rd,$rn,$imm12
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global rsc_imm
-rsc_imm:
- rsc00 pc,pc,0
-
- pass
-# arm testcase for rsc$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftimm}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global rsc_reg_imm_shift
-rsc_reg_imm_shift:
- rsc00 pc,pc,pc,lsl 0
-
- pass
-# arm testcase for rsc$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftreg}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global rsc_reg_reg_shift
-rsc_reg_reg_shift:
- rsc00 pc,pc,pc,lsl pc
-
- pass
diff --git a/sim/testsuite/sim/arm/sbc.cgs b/sim/testsuite/sim/arm/sbc.cgs
deleted file mode 100644
index 9462702..0000000
--- a/sim/testsuite/sim/arm/sbc.cgs
+++ /dev/null
@@ -1,36 +0,0 @@
-# arm testcase for sbc$cond${set-cc?} $rd,$rn,$imm12
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global sbc_imm
-sbc_imm:
- sbc00 pc,pc,0
-
- pass
-# arm testcase for sbc$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftimm}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global sbc_reg_imm_shift
-sbc_reg_imm_shift:
- sbc00 pc,pc,pc,lsl 0
-
- pass
-# arm testcase for sbc$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftreg}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global sbc_reg_reg_shift
-sbc_reg_reg_shift:
- sbc00 pc,pc,pc,lsl pc
-
- pass
diff --git a/sim/testsuite/sim/arm/smlal.cgs b/sim/testsuite/sim/arm/smlal.cgs
deleted file mode 100644
index 4ad1373..0000000
--- a/sim/testsuite/sim/arm/smlal.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for smlal$cond${set-cc?} $rdlo,$rdhi,$rm,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global smlal
-smlal:
- smlal00 pc,pc,pc,pc
-
- pass
diff --git a/sim/testsuite/sim/arm/smull.cgs b/sim/testsuite/sim/arm/smull.cgs
deleted file mode 100644
index 22e3960..0000000
--- a/sim/testsuite/sim/arm/smull.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for smull$cond${set-cc?} $rdlo,$rdhi,$rm,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global smull
-smull:
- smull00 pc,pc,pc,pc
-
- pass
diff --git a/sim/testsuite/sim/arm/stm.cgs b/sim/testsuite/sim/arm/stm.cgs
deleted file mode 100644
index c381216..0000000
--- a/sim/testsuite/sim/arm/stm.cgs
+++ /dev/null
@@ -1,88 +0,0 @@
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global stmda_wb
-stmda_wb:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global stmda
-stmda:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global stmdb_wb
-stmdb_wb:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global stmdb
-stmdb:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global stmia_wb
-stmia_wb:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global stmia
-stmia:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global stmib_wb
-stmib_wb:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global stmib
-stmib:
-
- pass
diff --git a/sim/testsuite/sim/arm/str.cgs b/sim/testsuite/sim/arm/str.cgs
deleted file mode 100644
index 82c683b..0000000
--- a/sim/testsuite/sim/arm/str.cgs
+++ /dev/null
@@ -1,192 +0,0 @@
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_post_dec_imm_offset
-str_post_dec_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for ldr${cond}t $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_post_dec_nonpriv_imm_offset
-str_post_dec_nonpriv_imm_offset:
- ldr0t pc,???
-
- pass
-# arm testcase for str${cond}t $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_post_dec_nonpriv_reg_offset
-str_post_dec_nonpriv_reg_offset:
- str0t pc,???
-
- pass
-# arm testcase for str${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_post_dec_reg_offset
-str_post_dec_reg_offset:
- str0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_post_inc_imm_offset
-str_post_inc_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for ldr${cond}t $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_post_inc_nonpriv_imm_offset
-str_post_inc_nonpriv_imm_offset:
- ldr0t pc,???
-
- pass
-# arm testcase for str${cond}t $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_post_inc_nonpriv_reg_offset
-str_post_inc_nonpriv_reg_offset:
- str0t pc,???
-
- pass
-# arm testcase for str${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_post_inc_reg_offset
-str_post_inc_reg_offset:
- str0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_pre_dec_imm_offset
-str_pre_dec_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for str${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_pre_dec_reg_offset
-str_pre_dec_reg_offset:
- str0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_pre_dec_wb_imm_offset
-str_pre_dec_wb_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for str${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_pre_dec_wb_reg_offset
-str_pre_dec_wb_reg_offset:
- str0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_pre_inc_imm_offset
-str_pre_inc_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for str${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_pre_inc_reg_offset
-str_pre_inc_reg_offset:
- str0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_pre_inc_wb_imm_offset
-str_pre_inc_wb_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for str${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_pre_inc_wb_reg_offset
-str_pre_inc_wb_reg_offset:
- str0 pc,???
-
- pass
diff --git a/sim/testsuite/sim/arm/strb.cgs b/sim/testsuite/sim/arm/strb.cgs
deleted file mode 100644
index 875a649..0000000
--- a/sim/testsuite/sim/arm/strb.cgs
+++ /dev/null
@@ -1,192 +0,0 @@
-# arm testcase for ldr${cond}b $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_post_dec_imm_offset
-strb_post_dec_imm_offset:
- ldr0b pc,???
-
- pass
-# arm testcase for ldr${cond}t $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_post_dec_nonpriv_imm_offset
-strb_post_dec_nonpriv_imm_offset:
- ldr0t pc,???
-
- pass
-# arm testcase for str${cond}t $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_post_dec_nonpriv_reg_offset
-strb_post_dec_nonpriv_reg_offset:
- str0t pc,???
-
- pass
-# arm testcase for str${cond}b $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_post_dec_reg_offset
-strb_post_dec_reg_offset:
- str0b pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_post_inc_imm_offset
-strb_post_inc_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for ldr${cond}t $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_post_inc_nonpriv_imm_offset
-strb_post_inc_nonpriv_imm_offset:
- ldr0t pc,???
-
- pass
-# arm testcase for str${cond}t $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_post_inc_nonpriv_reg_offset
-strb_post_inc_nonpriv_reg_offset:
- str0t pc,???
-
- pass
-# arm testcase for str${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_post_inc_reg_offset
-strb_post_inc_reg_offset:
- str0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_pre_dec_imm_offset
-strb_pre_dec_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for str${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_pre_dec_reg_offset
-strb_pre_dec_reg_offset:
- str0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_pre_dec_wb_imm_offset
-strb_pre_dec_wb_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for str${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_pre_dec_wb_reg_offset
-strb_pre_dec_wb_reg_offset:
- str0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_pre_inc_imm_offset
-strb_pre_inc_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for str${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_pre_inc_reg_offset
-strb_pre_inc_reg_offset:
- str0 pc,???
-
- pass
-# arm testcase for ldr${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_pre_inc_wb_imm_offset
-strb_pre_inc_wb_imm_offset:
- ldr0 pc,???
-
- pass
-# arm testcase for str${cond} $rd,???
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_pre_inc_wb_reg_offset
-strb_pre_inc_wb_reg_offset:
- str0 pc,???
-
- pass
diff --git a/sim/testsuite/sim/arm/strh.cgs b/sim/testsuite/sim/arm/strh.cgs
deleted file mode 100644
index e111d48..0000000
--- a/sim/testsuite/sim/arm/strh.cgs
+++ /dev/null
@@ -1,132 +0,0 @@
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strh_post_dec_imm_offset
-strh_post_dec_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strh_post_dec_reg_offset
-strh_post_dec_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strh_post_inc_imm_offset
-strh_post_inc_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strh_post_inc_reg_offset
-strh_post_inc_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strh_pre_dec_imm_offset
-strh_pre_dec_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strh_pre_dec_reg_offset
-strh_pre_dec_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strh_pre_dec_wb_imm_offset
-strh_pre_dec_wb_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strh_pre_dec_wb_reg_offset
-strh_pre_dec_wb_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strh_pre_inc_imm_offset
-strh_pre_inc_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strh_pre_inc_reg_offset
-strh_pre_inc_reg_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strh_pre_inc_wb_imm_offset
-strh_pre_inc_wb_imm_offset:
-
- pass
-# arm testcase for FIXME
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strh_pre_inc_wb_reg_offset
-strh_pre_inc_wb_reg_offset:
-
- pass
diff --git a/sim/testsuite/sim/arm/sub.cgs b/sim/testsuite/sim/arm/sub.cgs
deleted file mode 100644
index 50f222c..0000000
--- a/sim/testsuite/sim/arm/sub.cgs
+++ /dev/null
@@ -1,36 +0,0 @@
-# arm testcase for sub$cond${set-cc?} $rd,$rn,$imm12
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global sub_imm
-sub_imm:
- sub00 pc,pc,0
-
- pass
-# arm testcase for sub$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftimm}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global sub_reg_imm_shift
-sub_reg_imm_shift:
- sub00 pc,pc,pc,lsl 0
-
- pass
-# arm testcase for sub$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftreg}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global sub_reg_reg_shift
-sub_reg_reg_shift:
- sub00 pc,pc,pc,lsl pc
-
- pass
diff --git a/sim/testsuite/sim/arm/swi.cgs b/sim/testsuite/sim/arm/swi.cgs
deleted file mode 100644
index 0c23d43..0000000
--- a/sim/testsuite/sim/arm/swi.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for swi$cond ${swi-comment}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global swi
-swi:
- swi0 0
-
- pass
diff --git a/sim/testsuite/sim/arm/swp.cgs b/sim/testsuite/sim/arm/swp.cgs
deleted file mode 100644
index f965ef2..0000000
--- a/sim/testsuite/sim/arm/swp.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for swp$cond $rd,$rm,[$rn]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global swp
-swp:
- swp0 pc,pc,[pc]
-
- pass
diff --git a/sim/testsuite/sim/arm/swpb.cgs b/sim/testsuite/sim/arm/swpb.cgs
deleted file mode 100644
index 6f8a076..0000000
--- a/sim/testsuite/sim/arm/swpb.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for swpb${cond}b $rd,$rm,[$rn]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global swpb
-swpb:
- swpb0b pc,pc,[pc]
-
- pass
diff --git a/sim/testsuite/sim/arm/teq.cgs b/sim/testsuite/sim/arm/teq.cgs
deleted file mode 100644
index 6c69347..0000000
--- a/sim/testsuite/sim/arm/teq.cgs
+++ /dev/null
@@ -1,36 +0,0 @@
-# arm testcase for teq${cond}${set-cc?} $rn,$imm12
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global teq_imm
-teq_imm:
- teq00 pc,0
-
- pass
-# arm testcase for teq$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftimm}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global teq_reg_imm_shift
-teq_reg_imm_shift:
- teq00 pc,pc,pc,lsl 0
-
- pass
-# arm testcase for teq$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftreg}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global teq_reg_reg_shift
-teq_reg_reg_shift:
- teq00 pc,pc,pc,lsl pc
-
- pass
diff --git a/sim/testsuite/sim/arm/testutils.inc b/sim/testsuite/sim/arm/testutils.inc
deleted file mode 100644
index ae49db8..0000000
--- a/sim/testsuite/sim/arm/testutils.inc
+++ /dev/null
@@ -1,118 +0,0 @@
-# r0-r3 are used as tmps, consider them call clobbered by these macros.
-# This uses the angel rom monitor calls.
-# ??? How do we use the \@ facility of .macros ???
-# @ is the comment char!
-
- .macro mvi_h_gr reg, val
- ldr \reg,[pc]
- b . + 8
- .word \val
- .endm
-
- .macro mvaddr_h_gr reg, addr
- ldr \reg,[pc]
- b . + 8
- .word \addr
- .endm
-
- .macro start
- .data
-failmsg:
- .asciz "fail\n"
-passmsg:
- .asciz "pass\n"
- .text
-
-do_pass:
- ldr r1, passmsg_addr
- mov r0, #4
- swi #0x123456
- exit 0
-passmsg_addr:
- .word passmsg
-
-do_fail:
- ldr r1, failmsg_addr
- mov r0, #4
- swi #0x123456
- exit 1
-failmsg_addr:
- .word failmsg
-
- .global _start
-_start:
- .endm
-
-# *** Other macros know pass/fail are 4 bytes in size! Yuck.
-
- .macro pass
- b do_pass
- .endm
-
- .macro fail
- b do_fail
- .endm
-
- .macro exit rc
- # ??? This works with the ARMulator but maybe not others.
- #mov r0, #\rc
- #swi #1
- # This seems to be portable (though it ignores rc).
- mov r0,#0x18
- mvi_h_gr r1, 0x20026
- swi #0x123456
- # If that returns, punt with a sigill.
- stc 0,cr0,[r0]
- .endm
-
-# Other macros know this only clobbers r0.
-# WARNING: It also clobbers the condition codes (FIXME).
- .macro test_h_gr reg, val
- mvaddr_h_gr r0, \val
- cmp \reg, r0
- beq . + 8
- fail
- .endm
-
- .macro mvi_h_cnvz c, n, v, z
- mov r0, #0
- .if \c
- orr r0, r0, #0x20000000
- .endif
- .if \n
- orr r0, r0, #0x80000000
- .endif
- .if \v
- orr r0, r0, #0x10000000
- .endif
- .if \z
- orr r0, r0, #0x40000000
- .endif
- mrs r1, cpsr
- bic r1, r1, #0xf0000000
- orr r1, r1, r0
- msr cpsr, r1
- # ??? nops needed
- .endm
-
-# ??? Preserve condition codes?
- .macro test_h_cnvz c, n, v, z
- mov r0, #0
- .if \c
- orr r0, r0, #0x20000000
- .endif
- .if \n
- orr r0, r0, #0x80000000
- .endif
- .if \v
- orr r0, r0, #0x10000000
- .endif
- .if \z
- orr r0, r0, #0x40000000
- .endif
- mrs r1, cpsr
- and r1, r1, #0xf0000000
- cmp r0, r1
- beq . + 8
- fail
- .endm
diff --git a/sim/testsuite/sim/arm/thumb/adc.cgs b/sim/testsuite/sim/arm/thumb/adc.cgs
deleted file mode 100644
index 58d74c1..0000000
--- a/sim/testsuite/sim/arm/thumb/adc.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for adc $rd,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global alu_adc
-alu_adc:
- adc r0,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/add-hd-hs.cgs b/sim/testsuite/sim/arm/thumb/add-hd-hs.cgs
deleted file mode 100644
index 0307acc..0000000
--- a/sim/testsuite/sim/arm/thumb/add-hd-hs.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for add $hd,$hs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global add_hd_hs
-add_hd_hs:
- add r8,r8
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/add-hd-rs.cgs b/sim/testsuite/sim/arm/thumb/add-hd-rs.cgs
deleted file mode 100644
index ca080f7..0000000
--- a/sim/testsuite/sim/arm/thumb/add-hd-rs.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for add $hd,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global add_hd_rs
-add_hd_rs:
- add r8,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/add-rd-hs.cgs b/sim/testsuite/sim/arm/thumb/add-rd-hs.cgs
deleted file mode 100644
index 46373a0..0000000
--- a/sim/testsuite/sim/arm/thumb/add-rd-hs.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for add $rd,$hs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global add_rd_hs
-add_rd_hs:
- add r0,r8
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/add-sp.cgs b/sim/testsuite/sim/arm/thumb/add-sp.cgs
deleted file mode 100644
index 54efa2a..0000000
--- a/sim/testsuite/sim/arm/thumb/add-sp.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for add sp,#$sword7
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global add_sp
-add_sp:
- add sp,#0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/add.cgs b/sim/testsuite/sim/arm/thumb/add.cgs
deleted file mode 100644
index 63cc20c..0000000
--- a/sim/testsuite/sim/arm/thumb/add.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for add $rd,$rs,$rn
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global add
-add:
- add r0,r0,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/addi.cgs b/sim/testsuite/sim/arm/thumb/addi.cgs
deleted file mode 100644
index 00ec76d..0000000
--- a/sim/testsuite/sim/arm/thumb/addi.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for add $rd,$rs,#$offset3
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global addi
-addi:
- add r0,r0,#0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/addi8.cgs b/sim/testsuite/sim/arm/thumb/addi8.cgs
deleted file mode 100644
index d8e9f81..0000000
--- a/sim/testsuite/sim/arm/thumb/addi8.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for add ${bit10-rd},#$offset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global addi8
-addi8:
- add r0,#0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/allthumb.exp b/sim/testsuite/sim/arm/thumb/allthumb.exp
deleted file mode 100644
index 9674bca..0000000
--- a/sim/testsuite/sim/arm/thumb/allthumb.exp
+++ /dev/null
@@ -1,21 +0,0 @@
-# ARM simulator testsuite.
-
-if { [istarget arm*-*-*]
- || [istarget thumb*-*-*] } {
- # load support procs (none yet)
- # load_lib cgen.exp
-
- # all machines
- set all_machs "arm7tdmi"
-
- # The .cgs suffix is for "cgen .s".
- foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.cgs]] {
- # If we're only testing specific files and this isn't one of them,
- # skip it.
- if ![runtest_file_p $runtests $src] {
- continue
- }
-
- run_sim_test $src $all_machs
- }
-}
diff --git a/sim/testsuite/sim/arm/thumb/and.cgs b/sim/testsuite/sim/arm/thumb/and.cgs
deleted file mode 100644
index d67adf4..0000000
--- a/sim/testsuite/sim/arm/thumb/and.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for and $rd,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global alu_and
-alu_and:
- and r0,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/asr.cgs b/sim/testsuite/sim/arm/thumb/asr.cgs
deleted file mode 100644
index 4d21dae..0000000
--- a/sim/testsuite/sim/arm/thumb/asr.cgs
+++ /dev/null
@@ -1,14 +0,0 @@
-# arm testcase for asr $rd,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global alu_asr
-alu_asr:
- asr r0,r0
-
-# FIXME: Also asr $rd,$rs,#$offset5
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/b.cgs b/sim/testsuite/sim/arm/thumb/b.cgs
deleted file mode 100644
index ecae537..0000000
--- a/sim/testsuite/sim/arm/thumb/b.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for b $offset11
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global b
-b:
- b footext
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/bcc.cgs b/sim/testsuite/sim/arm/thumb/bcc.cgs
deleted file mode 100644
index 6c84458..0000000
--- a/sim/testsuite/sim/arm/thumb/bcc.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bcc $soffset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global bcc
-bcc:
- bcc footext
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/bcs.cgs b/sim/testsuite/sim/arm/thumb/bcs.cgs
deleted file mode 100644
index a29a8fb..0000000
--- a/sim/testsuite/sim/arm/thumb/bcs.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bcs $soffset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global bcs
-bcs:
- bcs footext
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/beq.cgs b/sim/testsuite/sim/arm/thumb/beq.cgs
deleted file mode 100644
index 33f3748..0000000
--- a/sim/testsuite/sim/arm/thumb/beq.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for beq $soffset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global beq
-beq:
- beq footext
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/bge.cgs b/sim/testsuite/sim/arm/thumb/bge.cgs
deleted file mode 100644
index 4eb543d..0000000
--- a/sim/testsuite/sim/arm/thumb/bge.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bge $soffset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global bge
-bge:
- bge footext
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/bgt.cgs b/sim/testsuite/sim/arm/thumb/bgt.cgs
deleted file mode 100644
index 1ffe092..0000000
--- a/sim/testsuite/sim/arm/thumb/bgt.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bgt $soffset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global bgt
-bgt:
- bgt footext
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/bhi.cgs b/sim/testsuite/sim/arm/thumb/bhi.cgs
deleted file mode 100644
index c9811c6..0000000
--- a/sim/testsuite/sim/arm/thumb/bhi.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bhi $soffset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global bhi
-bhi:
- bhi footext
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/bic.cgs b/sim/testsuite/sim/arm/thumb/bic.cgs
deleted file mode 100644
index 6dca1ef..0000000
--- a/sim/testsuite/sim/arm/thumb/bic.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bic $rd,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global alu_bic
-alu_bic:
- bic r0,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/bl-hi.cgs b/sim/testsuite/sim/arm/thumb/bl-hi.cgs
deleted file mode 100644
index c7400c7..0000000
--- a/sim/testsuite/sim/arm/thumb/bl-hi.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bl-hi ${lbwl-hi}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global bl_hi
-bl_hi:
- bl-hi 0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/bl-lo.cgs b/sim/testsuite/sim/arm/thumb/bl-lo.cgs
deleted file mode 100644
index ed76613..0000000
--- a/sim/testsuite/sim/arm/thumb/bl-lo.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bl-lo ${lbwl-lo}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global bl_lo
-bl_lo:
- bl-lo 0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/ble.cgs b/sim/testsuite/sim/arm/thumb/ble.cgs
deleted file mode 100644
index e9c5a8f..0000000
--- a/sim/testsuite/sim/arm/thumb/ble.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for ble $soffset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ble
-ble:
- ble footext
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/bls.cgs b/sim/testsuite/sim/arm/thumb/bls.cgs
deleted file mode 100644
index 483412b..0000000
--- a/sim/testsuite/sim/arm/thumb/bls.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bls $soffset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global bls
-bls:
- bls footext
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/blt.cgs b/sim/testsuite/sim/arm/thumb/blt.cgs
deleted file mode 100644
index 0fbcbe8..0000000
--- a/sim/testsuite/sim/arm/thumb/blt.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for blt $soffset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global blt
-blt:
- blt footext
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/bmi.cgs b/sim/testsuite/sim/arm/thumb/bmi.cgs
deleted file mode 100644
index 8f7558a..0000000
--- a/sim/testsuite/sim/arm/thumb/bmi.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bmi $soffset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global bmi
-bmi:
- bmi footext
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/bne.cgs b/sim/testsuite/sim/arm/thumb/bne.cgs
deleted file mode 100644
index a5ac348..0000000
--- a/sim/testsuite/sim/arm/thumb/bne.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bne $soffset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global bne
-bne:
- bne footext
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/bpl.cgs b/sim/testsuite/sim/arm/thumb/bpl.cgs
deleted file mode 100644
index 8f64259..0000000
--- a/sim/testsuite/sim/arm/thumb/bpl.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bpl $soffset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global bpl
-bpl:
- bpl footext
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/bvc.cgs b/sim/testsuite/sim/arm/thumb/bvc.cgs
deleted file mode 100644
index bbd3af5..0000000
--- a/sim/testsuite/sim/arm/thumb/bvc.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bvc $soffset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global bvc
-bvc:
- bvc footext
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/bvs.cgs b/sim/testsuite/sim/arm/thumb/bvs.cgs
deleted file mode 100644
index 8c9a551..0000000
--- a/sim/testsuite/sim/arm/thumb/bvs.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bvs $soffset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global bvs
-bvs:
- bvs footext
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/bx-hs.cgs b/sim/testsuite/sim/arm/thumb/bx-hs.cgs
deleted file mode 100644
index d963387..0000000
--- a/sim/testsuite/sim/arm/thumb/bx-hs.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bx $hs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global bx_hs
-bx_hs:
- bx r8
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/bx-rs.cgs b/sim/testsuite/sim/arm/thumb/bx-rs.cgs
deleted file mode 100644
index f6db8c8..0000000
--- a/sim/testsuite/sim/arm/thumb/bx-rs.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for bx $rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global bx_rs
-bx_rs:
- bx r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/cmn.cgs b/sim/testsuite/sim/arm/thumb/cmn.cgs
deleted file mode 100644
index 96d53a1..0000000
--- a/sim/testsuite/sim/arm/thumb/cmn.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for cmn $rd,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global alu_cmn
-alu_cmn:
- cmn r0,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/cmp-hd-hs.cgs b/sim/testsuite/sim/arm/thumb/cmp-hd-hs.cgs
deleted file mode 100644
index 96a91a2..0000000
--- a/sim/testsuite/sim/arm/thumb/cmp-hd-hs.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for cmp $hd,$hs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global cmp_hd_hs
-cmp_hd_hs:
- cmp r8,r8
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/cmp-hd-rs.cgs b/sim/testsuite/sim/arm/thumb/cmp-hd-rs.cgs
deleted file mode 100644
index 9fc4875..0000000
--- a/sim/testsuite/sim/arm/thumb/cmp-hd-rs.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for cmp $hd,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global cmp_hd_rs
-cmp_hd_rs:
- cmp r8,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/cmp-rd-hs.cgs b/sim/testsuite/sim/arm/thumb/cmp-rd-hs.cgs
deleted file mode 100644
index e3f7a4a..0000000
--- a/sim/testsuite/sim/arm/thumb/cmp-rd-hs.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for cmp $rd,$hs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global cmp_rd_hs
-cmp_rd_hs:
- cmp r0,r8
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/cmp.cgs b/sim/testsuite/sim/arm/thumb/cmp.cgs
deleted file mode 100644
index 7564099..0000000
--- a/sim/testsuite/sim/arm/thumb/cmp.cgs
+++ /dev/null
@@ -1,14 +0,0 @@
-# arm testcase for cmp ${bit10-rd},#$offset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global cmp
-cmp:
- cmp r0,#0
-
-# FIXME: Also: cmp $rd,$rs
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/eor.cgs b/sim/testsuite/sim/arm/thumb/eor.cgs
deleted file mode 100644
index cc6021c..0000000
--- a/sim/testsuite/sim/arm/thumb/eor.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for eor $rd,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global alu_eor
-alu_eor:
- eor r0,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/lda-pc.cgs b/sim/testsuite/sim/arm/thumb/lda-pc.cgs
deleted file mode 100644
index 74407e2..0000000
--- a/sim/testsuite/sim/arm/thumb/lda-pc.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for add ${bit10-rd},pc,$word8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global lda_pc
-lda_pc:
- add r0,pc,0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/lda-sp.cgs b/sim/testsuite/sim/arm/thumb/lda-sp.cgs
deleted file mode 100644
index ce2b62e..0000000
--- a/sim/testsuite/sim/arm/thumb/lda-sp.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for add ${bit10-rd},sp,$word8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global lda_sp
-lda_sp:
- add r0,sp,0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/ldmia.cgs b/sim/testsuite/sim/arm/thumb/ldmia.cgs
deleted file mode 100644
index 550031e..0000000
--- a/sim/testsuite/sim/arm/thumb/ldmia.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for ldmia $rb!,{$rlist}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldmia
-ldmia:
- ldmia r0!,{0}
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/ldr-imm.cgs b/sim/testsuite/sim/arm/thumb/ldr-imm.cgs
deleted file mode 100644
index a757f33..0000000
--- a/sim/testsuite/sim/arm/thumb/ldr-imm.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for ldr $rd,[$rb,#${offset5-7}]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_imm
-ldr_imm:
- ldr r0,[r0,#0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/ldr-pc.cgs b/sim/testsuite/sim/arm/thumb/ldr-pc.cgs
deleted file mode 100644
index 8227562..0000000
--- a/sim/testsuite/sim/arm/thumb/ldr-pc.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for ldr ${bit10-rd},[pc,#$word8]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_pc
-ldr_pc:
- ldr r0,[pc,#0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/ldr-sprel.cgs b/sim/testsuite/sim/arm/thumb/ldr-sprel.cgs
deleted file mode 100644
index 11eee26..0000000
--- a/sim/testsuite/sim/arm/thumb/ldr-sprel.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for ldr ${bit10-rd},[sp,#$word8]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr_sprel
-ldr_sprel:
- ldr r0,[sp,#0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/ldr.cgs b/sim/testsuite/sim/arm/thumb/ldr.cgs
deleted file mode 100644
index 03af925..0000000
--- a/sim/testsuite/sim/arm/thumb/ldr.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for ldr $rd,[$rb,$ro]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldr
-ldr:
- ldr r0,[r0,r0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/ldrb-imm.cgs b/sim/testsuite/sim/arm/thumb/ldrb-imm.cgs
deleted file mode 100644
index c1eeafe..0000000
--- a/sim/testsuite/sim/arm/thumb/ldrb-imm.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for ldrb $rd,[$rb,#$offset5]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb_imm
-ldrb_imm:
- ldrb r0,[r0,#0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/ldrb.cgs b/sim/testsuite/sim/arm/thumb/ldrb.cgs
deleted file mode 100644
index 316a10f..0000000
--- a/sim/testsuite/sim/arm/thumb/ldrb.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for ldrb $rd,[$rb,$ro]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrb
-ldrb:
- ldrb r0,[r0,r0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/ldrh-imm.cgs b/sim/testsuite/sim/arm/thumb/ldrh-imm.cgs
deleted file mode 100644
index 81ea1e0..0000000
--- a/sim/testsuite/sim/arm/thumb/ldrh-imm.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for ldrh $rd,[$rb,#${offset5-6}]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrh_imm
-ldrh_imm:
- ldrh r0,[r0,#0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/ldrh.cgs b/sim/testsuite/sim/arm/thumb/ldrh.cgs
deleted file mode 100644
index 3ff8f4e..0000000
--- a/sim/testsuite/sim/arm/thumb/ldrh.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for ldrh $rd,[$rb,$ro]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldrh
-ldrh:
- ldrh r0,[r0,r0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/ldsb.cgs b/sim/testsuite/sim/arm/thumb/ldsb.cgs
deleted file mode 100644
index e1612c9..0000000
--- a/sim/testsuite/sim/arm/thumb/ldsb.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for ldsb $rd,[$rb,$ro]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldsb
-ldsb:
- ldsb r0,[r0,r0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/ldsh.cgs b/sim/testsuite/sim/arm/thumb/ldsh.cgs
deleted file mode 100644
index 46d49ac..0000000
--- a/sim/testsuite/sim/arm/thumb/ldsh.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for ldsh $rd,[$rb,$ro]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global ldsh
-ldsh:
- ldsh r0,[r0,r0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/lsl.cgs b/sim/testsuite/sim/arm/thumb/lsl.cgs
deleted file mode 100644
index 05222e7..0000000
--- a/sim/testsuite/sim/arm/thumb/lsl.cgs
+++ /dev/null
@@ -1,14 +0,0 @@
-# arm testcase for lsl $rd,$rs,#$offset5
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global lsl
-lsl:
- lsl r0,r0,#0
-
-# FIXME: Also lsl $rd,$rs
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/lsr.cgs b/sim/testsuite/sim/arm/thumb/lsr.cgs
deleted file mode 100644
index fe38fe0..0000000
--- a/sim/testsuite/sim/arm/thumb/lsr.cgs
+++ /dev/null
@@ -1,14 +0,0 @@
-# arm testcase for lsr $rd,$rs,#$offset5
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global lsr
-lsr:
- lsr r0,r0,#0
-
-# FIXME: Also lsr $rd,$rs
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/mov-hd-hs.cgs b/sim/testsuite/sim/arm/thumb/mov-hd-hs.cgs
deleted file mode 100644
index 2050908..0000000
--- a/sim/testsuite/sim/arm/thumb/mov-hd-hs.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for mov $hd,$hs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global mov_hd_hs
-mov_hd_hs:
- mov r8,r8
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/mov-hd-rs.cgs b/sim/testsuite/sim/arm/thumb/mov-hd-rs.cgs
deleted file mode 100644
index 3d229c3..0000000
--- a/sim/testsuite/sim/arm/thumb/mov-hd-rs.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for mov $hd,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global mov_hd_rs
-mov_hd_rs:
- mov r8,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/mov-rd-hs.cgs b/sim/testsuite/sim/arm/thumb/mov-rd-hs.cgs
deleted file mode 100644
index 0661dfa..0000000
--- a/sim/testsuite/sim/arm/thumb/mov-rd-hs.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for mov $rd,$hs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global mov_rd_hs
-mov_rd_hs:
- mov r0,r8
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/mov.cgs b/sim/testsuite/sim/arm/thumb/mov.cgs
deleted file mode 100644
index b497b0f..0000000
--- a/sim/testsuite/sim/arm/thumb/mov.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for mov ${bit10-rd},#$offset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global mov
-mov:
- mov r0,#0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/mul.cgs b/sim/testsuite/sim/arm/thumb/mul.cgs
deleted file mode 100644
index d160c56..0000000
--- a/sim/testsuite/sim/arm/thumb/mul.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for mul $rd,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global alu_mul
-alu_mul:
- mul r0,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/mvn.cgs b/sim/testsuite/sim/arm/thumb/mvn.cgs
deleted file mode 100644
index 606ce85..0000000
--- a/sim/testsuite/sim/arm/thumb/mvn.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for mvn $rd,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global alu_mvn
-alu_mvn:
- mvn r0,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/neg.cgs b/sim/testsuite/sim/arm/thumb/neg.cgs
deleted file mode 100644
index 09f0c81..0000000
--- a/sim/testsuite/sim/arm/thumb/neg.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for neg $rd,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global alu_neg
-alu_neg:
- neg r0,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/orr.cgs b/sim/testsuite/sim/arm/thumb/orr.cgs
deleted file mode 100644
index de6f688..0000000
--- a/sim/testsuite/sim/arm/thumb/orr.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for orr $rd,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global alu_orr
-alu_orr:
- orr r0,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/pop-pc.cgs b/sim/testsuite/sim/arm/thumb/pop-pc.cgs
deleted file mode 100644
index 4579cad..0000000
--- a/sim/testsuite/sim/arm/thumb/pop-pc.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for pop {${rlist-pc}}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global pop_pc
-pop_pc:
- pop {0}
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/pop.cgs b/sim/testsuite/sim/arm/thumb/pop.cgs
deleted file mode 100644
index b156e1d..0000000
--- a/sim/testsuite/sim/arm/thumb/pop.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for pop {$rlist}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global pop
-pop:
- pop {0}
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/push-lr.cgs b/sim/testsuite/sim/arm/thumb/push-lr.cgs
deleted file mode 100644
index ee700a4..0000000
--- a/sim/testsuite/sim/arm/thumb/push-lr.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for push {${rlist-lr}}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global push_lr
-push_lr:
- push {0}
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/push.cgs b/sim/testsuite/sim/arm/thumb/push.cgs
deleted file mode 100644
index ff94ca5..0000000
--- a/sim/testsuite/sim/arm/thumb/push.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for push {$rlist}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global push
-push:
- push {0}
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/ror.cgs b/sim/testsuite/sim/arm/thumb/ror.cgs
deleted file mode 100644
index 991fa66..0000000
--- a/sim/testsuite/sim/arm/thumb/ror.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for ror $rd,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global alu_ror
-alu_ror:
- ror r0,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/sbc.cgs b/sim/testsuite/sim/arm/thumb/sbc.cgs
deleted file mode 100644
index 078b061..0000000
--- a/sim/testsuite/sim/arm/thumb/sbc.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for sbc $rd,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global alu_sbc
-alu_sbc:
- sbc r0,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/stmia.cgs b/sim/testsuite/sim/arm/thumb/stmia.cgs
deleted file mode 100644
index 0e1c30c..0000000
--- a/sim/testsuite/sim/arm/thumb/stmia.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for stmia $rb!,{$rlist}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global stmia
-stmia:
- stmia r0!,{0}
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/str-imm.cgs b/sim/testsuite/sim/arm/thumb/str-imm.cgs
deleted file mode 100644
index ce75941..0000000
--- a/sim/testsuite/sim/arm/thumb/str-imm.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for str $rd,[$rb,#${offset5-7}]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_imm
-str_imm:
- str r0,[r0,#0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/str-sprel.cgs b/sim/testsuite/sim/arm/thumb/str-sprel.cgs
deleted file mode 100644
index 132edfb..0000000
--- a/sim/testsuite/sim/arm/thumb/str-sprel.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for str ${bit10-rd},[sp,#$word8]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str_sprel
-str_sprel:
- str r0,[sp,#0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/str.cgs b/sim/testsuite/sim/arm/thumb/str.cgs
deleted file mode 100644
index 073e20b..0000000
--- a/sim/testsuite/sim/arm/thumb/str.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for str $rd,[$rb,$ro]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global str
-str:
- str r0,[r0,r0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/strb-imm.cgs b/sim/testsuite/sim/arm/thumb/strb-imm.cgs
deleted file mode 100644
index 2b5bcf7..0000000
--- a/sim/testsuite/sim/arm/thumb/strb-imm.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for strb $rd,[$rb,#$offset5]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb_imm
-strb_imm:
- strb r0,[r0,#0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/strb.cgs b/sim/testsuite/sim/arm/thumb/strb.cgs
deleted file mode 100644
index b7cb763..0000000
--- a/sim/testsuite/sim/arm/thumb/strb.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for strb $rd,[$rb,$ro]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strb
-strb:
- strb r0,[r0,r0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/strh-imm.cgs b/sim/testsuite/sim/arm/thumb/strh-imm.cgs
deleted file mode 100644
index 9500288..0000000
--- a/sim/testsuite/sim/arm/thumb/strh-imm.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for strh $rd,[$rb,#${offset5-6}]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strh_imm
-strh_imm:
- strh r0,[r0,#0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/strh.cgs b/sim/testsuite/sim/arm/thumb/strh.cgs
deleted file mode 100644
index 13f3a0d..0000000
--- a/sim/testsuite/sim/arm/thumb/strh.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for strh $rd,[$rb,$ro]
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global strh
-strh:
- strh r0,[r0,r0]
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/sub-sp.cgs b/sim/testsuite/sim/arm/thumb/sub-sp.cgs
deleted file mode 100644
index e676f58..0000000
--- a/sim/testsuite/sim/arm/thumb/sub-sp.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for add sp,#-$sword7
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global sub_sp
-sub_sp:
- add sp,#-0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/sub.cgs b/sim/testsuite/sim/arm/thumb/sub.cgs
deleted file mode 100644
index 91cd7ab..0000000
--- a/sim/testsuite/sim/arm/thumb/sub.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for sub $rd,$rs,$rn
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global sub
-sub:
- sub r0,r0,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/subi.cgs b/sim/testsuite/sim/arm/thumb/subi.cgs
deleted file mode 100644
index 044efd0..0000000
--- a/sim/testsuite/sim/arm/thumb/subi.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for sub $rd,$rs,#$offset3
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global subi
-subi:
- sub r0,r0,#0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/subi8.cgs b/sim/testsuite/sim/arm/thumb/subi8.cgs
deleted file mode 100644
index 0c4d717..0000000
--- a/sim/testsuite/sim/arm/thumb/subi8.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for sub ${bit10-rd},#$offset8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global subi8
-subi8:
- sub r0,#0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/swi.cgs b/sim/testsuite/sim/arm/thumb/swi.cgs
deleted file mode 100644
index 1724c14..0000000
--- a/sim/testsuite/sim/arm/thumb/swi.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for swi $value8
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global swi
-swi:
- swi 0
-
- pass
diff --git a/sim/testsuite/sim/arm/thumb/testutils.inc b/sim/testsuite/sim/arm/thumb/testutils.inc
deleted file mode 100644
index bdae29b..0000000
--- a/sim/testsuite/sim/arm/thumb/testutils.inc
+++ /dev/null
@@ -1,91 +0,0 @@
-# FIXME: wip, copied from ../testutils.inc
-# r0-r3 are used as tmps, consider them call clobbered by these macros.
-# This uses the angel rom monitor calls.
-# ??? How do we use the \@ facility of .macros ???
-# @ is the comment char!
-
- .macro a_mvi_h_gr reg, val
- ldr \reg,[pc]
- b . + 8
- .word \val
- .endm
-
- .macro mvaddr_h_gr reg, addr
- ldr \reg,[pc]
- b . + 8
- .word \val
- .endm
-
- .macro start
- .data
-failmsg:
- .asciz "fail\n"
-passmsg:
- .asciz "pass\n"
- .text
-
-do_pass:
- ldr r1, passmsg_addr
- mov r0, #4
- swi #0x123456
- exit 0
-passmsg_addr:
- .word passmsg
-
-do_fail:
- ldr r1, failmsg_addr
- mov r0, #4
- swi #0x123456
- exit 1
-failmsg_addr:
- .word failmsg
-
- .global _start
-_start:
- .endm
-
-# *** Other macros know pass/fail are 4 bytes in size! Yuck.
-
- .macro pass
- b do_pass
- .endm
-
- .macro fail
- b do_fail
- .endm
-
- .macro exit rc
- mov r1, #\rc
- mov r0, #0x2a @ decimal 42
- swi #1
- # If that returns, punt with a sigill.
- stc 0,cr0,[r0]
- .endm
-
-# Other macros know this only clobbers r0.
- .macro test_h_gr reg, val
- mvaddr_h_gr r0, \val
- cmp \reg, r0
- beq . + 8
- fail
- .endm
-
- .macro mvi_h_cc c, n, v, z
- ldi8 r0, 0
- ldi8 r1, 1
- .if xxx
- cmp r0, r1
- .else
- cmp r1, r0
- .endif
- .endm
-
- .macro test_h_cc c, n, v, z
- .if xxx
- bc . + 8
- fail
- .else
- bnc . + 8
- fail
- .endif
- .endm
diff --git a/sim/testsuite/sim/arm/thumb/tst.cgs b/sim/testsuite/sim/arm/thumb/tst.cgs
deleted file mode 100644
index 068fccc..0000000
--- a/sim/testsuite/sim/arm/thumb/tst.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for tst $rd,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global alu_tst
-alu_tst:
- tst r0,r0
-
- pass
diff --git a/sim/testsuite/sim/arm/tst.cgs b/sim/testsuite/sim/arm/tst.cgs
deleted file mode 100644
index f071707..0000000
--- a/sim/testsuite/sim/arm/tst.cgs
+++ /dev/null
@@ -1,36 +0,0 @@
-# arm testcase for tst${cond}${set-cc?} $rn,$imm12
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global tst_imm
-tst_imm:
- tst00 pc,0
-
- pass
-# arm testcase for tst$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftimm}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global tst_reg_imm_shift
-tst_reg_imm_shift:
- tst00 pc,pc,pc,lsl 0
-
- pass
-# arm testcase for tst$cond${set-cc?} $rd,$rn,$rm,${operand2-shifttype} ${operand2-shiftreg}
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global tst_reg_reg_shift
-tst_reg_reg_shift:
- tst00 pc,pc,pc,lsl pc
-
- pass
diff --git a/sim/testsuite/sim/arm/umlal.cgs b/sim/testsuite/sim/arm/umlal.cgs
deleted file mode 100644
index 1c17fb6..0000000
--- a/sim/testsuite/sim/arm/umlal.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for umlal$cond${set-cc?} $rdlo,$rdhi,$rm,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global umlal
-umlal:
- umlal00 pc,pc,pc,pc
-
- pass
diff --git a/sim/testsuite/sim/arm/umull.cgs b/sim/testsuite/sim/arm/umull.cgs
deleted file mode 100644
index a58541c..0000000
--- a/sim/testsuite/sim/arm/umull.cgs
+++ /dev/null
@@ -1,12 +0,0 @@
-# arm testcase for umull$cond${set-cc?} $rdlo,$rdhi,$rm,$rs
-# mach: unfinished
-
- .include "testutils.inc"
-
- start
-
- .global umull
-umull:
- umull00 pc,pc,pc,pc
-
- pass
diff --git a/sim/testsuite/sim/arm/xscale/blx.cgs b/sim/testsuite/sim/arm/xscale/blx.cgs
deleted file mode 100644
index 854647b..0000000
--- a/sim/testsuite/sim/arm/xscale/blx.cgs
+++ /dev/null
@@ -1,31 +0,0 @@
-# arm testcase for bl$cond $offset24
-# mach: all
-
- .include "testutils.inc"
-
- start
-
- .arm
- blx thumb
-
- .thumb
- .thumb_func
-thumb:
- nop
- blx next
- blx PASS
- nop
- nop
-
- .section text1, "ax"
- .arm
-next:
- add r0, r1, r0
- bx lr
-
-FAIL:
- fail
-PASS:
- pass
-
-
diff --git a/sim/testsuite/sim/arm/xscale/mia.cgs b/sim/testsuite/sim/arm/xscale/mia.cgs
deleted file mode 100644
index a3f729e..0000000
--- a/sim/testsuite/sim/arm/xscale/mia.cgs
+++ /dev/null
@@ -1,35 +0,0 @@
-# XSCALE testcase for MIA
-# mach: xscale
-# as: -mcpu=xscale
-
- .include "testutils.inc"
-
- start
-
- .global mia
-mia:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Multilply Accumulate
-
- mvi_h_gr r0, 0x11223344
- mvi_h_gr r1, 0x55667788
- mvi_h_gr r2, 0x12345678
- mvi_h_gr r3, 0x9abcdef0
-
- mar acc0, r0, r1
-
- mia acc0, r2, r3
-
- mra r0, r1, acc0
-
- test_h_gr r0, 0x354f53c4
- test_h_gr r1, 0x4e330b5e
- test_h_gr r2, 0x12345678
- test_h_gr r3, 0x9abcdef0
-
- pass
diff --git a/sim/testsuite/sim/arm/xscale/miaph.cgs b/sim/testsuite/sim/arm/xscale/miaph.cgs
deleted file mode 100644
index 53fb201..0000000
--- a/sim/testsuite/sim/arm/xscale/miaph.cgs
+++ /dev/null
@@ -1,35 +0,0 @@
-# XSCALE testcase for MIAPH
-# mach: xscale
-# as: -mcpu=xscale
-
- .include "testutils.inc"
-
- start
-
- .global miaph
-miaph:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Multilply Accumulate
-
- mvi_h_gr r0, 0x11223344
- mvi_h_gr r1, 0x55667788
- mvi_h_gr r2, 0x12345678
- mvi_h_gr r3, 0x9abcdef0
-
- mar acc0, r0, r1
-
- miaph acc0, r2, r3
-
- mra r0, r1, acc0
-
- test_h_gr r0, 0xfec3f9f4
- test_h_gr r1, 0x55667787
- test_h_gr r2, 0x12345678
- test_h_gr r3, 0x9abcdef0
-
- pass
diff --git a/sim/testsuite/sim/arm/xscale/miaxy.cgs b/sim/testsuite/sim/arm/xscale/miaxy.cgs
deleted file mode 100644
index 624564e..0000000
--- a/sim/testsuite/sim/arm/xscale/miaxy.cgs
+++ /dev/null
@@ -1,89 +0,0 @@
-# XSCALE testcase for MIAxy
-# mach: xscale
-# as: -mcpu=xscale
-
- .include "testutils.inc"
-
- start
-
- .global miaXY
-miaXY:
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- # Test Bottom Bottom Multilply Accumulate
-
- mvi_h_gr r0, 0x11223344
- mvi_h_gr r1, 0x55667788
- mvi_h_gr r2, 0x12345678
- mvi_h_gr r3, 0x9abcdef0
-
- mar acc0, r0, r1
-
- miaBB acc0, r2, r3
-
- mra r0, r1, acc0
-
- test_h_gr r0, 0x05f753c4
- test_h_gr r1, 0x55667788
- test_h_gr r2, 0x12345678
- test_h_gr r3, 0x9abcdef0
-
- # Test Bottom Top Multilply Accumulate
-
- mvi_h_gr r0, 0x11223344
- mvi_h_gr r1, 0x55667788
- mvi_h_gr r2, 0x12345678
- mvi_h_gr r3, 0x9abcdef0
-
- mar acc0, r0, r1
-
- miaBT acc0, r2, r3
-
- mra r0, r1, acc0
-
- test_h_gr r0, 0xeeede364
- test_h_gr r1, 0x55667787
- test_h_gr r2, 0x12345678
- test_h_gr r3, 0x9abcdef0
-
- # Test Top Bottom Multilply Accumulate
-
- mvi_h_gr r0, 0x11223344
- mvi_h_gr r1, 0x55667788
- mvi_h_gr r2, 0x12345678
- mvi_h_gr r3, 0x9abcdef0
-
- mar acc0, r0, r1
-
- miaTB acc0, r2, r3
-
- mra r0, r1, acc0
-
- test_h_gr r0, 0x0ec85c04
- test_h_gr r1, 0x55667788
- test_h_gr r2, 0x12345678
- test_h_gr r3, 0x9abcdef0
-
- # Test Top Top Multilply Accumulate
-
- mvi_h_gr r0, 0x11223344
- mvi_h_gr r1, 0x55667788
- mvi_h_gr r2, 0x12345678
- mvi_h_gr r3, 0x9abcdef0
-
- mar acc0, r0, r1
-
- miaTT acc0, r2, r3
-
- mra r0, r1, acc0
-
- test_h_gr r0, 0x09eed974
- test_h_gr r1, 0x55667788
- test_h_gr r2, 0x12345678
- test_h_gr r3, 0x9abcdef0
-
- pass
diff --git a/sim/testsuite/sim/arm/xscale/mra.cgs b/sim/testsuite/sim/arm/xscale/mra.cgs
deleted file mode 100644
index be4d9df..0000000
--- a/sim/testsuite/sim/arm/xscale/mra.cgs
+++ /dev/null
@@ -1,30 +0,0 @@
-# XScale testcase for MAR and MRA
-# mach: xscale
-# as: -mcpu=xscale
-
- .include "testutils.inc"
-
- start
-
- .global mar_mra
-mar_mra:
- mvi_h_gr r2,0
- mvi_h_gr r3,0
- mvi_h_gr r4,0x0000EFA0
- mvi_h_gr r5,0xA0A0A0A0
-
- # Enable access to CoProcessors 0 & 1 before
- # we attempt these instructions.
-
- mvi_h_gr r1, 3
- mcr p15, 0, r1, cr15, cr1, 0
-
- mar acc0, r5, r4
- mra r2, r3, acc0
-
- test_h_gr r2,0xA0A0A0A0
- test_h_gr r3,0x0000EFA0
- test_h_gr r4,0x0000EFA0
- test_h_gr r5,0xA0A0A0A0
-
- pass
diff --git a/sim/testsuite/sim/arm/xscale/testutils.inc b/sim/testsuite/sim/arm/xscale/testutils.inc
deleted file mode 100644
index ae49db8..0000000
--- a/sim/testsuite/sim/arm/xscale/testutils.inc
+++ /dev/null
@@ -1,118 +0,0 @@
-# r0-r3 are used as tmps, consider them call clobbered by these macros.
-# This uses the angel rom monitor calls.
-# ??? How do we use the \@ facility of .macros ???
-# @ is the comment char!
-
- .macro mvi_h_gr reg, val
- ldr \reg,[pc]
- b . + 8
- .word \val
- .endm
-
- .macro mvaddr_h_gr reg, addr
- ldr \reg,[pc]
- b . + 8
- .word \addr
- .endm
-
- .macro start
- .data
-failmsg:
- .asciz "fail\n"
-passmsg:
- .asciz "pass\n"
- .text
-
-do_pass:
- ldr r1, passmsg_addr
- mov r0, #4
- swi #0x123456
- exit 0
-passmsg_addr:
- .word passmsg
-
-do_fail:
- ldr r1, failmsg_addr
- mov r0, #4
- swi #0x123456
- exit 1
-failmsg_addr:
- .word failmsg
-
- .global _start
-_start:
- .endm
-
-# *** Other macros know pass/fail are 4 bytes in size! Yuck.
-
- .macro pass
- b do_pass
- .endm
-
- .macro fail
- b do_fail
- .endm
-
- .macro exit rc
- # ??? This works with the ARMulator but maybe not others.
- #mov r0, #\rc
- #swi #1
- # This seems to be portable (though it ignores rc).
- mov r0,#0x18
- mvi_h_gr r1, 0x20026
- swi #0x123456
- # If that returns, punt with a sigill.
- stc 0,cr0,[r0]
- .endm
-
-# Other macros know this only clobbers r0.
-# WARNING: It also clobbers the condition codes (FIXME).
- .macro test_h_gr reg, val
- mvaddr_h_gr r0, \val
- cmp \reg, r0
- beq . + 8
- fail
- .endm
-
- .macro mvi_h_cnvz c, n, v, z
- mov r0, #0
- .if \c
- orr r0, r0, #0x20000000
- .endif
- .if \n
- orr r0, r0, #0x80000000
- .endif
- .if \v
- orr r0, r0, #0x10000000
- .endif
- .if \z
- orr r0, r0, #0x40000000
- .endif
- mrs r1, cpsr
- bic r1, r1, #0xf0000000
- orr r1, r1, r0
- msr cpsr, r1
- # ??? nops needed
- .endm
-
-# ??? Preserve condition codes?
- .macro test_h_cnvz c, n, v, z
- mov r0, #0
- .if \c
- orr r0, r0, #0x20000000
- .endif
- .if \n
- orr r0, r0, #0x80000000
- .endif
- .if \v
- orr r0, r0, #0x10000000
- .endif
- .if \z
- orr r0, r0, #0x40000000
- .endif
- mrs r1, cpsr
- and r1, r1, #0xf0000000
- cmp r0, r1
- beq . + 8
- fail
- .endm
diff --git a/sim/testsuite/sim/arm/xscale/xscale.exp b/sim/testsuite/sim/arm/xscale/xscale.exp
deleted file mode 100644
index 3756929..0000000
--- a/sim/testsuite/sim/arm/xscale/xscale.exp
+++ /dev/null
@@ -1,28 +0,0 @@
-# XSCALE simulator testsuite.
-
-if { [istarget xscale*-*-*] } {
- # load support procs (none yet)
- # load_lib cgen.exp
-
- # all machines
- set all_machs "xscale"
-
- if [is_remote host] {
- remote_download host $srcdir/$subdir/testutils.inc
- }
-
- # The .cgs suffix is for "cgen .s".
- foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.cgs]] {
- # If we're only testing specific files and this isn't one of them,
- # skip it.
- if ![runtest_file_p $runtests $src] {
- continue
- }
-
- run_sim_test $src $all_machs
- }
-
- if [is_remote host] {
- remote_file host delete testutils.inc
- }
-}
diff --git a/sim/testsuite/sim/h8300/ChangeLog b/sim/testsuite/sim/h8300/ChangeLog
deleted file mode 100644
index 83d1b57..0000000
--- a/sim/testsuite/sim/h8300/ChangeLog
+++ /dev/null
@@ -1,200 +0,0 @@
-2003-04-11 Michael Snyder <msnyder@redhat.com>
-
- * mac.s: New file. Test multiply-accumulator insns.
- * allinsn.exp: Add mac tests.
-
-2003-04-10 Michael Snyder <msnyder@redhat.com>
-
- * brabc.s: New file. Test for bra/bc and bra/bs.
- * allinsn.exp: Add bra/bc test.
- * testsuite.inc: New macro memcmp.
- * bfld.s: Un-comment insns, assembler works now.
-
- * bfld.s: Add tests for bfst insn.
- * bfld.s: New file. Test for bfld insn.
- * allinsn.exp: Add bfld test.
-
-2003-04-09 Michael Snyder <msnyder@redhat.com>
-
- * movmd.s: New file. Test for movmd insn.
- * allinsn.exp: Add movmd test.
- * movsd.s: Un-comment movsd instructions (assembler works now).
- * movsd.s: New file. Test for movsd insn.
- * allinsn.exp: Add movsd test.
- * add.b.s: Add tests for ABS8 mode.
-
-2003-04-08 Michael Snyder <msnyder@redhat.com>
-
- * bset.s: New file, test bset and bclr.
- * allinsn.exp: Add bset test.
- * and.b.s: Add test for andc ccr.
- * or.b.s: Add test for orc ccr.
- * xor.b.s: Add test for xorc ccr.
-
-2003-04-07 Michael Snyder <msnyder@redhat.com>
-
- * testutils.inc (_write_and_exit): Rewrite for new syscall lib.
- (pass, fail): Use new syscall abi.
-
-2003-04-04 Michael Snyder <msnyder@redhat.com>
-
- * rotl.s: Add INDEXB, INDEXW, INDEXL tests.
- * rotl.s, rotr.s, rotxl.s, rotxr.s: New files.
- * allinsn.exp: Add rot insn tests.
-
-2003-04-03 Michael Snyder <msnyder@redhat.com>
-
- * shift.s: Remove. Replace with
- * shal.s, shar.s, shll.s, shlr.s: New files.
- * allinsn.exp: Invoke new test files.
- * ext.w.s, ext.l.s: New files, tests for exts and extu.
-
-2003-04-02 Michael Snyder <msnyder@redhat.com>
-
- * bra.s: New file, test for branch insns.
- * allinsn.exp: Add bra.s.
- * adds.s: Add ccr flags checking.
-
-2003-04-01 Michael Snyder <msnyder@redhat.com>
-
- * shift.s: Add lots of tests.
- * mov.b.s: Add word and long tests.
- * neg.s: New file, test neg instructions.
- * allinsn.exp: Add neg test.
-
-2003-03-31 Michael Snyder <msnyder@redhat.com>
-
- * addx.s: Add word and long tests.
-
-2003-03-28 Michael Snyder <msnyder@redhat.com>
-
- * mov.w.s: Add a bunch more tests for new addressing modes.
- * add.l.s: Comment fixes.
- * not.s: Add tests for word and long operations.
- * not.s: Fill out remaining tests for byte operation.
- * add.l.s: Fix up .if directives for h8h, h8s.
- * mov.l.s: Simplify results checking.
- * add.l.s: Add several dozen new tests for new addressing modes.
-
-2003-03-25 Michael Snyder <msnyder@redhat.com>
-
- * mov.l.s: A sampling of tests for esoteric addressing modes.
- * mov.l.s: Finish tests for immediate and register direct modes.
- * mov.l.s: Simplify, add more tests.
- * mov.l.s: Add more new tests.
-
-2003-03-13 Michael Snyder <msnyder@redhat.com>
-
- * not.s: New test.
- * allinsn.exp: Add not.s test.
- * add.b.s, add.w.s, addx.s and.b.s, cmp.b.s, or.b.s, sub.b.s, xor.b.s:
- Un-comment assembler instructions: assembler should handle 'em all.
-
-2003-03-04 Michael Snyder <msnyder@redhat.com>
-
- * add.b.s: Add DISP16, DISP32, ABS16, ABS32.
- * sub.b.s: Add POSTINC, POSTDEC, RDIND.
- * or.b.s, xor.b.s: Add RDPOSTINC, RDPREINC, RDPREDEC.
-
-2003-03-03 Michael Snyder <msnyder@redhat.com>
-
- * add.b.s, addx.s, and.b.s, cmp.b.s: Add RDPOSTINC,
- RDPREINC, RDPREDEC.
- * add.b.s, addx.s, and.b.s, cmp.b.s, or.b.s, xor.b.s: Add RDPOSTDEC.
-
-2003-02-28 Michael Snyder <msnyder@redhat.com>
-
- * add.b.s, and.b.s, cmp.b.s, or.b.s, sub.b.s, xor.b.s:
- Add tests for RDIND. Also add RDPOSTDEC to cmp.b.s.
- * allinsn.exp: All tests run for all machine flavors.
-
-2003-02-27 Michael Snyder <msnyder@redhat.com>
-
- * add.l.s, adds.s, addx.s, and.l.s, cmp.l.s, cmp.w.s, jmp.s,
- or.l.s, or.w.s, sub.l.s, sub.w.s, xor.l.s, xor.w.s):
- Substitute actual assembler instructions for data words!
- * addx.s: Add tests for RDIND and RDPOSTDEC.
- * shifts.s: New file.
- * allinsn.exp: Add shifts.s.
- * testutils.inc: Add assembler directive ".h8300sx".
- * add.w.s, add.l.s, ...: Add linker directive "-m h8300sxelf".
-
-2003-02-25 Michael Snyder <msnyder@redhat.com>
-
- * adds.s, addw.s: New files.
- * testutils.inc (set_ccr, set_carry_flag, test_carry_clear,
- test_carry_set, test_ovf_clear, test_ovf_set, test_zero_clear,
- test_zero_set, test_neg_clear, test_neg_set): New macros.
-
-2003-02-24 Michael Snyder <msnyder@redhat.com>
-
- * stc.c: Extend tests to all h8300s opcodes.
- * ldc.s: New file.
-
- * stc.s: New file.
- * allinsn.exp: Add stc test.
- * and.l.s: 'and.l imm:16 clears upper half of dest. reg.
- * testutils.inc: Add kludge for h8sx.
- (set_gr_a5a5, set_grs_a5a5, test_gr_a5a5, test_grs_a5a5,
- set_ccr_zero): New macros.
-
-2003-02-18 Michael Snyder <msnyder@redhat.com>
-
- * daa.s: New file.
- * das.s: New file.
- * dec.s: New file.
- * inc.s: New file.
- * or.b.s: New file.
- * or.w.s: New file.
- * or.l.s: New file.
- * xor.b.s: New file.
- * xor.w.s: New file.
- * xor.l.s: New file.
- * and.l.s: Fix expected result.
- * allinsn.exp: Add new tests.
-
-2003-02-12 Michael Snyder <msnyder@redhat.com>
-
- * and.b.s: New file.
- * and.w.s: New file.
- * and.l.s: New file.
- * cmp.b.s: New file.
- * cmp.w.s: New file.
- * cmp.l.s: New file.
- * jmp.s: New file.
- * add.w.s: Add test for 3-bit immediate operand.
- * add.l.s: Add test for 3-bit and 16-bit immediate operands.
- * mov.b.s (dst_addr16, dst_addr32): Delete.
- * nop.s: Simplify using testutils.inc macros.
- * sub.w.s: Add test for 3-bit immediate operand.
- * sub.l.s: Add test for 3-bit and 16-bit immediate operands.
-
-2003-02-07 Michael Snyder <msnyder@redhat.com>
-
- * mov.b.s: Add tests for more addressing modes.
- (src_addr16, src_addr32, dst_addr16, dst_addr32): Delete.
- * mov.b.s: Add prospective tests for h8sx modes.
- * mov.w.s: New file (test for 'mov.w').
- * mov.l.s: New file (test for 'mov.l').
- * sub.b.s: New file (test for 'sub.b').
- * sub.w.s: New file (test for 'sub.w').
- * sub.l.s: New file (test for 'sub.l').
- * allinsn.exp: Turn new tests on.
-
-2003-02-06 Michael Snyder <msnyder@redhat.com>
-
- * allinsn.exp: New file.
- * testutils.inc: New file.
- * nop.s: New file (test for 'nop' insn).
- * add.b.s: New file (test for 'add.b').
- * add.w.s: New file (test for 'add.w').
- * add.l.s: New file (test for 'add.l').
- * mov.b.s: New file (test for 'mov.b');
-
-Local Variables:
-mode: change-log
-left-margin: 8
-fill-column: 74
-version-control: never
-change-log-default-name: "ChangeLog"
-End:
diff --git a/sim/testsuite/sim/h8300/add.b.s b/sim/testsuite/sim/h8300/add.b.s
deleted file mode 100644
index f1e4ebf..0000000
--- a/sim/testsuite/sim/h8300/add.b.s
+++ /dev/null
@@ -1,778 +0,0 @@
-# Hitachi H8 testcase 'add.b'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- # Instructions tested:
- # add.b #xx:8, rd ; 8 rd xxxxxxxx
- # add.b #xx:8, @erd ; 7 d rd ???? 8 ???? xxxxxxxx
- # add.b #xx:8, @erd+ ; 0 1 7 4 6 c rd 1??? 8 ???? xxxxxxxx
- # add.b #xx:8, @erd- ; 0 1 7 6 6 c rd 1??? 8 ???? xxxxxxxx
- # add.b #xx:8, @+erd ; 0 1 7 5 6 c rd 1??? 8 ???? xxxxxxxx
- # add.b #xx:8, @-erd ; 0 1 7 7 6 c rd 1??? 8 ???? xxxxxxxx
- # add.b #xx:8, @(d:16, erd) ; 0 1 7 4 6 e b30 | rd, b31, dd:16 8 ???? xxxxxxxx
- # add.b #xx:8, @(d:32, erd) ; 7 8 b30 | rd, 4 6 a 2 8 dd:32 8 ???? xxxxxxxx
- # add.b #xx:8, @aa:8 ; 7 f aaaaaaaa 8 ???? xxxxxxxx
- # add.b #xx:8, @aa:16 ; 6 a 1 1??? aa:16 8 ???? xxxxxxxx
- # add.b #xx:8, @aa:32 ; 6 a 3 1??? aa:32 8 ???? xxxxxxxx
- # add.b rs, rd ; 0 8 rs rd
- # add.b reg8, @erd ; 7 d rd ???? 0 8 rs ????
- # add.b reg8, @erd+ ; 0 1 7 9 8 rd 1 rs
- # add.b reg8, @erd- ; 0 1 7 9 a rd 1 rs
- # add.b reg8, @+erd ; 0 1 7 9 9 rd 1 rs
- # add.b reg8, @-erd ; 0 1 7 9 b rd 1 rs
- # add.b reg8, @(d:16, erd) ; 0 1 7 9 c b30 | rd32, 1 rs8 imm16
- # add.b reg8, @(d:32, erd) ; 0 1 7 9 d b31 | rd32, 1 rs8 imm32
- # add.b reg8, @aa:8 ; 7 f aaaaaaaa 0 8 rs ????
- # add.b reg8, @aa:16 ; 6 a 1 1??? aa:16 0 8 rs ????
- # add.b reg8, @aa:32 ; 6 a 3 1??? aa:32 0 8 rs ????
- #
-
- # Coming soon:
- # add.b #xx:8, @(d:2, erd) ; 0 1 7 b30 | b21 | dd:2, 8 ???? xxxxxxxx
- # add.b reg8, @(d:2, erd) ; 0 1 7 9 dd:2 rd32 1 rs8
- # ...
-
-.data
-pre_byte: .byte 0
-byte_dest: .byte 0
-post_byte: .byte 0
-
- start
-
-add_b_imm8_reg:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; add.b #xx:8,Rd
- add.b #5:8, r0l ; Immediate 8-bit src, reg8 dst
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa5aa r0 ; add result: a5 + 5
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a5aa er0 ; add result: a5 + 5
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-add_b_imm8_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b #xx:8,@eRd
- mov #byte_dest, er0
- add.b #5:8, @er0 ; Immediate 8-bit src, reg indirect dst
-;;; .word 0x7d00
-;;; .word 0x8005
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest, er0 ; er0 still contains address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #5, r0l
- beq .L1
- fail
-.L1:
-
-add_b_imm8_rdpostinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b #xx:8,@eRd+
- mov #byte_dest, er0
- add.b #5:8, @er0+ ; Immediate 8-bit src, reg post-inc dst
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0x8005
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 post_byte, er0 ; er0 contains address plus one
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #10, r0l
- beq .L2
- fail
-.L2:
-
-add_b_imm8_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b #xx:8,@eRd-
- mov #byte_dest, er0
- add.b #5:8, @er0- ; Immediate 8-bit src, reg post-dec dst
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0x8005
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 pre_byte, er0 ; er0 contains address minus one
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #15, r0l
- beq .L3
- fail
-.L3:
-
-add_b_imm8_rdpreinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b #xx:8,@+eRd
- mov #pre_byte, er0
- add.b #5:8, @+er0 ; Immediate 8-bit src, reg pre-inc dst
-;;; .word 0x0175
-;;; .word 0x6c08
-;;; .word 0x8005
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest, er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #20, r0l
- beq .L4
- fail
-.L4:
-
-add_b_imm8_rdpredec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b #xx:8,@-eRd
- mov #post_byte, er0
- add.b #5:8, @-er0 ; Immediate 8-bit src, reg pre-dec dst
-;;; .word 0x0177
-;;; .word 0x6c08
-;;; .word 0x8005
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest, er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #25, r0l
- beq .L5
- fail
-.L5:
-
-add_b_imm8_disp16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b #xx:8,@(dd:16, eRd)
- mov #post_byte, er0
- add.b #5:8, @(-1:16, er0) ; Immediate 8-bit src, 16-bit reg disp dest.
-;;; .word 0x0174
-;;; .word 0x6e08
-;;; .word 0xffff
-;;; .word 0x8005
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 post_byte, er0 ; er0 contains address plus one
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #30, r0l
- beq .L6
- fail
-.L6:
-
-add_b_imm8_disp32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b #xx:8,@(dd:32, eRd)
- mov #pre_byte, er0
- add.b #5:8, @(1:32, er0) ; Immediate 8-bit src, 32-bit reg disp. dest.
-;;; .word 0x7804
-;;; .word 0x6a28
-;;; .word 0x0000
-;;; .word 0x0001
-;;; .word 0x8005
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 pre_byte, er0 ; er0 contains address minus one
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #35, r0l
- beq .L7
- fail
-.L7:
-
-add_b_imm8_abs8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b reg8,@aa:8
- ;; NOTE: for abs8, we will use the SBR register as a base,
- ;; since otherwise we would have to make sure that the destination
- ;; was in the zero page.
- ;;
- mov #byte_dest-100, er0
- ldc er0, sbr
- add.b #5, @100:8 ; 8-bit reg src, 8-bit absolute dest
-;;; .word 0x7f64
-;;; .word 0x8005
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-100, er0 ; reg 0 has base address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #40, r0l
- beq .L8
- fail
-.L8:
-
-add_b_imm8_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b #xx:8,@aa:16
- add.b #5:8, @byte_dest:16 ; Immediate 8-bit src, 16-bit absolute dest
-;;; .word 0x6a18
-;;; .word byte_dest
-;;; .word 0x8005
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #45, r0l
- beq .L9
- fail
-.L9:
-
-add_b_imm8_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b #xx:8,@aa:32
- add.b #5:8, @byte_dest:32 ; Immediate 8-bit src, 32-bit absolute dest
-;;; .word 0x6a38
-;;; .long byte_dest
-;;; .word 0x8005
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #50, r0l
- beq .L10
- fail
-.L10:
-
-.endif
-
-add_b_reg8_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; add.b Rs,Rd
- mov.b #5, r0h
- add.b r0h, r0l ; Register operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0x05aa r0 ; add result: a5 + 5
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a505aa er0 ; add result: a5 + 5
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-add_b_reg8_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b rs8,@eRd ; Add to register indirect
- mov #byte_dest, er0
- mov #5, r1l
- add.b r1l, @er0 ; reg8 src, reg indirect dest
-;;; .word 0x7d00
-;;; .word 0x0890
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0 ; er0 still contains address
- test_h_gr32 0xa5a5a505 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #55, r0l
- beq .L11
- fail
-.L11:
-
-add_b_reg8_rdpostinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b rs8,@eRd+ ; Add to register post-increment
- mov #byte_dest, er0
- mov #5, r1l
- add.b r1l, @er0+ ; reg8 src, reg post-incr dest
-;;; .word 0x0179
-;;; .word 0x8019
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 post_byte er0 ; er0 contains address plus one
- test_h_gr32 0xa5a5a505 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #60, r0l
- beq .L12
- fail
-.L12:
-
-add_b_reg8_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b rs8,@eRd- ; Add to register post-decrement
- mov #byte_dest, er0
- mov #5, r1l
- add.b r1l, @er0- ; reg8 src, reg post-decr dest
-;;; .word 0x0179
-;;; .word 0xa019
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 pre_byte er0 ; er0 contains address minus one
- test_h_gr32 0xa5a5a505 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #65, r0l
- beq .L13
- fail
-.L13:
-
-add_b_reg8_rdpreinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b rs8,@+eRd ; Add to register pre-increment
- mov #pre_byte, er0
- mov #5, r1l
- add.b r1l, @+er0 ; reg8 src, reg pre-incr dest
-;;; .word 0x0179
-;;; .word 0x9019
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0 ; er0 contains destination address
- test_h_gr32 0xa5a5a505 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #70, r0l
- beq .L14
- fail
-.L14:
-
-add_b_reg8_rdpredec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b rs8,@-eRd ; Add to register pre-decrement
- mov #post_byte, er0
- mov #5, r1l
- add.b r1l, @-er0 ; reg8 src, reg pre-decr dest
-;;; .word 0x0179
-;;; .word 0xb019
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0 ; er0 contains destination address
- test_h_gr32 0xa5a5a505 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #75, r0l
- beq .L15
- fail
-.L15:
-
-add_b_reg8_disp16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b rs8,@(dd:16, eRd) ; Add to register + 16-bit displacement
- mov #pre_byte, er0
- mov #5, r1l
- add.b r1l, @(1:16, er0) ; reg8 src, 16-bit reg disp dest
-;;; .word 0x0179
-;;; .word 0xc019
-;;; .word 0x0001
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 pre_byte er0 ; er0 contains address minus one
- test_h_gr32 0xa5a5a505 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #80, r0l
- beq .L16
- fail
-.L16:
-
-add_b_reg8_disp32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b rs8,@-eRd ; Add to register plus 32-bit displacement
- mov #post_byte, er0
- mov #5, r1l
- add.b r1l, @(-1:32, er0) ; reg8 src, 32-bit reg disp dest
-;;; .word 0x0179
-;;; .word 0xd819
-;;; .word 0xffff
-;;; .word 0xffff
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 post_byte er0 ; er0 contains address plus one
- test_h_gr32 0xa5a5a505 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #85, r0l
- beq .L17
- fail
-.L17:
-
-add_b_reg8_abs8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b reg8,@aa:8
- ;; NOTE: for abs8, we will use the SBR register as a base,
- ;; since otherwise we would have to make sure that the destination
- ;; was in the zero page.
- ;;
- mov #byte_dest-100, er0
- ldc er0, sbr
- mov #5, r1l
- add.b r1l, @100:8 ; 8-bit reg src, 8-bit absolute dest
-;;; .word 0x7f64
-;;; .word 0x0890
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-100, er0 ; reg 0 has base address
- test_h_gr32 0xa5a5a505 er1 ; reg 1 has test load
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #90, r0l
- beq .L18
- fail
-.L18:
-
-add_b_reg8_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b reg8,@aa:16
- mov #5, r0l
- add.b r0l, @byte_dest:16 ; 8-bit reg src, 16-bit absolute dest
-;;; .word 0x6a18
-;;; .word byte_dest
-;;; .word 0x0880
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 0xa5a5a505 er0 ; reg 0 has test load
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #95, r0l
- beq .L19
- fail
-.L19:
-
-add_b_reg8_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.b reg8,@aa:32
- mov #5, r0l
- add.b r0l, @byte_dest:32 ; 8-bit reg src, 32-bit absolute dest
-;;; .word 0x6a38
-;;; .long byte_dest
-;;; .word 0x0880
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 0xa5a5a505 er0 ; reg 0 has test load
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #100, r0l
- beq .L20
- fail
-.L20:
-
-.endif
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/add.l.s b/sim/testsuite/sim/h8300/add.l.s
deleted file mode 100644
index 1673c5c..0000000
--- a/sim/testsuite/sim/h8300/add.l.s
+++ /dev/null
@@ -1,1865 +0,0 @@
-# Hitachi H8 testcase 'add.l'
-# mach(): h8300h h8300s h8sx
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- # Instructions tested:
- # add.l xx:3, erd
- # add.l xx:16, erd
- # add.l xx:32, erd
- # add.l xx:16, @erd
- # add.l xx:16, @erd+
- # add.l xx:16, @erd-
- # add.l xx:16, @+erd
- # add.l xx:16, @-erd
- # add.l xx:16, @(dd:2, erd)
- # add.l xx:16, @(dd:16, erd)
- # add.l xx:16, @(dd:32, erd)
- # add.l xx:16, @aa:16
- # add.l xx:16, @aa:32
- # add.l xx:32, @erd+
- # add.l xx:32, @erd-
- # add.l xx:32, @+erd
- # add.l xx:32, @-erd
- # add.l xx:32, @(dd:2, erd)
- # add.l xx:32, @(dd:16, erd)
- # add.l xx:32, @(dd:32, erd)
- # add.l xx:32, @aa:16
- # add.l xx:32, @aa:32
- # add.l ers, erd
- # add.l ers, @erd
- # add.l ers, @erd+
- # add.l ers, @erd-
- # add.l ers, @+erd
- # add.l ers, @-erd
- # add.l ers, @(dd:2, erd)
- # add.l ers, @(dd:16, erd)
- # add.l ers, @(dd:32, erd)
- # add.l ers, @aa:16
- # add.l ers, @aa:32
- # add.l ers, erd
- # add.l @ers, erd
- # add.l @ers+, erd
- # add.l @ers-, erd
- # add.l @+ers, erd
- # add.l @-ers, erd
- # add.l @(dd:2, ers), erd
- # add.l @(dd:16, ers), erd
- # add.l @(dd:32, ers), erd
- # add.l @aa:16, erd
- # add.l @aa:32, erd
- # add.l @ers, @erd
- # add.l @ers+, @erd+
- # add.l @ers-, @erd-
- # add.l @+ers, +@erd
- # add.l @-ers, @-erd
- # add.l @(dd:2, ers), @(dd:2, erd)
- # add.l @(dd:16, ers), @(dd:16, erd)
- # add.l @(dd:32, ers), @(dd:32, erd)
- # add.l @aa:16, @aa:16
- # add.l @aa:32, @aa:32
-
- start
-
- .data
- .align 4
-long_src:
- .long 0x12345678
-long_dst:
- .long 0x87654321
-
- .text
-
- ;;
- ;; Add long from immediate source
- ;;
-
-.if (sim_cpu == h8sx)
-add_l_imm3_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:3, erd
- add.l #0x3:3, er0 ; Immediate 16-bit operand
-;;; .word 0x0ab8
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a5a5a8 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-add_l_imm16_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:16, erd
- add.l #0x1234, er0 ; Immediate 16-bit operand
-;;; .word 0x7a18
-;;; .word 0x1234
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a5b7d9 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-add_l_imm32_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:32, erd
- add.l #0x12345678, er0 ; Immediate 32-bit operand
-;;; .word 0x7a10
-;;; .long 0x12345678
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xb7d9fc1d er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-add_l_imm16_to_indirect:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:16, @erd
- mov.l #long_dst, er1
- add.l #0xdead:16, @er1 ; Register indirect operand
-;;; .word 0x010e
-;;; .word 0x0110
-;;; .word 0xdead
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x876621ce, @long_dst
- beq .Lnext11
- fail
-.Lnext11:
- mov.l #0x87654321, @long_dst ; Initialize it again for the next use.
-
-add_l_imm16_to_postinc: ; post-increment from imm16 to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:16, @erd+
- mov.l #long_dst, er1
- add.l #0xdead:16, @er1+ ; Imm16, register post-incr operands.
-;;; .word 0x010e
-;;; .word 0x8110
-;;; .word 0xdead
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst+4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x876621ce, @long_dst
- beq .Lnext12
- fail
-.Lnext12:
- mov.l #0x87654321, @long_dst ; initialize it again for the next use.
-
-add_l_imm16_to_postdec: ; post-decrement from imm16 to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:16, @erd-
- mov.l #long_dst, er1
- add.l #0xdead:16, @er1- ; Imm16, register post-decr operands.
-;;; .word 0x010e
-;;; .word 0xa110
-;;; .word 0xdead
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x876621ce, @long_dst
- beq .Lnext13
- fail
-.Lnext13:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm16_to_preinc: ; pre-increment from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:16, @+erd
- mov.l #long_dst-4, er1
- add.l #0xdead:16, @+er1 ; Imm16, register pre-incr operands
-;;; .word 0x010e
-;;; .word 0x9110
-;;; .word 0xdead
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x876621ce, @long_dst
- beq .Lnext14
- fail
-.Lnext14:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm16_to_predec: ; pre-decrement from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:16, @-erd
- mov.l #long_dst+4, er1
- add.l #0xdead:16, @-er1 ; Imm16, register pre-decr operands
-;;; .word 0x010e
-;;; .word 0xb110
-;;; .word 0xdead
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x876621ce, @long_dst
- beq .Lnext15
- fail
-.Lnext15:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm16_to_disp2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:16, @(dd:2, erd)
- mov.l #long_dst-3, er1
- add.l #0xdead:16, @(3:2, er1) ; Imm16, reg plus 2-bit disp. operand
-;;; .word 0x010e
-;;; .word 0x3110
-;;; .word 0xdead
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-3, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x876621ce, @long_dst
- beq .Lnext16
- fail
-.Lnext16:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm16_to_disp16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:16, @(dd:16, erd)
- mov.l #long_dst-4, er1
- add.l #0xdead:16, @(4:16, er1) ; Register plus 16-bit disp. operand
-;;; .word 0x010e
-;;; .word 0xc110
-;;; .word 0xdead
-;;; .word 0x0004
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x876621ce, @long_dst
- beq .Lnext17
- fail
-.Lnext17:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm16_to_disp32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:16, @(dd:32, erd)
- mov.l #long_dst-8, er1
- add.l #0xdead:16, @(8:32, er1) ; Register plus 32-bit disp. operand
-;;; .word 0x010e
-;;; .word 0xc910
-;;; .word 0xdead
-;;; .long 8
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-8, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x876621ce, @long_dst
- beq .Lnext18
- fail
-.Lnext18:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm16_to_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:16, @aa:16
- add.l #0xdead:16, @long_dst:16 ; 16-bit address-direct operand
-;;; .word 0x010e
-;;; .word 0x4010
-;;; .word 0xdead
-;;; .word @long_dst
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x876621ce, @long_dst
- beq .Lnext19
- fail
-.Lnext19:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm16_to_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:16, @aa:32
- add.l #0xdead:16, @long_dst:32 ; 32-bit address-direct operand
-;;; .word 0x010e
-;;; .word 0x4810
-;;; .word 0xdead
-;;; .long @long_dst
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x876621ce, @long_dst
- beq .Lnext20
- fail
-.Lnext20:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm32_to_indirect:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:32, @erd
- mov.l #long_dst, er1
- add.l #0xcafedead:32, @er1 ; Register indirect operand
-;;; .word 0x010e
-;;; .word 0x0118
-;;; .long 0xcafedead
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x526421ce, @long_dst
- beq .Lnext21
- fail
-.Lnext21:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm32_to_postinc: ; post-increment from imm32 to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:32, @erd+
- mov.l #long_dst, er1
- add.l #0xcafedead:32, @er1+ ; Imm32, register post-incr operands.
-;;; .word 0x010e
-;;; .word 0x8118
-;;; .long 0xcafedead
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst+4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x526421ce, @long_dst
- beq .Lnext22
- fail
-.Lnext22:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm32_to_postdec: ; post-decrement from imm32 to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:32, @erd-
- mov.l #long_dst, er1
- add.l #0xcafedead:32, @er1- ; Imm32, register post-decr operands.
-;;; .word 0x010e
-;;; .word 0xa118
-;;; .long 0xcafedead
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x526421ce, @long_dst
- beq .Lnext23
- fail
-.Lnext23:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm32_to_preinc: ; pre-increment from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:32, @+erd
- mov.l #long_dst-4, er1
- add.l #0xcafedead:32, @+er1 ; Imm32, register pre-incr operands
-;;; .word 0x010e
-;;; .word 0x9118
-;;; .long 0xcafedead
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x526421ce, @long_dst
- beq .Lnext24
- fail
-.Lnext24:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm32_to_predec: ; pre-decrement from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:32, @-erd
- mov.l #long_dst+4, er1
- add.l #0xcafedead:32, @-er1 ; Imm32, register pre-decr operands
-;;; .word 0x010e
-;;; .word 0xb118
-;;; .long 0xcafedead
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x526421ce, @long_dst
- beq .Lnext25
- fail
-.Lnext25:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm32_to_disp2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:32, @(dd:2, erd)
- mov.l #long_dst-3, er1
- add.l #0xcafedead:32, @(3:2, er1) ; Imm32, reg plus 2-bit disp. operand
-;;; .word 0x010e
-;;; .word 0x3118
-;;; .long 0xcafedead
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-3, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x526421ce, @long_dst
- beq .Lnext26
- fail
-.Lnext26:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm32_to_disp16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:32, @(dd:16, erd)
- mov.l #long_dst-4, er1
- add.l #0xcafedead:32, @(4:16, er1) ; Register plus 16-bit disp. operand
-;;; .word 0x010e
-;;; .word 0xc118
-;;; .long 0xcafedead
-;;; .word 0x0004
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x526421ce, @long_dst
- beq .Lnext27
- fail
-.Lnext27:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm32_to_disp32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:32, @(dd:32, erd)
- mov.l #long_dst-8, er1
- add.l #0xcafedead:32, @(8:32, er1) ; Register plus 32-bit disp. operand
-;;; .word 0x010e
-;;; .word 0xc918
-;;; .long 0xcafedead
-;;; .long 8
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-8, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x526421ce, @long_dst
- beq .Lnext28
- fail
-.Lnext28:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm32_to_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:32, @aa:16
- add.l #0xcafedead:32, @long_dst:16 ; 16-bit address-direct operand
-;;; .word 0x010e
-;;; .word 0x4018
-;;; .long 0xcafedead
-;;; .word @long_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x526421ce, @long_dst
- beq .Lnext29
- fail
-.Lnext29:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_imm32_to_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l #xx:32, @aa:32
- add.l #0xcafedead:32, @long_dst:32 ; 32-bit address-direct operand
-;;; .word 0x010e
-;;; .word 0x4818
-;;; .long 0xcafedead
-;;; .long @long_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x526421ce, @long_dst
- beq .Lnext30
- fail
-.Lnext30:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-.endif
-
- ;;
- ;; Add long from register source
- ;;
-
-add_l_reg32_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l ers, erd
- mov.l #0x12345678, er1
- add.l er1, er0 ; Register 32-bit operand
-;;; .word 0x0a90
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xb7d9fc1d er0 ; add result
- test_h_gr32 0x12345678 er1 ; add src unchanged
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-add_l_reg32_to_indirect:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l ers, @erd
- mov.l #long_dst, er1
- add.l er0, @er1 ; Register indirect operand
-;;; .word 0x0109
-;;; .word 0x0110
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x2d0ae8c6, @long_dst
- beq .Lnext44
- fail
-.Lnext44:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_reg32_to_postinc: ; post-increment from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l ers, @erd+
- mov.l #long_dst, er1
- add.l er0, @er1+ ; Register post-incr operand
-;;; .word 0x0109
-;;; .word 0x8110
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst+4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x2d0ae8c6, @long_dst
- beq .Lnext49
- fail
-.Lnext49:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_reg32_to_postdec: ; post-decrement from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l ers, @erd-
- mov.l #long_dst, er1
- add.l er0, @er1- ; Register post-decr operand
-;;; .word 0x0109
-;;; .word 0xa110
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x2d0ae8c6, @long_dst
- beq .Lnext50
- fail
-.Lnext50:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_reg32_to_preinc: ; pre-increment from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l ers, @+erd
- mov.l #long_dst-4, er1
- add.l er0, @+er1 ; Register pre-incr operand
-;;; .word 0x0109
-;;; .word 0x9110
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x2d0ae8c6, @long_dst
- beq .Lnext51
- fail
-.Lnext51:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_reg32_to_predec: ; pre-decrement from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l ers, @-erd
- mov.l #long_dst+4, er1
- add.l er0, @-er1 ; Register pre-decr operand
-;;; .word 0x0109
-;;; .word 0xb110
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x2d0ae8c6, @long_dst
- beq .Lnext48
- fail
-.Lnext48:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_reg32_to_disp2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l ers, @(dd:2, erd)
- mov.l #long_dst-3, er1
- add.l er0, @(3:2, er1) ; Register plus 2-bit disp. operand
-;;; .word 0x0109
-;;; .word 0x3110
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-3, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x2d0ae8c6, @long_dst
- beq .Lnext52
- fail
-.Lnext52:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_reg32_to_disp16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l ers, @(dd:16, erd)
- mov.l #long_dst-4, er1
- add.l er0, @(4:16, er1) ; Register plus 16-bit disp. operand
-;;; .word 0x0109
-;;; .word 0xc110
-;;; .word 0x0004
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_h_gr32 long_dst-4, er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x2d0ae8c6, @long_dst
- beq .Lnext45
- fail
-.Lnext45:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_reg32_to_disp32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l ers, @(dd:32, erd)
- mov.l #long_dst-8, er1
- add.l er0, @(8:32, er1) ; Register plus 32-bit disp. operand
-;;; .word 0x0109
-;;; .word 0xc910
-;;; .long 8
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_h_gr32 long_dst-8, er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x2d0ae8c6, @long_dst
- beq .Lnext46
- fail
-.Lnext46:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_reg32_to_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l ers, @aa:16
- add.l er0, @long_dst:16 ; 16-bit address-direct operand
-;;; .word 0x0109
-;;; .word 0x4110
-;;; .word @long_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x2d0ae8c6, @long_dst
- beq .Lnext41
- fail
-.Lnext41:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
-add_l_reg32_to_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l ers, @aa:32
- add.l er0, @long_dst:32 ; 32-bit address-direct operand
-;;; .word 0x0109
-;;; .word 0x4910
-;;; .long @long_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=1 C=1
- test_neg_clear
- test_zero_clear
- test_ovf_set
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x2d0ae8c6, @long_dst
- beq .Lnext42
- fail
-.Lnext42:
- mov.l #0x87654321, @long_dst ; Re-initialize it for the next use.
-
- ;;
- ;; Add long to register destination.
- ;;
-
-add_l_indirect_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @ers, Rd
- mov.l #long_src, er1
- add.l @er1, er0 ; Register indirect operand
-;;; .word 0x010a
-;;; .word 0x0110
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xb7d9fc1d er0
-
- test_h_gr32 long_src, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-add_l_postinc_to_reg32: ; post-increment from mem to register
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @ers+, erd
- mov.l #long_src, er1
- add.l @er1+, er0 ; Register post-incr operand
-;;; .word 0x010a
-;;; .word 0x8110
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xb7d9fc1d er0
-
- test_h_gr32 long_src+4, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-add_l_postdec_to_reg32: ; post-decrement from mem to register
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @ers-, erd
- mov.l #long_src, er1
- add.l @er1-, er0 ; Register post-decr operand
-;;; .word 0x010a
-;;; .word 0xa110
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xb7d9fc1d er0
-
- test_h_gr32 long_src-4, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-add_l_preinc_to_reg32: ; pre-increment from mem to register
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @+ers, erd
- mov.l #long_src-4, er1
- add.l @+er1, er0 ; Register pre-incr operand
-;;; .word 0x010a
-;;; .word 0x9110
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xb7d9fc1d er0
-
- test_h_gr32 long_src, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-add_l_predec_to_reg32: ; pre-decrement from mem to register
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @-ers, erd
- mov.l #long_src+4, er1
- add.l @-er1, er0 ; Register pre-decr operand
-;;; .word 0x010a
-;;; .word 0xb110
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xb7d9fc1d er0
-
- test_h_gr32 long_src, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-
-add_l_disp2_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @(dd:2, ers), erd
- mov.l #long_src-1, er1
- add.l @(1:2, er1), er0 ; Register plus 2-bit disp. operand
-;;; .word 0x010a
-;;; .word 0x1110
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xb7d9fc1d er0 ; mov result: a5a5 | 7777
-
- test_h_gr32 long_src-1, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-add_l_disp16_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @(dd:16, ers), erd
- mov.l #long_src+0x1234, er1
- add.l @(-0x1234:16, er1), er0 ; Register plus 16-bit disp. operand
-;;; .word 0x010a
-;;; .word 0xc110
-;;; .word -0x1234
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xb7d9fc1d er0 ; mov result: a5a5 | 7777
-
- test_h_gr32 long_src+0x1234, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-add_l_disp32_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @(dd:32, ers), erd
- mov.l #long_src+65536, er1
- add.l @(-65536:32, er1), er0 ; Register plus 32-bit disp. operand
-;;; .word 0x010a
-;;; .word 0xc910
-;;; .long -65536
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xb7d9fc1d er0 ; mov result: a5a5 | 7777
-
- test_h_gr32 long_src+65536, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-add_l_abs16_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @aa:16, erd
- add.l @long_src:16, er0 ; 16-bit address-direct operand
-;;; .word 0x010a
-;;; .word 0x4010
-;;; .word @long_src
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xb7d9fc1d er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-add_l_abs32_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @aa:32, erd
- add.l @long_src:32, er0 ; 32-bit address-direct operand
-;;; .word 0x010a
-;;; .word 0x4810
-;;; .long @long_src
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xb7d9fc1d er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-
- ;;
- ;; Add long from memory to memory
- ;;
-
-add_l_indirect_to_indirect: ; reg indirect, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @ers, @erd
- mov.l #long_src, er1
- mov.l #long_dst, er0
- add.l @er1, @er0
-;;; .word 0x0104
-;;; .word 0x691c
-;;; .word 0x0010
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 long_dst er0
- test_h_gr32 long_src er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x99999999, @long_dst ; FIXME
- beq .Lnext55
- fail
-.Lnext55:
- ;; Now clear the destination location, and verify that.
- mov.l #0x87654321, @long_dst
- cmp.l #0x99999999, @long_dst
- bne .Lnext56
- fail
-.Lnext56: ; OK, pass on.
-
-add_l_postinc_to_postinc: ; reg post-increment, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @ers+, @erd+
- mov.l #long_src, er1
- mov.l #long_dst, er0
- add.l @er1+, @er0+
-;;; .word 0x0104
-;;; .word 0x6d1c
-;;; .word 0x8010
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 long_dst+4 er0
- test_h_gr32 long_src+4 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x99999999, @long_dst
- beq .Lnext65
- fail
-.Lnext65:
- ;; Now clear the destination location, and verify that.
- mov.l #0x87654321, @long_dst
- cmp.l #0x99999999, @long_dst
- bne .Lnext66
- fail
-.Lnext66: ; OK, pass on.
-
-add_l_postdec_to_postdec: ; reg post-decrement, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @ers-, @erd-
- mov.l #long_src, er1
- mov.l #long_dst, er0
- add.l @er1-, @er0-
-;;; .word 0x0106
-;;; .word 0x6d1c
-;;; .word 0xa010
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 long_dst-4 er0
- test_h_gr32 long_src-4 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x99999999, @long_dst
- beq .Lnext75
- fail
-.Lnext75:
- ;; Now clear the destination location, and verify that.
- mov.l #0x87654321, @long_dst
- cmp.l #0x99999999, @long_dst
- bne .Lnext76
- fail
-.Lnext76: ; OK, pass on.
-
-add_l_preinc_to_preinc: ; reg pre-increment, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @+ers, @+erd
- mov.l #long_src-4, er1
- mov.l #long_dst-4, er0
- add.l @+er1, @+er0
-;;; .word 0x0105
-;;; .word 0x6d1c
-;;; .word 0x9010
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 long_dst er0
- test_h_gr32 long_src er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x99999999, @long_dst
- beq .Lnext85
- fail
-.Lnext85:
- ;; Now clear the destination location, and verify that.
- mov.l #0x87654321, @long_dst
- cmp.l #0x99999999, @long_dst
- bne .Lnext86
- fail
-.Lnext86: ; OK, pass on.
-
-add_l_predec_to_predec: ; reg pre-decrement, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @-ers, @-erd
- mov.l #long_src+4, er1
- mov.l #long_dst+4, er0
- add.l @-er1, @-er0
-;;; .word 0x0107
-;;; .word 0x6d1c
-;;; .word 0xb010
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 long_dst er0
- test_h_gr32 long_src er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x99999999, @long_dst
- beq .Lnext95
- fail
-.Lnext95:
- ;; Now clear the destination location, and verify that.
- mov.l #0x87654321, @long_dst
- cmp.l #0x99999999, @long_dst
- bne .Lnext96
- fail
-.Lnext96: ; OK, pass on.
-
-add_l_disp2_to_disp2: ; reg 2-bit disp, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @(dd:2, ers), @(dd:2, erd)
- mov.l #long_src-1, er1
- mov.l #long_dst-2, er0
- add.l @(1:2, er1), @(2:2, er0)
-;;; .word 0x0105
-;;; .word 0x691c
-;;; .word 0x2010
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 long_dst-2 er0
- test_h_gr32 long_src-1 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x99999999, @long_dst
- beq .Lnext105
- fail
-.Lnext105:
- ;; Now clear the destination location, and verify that.
- mov.l #0x87654321, @long_dst
- cmp.l #0x99999999, @long_dst
- bne .Lnext106
- fail
-.Lnext106: ; OK, pass on.
-
-add_l_disp16_to_disp16: ; reg 16-bit disp, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @(dd:16, ers), @(dd:16, erd)
- mov.l #long_src-1, er1
- mov.l #long_dst-2, er0
- add.l @(1:16, er1), @(2:16, er0)
-;;; .word 0x0104
-;;; .word 0x6f1c
-;;; .word 0x0001
-;;; .word 0xc010
-;;; .word 0x0002
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 long_dst-2 er0
- test_h_gr32 long_src-1 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x99999999, @long_dst
- beq .Lnext115
- fail
-.Lnext115:
- ;; Now clear the destination location, and verify that.
- mov.l #0x87654321, @long_dst
- cmp.l #0x99999999, @long_dst
- bne .Lnext116
- fail
-.Lnext116: ; OK, pass on.
-
-add_l_disp32_to_disp32: ; reg 32-bit disp, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @(dd:32, ers), @(dd:32, erd)
- mov.l #long_src-1, er1
- mov.l #long_dst-2, er0
- add.l @(1:32, er1), @(2:32, er0)
-;;; .word 0x7894
-;;; .word 0x6b2c
-;;; .word 0xc9c8
-;;; .long 1
-;;; .word 0xc810
-;;; .long 2
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 long_dst-2 er0
- test_h_gr32 long_src-1 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x99999999, @long_dst
- beq .Lnext125
- fail
-.Lnext125:
- ;; Now clear the destination location, and verify that.
- mov.l #0x87654321, @long_dst
- cmp.l #0x99999999, @long_dst
- bne .Lnext126
- fail
-.Lnext126: ; OK, pass on.
-
-add_l_abs16_to_abs16: ; 16-bit absolute addr, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @aa:16, @aa:16
- add.l @long_src:16, @long_dst:16
-;;; .word 0x0104
-;;; .word 0x6b0c
-;;; .word @long_src
-;;; .word 0x4010
-;;; .word @long_dst
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
-
- test_gr_a5a5 0 ; Make sure *NO* general registers are changed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x99999999, @long_dst
- beq .Lnext135
- fail
-.Lnext135:
- ;; Now clear the destination location, and verify that.
- mov.l #0x87654321, @long_dst
- cmp.l #0x99999999, @long_dst
- bne .Lnext136
- fail
-.Lnext136: ; OK, pass on.
-
-add_l_abs32_to_abs32: ; 32-bit absolute addr, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; add.l @aa:32, @aa:32
- add.l @long_src:32, @long_dst:32
-;;; .word 0x0104
-;;; .word 0x6b2c
-;;; .long @long_src
-;;; .word 0x4810
-;;; .long @long_dst
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure *NO* general registers are changed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0x99999999, @long_dst
- beq .Lnext145
- fail
-.Lnext145:
- ;; Now clear the destination location, and verify that.
- mov.l #0x87654321, @long_dst
- cmp.l #0x99999999, @long_dst
- bne .Lnext146
- fail
-.Lnext146: ; OK, pass on.
-
-.endif
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/add.w.s b/sim/testsuite/sim/h8300/add.w.s
deleted file mode 100644
index c38bf69..0000000
--- a/sim/testsuite/sim/h8300/add.w.s
+++ /dev/null
@@ -1,87 +0,0 @@
-# Hitachi H8 testcase 'add.w'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- # Instructions tested:
- # add.w xx:3, rd ; 0 a 0xxx rd (sx only)
- # add.w xx:16, rd ; 7 9 1 rd imm16
- # add.w rs, rd ; 0 9 rs rd
- #
-
- start
-
-.if (sim_cpu == h8sx) ; 3-bit immediate mode only for h8sx
-add_w_imm3:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; add.w #xx:3,Rd ; Immediate 3-bit operand
- add.w #7, r0 ; FIXME will not assemble yet
-; .word 0x0a70 ; Fake it until assembler will take it.
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa5ac r0 ; add result: a5a5 + 7
- test_h_gr32 0xa5a5a5ac er0 ; add result: a5a5 + 7
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
-add_w_imm16:
- ;; add.w immediate not available in h8300 mode.
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; add.w #xx:16,Rd
- add.w #0x111, r0 ; Immediate 16-bit operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa6b6 r0 ; add result: a5a5 + 111
- test_h_gr32 0xa5a5a6b6 er0 ; add result: a5a5 + 111
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-add_w_reg:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; add.w Rs,Rd
- mov.w #0x111, r1
- add.w r1, r0 ; Register operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa6b6 r0 ; add result: a5a5 + 111
- test_h_gr16 0x0111 r1
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a6b6 er0 ; add result: a5a5 + 111
- test_h_gr32 0xa5a50111 er1
-.endif
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/adds.s b/sim/testsuite/sim/h8300/adds.s
deleted file mode 100644
index 9789e87..0000000
--- a/sim/testsuite/sim/h8300/adds.s
+++ /dev/null
@@ -1,74 +0,0 @@
-# Hitachi H8 testcase 'adds'
-# mach(): h8300h h8300s h8sx
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- # Instructions tested:
- # adds #1, erd ; 0 b 0 xerd
- # adds #2, erd ; 0 b 8 xerd
- # adds #4, erd ; 0 b 9 xerd
- #
-
- start
-.if (sim_cpu) ; 32 bit only
-adds_1:
- set_grs_a5a5
- set_ccr_zero
-
- adds #1, er0
-
- test_cc_clear ; adds should not affect any condition codes
- test_h_gr32 0xa5a5a5a6 er0 ; result of adds #1
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-adds_2:
- set_grs_a5a5
- set_ccr_zero
-
- adds #2, er0
-
- test_cc_clear ; adds should not affect any condition codes
- test_h_gr32 0xa5a5a5a7 er0 ; result of adds #2
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-adds_4:
- set_grs_a5a5
- set_ccr_zero
-
- adds #4, er0
-
- test_cc_clear ; adds should not affect any condition codes
- test_h_gr32 0xa5a5a5a9 er0 ; result of adds #4
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- pass
-.endif
- exit 0
diff --git a/sim/testsuite/sim/h8300/addx.s b/sim/testsuite/sim/h8300/addx.s
deleted file mode 100644
index 27697a7..0000000
--- a/sim/testsuite/sim/h8300/addx.s
+++ /dev/null
@@ -1,993 +0,0 @@
-# Hitachi H8 testcase 'addx'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- # Instructions tested:
- # addx.b #xx:8, rd8 ; 9 rd8 xxxxxxxx
- # addx.b #xx:8, @erd ; 7 d erd ???? 9 ???? xxxxxxxx
- # addx.b #xx:8, @erd- ; 0 1 7 6 6 c erd 1??? 9 ???? xxxxxxxx
- # addx.b rs8, rd8 ; 0 e rs8 rd8
- # addx.b rs8, @erd ; 7 d erd ???? 0 e rs8 ????
- # addx.b rs8, @erd- ; 0 1 7 6 6 c erd 1??? 0 e rs8 ????
- # addx.b @ers, rd8 ; 7 c ers ???? 0 e ???? rd8
- # addx.b @ers-, rd8 ; 0 1 7 6 6 c ers 00?? 0 e ???? rd8
- # addx.b @ers, @erd ; 0 1 7 4 6 8 ers d 0 erd 1 ????
- # addx.b @ers-, @erd- ; 0 1 7 6 6 c ers d a erd 1 ????
- #
- # coming soon:
- # word ops
- # long ops
-
-.data
-byte_src: .byte 0x5
-byte_dest: .byte 0
-
- .align 2
-word_src: .word 0x505
-word_dest: .word 0
-
- .align 4
-long_src: .long 0x50505
-long_dest: .long 0
-
-
- start
-
-addx_b_imm8_0:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.b #xx:8,Rd ; Addx with carry initially zero.
- addx.b #5, r0l ; Immediate 8-bit operand
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr16 0xa5aa r0 ; add result: a5 + 5
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a5aa er0 ; add result: a5 + 5
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-addx_b_imm8_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.b #xx:8,Rd ; Addx with carry initially one.
- set_carry_flag 1
- addx.b #5, r0l ; Immediate 8-bit operand
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr16 0xa5ab r0 ; add result: a5 + 5 + 1
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a5ab er0 ; add result: a5 + 5 + 1
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-addx_b_imm8_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.b #xx:8,@eRd ; Addx to register indirect
- mov #byte_dest, er0
- addx.b #5, @er0
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0 ; er0 still contains address
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- cmp.b #5, @byte_dest
- beq .Lb1
- fail
-.Lb1:
-
-addx_b_imm8_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.b #xx:8,@eRd- ; Addx to register post-decrement
- mov #byte_dest, er0
- addx.b #5, @er0-
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-1 er0 ; er0 contains address minus one
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- cmp.b #10, @byte_dest
- beq .Lb2
- fail
-.Lb2:
-.endif
-
-addx_b_reg8_0:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.b Rs,Rd ; addx with carry initially zero
- mov.b #5, r0h
- addx.b r0h, r0l ; Register operand
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr16 0x05aa r0 ; add result: a5 + 5
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a505aa er0 ; add result: a5 + 5
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-addx_b_reg8_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.b Rs,Rd ; addx with carry initially one
- mov.b #5, r0h
- set_carry_flag 1
- addx.b r0h, r0l ; Register operand
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr16 0x05ab r0 ; add result: a5 + 5 + 1
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a505ab er0 ; add result: a5 + 5 + 1
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-addx_b_reg8_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.b rs8,@eRd ; Addx to register indirect
- mov #byte_dest, er0
- mov.b #5, r1l
- addx.b r1l, @er0
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0 ; er0 still contains address
- test_h_gr32 0xa5a5a505 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- cmp.b #15, @byte_dest
- beq .Lb3
- fail
-.Lb3:
-
-addx_b_reg8_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.b rs8,@eRd- ; Addx to register post-decrement
- mov #byte_dest, er0
- mov.b #5, r1l
- addx.b r1l, @er0-
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-1 er0 ; er0 contains address minus one
- test_h_gr32 0xa5a5a505 er1 ; er1 contains the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- cmp.b #20, @byte_dest
- beq .Lb4
- fail
-.Lb4:
-
-addx_b_rsind_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.b @eRs,rd8 ; Addx from reg indirect to reg
- mov #byte_src, er0
- addx.b @er0, r1l
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 byte_src er0 ; er0 still contains address
- test_h_gr32 0xa5a5a5aa er1 ; er1 contains the sum
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-addx_b_rspostdec_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.b @eRs-,rd8 ; Addx to register post-decrement
- mov #byte_src, er0
- addx.b @er0-, r1l
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 byte_src-1 er0 ; er0 contains address minus one
- test_h_gr32 0xa5a5a5aa er1 ; er1 contains the sum
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-addx_b_rsind_rsind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.b @eRs,rd8 ; Addx from reg indirect to reg
- mov #byte_src, er0
- mov #byte_dest, er1
- addx.b @er0, @er1
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_src er0 ; er0 still contains src address
- test_h_gr32 byte_dest er1 ; er1 still contains dst address
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ;; Now check the result of the add to memory.
- cmp.b #25, @byte_dest
- beq .Lb5
- fail
-.Lb5:
-
-addx_b_rspostdec_rspostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.b @eRs-,rd8 ; Addx to register post-decrement
- mov #byte_src, er0
- mov #byte_dest, er1
- addx.b @er0-, @er1-
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_src-1 er0 ; er0 contains src address minus one
- test_h_gr32 byte_dest-1 er1 ; er1 contains dst address minus one
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ;; Now check the result of the add to memory.
- cmp.b #30, @byte_dest
- beq .Lb6
- fail
-.Lb6:
-
-addx_w_imm16_0:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.w #xx:16,Rd ; Addx with carry initially zero.
- addx.w #0x505, r0 ; Immediate 16-bit operand
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr16 0xaaaa r0 ; add result: 0xa5a5 + 0x505
- test_h_gr32 0xa5a5aaaa er0 ; add result: 0xa5a5 + 0x505
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-addx_w_imm16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.w #xx:16,Rd ; Addx with carry initially one.
- set_carry_flag 1
- addx.w #0x505, r0 ; Immediate 16-bit operand
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr16 0xaaab r0 ; add result: 0xa5a5 + 0x505 + 1
- test_h_gr32 0xa5a5aaab er0 ; add result: 0xa5a5 + 0x505 + 1
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-addx_w_imm16_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.w #xx:16,@eRd ; Addx to register indirect
- mov #word_dest, er0
- addx.w #0x505, @er0
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0 ; er0 still contains address
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- cmp.w #0x505, @word_dest
- beq .Lw1
- fail
-.Lw1:
-
-addx_w_imm16_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.w #xx:16,@eRd- ; Addx to register post-decrement
- mov #word_dest, er0
- addx.w #0x505, @er0-
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 word_dest-2 er0 ; er0 contains address minus one
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- cmp.w #0xa0a, @word_dest
- beq .Lw2
- fail
-.Lw2:
-
-addx_w_reg16_0:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.w Rs,Rd ; addx with carry initially zero
- mov.w #0x505, e0
- addx.w e0, r0 ; Register operand
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 0x0505aaaa er0 ; add result:
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-addx_w_reg16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.w Rs,Rd ; addx with carry initially one
- mov.w #0x505, e0
- set_carry_flag 1
- addx.w e0, r0 ; Register operand
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 0x0505aaab er0 ; add result:
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-addx_w_reg16_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.w rs8,@eRd ; Addx to register indirect
- mov #word_dest, er0
- mov.w #0x505, r1
- addx.w r1, @er0
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0 ; er0 still contains address
- test_h_gr32 0xa5a50505 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- cmp.w #0xf0f, @word_dest
- beq .Lw3
- fail
-.Lw3:
-
-addx_w_reg16_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.w rs8,@eRd- ; Addx to register post-decrement
- mov #word_dest, er0
- mov.w #0x505, r1
- addx.w r1, @er0-
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 word_dest-2 er0 ; er0 contains address minus one
- test_h_gr32 0xa5a50505 er1 ; er1 contains the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- cmp.w #0x1414, @word_dest
- beq .Lw4
- fail
-.Lw4:
-
-addx_w_rsind_reg16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.w @eRs,rd8 ; Addx from reg indirect to reg
- mov #word_src, er0
- addx.w @er0, r1
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 word_src er0 ; er0 still contains address
- test_h_gr32 0xa5a5aaaa er1 ; er1 contains the sum
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-addx_w_rspostdec_reg16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.w @eRs-,rd8 ; Addx to register post-decrement
- mov #word_src, er0
- addx.w @er0-, r1
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 word_src-2 er0 ; er0 contains address minus one
- test_h_gr32 0xa5a5aaaa er1 ; er1 contains the sum
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-addx_w_rsind_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.w @eRs,rd8 ; Addx from reg indirect to reg
- mov #word_src, er0
- mov #word_dest, er1
- addx.w @er0, @er1
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 word_src er0 ; er0 still contains src address
- test_h_gr32 word_dest er1 ; er1 still contains dst address
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ;; Now check the result of the add to memory.
- cmp.w #0x1919, @word_dest
- beq .Lw5
- fail
-.Lw5:
-
-addx_w_rspostdec_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.w @eRs-,rd8 ; Addx to register post-decrement
- mov #word_src, er0
- mov #word_dest, er1
- addx.w @er0-, @er1-
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 word_src-2 er0 ; er0 contains src address minus one
- test_h_gr32 word_dest-2 er1 ; er1 contains dst address minus one
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ;; Now check the result of the add to memory.
- cmp.w #0x1e1e, @word_dest
- beq .Lw6
- fail
-.Lw6:
-
-addx_l_imm32_0:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.l #xx:32,Rd ; Addx with carry initially zero.
- addx.l #0x50505, er0 ; Immediate 32-bit operand
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 0xa5aaaaaa er0 ; add result:
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-addx_l_imm32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.l #xx:32,Rd ; Addx with carry initially one.
- set_carry_flag 1
- addx.l #0x50505, er0 ; Immediate 32-bit operand
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 0xa5aaaaab er0 ; add result:
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-addx_l_imm32_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.l #xx:32,@eRd ; Addx to register indirect
- mov #long_dest, er0
- addx.l #0x50505, @er0
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0 ; er0 still contains address
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- cmp.l #0x50505, @long_dest
- beq .Ll1
- fail
-.Ll1:
-
-addx_l_imm32_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.l #xx:32,@eRd- ; Addx to register post-decrement
- mov #long_dest, er0
- addx.l #0x50505, @er0-
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 long_dest-4 er0 ; er0 contains address minus one
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- cmp.l #0xa0a0a, @long_dest
- beq .Ll2
- fail
-.Ll2:
-
-addx_l_reg32_0:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.l Rs,Rd ; addx with carry initially zero
- mov.l #0x50505, er0
- addx.l er0, er1 ; Register operand
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 0x50505 er0 ; add load
- test_h_gr32 0xa5aaaaaa er1 ; add result:
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-addx_l_reg32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.l Rs,Rd ; addx with carry initially one
- mov.l #0x50505, er0
- set_carry_flag 1
- addx.l er0, er1 ; Register operand
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 0x50505 er0 ; add result:
- test_h_gr32 0xa5aaaaab er1 ; add result:
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-addx_l_reg32_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.l rs8,@eRd ; Addx to register indirect
- mov #long_dest, er0
- mov.l #0x50505, er1
- addx.l er1, @er0
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0 ; er0 still contains address
- test_h_gr32 0x50505 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- cmp.l #0xf0f0f, @long_dest
- beq .Ll3
- fail
-.Ll3:
-
-addx_l_reg32_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.l rs8,@eRd- ; Addx to register post-decrement
- mov #long_dest, er0
- mov.l #0x50505, er1
- addx.l er1, @er0-
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 long_dest-4 er0 ; er0 contains address minus one
- test_h_gr32 0x50505 er1 ; er1 contains the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the add to memory.
- cmp.l #0x141414, @long_dest
- beq .Ll4
- fail
-.Ll4:
-
-addx_l_rsind_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.l @eRs,rd8 ; Addx from reg indirect to reg
- mov #long_src, er0
- addx.l @er0, er1
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 long_src er0 ; er0 still contains address
- test_h_gr32 0xa5aaaaaa er1 ; er1 contains the sum
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-addx_l_rspostdec_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.l @eRs-,rd8 ; Addx to register post-decrement
- mov #long_src, er0
- addx.l @er0-, er1
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 long_src-4 er0 ; er0 contains address minus one
- test_h_gr32 0xa5aaaaaa er1 ; er1 contains the sum
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-addx_l_rsind_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.l @eRs,rd8 ; Addx from reg indirect to reg
- mov #long_src, er0
- mov #long_dest, er1
- addx.l @er0, @er1
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 long_src er0 ; er0 still contains src address
- test_h_gr32 long_dest er1 ; er1 still contains dst address
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ;; Now check the result of the add to memory.
- cmp.l #0x191919, @long_dest
- beq .Ll5
- fail
-.Ll5:
-
-addx_l_rspostdec_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; addx.l @eRs-,rd8 ; Addx to register post-decrement
- mov #long_src, er0
- mov #long_dest, er1
- addx.l @er0-, @er1-
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 long_src-4 er0 ; er0 contains src address minus one
- test_h_gr32 long_dest-4 er1 ; er1 contains dst address minus one
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ;; Now check the result of the add to memory.
- cmp.l #0x1e1e1e, @long_dest
- beq .Ll6
- fail
-.Ll6:
-.endif
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/allinsn.exp b/sim/testsuite/sim/h8300/allinsn.exp
deleted file mode 100644
index 23e2cc9..0000000
--- a/sim/testsuite/sim/h8300/allinsn.exp
+++ /dev/null
@@ -1,55 +0,0 @@
-# Hitachi H8/300 (h, s, sx) simulator testsuite
-
-set all "h8300 h8300h h8300s h8sx"
-
-if {[istarget h8300*-*-*] || [istarget h8sx*-*-*]} then {
- run_sim_test add.b.s $all
- run_sim_test add.w.s $all
- run_sim_test add.l.s $all
- run_sim_test adds.s $all
- run_sim_test addx.s $all
- run_sim_test and.b.s $all
- run_sim_test and.w.s $all
- run_sim_test and.l.s $all
- run_sim_test bfld.s h8sx
- run_sim_test bra.s $all
- run_sim_test bset.s $all
- run_sim_test cmp.b.s $all
- run_sim_test cmp.w.s $all
- run_sim_test cmp.l.s $all
- run_sim_test daa.s $all
- run_sim_test das.s $all
- run_sim_test dec.s $all
- run_sim_test ext.w.s $all
- run_sim_test ext.l.s $all
- run_sim_test inc.s $all
- run_sim_test jmp.s $all
- run_sim_test ldc.s $all
- run_sim_test mac.s $all
- run_sim_test mov.b.s $all
- run_sim_test mov.w.s $all
- run_sim_test mov.l.s $all
- run_sim_test movmd.s h8sx
- run_sim_test movsd.s h8sx
- run_sim_test neg.s $all
- run_sim_test nop.s $all
- run_sim_test not.s $all
- run_sim_test or.b.s $all
- run_sim_test or.w.s $all
- run_sim_test or.l.s $all
- run_sim_test rotl.s $all
- run_sim_test rotr.s $all
- run_sim_test rotxl.s $all
- run_sim_test rotxr.s $all
- run_sim_test shal.s $all
- run_sim_test shar.s $all
- run_sim_test shll.s $all
- run_sim_test shlr.s $all
- run_sim_test stc.s $all
- run_sim_test sub.b.s $all
- run_sim_test sub.w.s $all
- run_sim_test sub.l.s $all
- run_sim_test xor.b.s $all
- run_sim_test xor.w.s $all
- run_sim_test xor.l.s $all
-}
diff --git a/sim/testsuite/sim/h8300/and.b.s b/sim/testsuite/sim/h8300/and.b.s
deleted file mode 100644
index 3377674..0000000
--- a/sim/testsuite/sim/h8300/and.b.s
+++ /dev/null
@@ -1,491 +0,0 @@
-# Hitachi H8 testcase 'and.b'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- # Instructions tested:
- # and.b #xx:8, rd ; e rd xxxxxxxx
- # and.b #xx:8, @erd ; 7 d rd ???? e ???? xxxxxxxx
- # and.b #xx:8, @erd+ ; 0 1 7 4 6 c rd 1??? e ???? xxxxxxxx
- # and.b #xx:8, @erd- ; 0 1 7 6 6 c rd 1??? e ???? xxxxxxxx
- # and.b #xx:8, @+erd ; 0 1 7 5 6 c rd 1??? e ???? xxxxxxxx
- # and.b #xx:8, @-erd ; 0 1 7 7 6 c rd 1??? e ???? xxxxxxxx
- # and.b rs, rd ; 1 6 rs rd
- # and.b reg8, @erd ; 7 d rd ???? 1 6 rs ????
- # and.b reg8, @erd+ ; 0 1 7 9 8 rd 6 rs
- # and.b reg8, @erd- ; 0 1 7 9 a rd 6 rs
- # and.b reg8, @+erd ; 0 1 7 9 9 rd 6 rs
- # and.b reg8, @-erd ; 0 1 7 9 b rd 6 rs
- #
- # andc #xx:8, ccr ; 0 6 xxxxxxxx
- # andc #xx:8, exr ; 0 1 4 1 0 6 xxxxxxxx
-
- # Coming soon:
- # ...
-
-.data
-pre_byte: .byte 0
-byte_dest: .byte 0xa5
-post_byte: .byte 0
-
- start
-
-and_b_imm8_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; and.b #xx:8,Rd
- and.b #0xaa, r0l ; Immediate 8-bit operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa5a0 r0 ; and result: a5 & aa
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a5a0 er0 ; and result: a5 & aa
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-and_b_imm8_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; and.b #xx:8,@eRd
- mov #byte_dest, er0
- and.b #0xaa:8, @er0 ; Immediate 8-bit src, reg indirect dst
-;;; .word 0x7d00
-;;; .word 0xe0aa
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 byte_dest, er0 ; er0 still contains address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the and to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa0, r0l
- beq .L1
- fail
-.L1:
-
-and_b_imm8_rdpostinc:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; and.b #xx:8,@eRd+
- mov #byte_dest, er0
- and.b #0x55:8, @er0+ ; Immediate 8-bit src, reg post-incr dest
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0xe055
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 post_byte, er0 ; er0 contains address plus one
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the and to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0x05, r0l
- beq .L2
- fail
-.L2:
-
-and_b_imm8_rdpostdec:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; and.b #xx:8,@eRd-
- mov #byte_dest, er0
- and.b #0xaa:8, @er0- ; Immediate 8-bit src, reg post-decr dest
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0xe0aa
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 pre_byte, er0 ; er0 contains address minus one
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the and to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa0, r0l
- beq .L3
- fail
-.L3:
-
-and_b_imm8_rdpreinc:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; and.b #xx:8,@+eRd
- mov #pre_byte, er0
- and.b #0x55:8, @+er0 ; Immediate 8-bit src, reg pre-incr dest
-;;; .word 0x0175
-;;; .word 0x6c08
-;;; .word 0xe055
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest, er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the and to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0x05, r0l
- beq .L4
- fail
-.L4:
-
-and_b_imm8_rdpredec:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; and.b #xx:8,@-eRd
- mov #post_byte, er0
- and.b #0xaa:8, @-er0 ; Immediate 8-bit src, reg pre-decr dest
-;;; .word 0x0177
-;;; .word 0x6c08
-;;; .word 0xe0aa
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 byte_dest, er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the and to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa0, r0l
- beq .L5
- fail
-.L5:
-
-
-.endif
-
-and_b_reg8_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; and.b Rs,Rd
- mov.b #0xaa, r0h
- and.b r0h, r0l ; Register operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xaaa0 r0 ; and result: a5 & aa
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5aaa0 er0 ; and result: a5 & aa
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-and_b_reg8_rdind:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; and.b rs8,@eRd ; And to register indirect
- mov #byte_dest, er0
- mov #0x55, r1l
- and.b r1l, @er0 ; reg8 src, reg indirect dest
-;;; .word 0x7d00
-;;; .word 0x1690
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0 ; er0 still contains address
- test_h_gr32 0xa5a5a555 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the and to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0x05, r0l
- beq .L6
- fail
-.L6:
-
-and_b_reg8_rdpostinc:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; and.b rs8,@eRd+ ; And to register post-incr
- mov #byte_dest, er0
- mov #0xaa, r1l
- and.b r1l, @er0+ ; reg8 src, reg post-incr dest
-;;; .word 0x0179
-;;; .word 0x8069
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 post_byte er0 ; er0 contains address plus one
- test_h_gr32 0xa5a5a5aa er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the and to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa0, r0l
- beq .L7
- fail
-.L7:
-
-and_b_reg8_rdpostdec:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; and.b rs8,@eRd- ; And to register post-decr
- mov #byte_dest, er0
- mov #0x55, r1l
- and.b r1l, @er0- ; reg8 src, reg post-decr dest
-;;; .word 0x0179
-;;; .word 0xa069
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 pre_byte er0 ; er0 contains address minus one
- test_h_gr32 0xa5a5a555 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the and to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0x05, r0l
- beq .L8
- fail
-.L8:
-
-and_b_reg8_rdpreinc:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; and.b rs8,@+eRd ; And to register post-incr
- mov #pre_byte, er0
- mov #0xaa, r1l
- and.b r1l, @+er0 ; reg8 src, reg post-incr dest
-;;; .word 0x0179
-;;; .word 0x9069
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0 ; er0 contains destination address
- test_h_gr32 0xa5a5a5aa er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the and to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa0, r0l
- beq .L9
- fail
-.L9:
-
-and_b_reg8_rdpredec:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; and.b rs8,@-eRd ; And to register post-decr
- mov #post_byte, er0
- mov #0x55, r1l
- and.b r1l, @-er0 ; reg8 src, reg post-decr dest
-;;; .word 0x0179
-;;; .word 0xb069
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0 ; er0 contains destination address
- test_h_gr32 0xa5a5a555 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the and to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0x05, r0l
- beq .L10
- fail
-.L10:
-
-andc_imm8_ccr:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; andc #xx:8,ccr
- set_ccr 0xff
-
- test_neg_set
- andc #0xf7, ccr ; Immediate 8-bit operand (neg flag)
- test_neg_clear
-
- test_zero_set
- andc #0xfb, ccr ; Immediate 8-bit operand (zero flag)
- test_zero_clear
-
- test_ovf_set
- andc #0xfd, ccr ; Immediate 8-bit operand (overflow flag)
- test_ovf_clear
-
- test_carry_set
- andc #0xfe, ccr ; Immediate 8-bit operand (carry flag)
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.endif
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/and.l.s b/sim/testsuite/sim/h8300/and.l.s
deleted file mode 100644
index ac09edc..0000000
--- a/sim/testsuite/sim/h8300/and.l.s
+++ /dev/null
@@ -1,77 +0,0 @@
-# Hitachi H8 testcase 'and.l'
-# mach(): h8300h h8300s h8sx
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
-.if (sim_cpu == h8sx) ; 16-bit immediate is only available on sx.
-and_l_imm16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; and.l #xx:16,Rd
- and.l #0xaaaa:16, er0 ; Immediate 16-bit operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr32 0x0000a0a0 er0 ; and result: a5a5a5a5 & aaaa
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-and_l_imm32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; and.l #xx:32,Rd
- and.l #0xaaaaaaaa, er0 ; Immediate 32-bit operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr32 0xa0a0a0a0 er0 ; and result: a5a5a5a5 & aaaaaaaa
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-and_l_reg:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; and.l Rs,Rd
- mov.l #0xaaaaaaaa, er1
- and.l er1, er0 ; Register operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr32 0xa0a0a0a0 er0 ; and result: a5a5a5a5 & aaaaaaaa
- test_h_gr32 0xaaaaaaaa er1 ; Make sure er1 is unchanged
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/and.w.s b/sim/testsuite/sim/h8300/and.w.s
deleted file mode 100644
index 4267179..0000000
--- a/sim/testsuite/sim/h8300/and.w.s
+++ /dev/null
@@ -1,61 +0,0 @@
-# Hitachi H8 testcase 'and.w'
-# mach(): h8300h h8300s h8sx
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
-and_w_imm16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; and.w #xx:16,Rd
- and.w #0xaaaa, r0 ; Immediate 16-bit operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa0a0 r0 ; and result: a5a5 & aaaa
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a0a0 er0 ; and result: a5a5 & aaaa
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-and_w_reg:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; and.w Rs,Rd
- mov.w #0xaaaa, r1
- and.w r1, r0 ; Register operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa0a0 r0 ; and result: a5a5 & aaaa
- test_h_gr16 0xaaaa r1 ; Make sure r1 is unchanged
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a0a0 er0 ; and result: a5a5 & aaaa
- test_h_gr32 0xa5a5aaaa er1 ; Make sure er1 is unchanged
-.endif
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/bfld.s b/sim/testsuite/sim/h8300/bfld.s
deleted file mode 100644
index 7c55007..0000000
--- a/sim/testsuite/sim/h8300/bfld.s
+++ /dev/null
@@ -1,286 +0,0 @@
-# Hitachi H8 testcase 'bfld', 'bfst'
-# mach(): h8sx
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- .data
-byte_src: .byte 0xa5
-byte_dst: .byte 0
-
- start
-
-.if (sim_cpu == h8sx)
-bfld_imm8_ind:
- set_grs_a5a5
- mov #byte_src, er2
-
- ;; bfld #xx:8, @ers, rd8
- set_ccr_zero
- bfld #1, @er2, r1l
- test_cc_clear
- test_h_gr8 1 r1l
-
- set_ccr_zero
- bfld #2, @er2, r1l
- test_cc_clear
- test_h_gr8 0 r1l
-
- set_ccr_zero
- bfld #7, @er2, r1l
- test_cc_clear
- test_h_gr8 5 r1l
-
- set_ccr_zero
- bfld #0x10, @er2, r1l
- test_cc_clear
- test_h_gr8 0 r1l
-
- set_ccr_zero
- bfld #0x20, @er2, r1l
- test_cc_clear
- test_h_gr8 1 r1l
-
- set_ccr_zero
- bfld #0xf0, @er2, r1l
- test_cc_clear
- test_h_gr8 0xa r1l
-
- test_h_gr32 0xa5a5a5a5 er0
- test_h_gr32 0xa5a5a50a er1
- test_h_gr32 byte_src er2
- test_h_gr32 0xa5a5a5a5 er3
- test_h_gr32 0xa5a5a5a5 er4
- test_h_gr32 0xa5a5a5a5 er5
- test_h_gr32 0xa5a5a5a5 er6
- test_h_gr32 0xa5a5a5a5 er7
-
-bfld_imm8_abs16:
- set_grs_a5a5
-
- ;; bfld #xx:8, @aa:16, rd8
- set_ccr_zero
- bfld #0x80, @byte_src:16, r1l
- test_cc_clear
- test_h_gr8 1 r1l
-
- set_ccr_zero
- bfld #0x40, @byte_src:16, r1l
- test_cc_clear
- test_h_gr8 0 r1l
-
- set_ccr_zero
- bfld #0xe0, @byte_src:16, r1l
- test_cc_clear
- test_h_gr8 0x5 r1l
-
- set_ccr_zero
- bfld #0x3c, @byte_src:16, r1l
- test_cc_clear
- test_h_gr8 9 r1l
-
- set_ccr_zero
- bfld #0xfe, @byte_src:16, r1l
- test_cc_clear
- test_h_gr8 0x52 r1l
-
- set_ccr_zero
- bfld #0, @byte_src:16, r1l
- test_cc_clear
- test_h_gr8 0 r1l
-
- test_h_gr32 0xa5a5a5a5 er0
- test_h_gr32 0xa5a5a500 er1
- test_h_gr32 0xa5a5a5a5 er2
- test_h_gr32 0xa5a5a5a5 er3
- test_h_gr32 0xa5a5a5a5 er4
- test_h_gr32 0xa5a5a5a5 er5
- test_h_gr32 0xa5a5a5a5 er6
- test_h_gr32 0xa5a5a5a5 er7
-
-bfst_imm8_ind:
- set_grs_a5a5
- mov #byte_dst, er2
-
- ;; bfst rd8, #xx:8, @ers
- mov.b #0, @byte_dst
- set_ccr_zero
- bfst r1l, #1, @er2
-;;; .word 0x7d20
-;;; .word 0xf901
-
- test_cc_clear
- cmp.b #1, @byte_dst
- bne fail1:16
-
- mov.b #0, @byte_dst
- set_ccr_zero
- bfst r1l, #2, @er2
-;;; .word 0x7d20
-;;; .word 0xf902
-
- test_cc_clear
- cmp.b #2, @byte_dst
- bne fail1:16
-
- mov.b #0, @byte_dst
- set_ccr_zero
- bfst r1l, #7, @er2
-;;; .word 0x7d20
-;;; .word 0xf907
-
- test_cc_clear
- cmp.b #5, @byte_dst
- bne fail1:16
-
- mov.b #0, @byte_dst
- set_ccr_zero
- bfst r1l, #0x10, @er2
-;;; .word 0x7d20
-;;; .word 0xf910
-
- test_cc_clear
- cmp.b #0x10, @byte_dst
- bne fail1:16
-
- mov.b #0, @byte_dst
- set_ccr_zero
- bfst r1l, #0x20, @er2
-;;; .word 0x7d20
-;;; .word 0xf920
-
- test_cc_clear
- cmp.b #0x20, @byte_dst
- bne fail1:16
-
- mov.b #0, @byte_dst
- set_ccr_zero
- bfst r1l, #0xf0, @er2
-;;; .word 0x7d20
-;;; .word 0xf9f0
-
- test_cc_clear
- cmp.b #0x50, @byte_dst
- bne fail1:16
-
- test_h_gr32 0xa5a5a5a5 er0
- test_h_gr32 0xa5a5a5a5 er1
- test_h_gr32 byte_dst er2
- test_h_gr32 0xa5a5a5a5 er3
- test_h_gr32 0xa5a5a5a5 er4
- test_h_gr32 0xa5a5a5a5 er5
- test_h_gr32 0xa5a5a5a5 er6
- test_h_gr32 0xa5a5a5a5 er7
-
-bfst_imm8_abs32:
- set_grs_a5a5
-
- ;; bfst #xx:8, @aa:32, rd8
- mov.b #0, @byte_dst
- set_ccr_zero
- bfst r1l, #0x80, @byte_dst:32
-;;; .word 0x6a38
-;;; .long byte_dst
-;;; .word 0xf980
-
- test_cc_clear
- cmp.b #0x80, @byte_dst
- bne fail1:16
-
- mov.b #0, @byte_dst
- set_ccr_zero
- bfst r1l, #0x40, @byte_dst:32
-;;; .word 0x6a38
-;;; .long byte_dst
-;;; .word 0xf940
-
- test_cc_clear
- cmp.b #0x40, @byte_dst
- bne fail1:16
-
- mov.b #0, @byte_dst
- set_ccr_zero
- bfst r1l, #0xe0, @byte_dst:32
-;;; .word 0x6a38
-;;; .long byte_dst
-;;; .word 0xf9e0
-
- test_cc_clear
- cmp.b #0xa0, @byte_dst
- bne fail1:16
-
- mov.b #0, @byte_dst
- set_ccr_zero
- bfst r1l, #0x3c, @byte_dst:32
-;;; .word 0x6a38
-;;; .long byte_dst
-;;; .word 0xf93c
-
- test_cc_clear
- cmp.b #0x14, @byte_dst
- bne fail1:16
-
- mov.b #0, @byte_dst
- set_ccr_zero
- bfst r1l, #0xfe, @byte_dst:32
-;;; .word 0x6a38
-;;; .long byte_dst
-;;; .word 0xf9fe
-
- test_cc_clear
- cmp.b #0x4a, @byte_dst
- bne fail1:16
-
- mov.b #0, @byte_dst
- set_ccr_zero
- bfst r1l, #0, @byte_dst:32
-;;; .word 0x6a38
-;;; .long byte_dst
-;;; .word 0xf900
-
- test_cc_clear
- cmp.b #0x0, @byte_dst
- bne fail1:16
-
- mov.b #0, @byte_dst
- set_ccr_zero
- bfst r1l, #0x38, @byte_dst:32
-;;; .word 0x6a38
-;;; .long byte_dst
-;;; .word 0xf938
-
- test_cc_clear
- cmp.b #0x28, @byte_dst
- bne fail1:16
-
- ;;
- ;; Now let's do one in which the bits in the destination
- ;; are appropriately combined with the bits in the source.
- ;;
-
- mov.b #0xc3, @byte_dst
- set_ccr_zero
- bfst r1l, #0x3c, @byte_dst:32
-;;; .word 0x6a38
-;;; .long byte_dst
-;;; .word 0xf93c
-
- test_cc_clear
- cmp.b #0xd7, @byte_dst
- bne fail1:16
-
- test_grs_a5a5
-
-.endif
- pass
-
- exit 0
-
-fail1: fail
-
diff --git a/sim/testsuite/sim/h8300/bra.s b/sim/testsuite/sim/h8300/bra.s
deleted file mode 100644
index 7da2611..0000000
--- a/sim/testsuite/sim/h8300/bra.s
+++ /dev/null
@@ -1,165 +0,0 @@
-# Hitachi H8 testcase 'bra'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-.if (sim_cpu == h8sx)
- .data
- .align 4
-disp8: .long tgt_reg8
-disp16: .long tgt_reg16
-disp32: .long tgt_reg32
-dslot: .byte 0
- .text
-.endif
-
-bra_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; bra dd:8 ; 8-bit displacement
- bra tgt_8:8
-;;; .word 0x40xx ; where "xx" is tgt_8 - '.'.
- fail
-
-tgt_8:
- test_cc_clear
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu) ; not available in h8/300 mode
-bra_16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; bra dd:16 ; 16-bit displacement
- bra tgt_24:16 ; NOTE: hard-coded to avoid relaxing.
-;;; .word 0x5800
-;;; .word tgt_24 - .
- fail
-
-tgt_24:
- test_cc_clear
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-.if (sim_cpu == h8sx)
-bra_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; bra rn.b ; 8-bit register indirect
- sub.l #src8, @disp8
- mov.l @disp8, er5
-;;; bra er5.b
- .word 0x5955
-src8: fail
-
-tgt_reg8:
- test_cc_clear
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
-;;; test_h_gr32 tgt_reg8 er5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-bra_reg16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; bra rn.w ; 16-bit register indirect
- sub.l #src16, @disp16
- mov.l @disp16, er5
-;;; bra er5.w
- .word 0x5956
-src16: fail
-
-tgt_reg16:
- test_cc_clear
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
-;;; test_h_gr32 tgt_reg16 er5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-bra_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; bra ern ; 32-bit register indirect
- sub.l #src32, @disp32
- mov.l @disp32, er5
-;;; bra er5.l
- .word 0x5957
-src32: fail
-
-tgt_reg32:
- test_cc_clear
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
-;;; test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-bra_s: set_grs_a5a5
- set_ccr_zero
-
-;;; bra/s tgt_post_delay
- .word 0x4017
- ;; The following instruction is in the delay slot, and should execute.
- mov.b #1, @dslot
- ;; After this, the next instructions should not execute.
- fail
-
-tgt_post_delay:
- test_cc_clear
- cmp.b #0, @dslot ; Should be non-zero if delay slot executed.
- bne dslot_ok
- fail
-
-dslot_ok:
- test_gr_a5a5 0 ; Make sure all general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.endif
-
- pass
- exit 0
-
-
\ No newline at end of file
diff --git a/sim/testsuite/sim/h8300/brabc.s b/sim/testsuite/sim/h8300/brabc.s
deleted file mode 100644
index 119d8d9..0000000
--- a/sim/testsuite/sim/h8300/brabc.s
+++ /dev/null
@@ -1,107 +0,0 @@
-# Hitachi H8 testcase 'bra/bc'
-# mach(): h8sx
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- .data
-byte_src: .byte 0xa5
-
- start
-
-.if (sim_cpu == h8sx)
-brabc_ind_disp8:
- set_grs_a5a5
- mov #byte_src, er1
- set_ccr_zero
- ;; bra/bc xx:3, @erd, disp8
- bra/bc #1, @er1, .Lpass1:8
-;;; .word 0x7c10
-;;; .word 0x4110
- fail
-.Lpass1:
- bra/bc #2, @er1, .Lfail1:8
-;;; .word 0x7c10
-;;; .word 0x4202
- bra .Lpass2
-.Lfail1:
- fail
-.Lpass2:
- test_cc_clear
- test_h_gr32 0xa5a5a5a5 er0
- test_h_gr32 byte_src er1
- test_h_gr32 0xa5a5a5a5 er2
- test_h_gr32 0xa5a5a5a5 er3
- test_h_gr32 0xa5a5a5a5 er4
- test_h_gr32 0xa5a5a5a5 er5
- test_h_gr32 0xa5a5a5a5 er6
- test_h_gr32 0xa5a5a5a5 er7
-
-brabc_abs16_disp16:
- set_grs_a5a5
- set_ccr_zero
- ;; bra/bc xx:3, @aa:16, disp16
- bra/bc #1, @byte_src:16, .Lpass3:16
- fail
-.Lpass3:
- bra/bc #2, @byte_src:16, .Lfail2:16
- bra .Lpass4
-.Lfail2:
- fail
-.Lpass4:
- test_cc_clear
- test_grs_a5a5
-
-brabs_ind_disp8:
- set_grs_a5a5
- mov #byte_src, er1
- set_ccr_zero
- ;; bra/bs xx:3, @erd, disp8
- bra/bs #2, @er1, .Lpass5:8
-;;; .word 0x7c10
-;;; .word 0x4a10
- fail
-.Lpass5:
- bra/bs #1, @er1, .Lfail3:8
-;;; .word 0x7c10
-;;; .word 0x4902
- bra .Lpass6
-.Lfail3:
- fail
-.Lpass6:
- test_cc_clear
- test_h_gr32 0xa5a5a5a5 er0
- test_h_gr32 byte_src er1
- test_h_gr32 0xa5a5a5a5 er2
- test_h_gr32 0xa5a5a5a5 er3
- test_h_gr32 0xa5a5a5a5 er4
- test_h_gr32 0xa5a5a5a5 er5
- test_h_gr32 0xa5a5a5a5 er6
- test_h_gr32 0xa5a5a5a5 er7
-
-brabs_abs32_disp16:
- set_grs_a5a5
- set_ccr_zero
- ;; bra/bs xx:3, @aa:32, disp16
- bra/bs #2, @byte_src:32, .Lpass7:16
- fail
-.Lpass7:
- bra/bs #1, @byte_src:32, .Lfail4:16
- bra .Lpass8
-.Lfail4:
- fail
-.Lpass8:
- test_cc_clear
- test_grs_a5a5
-
-.endif
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/bset.s b/sim/testsuite/sim/h8300/bset.s
deleted file mode 100644
index ecf5237..0000000
--- a/sim/testsuite/sim/h8300/bset.s
+++ /dev/null
@@ -1,841 +0,0 @@
-# Hitachi H8 testcase 'bset', 'bclr'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- # Instructions tested:
- #
- # bset xx:3, rd8 ; 7 0 ?xxx rd8
- # bclr xx:3, rd8 ; 7 2 ?xxx rd8
- # bset xx:3, @erd ; 7 d 0rd ???? 7 0 ?xxx ????
- # bclr xx:3, @erd ; 7 d 0rd ???? 7 2 ?xxx ????
- # bset xx:3, @abs16 ; 6 a 1 1??? aa:16 7 0 ?xxx ????
- # bclr xx:3, @abs16 ; 6 a 1 1??? aa:16 7 2 ?xxx ????
- # bset reg8, rd8 ; 6 0 rs8 rd8
- # bclr reg8, rd8 ; 6 2 rs8 rd8
- # bset reg8, @erd ; 7 d 0rd ???? 6 0 rs8 ????
- # bclr reg8, @erd ; 7 d 0rd ???? 6 2 rs8 ????
- # bset reg8, @abs32 ; 6 a 3 1??? aa:32 6 0 rs8 ????
- # bclr reg8, @abs32 ; 6 a 3 1??? aa:32 6 2 rs8 ????
- #
- # bset/eq xx:3, rd8
- # bclr/eq xx:3, rd8
- # bset/ne xx:3, rd8
- # bclr/ne xx:3, rd8
-
- .data
-byte_dst: .byte 0
-
- start
-
-bset_imm3_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
-
- ;; bset xx:3, rd8
- mov #0, r1l
- set_ccr_zero
- bset #0, r1l
- test_cc_clear
- test_h_gr8 1 r1l
-
- set_ccr_zero
- bset #1, r1l
- test_cc_clear
- test_h_gr8 3 r1l
-
- set_ccr_zero
- bset #2, r1l
- test_cc_clear
- test_h_gr8 7 r1l
-
- set_ccr_zero
- bset #3, r1l
- test_cc_clear
- test_h_gr8 15 r1l
-
- set_ccr_zero
- bset #4, r1l
- test_cc_clear
- test_h_gr8 31 r1l
-
- set_ccr_zero
- bset #5, r1l
- test_cc_clear
- test_h_gr8 63 r1l
-
- set_ccr_zero
- bset #6, r1l
- test_cc_clear
- test_h_gr8 127 r1l
-
- set_ccr_zero
- bset #7, r1l
- test_cc_clear
- test_h_gr8 255 r1l
-
-.if (sim_cpu == h8300)
- test_h_gr16 0xa5ff, r1
-.else
- test_h_gr32 0xa5a5a5ff er1
-.endif
-
-bclr_imm3_reg8:
- set_ccr_zero
- bclr #7, r1l
- test_cc_clear
- test_h_gr8 127 r1l
-
- set_ccr_zero
- bclr #6, r1l
- test_cc_clear
- test_h_gr8 63 r1l
-
- set_ccr_zero
- bclr #5, r1l
- test_cc_clear
- test_h_gr8 31 r1l
-
- set_ccr_zero
- bclr #4, r1l
- test_cc_clear
- test_h_gr8 15 r1l
-
- set_ccr_zero
- bclr #3, r1l
- test_cc_clear
- test_h_gr8 7 r1l
-
- set_ccr_zero
- bclr #2, r1l
- test_cc_clear
- test_h_gr8 3 r1l
-
- set_ccr_zero
- bclr #1, r1l
- test_cc_clear
- test_h_gr8 1 r1l
-
- set_ccr_zero
- bclr #0, r1l
- test_cc_clear
- test_h_gr8 0 r1l
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
-.if (sim_cpu == h8300)
- test_h_gr16 0xa500 r1
-.else
- test_h_gr32 0xa5a5a500 er1
-.endif
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu)
-bset_imm3_ind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
-
- ;; bset xx:3, @erd
- mov #byte_dst, er1
- set_ccr_zero
- bset #0, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 1 r2l
-
- set_ccr_zero
- bset #1, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 3 r2l
-
- set_ccr_zero
- bset #2, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 7 r2l
-
- set_ccr_zero
- bset #3, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 15 r2l
-
- set_ccr_zero
- bset #4, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 31 r2l
-
- set_ccr_zero
- bset #5, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 63 r2l
-
- set_ccr_zero
- bset #6, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 127 r2l
-
- set_ccr_zero
- bset #7, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 255 r2l
-
-.if (sim_cpu == h8300)
- test_h_gr16 0xa5ff r2
-.else
- test_h_gr32 0xa5a5a5ff er2
-.endif
-
-bclr_imm3_ind:
- set_ccr_zero
- bclr #7, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 127 r2l
-
- set_ccr_zero
- bclr #6, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 63 r2l
-
- set_ccr_zero
- bclr #5, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 31 r2l
-
- set_ccr_zero
- bclr #4, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 15 r2l
-
- set_ccr_zero
- bclr #3, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 7 r2l
-
- set_ccr_zero
- bclr #2, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 3 r2l
-
- set_ccr_zero
- bclr #1, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 1 r2l
-
- set_ccr_zero
- bclr #0, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 0 r2l
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
-.if (sim_cpu == h8300)
- test_h_gr16 byte_dst r1
- test_h_gr16 0xa500 r2
-.else
- test_h_gr32 byte_dst er1
- test_h_gr32 0xa5a5a500 er2
-.endif
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-bset_imm3_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
-
- ;; bset xx:3, @aa:16
- set_ccr_zero
- bset #0, @byte_dst:16
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 1 r2l
-
- set_ccr_zero
- bset #1, @byte_dst:16
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 3 r2l
-
- set_ccr_zero
- bset #2, @byte_dst:16
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 7 r2l
-
- set_ccr_zero
- bset #3, @byte_dst:16
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 15 r2l
-
- set_ccr_zero
- bset #4, @byte_dst:16
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 31 r2l
-
- set_ccr_zero
- bset #5, @byte_dst:16
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 63 r2l
-
- set_ccr_zero
- bset #6, @byte_dst:16
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 127 r2l
-
- set_ccr_zero
- bset #7, @byte_dst:16
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 255 r2l
-
-.if (sim_cpu == h8300)
- test_h_gr16 0xa5ff r2
-.else
- test_h_gr32 0xa5a5a5ff er2
-.endif
-
-bclr_imm3_abs16:
- set_ccr_zero
- bclr #7, @byte_dst:16
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 127 r2l
-
- set_ccr_zero
- bclr #6, @byte_dst:16
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 63 r2l
-
- set_ccr_zero
- bclr #5, @byte_dst:16
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 31 r2l
-
- set_ccr_zero
- bclr #4, @byte_dst:16
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 15 r2l
-
- set_ccr_zero
- bclr #3, @byte_dst:16
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 7 r2l
-
- set_ccr_zero
- bclr #2, @byte_dst:16
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 3 r2l
-
- set_ccr_zero
- bclr #1, @byte_dst:16
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 1 r2l
-
- set_ccr_zero
- bclr #0, @byte_dst:16
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 0 r2l
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
-.if (sim_cpu == h8300)
- test_h_gr16 0xa500 r2
-.else
- test_h_gr32 0xa5a5a500 er2
-.endif
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-bset_rs8_rd8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
-
- ;; bset rs8, rd8
- mov #0, r1h
- mov #0, r1l
- set_ccr_zero
- bset r1h, r1l
- test_cc_clear
- test_h_gr8 1 r1l
-
- mov #1, r1h
- set_ccr_zero
- bset r1h, r1l
- test_cc_clear
- test_h_gr8 3 r1l
-
- mov #2, r1h
- set_ccr_zero
- bset r1h, r1l
- test_cc_clear
- test_h_gr8 7 r1l
-
- mov #3, r1h
- set_ccr_zero
- bset r1h, r1l
- test_cc_clear
- test_h_gr8 15 r1l
-
- mov #4, r1h
- set_ccr_zero
- bset r1h, r1l
- test_cc_clear
- test_h_gr8 31 r1l
-
- mov #5, r1h
- set_ccr_zero
- bset r1h, r1l
- test_cc_clear
- test_h_gr8 63 r1l
-
- mov #6, r1h
- set_ccr_zero
- bset r1h, r1l
- test_cc_clear
- test_h_gr8 127 r1l
-
- mov #7, r1h
- set_ccr_zero
- bset r1h, r1l
- test_cc_clear
- test_h_gr8 255 r1l
-
-.if (sim_cpu == h8300)
- test_h_gr16 0x07ff, r1
-.else
- test_h_gr32 0xa5a507ff er1
-.endif
-
-bclr_rs8_rd8:
- mov #7, r1h
- set_ccr_zero
- bclr r1h, r1l
- test_cc_clear
- test_h_gr8 127 r1l
-
- mov #6, r1h
- set_ccr_zero
- bclr r1h, r1l
- test_cc_clear
- test_h_gr8 63 r1l
-
- mov #5, r1h
- set_ccr_zero
- bclr r1h, r1l
- test_cc_clear
- test_h_gr8 31 r1l
-
- mov #4, r1h
- set_ccr_zero
- bclr r1h, r1l
- test_cc_clear
- test_h_gr8 15 r1l
-
- mov #3, r1h
- set_ccr_zero
- bclr r1h, r1l
- test_cc_clear
- test_h_gr8 7 r1l
-
- mov #2, r1h
- set_ccr_zero
- bclr r1h, r1l
- test_cc_clear
- test_h_gr8 3 r1l
-
- mov #1, r1h
- set_ccr_zero
- bclr r1h, r1l
- test_cc_clear
- test_h_gr8 1 r1l
-
- mov #0, r1h
- set_ccr_zero
- bclr r1h, r1l
- test_cc_clear
- test_h_gr8 0 r1l
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
-.if (sim_cpu == h8300)
- test_h_gr16 0x0000 r1
-.else
- test_h_gr32 0xa5a50000 er1
-.endif
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu)
-bset_rs8_ind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
-
- ;; bset rs8, @erd
- mov #byte_dst, er1
- mov #0, r2h
- set_ccr_zero
- bset r2h, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 1 r2l
-
- mov #1, r2h
- set_ccr_zero
- bset r2h, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 3 r2l
-
- mov #2, r2h
- set_ccr_zero
- bset r2h, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 7 r2l
-
- mov #3, r2h
- set_ccr_zero
- bset r2h, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 15 r2l
-
- mov #4, r2h
- set_ccr_zero
- bset r2h, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 31 r2l
-
- mov #5, r2h
- set_ccr_zero
- bset r2h, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 63 r2l
-
- mov #6, r2h
- set_ccr_zero
- bset r2h, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 127 r2l
-
- mov #7, r2h
- set_ccr_zero
- bset r2h, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 255 r2l
-
-.if (sim_cpu == h8300)
- test_h_gr16 0x07ff r2
-.else
- test_h_gr32 0xa5a507ff er2
-.endif
-
-bclr_rs8_ind:
- mov #7, r2h
- set_ccr_zero
- bclr r2h, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 127 r2l
-
- mov #6, r2h
- set_ccr_zero
- bclr r2h, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 63 r2l
-
- mov #5, r2h
- set_ccr_zero
- bclr r2h, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 31 r2l
-
- mov #4, r2h
- set_ccr_zero
- bclr r2h, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 15 r2l
-
- mov #3, r2h
- set_ccr_zero
- bclr r2h, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 7 r2l
-
- mov #2, r2h
- set_ccr_zero
- bclr r2h, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 3 r2l
-
- mov #1, r2h
- set_ccr_zero
- bclr r2h, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 1 r2l
-
- mov #0, r2h
- set_ccr_zero
- bclr r2h, @er1
- test_cc_clear
- mov @er1, r2l
- test_h_gr8 0 r2l
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
-.if (sim_cpu == h8300)
- test_h_gr16 byte_dst r1
- test_h_gr16 0x0000 r2
-.else
- test_h_gr32 byte_dst er1
- test_h_gr32 0xa5a50000 er2
-.endif
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-bset_rs8_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
-
- ;; bset rs8, @aa:32
- mov #0, r2h
- set_ccr_zero
- bset r2h, @byte_dst:32
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 1 r2l
-
- mov #1, r2h
- set_ccr_zero
- bset r2h, @byte_dst:32
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 3 r2l
-
- mov #2, r2h
- set_ccr_zero
- bset r2h, @byte_dst:32
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 7 r2l
-
- mov #3, r2h
- set_ccr_zero
- bset r2h, @byte_dst:32
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 15 r2l
-
- mov #4, r2h
- set_ccr_zero
- bset r2h, @byte_dst:32
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 31 r2l
-
- mov #5, r2h
- set_ccr_zero
- bset r2h, @byte_dst:32
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 63 r2l
-
- mov #6, r2h
- set_ccr_zero
- bset r2h, @byte_dst:32
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 127 r2l
-
- mov #7, r2h
- set_ccr_zero
- bset r2h, @byte_dst:32
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 255 r2l
-
-.if (sim_cpu == h8300)
- test_h_gr16 0x07ff r2
-.else
- test_h_gr32 0xa5a507ff er2
-.endif
-
-bclr_rs8_abs32:
- mov #7, r2h
- set_ccr_zero
- bclr r2h, @byte_dst:32
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 127 r2l
-
- mov #6, r2h
- set_ccr_zero
- bclr r2h, @byte_dst:32
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 63 r2l
-
- mov #5, r2h
- set_ccr_zero
- bclr r2h, @byte_dst:32
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 31 r2l
-
- mov #4, r2h
- set_ccr_zero
- bclr r2h, @byte_dst:32
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 15 r2l
-
- mov #3, r2h
- set_ccr_zero
- bclr r2h, @byte_dst:32
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 7 r2l
-
- mov #2, r2h
- set_ccr_zero
- bclr r2h, @byte_dst:32
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 3 r2l
-
- mov #1, r2h
- set_ccr_zero
- bclr r2h, @byte_dst:32
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 1 r2l
-
- mov #0, r2h
- set_ccr_zero
- bclr r2h, @byte_dst:32
- test_cc_clear
- mov @byte_dst, r2l
- test_h_gr8 0 r2l
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
-.if (sim_cpu == h8300)
- test_h_gr16 0x0000 r2
-.else
- test_h_gr32 0xa5a50000 er2
-.endif
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-.if (sim_cpu == h8sx)
-bset_eq_imm3_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
-
- ;; bset/eq xx:3, rd8
- mov #0, @byte_dst
- set_ccr_zero
- bset/eq #0, @byte_dst:16 ; Zero is clear, should have no effect.
- test_cc_clear
- mov @byte_dst, r1l
- test_h_gr8 0 r1l
-
- set_ccr_zero
- orc #4, ccr ; Set zero flag
- bset/eq #0, @byte_dst:16 ; Zero is set: operation should succeed.
-
- test_neg_clear
- test_zero_set
- test_ovf_clear
- test_carry_clear
-
- mov @byte_dst, r1l
- test_h_gr8 1 r1l
-
-bclr_eq_imm3_abs32:
- mov #1, @byte_dst
- set_ccr_zero
- bclr/eq #0, @byte_dst:32 ; Zero is clear, should have no effect.
- test_cc_clear
- mov @byte_dst, r1l
- test_h_gr8 1 r1l
-
- set_ccr_zero
- orc #4, ccr ; Set zero flag
- bclr/eq #0, @byte_dst:32 ; Zero is set: operation should succeed.
- test_neg_clear
- test_zero_set
- test_ovf_clear
- test_carry_clear
- mov @byte_dst, r1l
- test_h_gr8 0 r1l
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
-.if (sim_cpu == h8300)
- test_h_gr16 0xa500 r1
-.else
- test_h_gr32 0xa5a5a500 er1
-.endif
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
- pass
- exit 0
diff --git a/sim/testsuite/sim/h8300/cmp.b.s b/sim/testsuite/sim/h8300/cmp.b.s
deleted file mode 100644
index 3e57ae7..0000000
--- a/sim/testsuite/sim/h8300/cmp.b.s
+++ /dev/null
@@ -1,625 +0,0 @@
-# Hitachi H8 testcase 'cmp.b'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- # Instructions tested:
- # cmp.b #xx:8, rd ; a rd xxxxxxxx
- # cmp.b #xx:8, @erd ; 7 d rd ???? a ???? xxxxxxxx
- # cmp.b #xx:8, @erd+ ; 0 1 7 4 6 c rd 1??? a ???? xxxxxxxx
- # cmp.b #xx:8, @erd- ; 0 1 7 6 6 c rd 1??? a ???? xxxxxxxx
- # cmp.b #xx:8, @+erd ; 0 1 7 5 6 c rd 1??? a ???? xxxxxxxx
- # cmp.b #xx:8, @-erd ; 0 1 7 7 6 c rd 1??? a ???? xxxxxxxx
- # cmp.b rs, rd ; 1 c rs rd
- # cmp.b reg8, @erd ; 7 d rd ???? 1 c rs ????
- # cmp.b reg8, @erd+ ; 0 1 7 9 8 rd 2 rs
- # cmp.b reg8, @erd- ; 0 1 7 9 a rd 2 rs
- # cmp.b reg8, @+erd ; 0 1 7 9 9 rd 2 rs
- # cmp.b reg8, @-erd ; 0 1 7 9 b rd 2 rs
- #
-
- # Coming soon:
- # ...
-
-.data
-pre_byte: .byte 0
-byte_dest: .byte 0xa5
-post_byte: .byte 0
-
- start
-
-cmp_b_imm8_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; cmp.b #xx:8,Rd
- cmp.b #0xa5, r0l ; Immediate 8-bit src, reg8 dest
- beq .Leq1
- fail
-.Leq1: cmp.b #0xa6, r0l
- blt .Llt1
- fail
-.Llt1: cmp.b #0xa4, r0l
- bgt .Lgt1
- fail
-.Lgt1:
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa5a5 r0 ; r0 unchanged
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a5a5 er0 ; er0 unchanged
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-cmp_b_imm8_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; cmp.b #xx:8,@eRd
- mov #byte_dest, er0
- cmp.b #0xa5:8, @er0 ; Immediate 8-bit src, reg indirect dst
-;;; .word 0x7d00
-;;; .word 0xa0a5
- beq .Leq2
- fail
-.Leq2: set_ccr_zero
- cmp.b #0xa6, @er0
-;;; .word 0x7d00
-;;; .word 0xa0a6
- blt .Llt2
- fail
-.Llt2: set_ccr_zero
- cmp.b #0xa4, @er0
-;;; .word 0x7d00
-;;; .word 0xa0a4
- bgt .Lgt2
- fail
-.Lgt2:
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0 ; er0 still contains address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the cmp to memory (memory unchanged).
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa5, r0l
- beq .L2
- fail
-.L2:
-
-cmp_b_imm8_rdpostinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; cmp.b #xx:8,@eRd+
- mov #byte_dest, er0
- cmp.b #0xa5:8, @er0+ ; Immediate 8-bit src, reg postinc dst
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0xa0a5
- beq .Leq3
- fail
-.Leq3: test_h_gr32 post_byte er0 ; er0 contains address plus one
- mov #byte_dest, er0
- set_ccr_zero
- cmp.b #0xa6, @er0+
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0xa0a6
- blt .Llt3
- fail
-.Llt3: test_h_gr32 post_byte er0 ; er0 contains address plus one
- mov #byte_dest, er0
- set_ccr_zero
- cmp.b #0xa4, @er0+
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0xa0a4
- bgt .Lgt3
- fail
-.Lgt3:
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 post_byte er0 ; er0 contains address plus one
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the cmp to memory (memory unchanged).
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa5, r0l
- beq .L3
- fail
-.L3:
-
-cmp_b_imm8_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; cmp.b #xx:8,@eRd-
- mov #byte_dest, er0
- cmp.b #0xa5:8, @er0- ; Immediate 8-bit src, reg postdec dst
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0xa0a5
- beq .Leq4
- fail
-.Leq4: test_h_gr32 pre_byte er0 ; er0 contains address minus one
- mov #byte_dest, er0
- set_ccr_zero
- cmp.b #0xa6, @er0-
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0xa0a6
- blt .Llt4
- fail
-.Llt4: test_h_gr32 pre_byte er0 ; er0 contains address minus one
- mov #byte_dest, er0
- set_ccr_zero
- cmp.b #0xa4, @er0-
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0xa0a4
- bgt .Lgt4
- fail
-.Lgt4:
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 pre_byte er0 ; er0 contains address minus one
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the cmp to memory (memory unchanged).
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa5, r0l
- beq .L4
- fail
-.L4:
-
-cmp_b_imm8_rdpreinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; cmp.b #xx:8,@+eRd
- mov #pre_byte, er0
- cmp.b #0xa5:8, @+er0 ; Immediate 8-bit src, reg pre-inc dst
-;;; .word 0x0175
-;;; .word 0x6c08
-;;; .word 0xa0a5
- beq .Leq5
- fail
-.Leq5: test_h_gr32 byte_dest er0 ; er0 contains destination address
- mov #pre_byte, er0
- set_ccr_zero
- cmp.b #0xa6, @+er0
-;;; .word 0x0175
-;;; .word 0x6c08
-;;; .word 0xa0a6
- blt .Llt5
- fail
-.Llt5: test_h_gr32 byte_dest er0 ; er0 contains destination address
- mov #pre_byte, er0
- set_ccr_zero
- cmp.b #0xa4, @+er0
-;;; .word 0x0175
-;;; .word 0x6c08
-;;; .word 0xa0a4
- bgt .Lgt5
- fail
-.Lgt5:
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the cmp to memory (memory unchanged).
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa5, r0l
- beq .L5
- fail
-.L5:
-
-cmp_b_imm8_rdpredec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; cmp.b #xx:8,@-eRd
- mov #post_byte, er0
- cmp.b #0xa5:8, @-er0 ; Immediate 8-bit src, reg pre-dec dst
-;;; .word 0x0177
-;;; .word 0x6c08
-;;; .word 0xa0a5
- beq .Leq6
- fail
-.Leq6: test_h_gr32 byte_dest er0 ; er0 contains destination address
- mov #post_byte, er0
- set_ccr_zero
- cmp.b #0xa6, @-er0
-;;; .word 0x0177
-;;; .word 0x6c08
-;;; .word 0xa0a6
- blt .Llt6
- fail
-.Llt6: test_h_gr32 byte_dest er0 ; er0 contains destination address
- mov #post_byte, er0
- set_ccr_zero
- cmp.b #0xa4, @-er0
-;;; .word 0x0177
-;;; .word 0x6c08
-;;; .word 0xa0a4
- bgt .Lgt6
- fail
-.Lgt6:
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the cmp to memory (memory unchanged).
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa5, r0l
- beq .L6
- fail
-.L6:
-
-
-.endif
-
-cmp_b_reg8_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; cmp.b Rs,Rd
- mov.b #0xa5, r0h
- cmp.b r0h, r0l ; Reg8 src, reg8 dst
- beq .Leq7
- fail
-.Leq7: mov.b #0xa6, r0h
- cmp.b r0h, r0l
- blt .Llt7
- fail
-.Llt7: mov.b #0xa4, r0h
- cmp.b r0h, r0l
- bgt .Lgt7
- fail
-.Lgt7:
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa4a5 r0 ; r0l unchanged.
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a4a5 er0 ; r0l unchanged
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-cmp_b_reg8_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; cmp.b rs8,@eRd ; cmp reg8 to register indirect
- mov #byte_dest, er0
- mov #0xa5, r1l
- cmp.b r1l, @er0 ; reg8 src, reg indirect dest
-;;; .word 0x7d00
-;;; .word 0x1c90
- beq .Leq8
- fail
-.Leq8: set_ccr_zero
- mov #0xa6, r1l
- cmp.b r1l, @er0
-;;; .word 0x7d00
-;;; .word 0x1c90
- blt .Llt8
- fail
-.Llt8: set_ccr_zero
- mov #0xa4, r1l
- cmp.b r1l, @er0
-;;; .word 0x7d00
-;;; .word 0x1c90
- bgt .Lgt8
- fail
-.Lgt8:
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0 ; er0 still contains address
- test_h_gr32 0xa5a5a5a4 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the cmp to memory (no change).
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa5, r0l
- beq .L8
- fail
-.L8:
-
-cmp_b_reg8_rdpostinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; cmp.b reg8,@eRd+
- mov #byte_dest, er0
- mov #0xa5, r1l
- cmp.b r1l, @er0+ ; Immediate 8-bit src, reg post-incr dst
-;;; .word 0x0179
-;;; .word 0x8029
- beq .Leq9
- fail
-.Leq9: test_h_gr32 post_byte er0 ; er0 contains address plus one
- mov #byte_dest er0
- mov #0xa6, r1l
- set_ccr_zero
- cmp.b r1l, @er0+
-;;; .word 0x0179
-;;; .word 0x8029
- blt .Llt9
- fail
-.Llt9: test_h_gr32 post_byte er0 ; er0 contains address plus one
- mov #byte_dest er0
- mov #0xa4, r1l
- set_ccr_zero
- cmp.b r1l, @er0+
-;;; .word 0x0179
-;;; .word 0x8029
- bgt .Lgt9
- fail
-.Lgt9:
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 post_byte er0 ; er0 contains address plus one
- test_h_gr32 0xa5a5a5a4 er1 ; er1 contains test load
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the cmp to memory (memory unchanged).
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa5, r0l
- beq .L9
- fail
-.L9:
-
-cmp_b_reg8_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; cmp.b reg8,@eRd-
- mov #byte_dest, er0
- mov #0xa5, r1l
- cmp.b r1l, @er0- ; Immediate 8-bit src, reg postdec dst
-;;; .word 0x0179
-;;; .word 0xa029
- beq .Leq10
- fail
-.Leq10: test_h_gr32 pre_byte er0 ; er0 contains address minus one
- mov #byte_dest er0
- mov #0xa6, r1l
- set_ccr_zero
- cmp.b r1l, @er0-
-;;; .word 0x0179
-;;; .word 0xa029
- blt .Llt10
- fail
-.Llt10: test_h_gr32 pre_byte er0 ; er0 contains address minus one
- mov #byte_dest er0
- mov #0xa4, r1l
- set_ccr_zero
- cmp.b r1l, @er0-
-;;; .word 0x0179
-;;; .word 0xa029
- bgt .Lgt10
- fail
-.Lgt10:
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 pre_byte er0 ; er0 contains address minus one
- test_h_gr32 0xa5a5a5a4 er1 ; er1 contains test load
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the cmp to memory (memory unchanged).
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa5, r0l
- beq .L10
- fail
-.L10:
-
-cmp_b_reg8_rdpreinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; cmp.b reg8,@+eRd
- mov #pre_byte, er0
- mov #0xa5, r1l
- cmp.b r1l, @+er0 ; Immediate 8-bit src, reg post-incr dst
-;;; .word 0x0179
-;;; .word 0x9029
- beq .Leq11
- fail
-.Leq11: test_h_gr32 byte_dest er0 ; er0 contains destination address
- mov #pre_byte er0
- mov #0xa6, r1l
- set_ccr_zero
- cmp.b r1l, @+er0
-;;; .word 0x0179
-;;; .word 0x9029
- blt .Llt11
- fail
-.Llt11: test_h_gr32 byte_dest er0 ; er0 contains destination address
- mov #pre_byte er0
- mov #0xa4, r1l
- set_ccr_zero
- cmp.b r1l, @+er0
-;;; .word 0x0179
-;;; .word 0x9029
- bgt .Lgt11
- fail
-.Lgt11:
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0 ; er0 contains destination address
- test_h_gr32 0xa5a5a5a4 er1 ; er1 contains test load
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the cmp to memory (memory unchanged).
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa5, r0l
- beq .L11
- fail
-.L11:
-
-cmp_b_reg8_rdpredec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; cmp.b reg8,@-eRd
- mov #post_byte, er0
- mov #0xa5, r1l
- cmp.b r1l, @-er0 ; Immediate 8-bit src, reg postdec dst
-;;; .word 0x0179
-;;; .word 0xb029
- beq .Leq12
- fail
-.Leq12: test_h_gr32 byte_dest er0 ; er0 contains destination address
- mov #post_byte er0
- mov #0xa6, r1l
- set_ccr_zero
- cmp.b r1l, @-er0
-;;; .word 0x0179
-;;; .word 0xb029
- blt .Llt12
- fail
-.Llt12: test_h_gr32 byte_dest er0 ; er0 contains destination address
- mov #post_byte er0
- mov #0xa4, r1l
- set_ccr_zero
- cmp.b r1l, @-er0
-;;; .word 0x0179
-;;; .word 0xb029
- bgt .Lgt12
- fail
-.Lgt12:
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0 ; er0 contains destination address
- test_h_gr32 0xa5a5a5a4 er1 ; er1 contains test load
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the cmp to memory (memory unchanged).
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa5, r0l
- beq .L12
- fail
-.L12:
-
-.endif
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/cmp.l.s b/sim/testsuite/sim/h8300/cmp.l.s
deleted file mode 100644
index 55f235a..0000000
--- a/sim/testsuite/sim/h8300/cmp.l.s
+++ /dev/null
@@ -1,106 +0,0 @@
-# Hitachi H8 testcase 'cmp.w'
-# mach(): h8300h h8300s h8sx
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
-.if (sim_cpu == h8sx) ; 3-bit immediate mode only for h8sx
-cmp_l_imm3: ;
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; cmp.l #xx:3,eRd ; Immediate 3-bit operand
- mov.l #5, er0
- cmp.l #5, er0
- beq eq3
- fail
-eq3:
- cmp.l #6, er0
- blt lt3
- fail
-lt3:
- cmp.l #4, er0
- bgt gt3
- fail
-gt3:
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr32 0x00000005 er0 ; er0 unchanged
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-cmp_l_imm16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; cmp.l #xx:8,Rd
- cmp.l #0xa5a5a5a5, er0 ; Immediate 16-bit operand
- beq eqi
- fail
-eqi: cmp.l #0xa5a5a5a6, er0
- blt lti
- fail
-lti: cmp.l #0xa5a5a5a4, er0
- bgt gti
- fail
-gti:
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr32 0xa5a5a5a5 er0 ; er0 unchanged
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-cmp_w_reg:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; cmp.l Rs,Rd
- mov.l #0xa5a5a5a5, er1
- cmp.l er1, er0 ; Register operand
- beq eqr
- fail
-eqr: mov.l #0xa5a5a5a6, er1
- cmp.l er1, er0
- blt ltr
- fail
-ltr: mov.l #0xa5a5a5a4, er1
- cmp.l er1, er0
- bgt gtr
- fail
-gtr:
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr32 0xa5a5a5a5 er0 ; r0 unchanged
- test_h_gr32 0xa5a5a5a4 er1 ; r1 unchanged
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/cmp.w.s b/sim/testsuite/sim/h8300/cmp.w.s
deleted file mode 100644
index 2c69dbd..0000000
--- a/sim/testsuite/sim/h8300/cmp.w.s
+++ /dev/null
@@ -1,110 +0,0 @@
-# Hitachi H8 testcase 'cmp.w'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
-.if (sim_cpu == h8sx) ; 3-bit immediate mode only for h8sx
-cmp_w_imm3: ;
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; cmp.w #xx:3,Rd ; Immediate 3-bit operand
- mov.w #5, r0
- cmp.w #5, r0
- beq eq3
- fail
-eq3:
- cmp.w #6, r0
- blt lt3
- fail
-lt3:
- cmp.w #4, r0
- bgt gt3
- fail
-gt3:
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr32 0xa5a50005 er0 ; er0 unchanged
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
-cmp_w_imm16: ; cmp.w immediate not available in h8300 mode.
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; cmp.w #xx:8,Rd
- cmp.w #0xa5a5, r0 ; Immediate 16-bit operand
- beq eqi
- fail
-eqi: cmp.w #0xa5a6, r0
- blt lti
- fail
-lti: cmp.w #0xa5a4, r0
- bgt gti
- fail
-gti:
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa5a5 r0 ; r0 unchanged
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a5a5 er0 ; er0 unchanged
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-cmp_w_reg:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; cmp.w Rs,Rd
- mov.w #0xa5a5, r1
- cmp.w r1, r0 ; Register operand
- beq eqr
- fail
-eqr: mov.w #0xa5a6, r1
- cmp.w r1, r0
- blt ltr
- fail
-ltr: mov.w #0xa5a4, r1
- cmp.w r1, r0
- bgt gtr
- fail
-gtr:
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa5a5 r0 ; r0 unchanged.
- test_h_gr16 0xa5a4 r1 ; r1 unchanged.
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a5a5 er0 ; r0 unchanged
- test_h_gr32 0xa5a5a5a4 er1 ; r1 unchanged
-.endif
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/daa.s b/sim/testsuite/sim/h8300/daa.s
deleted file mode 100644
index 5f81eba..0000000
--- a/sim/testsuite/sim/h8300/daa.s
+++ /dev/null
@@ -1,36 +0,0 @@
-# Hitachi H8 testcase 'daa'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
-daa_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; daa Rd
- daa r0l ; register operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr8 5 r0l
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- pass
-
- exit 0
-
diff --git a/sim/testsuite/sim/h8300/das.s b/sim/testsuite/sim/h8300/das.s
deleted file mode 100644
index 9317f19..0000000
--- a/sim/testsuite/sim/h8300/das.s
+++ /dev/null
@@ -1,36 +0,0 @@
-# Hitachi H8 testcase 'das'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
-das_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; das Rd
- das r0l ; register operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- pass
-
- exit 0
-
diff --git a/sim/testsuite/sim/h8300/dec.s b/sim/testsuite/sim/h8300/dec.s
deleted file mode 100644
index 122f311..0000000
--- a/sim/testsuite/sim/h8300/dec.s
+++ /dev/null
@@ -1,117 +0,0 @@
-# Hitachi H8 testcase 'dec.b, dec.w, dec.l'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
-dec_b:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; dec.b Rd
- dec.b r0h ; Decrement 8-bit reg by one
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa4a5 r0 ; dec result: a4|a5
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a4a5 er0 ; dec result: a5|a5|a4|a5
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
-dec_w_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; dec.w #1, Rd
- dec.w #1, r0 ; Decrement 16-bit reg by one
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa5a4 r0 ; dec result: a5|a4
-
- test_h_gr32 0xa5a5a5a4 er0 ; dec result: a5|a5|a5|a4
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-dec_w_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; dec.w #2, Rd
- dec.w #2, r0 ; Decrement 16-bit reg by two
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa5a3 r0 ; dec result: a5|a3
-
- test_h_gr32 0xa5a5a5a3 er0 ; dec result: a5|a5|a5|a3
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-dec_l_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; dec.l #1, eRd
- dec.l #1, er0 ; Decrement 32-bit reg by one
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr32 0xa5a5a5a4 er0 ; dec result: a5|a5|a5|a4
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-dec_l_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; dec.l #2, eRd
- dec.l #2, er0 ; Decrement 32-bit reg by two
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr32 0xa5a5a5a3 er0 ; dec result: a5|a5|a5|a3
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/ext.l.s b/sim/testsuite/sim/h8300/ext.l.s
deleted file mode 100644
index 43a713d..0000000
--- a/sim/testsuite/sim/h8300/ext.l.s
+++ /dev/null
@@ -1,1146 +0,0 @@
-# Hitachi H8 testcase 'exts.l, extu.l'
-# mach(): h8300h h8300s h8sx
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
- .data
- .align 4
-pos: .long 0xffff0001
-neg: .long 0x00008000
-
-pos2: .long 0xffffff01
-neg2: .long 0x00000080
-
- .text
-
-exts_l_reg32_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l ern32
- mov.w #1, r0
- exts.l er0
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 0x00000001 er0 ; result of sign extend
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-exts_l_reg32_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l ern32
- mov.w #0xffff, r0
- exts.l er0
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xffffffff er0 ; result of sign extend
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-extu_l_reg32_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l ern32
- mov.w #0xffff, r0
- extu.l er0
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 0x0000ffff er0 ; result of zero extend
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-exts_l_ind_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l @ern32
- mov.l #pos, er1
- exts.l @er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 pos er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000001, @pos
- beq .Lslindp
- fail
-.Lslindp:
- mov.l #0xffff0001, @pos ; Restore initial value
-
-exts_l_ind_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l @ern32
- mov.l #neg, er1
- exts.l @er1
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 neg er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0xffff8000, @neg
- beq .Lslindn
- fail
-.Lslindn:
-;;; Note: leave the value as 0xffff8000, so that extu has work to do.
-
-extu_l_ind_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l @ern32
- mov.l #neg, er1
- extu.l @er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00008000, @neg
- beq .Lulindn
- fail
-.Lulindn:
-;;; Note: leave the value as 0x00008000, so that extu has work to do.
-
-exts_l_postinc_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l @ern32+
- mov.l #pos, er1
- exts.l @er1+
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 pos+4 er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000001, @pos
- beq .Lslpostincp
- fail
-.Lslpostincp:
- mov.l #0xffff0001, @pos ; Restore initial value
-
-exts_l_postinc_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l @ern32+
- mov.l #neg, er1
- exts.l @er1+
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 neg+4 er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0xffff8000, @neg
- beq .Lslpostincn
- fail
-.Lslpostincn:
-;;; Note: leave the value as 0xffff8000, so that extu has work to do.
-
-extu_l_postinc_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l @ern32+
- mov.l #neg, er1
- extu.l @er1+
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg+4 er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00008000, @neg
- beq .Lulpostincn
- fail
-.Lulpostincn:
-;;; Note: leave the value as 0x00008000, so that extu has work to do.
-
-exts_l_postdec_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l @ern32-
- mov.l #pos, er1
- exts.l @er1-
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 pos-4 er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000001, @pos
- beq .Lslpostdecp
- fail
-.Lslpostdecp:
- mov.l #0xffff0001, @pos ; Restore initial value
-
-exts_l_postdec_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l @ern32-
- mov.l #neg, er1
- exts.l @er1-
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 neg-4 er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0xffff8000, @neg
- beq .Lslpostdecn
- fail
-.Lslpostdecn:
-;;; Note: leave the value as 0xffff8000, so that extu has work to do.
-
-extu_l_postdec_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l @ern32-
- mov.l #neg, er1
- extu.l @er1-
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg-4 er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00008000, @neg
- beq .Lulpostdecn
- fail
-.Lulpostdecn:
-;;; Note: leave the value as 0x00008000, so that extu has work to do.
-
-exts_l_preinc_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l @+ern32
- mov.l #pos-4, er1
- exts.l @+er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 pos er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000001, @pos
- beq .Lslpreincp
- fail
-.Lslpreincp:
- mov.l #0xffff0001, @pos ; Restore initial value
-
-exts_l_preinc_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l @+ern32
- mov.l #neg-4, er1
- exts.l @+er1
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 neg er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0xffff8000, @neg
- beq .Lslpreincn
- fail
-.Lslpreincn:
-;;; Note: leave the value as 0xffff8000, so that extu has work to do.
-
-extu_l_preinc_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l @+ern32
- mov.l #neg-4, er1
- extu.l @+er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00008000, @neg
- beq .Lulpreincn
- fail
-.Lulpreincn:
-;;; Note: leave the value as 0x00008000, so that extu has work to do.
-
-exts_l_predec_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l @-ern32
- mov.l #pos+4, er1
- exts.l @-er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 pos er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000001, @pos
- beq .Lslpredecp
- fail
-.Lslpredecp:
- mov.l #0xffff0001, @pos ; Restore initial value
-
-exts_l_predec_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l @-ern32
- mov.l #neg+4, er1
- exts.l @-er1
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 neg er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0xffff8000, @neg
- beq .Lslpredecn
- fail
-.Lslpredecn:
-;;; Note: leave the value as 0xffff8000, so that extu has work to do.
-
-extu_l_predec_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l @-ern32
- mov.l #neg+4, er1
- extu.l @-er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00008000, @neg
- beq .Lulpredecn
- fail
-.Lulpredecn:
-;;; Note: leave the value as 0x00008000, so that extu has work to do.
-
-extu_l_disp2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l @(dd:2, ern32)
- mov.l #neg-2, er1
- extu.l @(2:2, er1)
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg-2 er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00008000, @neg
- beq .Luldisp2n
- fail
-.Luldisp2n:
-;;; Note: leave the value as 0x00008000, so that extu has work to do.
-
-extu_l_disp16_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l @(dd:16, ern32)
- mov.l #neg-44, er1
- extu.l @(44:16, er1)
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg-44 er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00008000, @neg
- beq .Luldisp16n
- fail
-.Luldisp16n:
-;;; Note: leave the value as 0x00008000, so that extu has work to do.
-
-extu_l_disp32_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l @(dd:32, ern32)
- mov.l #neg+444, er1
- extu.l @(-444:32, er1)
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg+444 er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00008000, @neg
- beq .Luldisp32n
- fail
-.Luldisp32n:
-;;; Note: leave the value as 0x00008000, so that extu has work to do.
-
-extu_l_abs16_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l @aa:16
- extu.l @neg:16
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00008000, @neg
- beq .Lulabs16n
- fail
-.Lulabs16n:
-;;; Note: leave the value as 0x00008000, so that extu has work to do.
-
-extu_l_abs32_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l @aa:32
- extu.l @neg:32
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00008000, @neg
- beq .Lulabs32n
- fail
-.Lulabs32n:
-;;; Note: leave the value as 0x00008000, so that extu has work to do.
-
-
-
- #
- # exts #2, nn
- #
-
-exts_l_reg32_2_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l #2, ern32
- mov.b #1, r0l
- exts.l #2, er0
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 0x00000001 er0 ; result of sign extend
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-exts_l_reg32_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l #2, ern32
- mov.b #0xff, r0l
- exts.l #2, er0
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_ovf_clear
- test_zero_clear
- test_carry_clear
-
- test_h_gr32 0xffffffff er0 ; result of sign extend
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-extu_l_reg32_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l #2, ern32
- mov.b #0xff, r0l
- extu.l #2, er0
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 0x000000ff er0 ; result of zero extend
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-exts_l_ind_2_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l #2, @ern32
- mov.l #pos2, er1
- exts.l #2, @er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 pos2 er1 ; result of sign extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000001, @pos2
- beq .Lslindp2
- fail
-.Lslindp2:
- mov.l #0xffffff01, @pos2 ; Restore initial value
-
-exts_l_ind_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l #2, @ern32
- mov.l #neg2, er1
- exts.l #2, @er1
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_ovf_clear
- test_zero_clear
- test_carry_clear
-
- test_h_gr32 neg2 er1 ; result of sign extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0xffffff80, @neg2
- beq .Lslindn2
- fail
-.Lslindn2:
-;;; Note: leave the value as 0xffffff80, so that extu has work to do.
-
-extu_l_ind_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l #2, @ern32
- mov.l #neg2, er1
- extu.l #2, @er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg2 er1 ; result of zero extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000080, @neg2
- beq .Lulindn2
- fail
-.Lulindn2:
-;;; Note: leave the value as 0x00000080, like it started out.
-
-exts_l_postinc_2_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l #2, @ern32+
- mov.l #pos2, er1
- exts.l #2, @er1+
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 pos2+4 er1 ; result of sign extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000001, @pos2
- beq .Lslpostincp2
- fail
-.Lslpostincp2:
- mov.l #0xffffff01, @pos2 ; Restore initial value
-
-exts_l_postinc_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l #2, @ern32+
- mov.l #neg2, er1
- exts.l #2, @er1+
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_ovf_clear
- test_zero_clear
- test_carry_clear
-
- test_h_gr32 neg2+4 er1 ; result of sign extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0xffffff80, @neg2
- beq .Lslpostincn2
- fail
-.Lslpostincn2:
-;;; Note: leave the value as 0xffffff80, so that extu has work to do.
-
-extu_l_postinc_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l #2, @ern32+
- mov.l #neg2, er1
- extu.l #2, @er1+
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg2+4 er1 ; result of zero extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000080, @neg2
- beq .Lulpostincn2
- fail
-.Lulpostincn2:
-;;; Note: leave the value as 0x00000080, like it started out.
-
-exts_l_postdec_2_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l #2, @ern32-
- mov.l #pos2, er1
- exts.l #2, @er1-
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 pos2-4 er1 ; result of sign extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000001, @pos2
- beq .Lslpostdecp2
- fail
-.Lslpostdecp2:
- mov.l #0xffffff01, @pos2 ; Restore initial value
-
-exts_l_postdec_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l #2, @ern32-
- mov.l #neg2, er1
- exts.l #2, @er1-
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_ovf_clear
- test_zero_clear
- test_carry_clear
-
- test_h_gr32 neg2-4 er1 ; result of sign extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0xffffff80, @neg2
- beq .Lslpostdecn2
- fail
-.Lslpostdecn2:
-;;; Note: leave the value as 0xffffff80, so that extu has work to do.
-
-extu_l_postdec_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l #2, @ern32-
- mov.l #neg2, er1
- extu.l #2, @er1-
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg2-4 er1 ; result of zero extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000080, @neg2
- beq .Lulpostdecn2
- fail
-.Lulpostdecn2:
-;;; Note: leave the value as 0x00000080, like it started out.
-
-exts_l_preinc_2_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l #2, @+ern32
- mov.l #pos2-4, er1
- exts.l #2, @+er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 pos2 er1 ; result of sign extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000001, @pos2
- beq .Lslpreincp2
- fail
-.Lslpreincp2:
- mov.l #0xffffff01, @pos2 ; Restore initial value
-
-exts_l_preinc_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l #2, @+ern32
- mov.l #neg2-4, er1
- exts.l #2, @+er1
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_ovf_clear
- test_zero_clear
- test_carry_clear
-
- test_h_gr32 neg2 er1 ; result of sign extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0xffffff80, @neg2
- beq .Lslpreincn2
- fail
-.Lslpreincn2:
-;;; Note: leave the value as 0xffffff80, so that extu has work to do.
-
-extu_l_preinc_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l #2, @+ern32
- mov.l #neg2-4, er1
- extu.l #2, @+er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg2 er1 ; result of zero extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000080, @neg2
- beq .Lulpreincn2
- fail
-.Lulpreincn2:
-;;; Note: leave the value as 0x00000080, like it started out.
-
-exts_l_predec_2_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l #2, @-ern32
- mov.l #pos2+4, er1
- exts.l #2, @-er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 pos2 er1 ; result of sign extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000001, @pos2
- beq .Lslpredecp2
- fail
-.Lslpredecp2:
- mov.l #0xffffff01, @pos2 ; Restore initial value
-
-exts_l_predec_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.l #2, @-ern32
- mov.l #neg2+4, er1
- exts.l #2, @-er1
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_ovf_clear
- test_zero_clear
- test_carry_clear
-
- test_h_gr32 neg2 er1 ; result of sign extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0xffffff80, @neg2
- beq .Lslpredecn2
- fail
-.Lslpredecn2:
-;;; Note: leave the value as 0xffffff80, so that extu has work to do.
-
-extu_l_predec_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l #2, @-ern32
- mov.l #neg2+4, er1
- extu.l #2, @-er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg2 er1 ; result of zero extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000080, @neg2
- beq .Lulpredecn2
- fail
-.Lulpredecn2:
-;;; Note: leave the value as 0x00000080, like it started out.
-
-extu_l_disp2_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l #2, @(dd:2, ern32)
- mov.l #neg2-2, er1
- extu.l #2, @(2:2, er1)
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg2-2 er1 ; result of zero extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000080, @neg2
- beq .Luldisp2n2
- fail
-.Luldisp2n2:
-;;; Note: leave the value as 0x00000080, like it started out.
-
-extu_l_disp16_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l #2, @(dd:16, ern32)
- mov.l #neg2-44, er1
- extu.l #2, @(44:16, er1)
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg2-44 er1 ; result of zero extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000080, @neg2
- beq .Luldisp16n2
- fail
-.Luldisp16n2:
-;;; Note: leave the value as 0x00000080, like it started out.
-
-extu_l_disp32_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l #2, @(dd:32, ern32)
- mov.l #neg2+444, er1
- extu.l #2, @(-444:32, er1)
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg2+444 er1 ; result of zero extend
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000080, @neg2
- beq .Luldisp32n2
- fail
-.Luldisp32n2:
-;;; Note: leave the value as 0x00000080, like it started out.
-
-extu_l_abs16_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l #2, @aa:16
- extu.l #2, @neg2:16
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000080, @neg2
- beq .Lulabs16n2
- fail
-.Lulabs16n2:
-;;; Note: leave the value as 0x00000080, like it started out.
-
-extu_l_abs32_2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.l #2, @aa:32
- extu.l #2, @neg2:32
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.l #0x00000080, @neg2
- beq .Lulabs32n2
- fail
-.Lulabs32n2:
-;;; Note: leave the value as 0x00000080, like it started out.
-
-.endif
-
- pass
-
- exit 0
-
-
-
-
diff --git a/sim/testsuite/sim/h8300/ext.w.s b/sim/testsuite/sim/h8300/ext.w.s
deleted file mode 100644
index 417dd0c..0000000
--- a/sim/testsuite/sim/h8300/ext.w.s
+++ /dev/null
@@ -1,580 +0,0 @@
-# Hitachi H8 testcase 'exts.w, extu.w'
-# mach(): h8300h h8300s h8sx
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
- .data
- .align 2
-pos: .word 0xff01
-neg: .word 0x0080
-
- .text
-
-exts_w_reg16_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.w rn16
- mov.b #1, r0l
- exts.w r0
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 0xa5a50001 er0 ; result of sign extend
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-exts_w_reg16_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.w rn16
- mov.b #0xff, r0l
- exts.w r0
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a5ffff er0 ; result of sign extend
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-extu_w_reg16_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.w rn16
- mov.b #0xff, r0l
- extu.w r0
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 0xa5a500ff er0 ; result of zero extend
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-exts_w_ind_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.w @ern
- mov.l #pos, er1
- exts.w @er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 pos er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0x0001, @pos
- beq .Lswindp
- fail
-.Lswindp:
- mov.w #0xff01, @pos ; Restore initial value
-
-exts_w_ind_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.w @ern
- mov.l #neg, er1
- exts.w @er1
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 neg er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0xff80, @neg
- beq .Lswindn
- fail
-.Lswindn:
- ;; Note: leave the value as 0xff80, so that extu has work to do.
-
-extu_w_ind_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.w @ern
- mov.l #neg, er1
- extu.w @er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0x0080, @neg
- beq .Luwindn
- fail
-.Luwindn:
- ;; Note: leave the value as 0x0080, like it started out.
-
-exts_w_postinc_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.w @ern+
- mov.l #pos, er1
- exts.w @er1+
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 pos+2 er1 ; er1 still contains target address plus 2
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0x0001, @pos
- beq .Lswpostincp
- fail
-.Lswpostincp:
- mov.w #0xff01, @pos ; Restore initial value
-
-exts_w_postinc_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.w @ern+
- mov.l #neg, er1
- exts.w @er1+
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 neg+2 er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0xff80, @neg
- beq .Lswpostincn
- fail
-.Lswpostincn:
- ;; Note: leave the value as 0xff80, so that extu has work to do.
-
-extu_w_postinc_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.w @ern+
- mov.l #neg, er1
- extu.w @er1+
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg+2 er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0x0080, @neg
- beq .Luwpostincn
- fail
-.Luwpostincn:
- ;; Note: leave the value as 0x0080, like it started out.
-
-exts_w_postdec_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.w @ern-
- mov.l #pos, er1
- exts.w @er1-
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 pos-2 er1 ; er1 still contains target address plus 2
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0x0001, @pos
- beq .Lswpostdecp
- fail
-.Lswpostdecp:
- mov.w #0xff01, @pos ; Restore initial value
-
-exts_w_postdec_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.w @ern-
- mov.l #neg, er1
- exts.w @er1-
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 neg-2 er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0xff80, @neg
- beq .Lswpostdecn
- fail
-.Lswpostdecn:
- ;; Note: leave the value as 0xff80, so that extu has work to do.
-
-extu_w_postdec_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.w @ern-
- mov.l #neg, er1
- extu.w @er1-
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg-2 er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0x0080, @neg
- beq .Luwpostdecn
- fail
-.Luwpostdecn:
- ;; Note: leave the value as 0x0080, like it started out.
-
-exts_w_preinc_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.w @+ern
- mov.l #pos-2, er1
- exts.w @+er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 pos er1 ; er1 still contains target address plus 2
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0x0001, @pos
- beq .Lswpreincp
- fail
-.Lswpreincp:
- mov.w #0xff01, @pos ; Restore initial value
-
-exts_w_preinc_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.w @+ern
- mov.l #neg-2, er1
- exts.w @+er1
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 neg er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0xff80, @neg
- beq .Lswpreincn
- fail
-.Lswpreincn:
- ;; Note: leave the value as 0xff80, so that extu has work to do.
-
-extu_w_preinc_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.w @+ern
- mov.l #neg-2, er1
- extu.w @+er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0x0080, @neg
- beq .Luwpreincn
- fail
-.Luwpreincn:
- ;; Note: leave the value as 0x0080, like it started out.
-
-exts_w_predec_p:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.w @-ern
- mov.l #pos+2, er1
- exts.w @-er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 pos er1 ; er1 still contains target address plus 2
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0x0001, @pos
- beq .Lswpredecp
- fail
-.Lswpredecp:
- mov.w #0xff01, @pos ; Restore initial value
-
-exts_w_predec_n:
- set_grs_a5a5
- set_ccr_zero
- ;; exts.w @-ern
- mov.l #neg+2, er1
- exts.w @-er1
-
- ;; Test ccr H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 neg er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0xff80, @neg
- beq .Lswpredecn
- fail
-.Lswpredecn:
- ;; Note: leave the value as 0xff80, so that extu has work to do.
-
-extu_w_predec_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.w @-ern
- mov.l #neg+2, er1
- extu.w @-er1
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0x0080, @neg
- beq .Luwpredecn
- fail
-.Luwpredecn:
- ;; Note: leave the value as 0x0080, like it started out.
-
-extu_w_disp2_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.w @(dd:2, ern)
- mov.l #neg-1, er1
- extu.w @(1:2, er1)
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg-1 er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0x0080, @neg
- beq .Luwdisp2n
- fail
-.Luwdisp2n:
- ;; Note: leave the value as 0x0080, like it started out.
-
-extu_w_disp16_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.w @(dd:16, ern)
- mov.l #neg-44, er1
- extu.w @(44:16, er1)
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg-44 er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0x0080, @neg
- beq .Luwdisp16n
- fail
-.Luwdisp16n:
- ;; Note: leave the value as 0x0080, like it started out.
-
-extu_w_disp32_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.w @(dd:32, ern)
- mov.l #neg+444, er1
- extu.w @(-444:32, er1)
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_h_gr32 neg+444 er1 ; er1 still contains target address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0x0080, @neg
- beq .Luwdisp32n
- fail
-.Luwdisp32n:
- ;; Note: leave the value as 0x0080, like it started out.
-
-extu_w_abs16_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.w @aa:16
- extu.w @neg:16
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0x0080, @neg
- beq .Luwabs16n
- fail
-.Luwabs16n:
- ;; Note: leave the value as 0x0080, like it started out.
-
-extu_w_abs32_n:
- set_grs_a5a5
- set_ccr_zero
- ;; extu.w @aa:32
- extu.w @neg:32
-
- ;; Test ccr H=0 N=0 Z=0 V=0 C=0
- test_cc_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- cmp.w #0x0080, @neg
- beq .Luwabs32n
- fail
-.Luwabs32n:
- ;; Note: leave the value as 0x0080, like it started out.
-
-.endif
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/inc.s b/sim/testsuite/sim/h8300/inc.s
deleted file mode 100644
index 69d2c3b..0000000
--- a/sim/testsuite/sim/h8300/inc.s
+++ /dev/null
@@ -1,117 +0,0 @@
-# Hitachi H8 testcase 'inc, inc.w, inc.l'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
-inc_b:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; inc.b Rd
- inc.b r0h ; Increment 8-bit reg by one
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa6a5 r0 ; inc result: a6|a5
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a6a5 er0 ; inc result: a5|a5|a6|a5
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
-inc_w_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; inc.w #1, Rd
- inc.w #1, r0 ; Increment 16-bit reg by one
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa5a6 r0 ; inc result: a5|a6
-
- test_h_gr32 0xa5a5a5a6 er0 ; inc result: a5|a5|a5|a6
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-inc_w_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; inc.w #2, Rd
- inc.w #2, r0 ; Increment 16-bit reg by two
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa5a7 r0 ; inc result: a5|a7
-
- test_h_gr32 0xa5a5a5a7 er0 ; inc result: a5|a5|a5|a7
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-inc_l_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; inc.l #1, eRd
- inc.l #1, er0 ; Increment 32-bit reg by one
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr32 0xa5a5a5a6 er0 ; inc result: a5|a5|a5|a6
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-inc_l_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; inc.l #2, eRd
- inc.l #2, er0 ; Increment 32-bit reg by two
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr32 0xa5a5a5a7 er0 ; inc result: a5|a5|a5|a7
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/jmp.s b/sim/testsuite/sim/h8300/jmp.s
deleted file mode 100644
index 805bafe..0000000
--- a/sim/testsuite/sim/h8300/jmp.s
+++ /dev/null
@@ -1,103 +0,0 @@
-# Hitachi H8 testcase 'jmp'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
-.if 0 ; this one isn't right -- it's an indirect
-jmp_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; jmp @aa:8 ; 8-bit displacement
- jmp @@.Ltgt_8:8
- fail
-
-.Ltgt_8:
- test_cc_clear
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-jmp_24:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; jmp @aa:24 ; 24-bit address
- jmp @.Ltgt_24:24
- fail
-
-.Ltgt_24:
- test_cc_clear
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu) ; Non-zero means h8300h, h8300s, or h8sx
-jmp_reg:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; jmp @ern ; register indirect
- mov.l #.Ltgt_reg, er5
- jmp @er5
- fail
-
-.Ltgt_reg:
- test_cc_clear
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_h_gr32 .Ltgt_reg er5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-.if (sim_cpu == h8sx)
-jmp_32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; jmp @aa:32 ; 32-bit address
-; jmp @.Ltgt_32:32 ; NOTE: hard-coded to avoid relaxing
- .word 0x5908
- .long .Ltgt_32
- fail
-
-.Ltgt_32:
- test_cc_clear
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
- pass
- exit 0
-
-
\ No newline at end of file
diff --git a/sim/testsuite/sim/h8300/ldc.s b/sim/testsuite/sim/h8300/ldc.s
deleted file mode 100644
index 4e9765a..0000000
--- a/sim/testsuite/sim/h8300/ldc.s
+++ /dev/null
@@ -1,375 +0,0 @@
-# Hitachi H8 testcase 'ldc'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
- .data
-byte_pre:
- .byte 0
-byte_src:
- .byte 0xff
-byte_post:
- .byte 0
-
- start
-
-ldc_imm8_ccr:
- set_grs_a5a5
- set_ccr_zero
-
- ldc #0xff, ccr ; set all ccr flags high, immediate operand
- bcs .L1 ; carry flag set?
- fail
-.L1: bvs .L2 ; overflow flag set?
- fail
-.L2: beq .L3 ; zero flag set?
- fail
-.L3: bmi .L4 ; neg flag set?
- fail
-.L4:
- ldc #0, ccr ; set all ccr flags low, immediate operand
- bcc .L5 ; carry flag clear?
- fail
-.L5: bvc .L6 ; overflow flag clear?
- fail
-.L6: bne .L7 ; zero flag clear?
- fail
-.L7: bpl .L8 ; neg flag clear?
- fail
-.L8:
- test_cc_clear
- test_grs_a5a5
-
-ldc_reg8_ccr:
- set_grs_a5a5
- set_ccr_zero
-
- mov #0xff, r0h
- ldc r0h, ccr ; set all ccr flags high, reg operand
- bcs .L11 ; carry flag set?
- fail
-.L11: bvs .L12 ; overflow flag set?
- fail
-.L12: beq .L13 ; zero flag set?
- fail
-.L13: bmi .L14 ; neg flag set?
- fail
-.L14:
- mov #0, r0h
- ldc r0h, ccr ; set all ccr flags low, reg operand
- bcc .L15 ; carry flag clear?
- fail
-.L15: bvc .L16 ; overflow flag clear?
- fail
-.L16: bne .L17 ; zero flag clear?
- fail
-.L17: bpl .L18 ; neg flag clear?
- fail
-.L18:
- test_cc_clear
- test_h_gr16 0x00a5 r0 ; Register 0 modified by test procedure.
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8300s || sim_cpu == h8sx) ; Earlier versions, no exr
-ldc_imm8_exr:
- set_grs_a5a5
- set_ccr_zero
-
- ldc #0, exr
- ldc #0x87, exr ; set exr to 0x87
-
- stc exr, r0l ; retrieve and check exr value
- cmp.b #0x87, r0l
- beq .L19
- fail
-.L19:
- test_h_gr16 0xa587 r0 ; Register 0 modified by test procedure.
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-ldc_reg8_exr:
- set_grs_a5a5
- set_ccr_zero
-
- ldc #0, exr
- mov #0x87, r0h
- ldc r0h, exr ; set exr to 0x87
-
- stc exr, r0l ; retrieve and check exr value
- cmp.b #0x87, r0l
- beq .L21
- fail
-.L21:
- test_h_gr16 0x8787 r0 ; Register 0 modified by test procedure.
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-ldc_abs16_ccr:
- set_grs_a5a5
- set_ccr_zero
-
- ldc @byte_src:16, ccr ; abs16 src
- stc ccr, r0l ; copy into general reg
-
- test_h_gr32 0xa5a5a5ff er0 ; ff in r0l, a5 elsewhere.
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-ldc_abs16_exr:
- set_grs_a5a5
- set_ccr_zero
-
- ldc #0, exr
- ldc @byte_src:16, exr ; abs16 src
- stc exr, r0l ; copy into general reg
-
- test_h_gr32 0xa5a5a587 er0 ; 87 in r0l, a5 elsewhere.
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-ldc_abs32_ccr:
- set_grs_a5a5
- set_ccr_zero
-
- ldc @byte_src:32, ccr ; abs32 src
- stc ccr, r0l ; copy into general reg
-
- test_h_gr32 0xa5a5a5ff er0 ; ff in r0l, a5 elsewhere.
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-ldc_abs32_exr:
- set_grs_a5a5
- set_ccr_zero
-
- ldc #0, exr
- ldc @byte_src:32, exr ; abs32 src
- stc exr, r0l ; copy into general reg
-
- test_h_gr32 0xa5a5a587 er0 ; 87 in r0l, a5 elsewhere.
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-ldc_disp16_ccr:
- set_grs_a5a5
- set_ccr_zero
-
- mov #byte_pre, er1
- ldc @(1:16, er1), ccr ; disp16 src
- stc ccr, r0l ; copy into general reg
-
- test_h_gr32 0xa5a5a5ff er0 ; ff in r0l, a5 elsewhere.
- test_h_gr32 byte_pre, er1 ; er1 still contains address
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-ldc_disp16_exr:
- set_grs_a5a5
- set_ccr_zero
-
- ldc #0, exr
- mov #byte_post, er1
- ldc @(-1:16, er1), exr ; disp16 src
- stc exr, r0l ; copy into general reg
-
- test_h_gr32 0xa5a5a587 er0 ; 87 in r0l, a5 elsewhere.
- test_h_gr32 byte_post, er1 ; er1 still contains address
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-ldc_disp32_ccr:
- set_grs_a5a5
- set_ccr_zero
-
- mov #byte_pre, er1
- ldc @(1:32, er1), ccr ; disp32 src
- stc ccr, r0l ; copy into general reg
-
- test_h_gr32 0xa5a5a5ff er0 ; ff in r0l, a5 elsewhere.
- test_h_gr32 byte_pre, er1 ; er1 still contains address
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-ldc_disp32_exr:
- set_grs_a5a5
- set_ccr_zero
-
- ldc #0, exr
- mov #byte_post, er1
- ldc @(-1:32, er1), exr ; disp16 src
- stc exr, r0l ; copy into general reg
-
- test_h_gr32 0xa5a5a587 er0 ; 87 in r0l, a5 elsewhere.
- test_h_gr32 byte_post, er1 ; er1 still contains address
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-ldc_postinc_ccr:
- set_grs_a5a5
- set_ccr_zero
-
- mov #byte_src, er1
- ldc @er1+, ccr ; postinc src
- stc ccr, r0l ; copy into general reg
-
- test_h_gr32 0xa5a5a5ff er0 ; ff in r0l, a5 elsewhere.
- test_h_gr32 byte_post, er1 ; er1 still contains address
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-ldc_postinc_exr:
- set_grs_a5a5
- set_ccr_zero
-
- ldc #0, exr
- mov #byte_src, er1
- ldc @er1+, exr ; postinc src
- stc exr, r0l ; copy into general reg
-
- test_h_gr32 0xa5a5a587 er0 ; 87 in r0l, a5 elsewhere.
- test_h_gr32 byte_post, er1 ; er1 still contains address
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-ldc_ind_ccr:
- set_grs_a5a5
- set_ccr_zero
-
- mov #byte_src, er1
- ldc @er1, ccr ; postinc src
- stc ccr, r0l ; copy into general reg
-
- test_h_gr32 0xa5a5a5ff er0 ; ff in r0l, a5 elsewhere.
- test_h_gr32 byte_src, er1 ; er1 still contains address
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-ldc_ind_exr:
- set_grs_a5a5
- set_ccr_zero
-
- ldc #0, exr
- mov #byte_src, er1
- ldc @er1, exr ; postinc src
- stc exr, r0l ; copy into general reg
-
- test_h_gr32 0xa5a5a587 er0 ; 87 in r0l, a5 elsewhere.
- test_h_gr32 byte_src, er1 ; er1 still contains address
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.endif
-
-.if (sim_cpu == h8sx) ; New vbr and sbr registers for h8sx
-ldc_reg_sbr:
- set_grs_a5a5
- set_ccr_zero
-
- mov #0xaaaaaaaa, er0
- ldc er0, sbr ; set sbr to 0xaaaaaaaa
- stc sbr, er1 ; retreive and check sbr value
-
- test_h_gr32 0xaaaaaaaa er1
- test_h_gr32 0xaaaaaaaa er0 ; Register 0 modified by test procedure.
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-ldc_reg_vbr:
- set_grs_a5a5
- set_ccr_zero
-
- mov #0xaaaaaaaa, er0
- ldc er0, vbr ; set sbr to 0xaaaaaaaa
- stc vbr, er1 ; retreive and check sbr value
-
- test_h_gr32 0xaaaaaaaa er1
- test_h_gr32 0xaaaaaaaa er0 ; Register 0 modified by test procedure.
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.endif
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/mac.s b/sim/testsuite/sim/h8300/mac.s
deleted file mode 100644
index 0388b98..0000000
--- a/sim/testsuite/sim/h8300/mac.s
+++ /dev/null
@@ -1,263 +0,0 @@
-# Hitachi H8 testcase 'mac'
-# mach(): h8300h h8300s h8sx
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- .data
-src1: .word 0
-src2: .word 0
-
-array: .word 0x7fff
- .word 0x7fff
- .word 0x7fff
- .word 0x7fff
- .word 0x7fff
- .word 0x7fff
- .word 0x7fff
- .word 0x7fff
- .word 0x7fff
- .word 0x7fff
- .word 0x7fff
- .word 0x7fff
- .word 0x7fff
- .word 0x7fff
- .word 0x7fff
- .word 0x7fff
-
- start
-
-.if (sim_cpu)
-_clrmac:
- set_grs_a5a5
- set_ccr_zero
- clrmac
- test_cc_clear
- test_grs_a5a5
- ;; Now see if the mac is actually clear...
- stmac mach, er0
- test_zero_set
- test_neg_clear
- test_ovf_clear
- test_h_gr32 0 er0
- stmac macl, er1
- test_zero_set
- test_neg_clear
- test_ovf_clear
- test_h_gr32 0 er1
-
-ld_stmac:
- set_grs_a5a5
- sub.l er2, er2
- set_ccr_zero
- ldmac er1, macl
- stmac macl, er2
- test_ovf_clear
- test_carry_clear
- ;; neg and zero are undefined
- test_h_gr32 0xa5a5a5a5 er2
-
- sub.l er2, er2
- set_ccr_zero
- ldmac er1, mach
- stmac mach, er2
- test_ovf_clear
- test_carry_clear
- ;; neg and zero are undefined
- test_h_gr32 0x0001a5 er2
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mac_2x2:
- set_grs_a5a5
- mov.w #2, r1
- mov.w r1, @src1
- mov.w #2, r2
- mov.w r2, @src2
- mov #src1, er1
- mov #src2, er2
- set_ccr_zero
- clrmac
- mac @er1+, @er2+
- test_cc_clear
-
- test_h_gr32 0xa5a5a5a5 er0
- test_h_gr32 src1+2 er1
- test_h_gr32 src2+2 er2
- test_h_gr32 0xa5a5a5a5 er3
- test_h_gr32 0xa5a5a5a5 er4
- test_h_gr32 0xa5a5a5a5 er5
- test_h_gr32 0xa5a5a5a5 er6
- test_h_gr32 0xa5a5a5a5 er7
-
- stmac macl, er0
- test_zero_clear
- test_neg_clear
- test_ovf_clear
- test_h_gr32 4 er0
-
- stmac mach, er0
- test_zero_clear
- test_neg_clear
- test_ovf_clear
- test_h_gr32 0 er0
-
-mac_same_reg_2x4:
- ;; Use same reg for src and dst. Should be incremented twice,
- ;; and fetch values from consecutive locations.
- set_grs_a5a5
- mov.w #2, r1
- mov.w r1, @src1
- mov.w #4, r2
- mov.w r2, @src2
- mov #src1, er1
-
- set_ccr_zero
- clrmac
- mac @er1+, @er1+ ; same register for src and dst
- test_cc_clear
-
- test_h_gr32 0xa5a5a5a5 er0
- test_h_gr32 src1+4 er1
- test_h_gr32 0xa5a50004 er2
- test_h_gr32 0xa5a5a5a5 er3
- test_h_gr32 0xa5a5a5a5 er4
- test_h_gr32 0xa5a5a5a5 er5
- test_h_gr32 0xa5a5a5a5 er6
- test_h_gr32 0xa5a5a5a5 er7
-
- stmac macl, er0
- test_zero_clear
- test_neg_clear
- test_ovf_clear
- test_h_gr32 8 er0
-
- stmac mach, er0
- test_zero_clear
- test_neg_clear
- test_ovf_clear
- test_h_gr32 0 er0
-
-mac_0x0:
- set_grs_a5a5
- mov.w #0, r1
- mov.w r1, @src1
- mov.w #0, r2
- mov.w r2, @src2
- mov #src1, er1
- mov #src2, er2
- set_ccr_zero
- clrmac
- mac @er1+, @er2+
- test_cc_clear
-
- test_h_gr32 0xa5a5a5a5 er0
- test_h_gr32 src1+2 er1
- test_h_gr32 src2+2 er2
- test_h_gr32 0xa5a5a5a5 er3
- test_h_gr32 0xa5a5a5a5 er4
- test_h_gr32 0xa5a5a5a5 er5
- test_h_gr32 0xa5a5a5a5 er6
- test_h_gr32 0xa5a5a5a5 er7
-
- stmac macl, er0
- test_zero_set ; zero flag is set
- test_neg_clear
- test_ovf_clear
- test_h_gr32 0 er0 ; result is zero
-
- stmac mach, er0
- test_zero_set
- test_neg_clear
- test_ovf_clear
- test_h_gr32 0 er0
-
-mac_neg2x2:
- set_grs_a5a5
- mov.w #-2, r1
- mov.w r1, @src1
- mov.w #2, r2
- mov.w r2, @src2
- mov #src1, er1
- mov #src2, er2
- set_ccr_zero
- clrmac
- mac @er1+, @er2+
- test_cc_clear
-
- test_h_gr32 0xa5a5a5a5 er0
- test_h_gr32 src1+2 er1
- test_h_gr32 src2+2 er2
- test_h_gr32 0xa5a5a5a5 er3
- test_h_gr32 0xa5a5a5a5 er4
- test_h_gr32 0xa5a5a5a5 er5
- test_h_gr32 0xa5a5a5a5 er6
- test_h_gr32 0xa5a5a5a5 er7
-
- stmac macl, er0
- test_zero_clear
- test_neg_set ; neg flag is set
- test_ovf_clear
- test_h_gr32 -4 er0 ; result is negative
-
- stmac mach, er0
- test_zero_clear
- test_neg_set
- test_ovf_clear
- test_h_gr32 -1 er0 ; negative sign extend
-
-mac_array:
- ;; Use same reg for src and dst, pointing to an array of shorts
- set_grs_a5a5
- mov #array, er1
-
- set_ccr_zero
- clrmac
- mac @er1+, @er1+ ; same register for src and dst
- mac @er1+, @er1+ ; repeat 8 times
- mac @er1+, @er1+
- mac @er1+, @er1+
- mac @er1+, @er1+
- mac @er1+, @er1+
- mac @er1+, @er1+
- mac @er1+, @er1+
- test_cc_clear
-
- test_h_gr32 0xa5a5a5a5 er0
- test_h_gr32 array+32 er1
- test_h_gr32 0xa5a5a5a5 er2
- test_h_gr32 0xa5a5a5a5 er3
- test_h_gr32 0xa5a5a5a5 er4
- test_h_gr32 0xa5a5a5a5 er5
- test_h_gr32 0xa5a5a5a5 er6
- test_h_gr32 0xa5a5a5a5 er7
-
- stmac macl, er0
- test_zero_clear
- test_neg_clear
- test_ovf_clear
- test_h_gr32 0xfff80008 er0
-
- stmac mach, er0
- test_zero_clear
- test_neg_clear
- test_ovf_clear
- test_h_gr32 1 er0 ; result is greater than 32 bits
-
-.endif
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/mov.b.s b/sim/testsuite/sim/h8300/mov.b.s
deleted file mode 100644
index 0c27aa3..0000000
--- a/sim/testsuite/sim/h8300/mov.b.s
+++ /dev/null
@@ -1,1495 +0,0 @@
-# Hitachi H8 testcase 'mov.w'
-# mach(): h8300h h8300s h8sx
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
- .data
- .align 4
-byte_src:
- .byte 0x77
-byte_dst:
- .byte 0
-
- .text
-
- ;;
- ;; Move byte from immediate source
- ;;
-
-.if (sim_cpu == h8sx)
-mov_b_imm8_to_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b #xx:8, rd
- mov.b #0x77:8, r0l ; Immediate 3-bit operand
-;;; .word 0xf877
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a5a577 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-.if (sim_cpu == h8sx)
-mov_b_imm4_to_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b #xx:4, @aa:16
- mov.b #0xf:4, @byte_dst:16 ; 16-bit address-direct operand
-;;; .word 0x6adf
-;;; .word @byte_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b #0xf, @byte_dst
- beq .Lnext21
- fail
-.Lnext21:
- mov.b #0, @byte_dst ; zero it again for the next use.
-
-mov_b_imm4_to_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b #xx:4, @aa:32
- mov.b #0xf:4, @byte_dst:32 ; 32-bit address-direct operand
-;;; .word 0x6aff
-;;; .long @byte_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b #0xf, @byte_dst
- beq .Lnext22
- fail
-.Lnext22:
- mov.b #0, @byte_dst ; zero it again for the next use.
-
-mov_b_imm8_to_indirect:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b #xx:8, @erd
- mov.l #byte_dst, er1
- mov.b #0xa5:8, @er1 ; Register indirect operand
-;;; .word 0x017d
-;;; .word 0x01a5
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 byte_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b #0xa5, @byte_dst
- beq .Lnext1
- fail
-.Lnext1:
- mov.b #0, @byte_dst ; zero it again for the next use.
-
-mov_b_imm8_to_postinc: ; post-increment from imm8 to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b #xx:8, @erd+
- mov.l #byte_dst, er1
- mov.b #0xa5:8, @er1+ ; Imm8, register post-incr operands.
-;;; .word 0x017d
-;;; .word 0x81a5
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 byte_dst+1, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b #0xa5, @byte_dst
- beq .Lnext2
- fail
-.Lnext2:
- mov.b #0, @byte_dst ; zero it again for the next use.
-
-mov_b_imm8_to_postdec: ; post-decrement from imm8 to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b #xx:8, @erd-
- mov.l #byte_dst, er1
- mov.b #0xa5:8, @er1- ; Imm8, register post-decr operands.
-;;; .word 0x017d
-;;; .word 0xa1a5
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 byte_dst-1, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b #0xa5, @byte_dst
- beq .Lnext3
- fail
-.Lnext3:
- mov.b #0, @byte_dst ; zero it again for the next use.
-
-mov_b_imm8_to_preinc: ; pre-increment from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b #xx:8, @+erd
- mov.l #byte_dst-1, er1
- mov.b #0xa5:8, @+er1 ; Imm8, register pre-incr operands
-;;; .word 0x017d
-;;; .word 0x91a5
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 byte_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b #0xa5, @byte_dst
- beq .Lnext4
- fail
-.Lnext4:
- mov.b #0, @byte_dst ; zero it again for the next use.
-
-mov_b_imm8_to_predec: ; pre-decrement from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b #xx:8, @-erd
- mov.l #byte_dst+1, er1
- mov.b #0xa5:8, @-er1 ; Imm8, register pre-decr operands
-;;; .word 0x017d
-;;; .word 0xb1a5
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 byte_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b #0xa5, @byte_dst
- beq .Lnext5
- fail
-.Lnext5:
- mov.b #0, @byte_dst ; zero it again for the next use.
-
-mov_b_imm8_to_disp2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b #xx:8, @(dd:2, erd)
- mov.l #byte_dst-3, er1
- mov.b #0xa5:8, @(3:2, er1) ; Imm8, reg plus 2-bit disp. operand
-;;; .word 0x017d
-;;; .word 0x31a5
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 byte_dst-3, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b #0xa5, @byte_dst
- beq .Lnext6
- fail
-.Lnext6:
- mov.b #0, @byte_dst ; zero it again for the next use.
-
-mov_b_imm8_to_disp16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b #xx:8, @(dd:16, erd)
- mov.l #byte_dst-4, er1
- mov.b #0xa5:8, @(4:16, er1) ; Register plus 16-bit disp. operand
-;;; .word 0x017d
-;;; .word 0x6f90
-;;; .word 0x0004
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 byte_dst-4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b #0xa5, @byte_dst
- beq .Lnext7
- fail
-.Lnext7:
- mov.b #0, @byte_dst ; zero it again for the next use.
-
-mov_b_imm8_to_disp32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b #xx:8, @(dd:32, erd)
- mov.l #byte_dst-8, er1
- mov.b #0xa5:8, @(8:32, er1) ; Register plus 32-bit disp. operand
-;;; .word 0x017d
-;;; .word 0xc9a5
-;;; .long 8
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 byte_dst-8, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b #0xa5, @byte_dst
- beq .Lnext8
- fail
-.Lnext8:
- mov.b #0, @byte_dst ; zero it again for the next use.
-
-mov_b_imm8_to_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b #xx:8, @aa:16
- mov.b #0xa5:8, @byte_dst:16 ; 16-bit address-direct operand
-;;; .word 0x017d
-;;; .word 0x40a5
-;;; .word @byte_dst
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b #0xa5, @byte_dst
- beq .Lnext9
- fail
-.Lnext9:
- mov.b #0, @byte_dst ; zero it again for the next use.
-
-mov_b_imm8_to_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b #xx:8, @aa:32
- mov.b #0xa5:8, @byte_dst:32 ; 32-bit address-direct operand
-;;; .word 0x017d
-;;; .word 0x48a5
-;;; .long @byte_dst
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b #0xa5, @byte_dst
- beq .Lnext10
- fail
-.Lnext10:
- mov.b #0, @byte_dst ; zero it again for the next use.
-
-.endif
-
- ;;
- ;; Move byte from register source
- ;;
-
-mov_b_reg8_to_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b ers, erd
- mov.b #0x12, r1l
- mov.b r1l, r0l ; Register 8-bit operand
-;;; .word 0x0c98
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
- test_h_gr16 0xa512 r0
- test_h_gr16 0xa512 r1 ; mov src unchanged
-.if (sim_cpu)
- test_h_gr32 0xa5a5a512 er0
- test_h_gr32 0xa5a5a512 er1 ; mov src unchanged
-.endif
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-
-mov_b_reg8_to_indirect:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b ers, @erd
- mov.l #byte_dst, er1
- mov.b r0l, @er1 ; Register indirect operand
-;;; .word 0x6898
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 byte_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.b @byte_dst, r0l
- cmp.b r2l, r0l
- beq .Lnext44
- fail
-.Lnext44:
- mov.b #0, r0l
- mov.b r0l, @byte_dst ; zero it again for the next use.
-
-.if (sim_cpu == h8sx)
-mov_b_reg8_to_postinc: ; post-increment from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b ers, @erd+
- mov.l #byte_dst, er1
- mov.b r0l, @er1+ ; Register post-incr operand
-;;; .word 0x0173
-;;; .word 0x6c98
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 byte_dst+1, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b r2l, @byte_dst
- beq .Lnext49
- fail
-.Lnext49:
- mov.b #0, @byte_dst ; zero it again for the next use.
-
-mov_b_reg8_to_postdec: ; post-decrement from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b ers, @erd-
- mov.l #byte_dst, er1
- mov.b r0l, @er1- ; Register post-decr operand
-;;; .word 0x0171
-;;; .word 0x6c98
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 byte_dst-1, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b r2l, @byte_dst
- beq .Lnext50
- fail
-.Lnext50:
- mov.b #0, @byte_dst ; zero it again for the next use.
-
-mov_b_reg8_to_preinc: ; pre-increment from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b ers, @+erd
- mov.l #byte_dst-1, er1
- mov.b r0l, @+er1 ; Register pre-incr operand
-;;; .word 0x0172
-;;; .word 0x6c98
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 byte_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b r2l, @byte_dst
- beq .Lnext51
- fail
-.Lnext51:
- mov.b #0, @byte_dst ; zero it again for the next use.
-.endif
-
-mov_b_reg8_to_predec: ; pre-decrement from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b ers, @-erd
- mov.l #byte_dst+1, er1
- mov.b r0l, @-er1 ; Register pre-decr operand
-;;; .word 0x6c98
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 byte_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.b @byte_dst, r0l
- cmp.b r2l, r0l
- beq .Lnext48
- fail
-.Lnext48:
- mov.b #0, r0l
- mov.b r0l, @byte_dst ; zero it again for the next use.
-
-.if (sim_cpu == h8sx)
-mov_b_reg8_to_disp2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b ers, @(dd:2, erd)
- mov.l #byte_dst-3, er1
- mov.b r0l, @(3:2, er1) ; Register plus 2-bit disp. operand
-;;; .word 0x0173
-;;; .word 0x6898
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 byte_dst-3, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b r2l, @byte_dst
- beq .Lnext52
- fail
-.Lnext52:
- mov.b #0, @byte_dst ; zero it again for the next use.
-.endif
-
-mov_b_reg8_to_disp16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b ers, @(dd:16, erd)
- mov.l #byte_dst-4, er1
- mov.b r0l, @(4:16, er1) ; Register plus 16-bit disp. operand
-;;; .word 0x6e98
-;;; .word 0x0004
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 byte_dst-4, er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.b @byte_dst, r0l
- cmp.b r2l, r0l
- beq .Lnext45
- fail
-.Lnext45:
- mov.b #0, r0l
- mov.b r0l, @byte_dst ; zero it again for the next use.
-
-mov_b_reg8_to_disp32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b ers, @(dd:32, erd)
- mov.l #byte_dst-8, er1
- mov.b r0l, @(8:32, er1) ; Register plus 32-bit disp. operand
-;;; .word 0x7810
-;;; .word 0x6aa8
-;;; .long 8
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 byte_dst-8, er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.b @byte_dst, r0l
- cmp.b r2l, r0l
- beq .Lnext46
- fail
-.Lnext46:
- mov.b #0, r0l
- mov.b r0l, @byte_dst ; zero it again for the next use.
-
-mov_b_reg8_to_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b ers, @aa:16
- mov.b r0l, @byte_dst:16 ; 16-bit address-direct operand
-;;; .word 0x6a88
-;;; .word @byte_dst
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.b @byte_dst, r0l
- cmp.b r0l, r1l
- beq .Lnext41
- fail
-.Lnext41:
- mov.b #0, r0l
- mov.b r0l, @byte_dst ; zero it again for the next use.
-
-mov_b_reg8_to_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b ers, @aa:32
- mov.b r0l, @byte_dst:32 ; 32-bit address-direct operand
-;;; .word 0x6aa8
-;;; .long @byte_dst
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.b @byte_dst, r0l
- cmp.b r0l, r1l
- beq .Lnext42
- fail
-.Lnext42:
- mov.b #0, r0l
- mov.b r0l, @byte_dst ; zero it again for the next use.
-
- ;;
- ;; Move byte to register destination.
- ;;
-
-mov_b_indirect_to_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @ers, rd
- mov.l #byte_src, er1
- mov.b @er1, r0l ; Register indirect operand
-;;; .word 0x6818
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a5a577 er0
-
- test_h_gr32 byte_src, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_b_postinc_to_reg8: ; post-increment from mem to register
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @ers+, rd
-
- mov.l #byte_src, er1
- mov.b @er1+, r0l ; Register post-incr operand
-;;; .word 0x6c18
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a5a577 er0
-
- test_h_gr32 byte_src+1, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-mov_b_postdec_to_reg8: ; post-decrement from mem to register
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @ers-, rd
-
- mov.l #byte_src, er1
- mov.b @er1-, r0l ; Register post-decr operand
-;;; .word 0x0172
-;;; .word 0x6c18
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a5a577 er0
-
- test_h_gr32 byte_src-1, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_b_preinc_to_reg8: ; pre-increment from mem to register
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @+ers, rd
-
- mov.l #byte_src-1, er1
- mov.b @+er1, r0l ; Register pre-incr operand
-;;; .word 0x0171
-;;; .word 0x6c18
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a5a577 er0
-
- test_h_gr32 byte_src, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_b_predec_to_reg8: ; pre-decrement from mem to register
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @-ers, rd
-
- mov.l #byte_src+1, er1
- mov.b @-er1, r0l ; Register pre-decr operand
-;;; .word 0x0173
-;;; .word 0x6c18
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a5a577 er0
-
- test_h_gr32 byte_src, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-
-mov_b_disp2_to_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @(dd:2, ers), rd
- mov.l #byte_src-1, er1
- mov.b @(1:2, er1), r0l ; Register plus 2-bit disp. operand
-;;; .word 0x0171
-;;; .word 0x6818
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a5a577 er0 ; mov result: a5a5 | 7777
-
- test_h_gr32 byte_src-1, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-mov_b_disp16_to_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @(dd:16, ers), rd
- mov.l #byte_src+0x1234, er1
- mov.b @(-0x1234:16, er1), r0l ; Register plus 16-bit disp. operand
-;;; .word 0x6e18
-;;; .word -0x1234
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a5a577 er0 ; mov result: a5a5 | 7777
-
- test_h_gr32 byte_src+0x1234, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_b_disp32_to_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @(dd:32, ers), rd
- mov.l #byte_src+65536, er1
- mov.b @(-65536:32, er1), r0l ; Register plus 32-bit disp. operand
-;;; .word 0x7810
-;;; .word 0x6a28
-;;; .long -65536
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a5a577 er0 ; mov result: a5a5 | 7777
-
- test_h_gr32 byte_src+65536, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_b_abs16_to_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @aa:16, rd
- mov.b @byte_src:16, r0l ; 16-bit address-direct operand
-;;; .word 0x6a08
-;;; .word @byte_src
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a5a577 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_b_abs32_to_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @aa:32, rd
- mov.b @byte_src:32, r0l ; 32-bit address-direct operand
-;;; .word 0x6a28
-;;; .long @byte_src
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a5a577 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-
- ;;
- ;; Move byte from memory to memory
- ;;
-
-mov_b_indirect_to_indirect: ; reg indirect, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @ers, @erd
-
- mov.l #byte_src, er1
- mov.l #byte_dst, er0
- mov.b @er1, @er0
-;;; .word 0x0178
-;;; .word 0x0100
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 byte_dst er0
- test_h_gr32 byte_src er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b @byte_src, @byte_dst
- beq .Lnext55
- fail
-.Lnext55:
- ;; Now clear the destination location, and verify that.
- mov.b #0, @byte_dst
- cmp.b @byte_src, @byte_dst
- bne .Lnext56
- fail
-.Lnext56: ; OK, pass on.
-
-mov_b_postinc_to_postinc: ; reg post-increment, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @ers+, @erd+
-
- mov.l #byte_src, er1
- mov.l #byte_dst, er0
- mov.b @er1+, @er0+
-;;; .word 0x0178
-;;; .word 0x8180
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 byte_dst+1 er0
- test_h_gr32 byte_src+1 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b @byte_src, @byte_dst
- beq .Lnext65
- fail
-.Lnext65:
- ;; Now clear the destination location, and verify that.
- mov.b #0, @byte_dst
- cmp.b @byte_src, @byte_dst
- bne .Lnext66
- fail
-.Lnext66: ; OK, pass on.
-
-mov_b_postdec_to_postdec: ; reg post-decrement, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @ers-, @erd-
-
- mov.l #byte_src, er1
- mov.l #byte_dst, er0
- mov.b @er1-, @er0-
-;;; .word 0x0178
-;;; .word 0xa1a0
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 byte_dst-1 er0
- test_h_gr32 byte_src-1 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b @byte_src, @byte_dst
- beq .Lnext75
- fail
-.Lnext75:
- ;; Now clear the destination location, and verify that.
- mov.b #0, @byte_dst
- cmp.b @byte_src, @byte_dst
- bne .Lnext76
- fail
-.Lnext76: ; OK, pass on.
-
-mov_b_preinc_to_preinc: ; reg pre-increment, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @+ers, @+erd
-
- mov.l #byte_src-1, er1
- mov.l #byte_dst-1, er0
- mov.b @+er1, @+er0
-;;; .word 0x0178
-;;; .word 0x9190
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 byte_dst er0
- test_h_gr32 byte_src er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b @byte_src, @byte_dst
- beq .Lnext85
- fail
-.Lnext85:
- ;; Now clear the destination location, and verify that.
- mov.b #0, @byte_dst
- cmp.b @byte_src, @byte_dst
- bne .Lnext86
- fail
-.Lnext86: ; OK, pass on.
-
-mov_b_predec_to_predec: ; reg pre-decrement, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @-ers, @-erd
-
- mov.l #byte_src+1, er1
- mov.l #byte_dst+1, er0
- mov.b @-er1, @-er0
-;;; .word 0x0178
-;;; .word 0xb1b0
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 byte_dst er0
- test_h_gr32 byte_src er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b @byte_src, @byte_dst
- beq .Lnext95
- fail
-.Lnext95:
- ;; Now clear the destination location, and verify that.
- mov.b #0, @byte_dst
- cmp.b @byte_src, @byte_dst
- bne .Lnext96
- fail
-.Lnext96: ; OK, pass on.
-
-mov_b_disp2_to_disp2: ; reg 2-bit disp, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @(dd:2, ers), @(dd:2, erd)
-
- mov.l #byte_src-1, er1
- mov.l #byte_dst-2, er0
- mov.b @(1:2, er1), @(2:2, er0)
-;;; .word 0x0178
-;;; .word 0x1120
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 byte_dst-2 er0
- test_h_gr32 byte_src-1 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b @byte_src, @byte_dst
- beq .Lnext105
- fail
-.Lnext105:
- ;; Now clear the destination location, and verify that.
- mov.b #0, @byte_dst
- cmp.b @byte_src, @byte_dst
- bne .Lnext106
- fail
-.Lnext106: ; OK, pass on.
-
-mov_b_disp16_to_disp16: ; reg 16-bit disp, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @(dd:16, ers), @(dd:16, erd)
-
- mov.l #byte_src-1, er1
- mov.l #byte_dst-2, er0
- mov.b @(1:16, er1), @(2:16, er0)
-;;; .word 0x0178
-;;; .word 0xc1c0
-;;; .word 0x0001
-;;; .word 0x0002
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 byte_dst-2 er0
- test_h_gr32 byte_src-1 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b @byte_src, @byte_dst
- beq .Lnext115
- fail
-.Lnext115:
- ;; Now clear the destination location, and verify that.
- mov.b #0, @byte_dst
- cmp.b @byte_src, @byte_dst
- bne .Lnext116
- fail
-.Lnext116: ; OK, pass on.
-
-mov_b_disp32_to_disp32: ; reg 32-bit disp, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @(dd:32, ers), @(dd:32, erd)
-
- mov.l #byte_src-1, er1
- mov.l #byte_dst-2, er0
- mov.b @(1:32, er1), @(2:32, er0)
-;;; .word 0x0178
-;;; .word 0xc9c8
-;;; .long 1
-;;; .long 2
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 byte_dst-2 er0
- test_h_gr32 byte_src-1 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b @byte_src, @byte_dst
- beq .Lnext125
- fail
-.Lnext125:
- ;; Now clear the destination location, and verify that.
- mov.b #0, @byte_dst
- cmp.b @byte_src, @byte_dst
- bne .Lnext126
- fail
-.Lnext126: ; OK, pass on.
-
-mov_b_abs16_to_abs16: ; 16-bit absolute addr, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @aa:16, @aa:16
-
- mov.b @byte_src:16, @byte_dst:16
-;;; .word 0x0178
-;;; .word 0x4040
-;;; .word @byte_src
-;;; .word @byte_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
-
- test_gr_a5a5 0 ; Make sure *NO* general registers are changed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b @byte_src, @byte_dst
- beq .Lnext135
- fail
-.Lnext135:
- ;; Now clear the destination location, and verify that.
- mov.b #0, @byte_dst
- cmp.b @byte_src, @byte_dst
- bne .Lnext136
- fail
-.Lnext136: ; OK, pass on.
-
-mov_b_abs32_to_abs32: ; 32-bit absolute addr, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.b @aa:32, @aa:32
-
- mov.b @byte_src:32, @byte_dst:32
-;;; .word 0x0178
-;;; .word 0x4848
-;;; .long @byte_src
-;;; .long @byte_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure *NO* general registers are changed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.b @byte_src, @byte_dst
- beq .Lnext145
- fail
-.Lnext145:
- ;; Now clear the destination location, and verify that.
- mov.b #0, @byte_dst
- cmp.b @byte_src, @byte_dst
- bne .Lnext146
- fail
-.Lnext146: ; OK, pass on.
-
-
-.endif
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/mov.l.s b/sim/testsuite/sim/h8300/mov.l.s
deleted file mode 100644
index 5a222c8..0000000
--- a/sim/testsuite/sim/h8300/mov.l.s
+++ /dev/null
@@ -1,2160 +0,0 @@
-# Hitachi H8 testcase 'mov.l'
-# mach(): h8300h h8300s h8sx
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
- .data
- .align 4
-long_src:
- .long 0x77777777
-long_dst:
- .long 0
-
- .text
-
- ;;
- ;; Move long from immediate source
- ;;
-
-.if (sim_cpu == h8sx)
-mov_l_imm3_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:3, erd
- mov.l #0x3:3, er0 ; Immediate 3-bit operand
-;;; .word 0x0fb8
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0x3 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_l_imm16_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:16, erd
- mov.l #0x1234, er0 ; Immediate 16-bit operand
-;;; .word 0x7a08
-;;; .word 0x1234
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0x1234 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-mov_l_imm32_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:32, erd
- mov.l #0x12345678, er0 ; Immediate 32-bit operand
-;;; .word 0x7a00
-;;; .long 0x12345678
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0x12345678 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-mov_l_imm8_to_indirect:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:8, @erd
- mov.l #long_dst, er1
- mov.l #0xa5:8, @er1 ; Register indirect operand
-;;; .word 0x010d
-;;; .word 0x01a5
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xa5, @long_dst
- beq .Lnext1
- fail
-.Lnext1:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm8_to_postinc: ; post-increment from imm8 to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:8, @erd+
- mov.l #long_dst, er1
- mov.l #0xa5:8, @er1+ ; Imm8, register post-incr operands.
-;;; .word 0x010d
-;;; .word 0x81a5
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst+4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xa5, @long_dst
- beq .Lnext2
- fail
-.Lnext2:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm8_to_postdec: ; post-decrement from imm8 to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:8, @erd-
- mov.l #long_dst, er1
- mov.l #0xa5:8, @er1- ; Imm8, register post-decr operands.
-;;; .word 0x010d
-;;; .word 0xa1a5
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xa5, @long_dst
- beq .Lnext3
- fail
-.Lnext3:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm8_to_preinc: ; pre-increment from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:8, @+erd
- mov.l #long_dst-4, er1
- mov.l #0xa5:8, @+er1 ; Imm8, register pre-incr operands
-;;; .word 0x010d
-;;; .word 0x91a5
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xa5, @long_dst
- beq .Lnext4
- fail
-.Lnext4:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm8_to_predec: ; pre-decrement from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:8, @-erd
- mov.l #long_dst+4, er1
- mov.l #0xa5:8, @-er1 ; Imm8, register pre-decr operands
-;;; .word 0x010d
-;;; .word 0xb1a5
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xa5, @long_dst
- beq .Lnext5
- fail
-.Lnext5:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm8_to_disp2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:8, @(dd:2, erd)
- mov.l #long_dst-3, er1
- mov.l #0xa5:8, @(3:2, er1) ; Imm8, reg plus 2-bit disp. operand
-;;; .word 0x010d
-;;; .word 0x31a5
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-3, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xa5, @long_dst
- beq .Lnext6
- fail
-.Lnext6:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm8_to_disp16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:8, @(dd:16, erd)
- mov.l #long_dst-4, er1
- mov.l #0xa5:8, @(4:16, er1) ; Register plus 16-bit disp. operand
-;;; .word 0x010d
-;;; .word 0x6f90
-;;; .word 0x0004
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xa5, @long_dst
- beq .Lnext7
- fail
-.Lnext7:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm8_to_disp32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:8, @(dd:32, erd)
- mov.l #long_dst-8, er1
- mov.l #0xa5:8, @(8:32, er1) ; Register plus 32-bit disp. operand
-;;; .word 0x010d
-;;; .word 0xc9a5
-;;; .long 8
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-8, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xa5, @long_dst
- beq .Lnext8
- fail
-.Lnext8:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm8_to_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:8, @aa:16
- mov.l #0xa5:8, @long_dst:16 ; 16-bit address-direct operand
-;;; .word 0x010d
-;;; .word 0x40a5
-;;; .word @long_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xa5, @long_dst
- beq .Lnext9
- fail
-.Lnext9:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm8_to_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:8, @aa:32
- mov.l #0xa5:8, @long_dst:32 ; 32-bit address-direct operand
-;;; .word 0x010d
-;;; .word 0x48a5
-;;; .long @long_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xa5, @long_dst
- beq .Lnext10
- fail
-.Lnext10:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm16_to_indirect:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:16, @erd
- mov.l #long_dst, er1
- mov.l #0xdead:16, @er1 ; Register indirect operand
-;;; .word 0x7a7c
-;;; .word 0xdead
-;;; .word 0x0100
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xdead, @long_dst
- beq .Lnext11
- fail
-.Lnext11:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm16_to_postinc: ; post-increment from imm16 to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:16, @erd+
- mov.l #long_dst, er1
- mov.l #0xdead:16, @er1+ ; Imm16, register post-incr operands.
-;;; .word 0x7a7c
-;;; .word 0xdead
-;;; .word 0x8100
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst+4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xdead, @long_dst
- beq .Lnext12
- fail
-.Lnext12:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm16_to_postdec: ; post-decrement from imm16 to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:16, @erd-
- mov.l #long_dst, er1
- mov.l #0xdead:16, @er1- ; Imm16, register post-decr operands.
-;;; .word 0x7a7c
-;;; .word 0xdead
-;;; .word 0xa100
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xdead, @long_dst
- beq .Lnext13
- fail
-.Lnext13:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm16_to_preinc: ; pre-increment from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:16, @+erd
- mov.l #long_dst-4, er1
- mov.l #0xdead:16, @+er1 ; Imm16, register pre-incr operands
-;;; .word 0x7a7c
-;;; .word 0xdead
-;;; .word 0x9100
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xdead, @long_dst
- beq .Lnext14
- fail
-.Lnext14:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm16_to_predec: ; pre-decrement from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:16, @-erd
- mov.l #long_dst+4, er1
- mov.l #0xdead:16, @-er1 ; Imm16, register pre-decr operands
-;;; .word 0x7a7c
-;;; .word 0xdead
-;;; .word 0xb100
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xdead, @long_dst
- beq .Lnext15
- fail
-.Lnext15:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm16_to_disp2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:16, @(dd:2, erd)
- mov.l #long_dst-3, er1
- mov.l #0xdead:16, @(3:2, er1) ; Imm16, reg plus 2-bit disp. operand
-;;; .word 0x7a7c
-;;; .word 0xdead
-;;; .word 0x3100
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-3, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xdead, @long_dst
- beq .Lnext16
- fail
-.Lnext16:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm16_to_disp16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:16, @(dd:16, erd)
- mov.l #long_dst-4, er1
- mov.l #0xdead:16, @(4:16, er1) ; Register plus 16-bit disp. operand
-;;; .word 0x7a7c
-;;; .word 0xdead
-;;; .word 0xc100
-;;; .word 0x0004
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xdead, @long_dst
- beq .Lnext17
- fail
-.Lnext17:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm16_to_disp32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:16, @(dd:32, erd)
- mov.l #long_dst-8, er1
- mov.l #0xdead:16, @(8:32, er1) ; Register plus 32-bit disp. operand
-;;; .word 0x7a7c
-;;; .word 0xdead
-;;; .word 0xc900
-;;; .long 8
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-8, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xdead, @long_dst
- beq .Lnext18
- fail
-.Lnext18:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm16_to_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:16, @aa:16
- mov.l #0xdead:16, @long_dst:16 ; 16-bit address-direct operand
-;;; .word 0x7a7c
-;;; .word 0xdead
-;;; .word 0x4000
-;;; .word @long_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xdead, @long_dst
- beq .Lnext19
- fail
-.Lnext19:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm16_to_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:16, @aa:32
- mov.l #0xdead:16, @long_dst:32 ; 32-bit address-direct operand
-;;; .word 0x7a7c
-;;; .word 0xdead
-;;; .word 0x4800
-;;; .long @long_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xdead, @long_dst
- beq .Lnext20
- fail
-.Lnext20:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm32_to_indirect:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:32, @erd
- mov.l #long_dst, er1
- mov.l #0xcafedead:32, @er1 ; Register indirect operand
-;;; .word 0x7a74
-;;; .long 0xcafedead
-;;; .word 0x0100
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xcafedead, @long_dst
- beq .Lnext21
- fail
-.Lnext21:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm32_to_postinc: ; post-increment from imm32 to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:32, @erd+
- mov.l #long_dst, er1
- mov.l #0xcafedead:32, @er1+ ; Imm32, register post-incr operands.
-;;; .word 0x7a74
-;;; .long 0xcafedead
-;;; .word 0x8100
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst+4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xcafedead, @long_dst
- beq .Lnext22
- fail
-.Lnext22:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm32_to_postdec: ; post-decrement from imm32 to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:32, @erd-
- mov.l #long_dst, er1
- mov.l #0xcafedead:32, @er1- ; Imm32, register post-decr operands.
-;;; .word 0x7a74
-;;; .long 0xcafedead
-;;; .word 0xa100
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xcafedead, @long_dst
- beq .Lnext23
- fail
-.Lnext23:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm32_to_preinc: ; pre-increment from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:32, @+erd
- mov.l #long_dst-4, er1
- mov.l #0xcafedead:32, @+er1 ; Imm32, register pre-incr operands
-;;; .word 0x7a74
-;;; .long 0xcafedead
-;;; .word 0x9100
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xcafedead, @long_dst
- beq .Lnext24
- fail
-.Lnext24:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm32_to_predec: ; pre-decrement from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:32, @-erd
- mov.l #long_dst+4, er1
- mov.l #0xcafedead:32, @-er1 ; Imm32, register pre-decr operands
-;;; .word 0x7a74
-;;; .long 0xcafedead
-;;; .word 0xb100
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xcafedead, @long_dst
- beq .Lnext25
- fail
-.Lnext25:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm32_to_disp2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:32, @(dd:2, erd)
- mov.l #long_dst-3, er1
- mov.l #0xcafedead:32, @(3:2, er1) ; Imm32, reg plus 2-bit disp. operand
-;;; .word 0x7a74
-;;; .long 0xcafedead
-;;; .word 0x3100
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-3, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xcafedead, @long_dst
- beq .Lnext26
- fail
-.Lnext26:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm32_to_disp16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:32, @(dd:16, erd)
- mov.l #long_dst-4, er1
- mov.l #0xcafedead:32, @(4:16, er1) ; Register plus 16-bit disp. operand
-;;; .word 0x7a74
-;;; .long 0xcafedead
-;;; .word 0xc100
-;;; .word 0x0004
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xcafedead, @long_dst
- beq .Lnext27
- fail
-.Lnext27:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm32_to_disp32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:32, @(dd:32, erd)
- mov.l #long_dst-8, er1
- mov.l #0xcafedead:32, @(8:32, er1) ; Register plus 32-bit disp. operand
-;;; .word 0x7a74
-;;; .long 0xcafedead
-;;; .word 0xc900
-;;; .long 8
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-8, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xcafedead, @long_dst
- beq .Lnext28
- fail
-.Lnext28:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm32_to_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:32, @aa:16
- mov.l #0xcafedead:32, @long_dst:16 ; 16-bit address-direct operand
-;;; .word 0x7a74
-;;; .long 0xcafedead
-;;; .word 0x4000
-;;; .word @long_dst
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xcafedead, @long_dst
- beq .Lnext29
- fail
-.Lnext29:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_imm32_to_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l #xx:32, @aa:32
- mov.l #0xcafedead:32, @long_dst:32 ; 32-bit address-direct operand
-;;; .word 0x7a74
-;;; .long 0xcafedead
-;;; .word 0x4800
-;;; .long @long_dst
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l #0xcafedead, @long_dst
- beq .Lnext30
- fail
-.Lnext30:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-.endif
-
- ;;
- ;; Move long from register source
- ;;
-
-mov_l_reg32_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l ers, erd
- mov.l #0x12345678, er1
- mov.l er1, er0 ; Register 32-bit operand
-;;; .word 0x0f90
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
- test_h_gr32 0x12345678 er0
- test_h_gr32 0x12345678 er1 ; mov src unchanged
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_l_reg32_to_indirect:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l ers, @erd
- mov.l #long_dst, er1
- mov.l er0, @er1 ; Register indirect operand
-;;; .word 0x0100
-;;; .word 0x6990
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.l #0, er0
- mov.l @long_dst, er0
- cmp.l er2, er0
- beq .Lnext44
- fail
-.Lnext44:
- mov.l #0, er0
- mov.l er0, @long_dst ; zero it again for the next use.
-
-.if (sim_cpu == h8sx)
-mov_l_reg32_to_postinc: ; post-increment from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l ers, @erd+
- mov.l #long_dst, er1
- mov.l er0, @er1+ ; Register post-incr operand
-;;; .word 0x0103
-;;; .word 0x6d90
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst+4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l er2, @long_dst
- beq .Lnext49
- fail
-.Lnext49:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_reg32_to_postdec: ; post-decrement from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l ers, @erd-
- mov.l #long_dst, er1
- mov.l er0, @er1- ; Register post-decr operand
-;;; .word 0x0101
-;;; .word 0x6d90
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l er2, @long_dst
- beq .Lnext50
- fail
-.Lnext50:
- mov.l #0, @long_dst ; zero it again for the next use.
-
-mov_l_reg32_to_preinc: ; pre-increment from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l ers, @+erd
- mov.l #long_dst-4, er1
- mov.l er0, @+er1 ; Register pre-incr operand
-;;; .word 0x0102
-;;; .word 0x6d90
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l er2, @long_dst
- beq .Lnext51
- fail
-.Lnext51:
- mov.l #0, @long_dst ; zero it again for the next use.
-.endif ; h8sx
-
-mov_l_reg32_to_predec: ; pre-decrement from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l ers, @-erd
- mov.l #long_dst+4, er1
- mov.l er0, @-er1 ; Register pre-decr operand
-;;; .word 0x0100
-;;; .word 0x6d90
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.l #0, er0
- mov.l @long_dst, er0
- cmp.l er2, er0
- beq .Lnext48
- fail
-.Lnext48:
- mov.l #0, er0
- mov.l er0, @long_dst ; zero it again for the next use.
-
-.if (sim_cpu == h8sx)
-mov_l_reg32_to_disp2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l ers, @(dd:2, erd)
- mov.l #long_dst-3, er1
- mov.l er0, @(3:2, er1) ; Register plus 2-bit disp. operand
-;;; .word 0x0103
-;;; .word 0x6990
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 long_dst-3, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l er2, @long_dst
- beq .Lnext52
- fail
-.Lnext52:
- mov.l #0, @long_dst ; zero it again for the next use.
-.endif ; h8sx
-
-mov_l_reg32_to_disp16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l ers, @(dd:16, erd)
- mov.l #long_dst-4, er1
- mov.l er0, @(4:16, er1) ; Register plus 16-bit disp. operand
-;;; .word 0x0100
-;;; .word 0x6f90
-;;; .word 0x0004
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 long_dst-4, er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.l #0, er0
- mov.l @long_dst, er0
- cmp.l er2, er0
- beq .Lnext45
- fail
-.Lnext45:
- mov.l #0, er0
- mov.l er0, @long_dst ; zero it again for the next use.
-
-mov_l_reg32_to_disp32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l ers, @(dd:32, erd)
- mov.l #long_dst-8, er1
- mov.l er0, @(8:32, er1) ; Register plus 32-bit disp. operand
-;;; .word 0x7890
-;;; .word 0x6ba0
-;;; .long 8
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 long_dst-8, er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.l #0, er0
- mov.l @long_dst, er0
- cmp.l er2, er0
- beq .Lnext46
- fail
-.Lnext46:
- mov.l #0, er0
- mov.l er0, @long_dst ; zero it again for the next use.
-
-mov_l_reg32_to_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l ers, @aa:16
- mov.l er0, @long_dst:16 ; 16-bit address-direct operand
-;;; .word 0x0100
-;;; .word 0x6b80
-;;; .word @long_dst
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.l #0, er0
- mov.l @long_dst, er0
- cmp.l er0, er1
- beq .Lnext41
- fail
-.Lnext41:
- mov.l #0, er0
- mov.l er0, @long_dst ; zero it again for the next use.
-
-mov_l_reg32_to_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l ers, @aa:32
- mov.l er0, @long_dst:32 ; 32-bit address-direct operand
-;;; .word 0x0100
-;;; .word 0x6ba0
-;;; .long @long_dst
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.l #0, er0
- mov.l @long_dst, er0
- cmp.l er0, er1
- beq .Lnext42
- fail
-.Lnext42:
- mov.l #0, er0
- mov.l er0, @long_dst ; zero it again for the next use.
-
- ;;
- ;; Move long to register destination.
- ;;
-
-mov_l_indirect_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @ers, erd
- mov.l #long_src, er1
- mov.l @er1, er0 ; Register indirect operand
-;;; .word 0x0100
-;;; .word 0x6910
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0x77777777 er0
-
- test_h_gr32 long_src, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_l_postinc_to_reg32: ; post-increment from mem to register
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @ers+, erd
-
- mov.l #long_src, er1
- mov.l @er1+, er0 ; Register post-incr operand
-;;; .word 0x0100
-;;; .word 0x6d10
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0x77777777 er0
-
- test_h_gr32 long_src+4, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-mov_l_postdec_to_reg32: ; post-decrement from mem to register
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @ers-, erd
-
- mov.l #long_src, er1
- mov.l @er1-, er0 ; Register post-decr operand
-;;; .word 0x0102
-;;; .word 0x6d10
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0x77777777 er0
-
- test_h_gr32 long_src-4, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_l_preinc_to_reg32: ; pre-increment from mem to register
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @+ers, erd
-
- mov.l #long_src-4, er1
- mov.l @+er1, er0 ; Register pre-incr operand
-;;; .word 0x0101
-;;; .word 0x6d10
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0x77777777 er0
-
- test_h_gr32 long_src, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_l_predec_to_reg32: ; pre-decrement from mem to register
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @-ers, erd
-
- mov.l #long_src+4, er1
- mov.l @-er1, er0 ; Register pre-decr operand
-;;; .word 0x0103
-;;; .word 0x6d10
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0x77777777 er0
-
- test_h_gr32 long_src, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-
-mov_l_disp2_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @(dd:2, ers), erd
- mov.l #long_src-1, er1
- mov.l @(1:2, er1), er0 ; Register plus 2-bit disp. operand
-;;; .word 0x0101
-;;; .word 0x6910
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0x77777777 er0 ; mov result: a5a5 | 7777
-
- test_h_gr32 long_src-1, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif ; h8sx
-
-mov_l_disp16_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @(dd:16, ers), erd
- mov.l #long_src+0x1234, er1
- mov.l @(-0x1234:16, er1), er0 ; Register plus 16-bit disp. operand
-;;; .word 0x0100
-;;; .word 0x6f10
-;;; .word -0x1234
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0x77777777 er0 ; mov result: a5a5 | 7777
-
- test_h_gr32 long_src+0x1234, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_l_disp32_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @(dd:32, ers), erd
- mov.l #long_src+65536, er1
- mov.l @(-65536:32, er1), er0 ; Register plus 32-bit disp. operand
-;;; .word 0x7890
-;;; .word 0x6b20
-;;; .long -65536
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0x77777777 er0 ; mov result: a5a5 | 7777
-
- test_h_gr32 long_src+65536, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_l_abs16_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @aa:16, erd
- mov.l @long_src:16, er0 ; 16-bit address-direct operand
-;;; .word 0x0100
-;;; .word 0x6b00
-;;; .word @long_src
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0x77777777 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_l_abs32_to_reg32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @aa:32, erd
- mov.l @long_src:32, er0 ; 32-bit address-direct operand
-;;; .word 0x0100
-;;; .word 0x6b20
-;;; .long @long_src
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0x77777777 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-
-.if (sim_cpu == h8sx)
-
- ;;
- ;; Move long from memory to memory
- ;;
-
-mov_l_indirect_to_indirect: ; reg indirect, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @ers, @erd
-
- mov.l #long_src, er1
- mov.l #long_dst, er0
- mov.l @er1, @er0
-;;; .word 0x0108
-;;; .word 0x0100
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 long_dst er0
- test_h_gr32 long_src er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l @long_src, @long_dst
- beq .Lnext55
- fail
-.Lnext55:
- ;; Now clear the destination location, and verify that.
- mov.l #0, @long_dst
- cmp.l @long_src, @long_dst
- bne .Lnext56
- fail
-.Lnext56: ; OK, pass on.
-
-mov_l_postinc_to_postinc: ; reg post-increment, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @ers+, @erd+
-
- mov.l #long_src, er1
- mov.l #long_dst, er0
- mov.l @er1+, @er0+
-;;; .word 0x0108
-;;; .word 0x8180
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 long_dst+4 er0
- test_h_gr32 long_src+4 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l @long_src, @long_dst
- beq .Lnext65
- fail
-.Lnext65:
- ;; Now clear the destination location, and verify that.
- mov.l #0, @long_dst
- cmp.l @long_src, @long_dst
- bne .Lnext66
- fail
-.Lnext66: ; OK, pass on.
-
-mov_l_postdec_to_postdec: ; reg post-decrement, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @ers-, @erd-
-
- mov.l #long_src, er1
- mov.l #long_dst, er0
- mov.l @er1-, @er0-
-;;; .word 0x0108
-;;; .word 0xa1a0
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 long_dst-4 er0
- test_h_gr32 long_src-4 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l @long_src, @long_dst
- beq .Lnext75
- fail
-.Lnext75:
- ;; Now clear the destination location, and verify that.
- mov.l #0, @long_dst
- cmp.l @long_src, @long_dst
- bne .Lnext76
- fail
-.Lnext76: ; OK, pass on.
-
-mov_l_preinc_to_preinc: ; reg pre-increment, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @+ers, @+erd
-
- mov.l #long_src-4, er1
- mov.l #long_dst-4, er0
- mov.l @+er1, @+er0
-;;; .word 0x0108
-;;; .word 0x9190
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 long_dst er0
- test_h_gr32 long_src er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l @long_src, @long_dst
- beq .Lnext85
- fail
-.Lnext85:
- ;; Now clear the destination location, and verify that.
- mov.l #0, @long_dst
- cmp.l @long_src, @long_dst
- bne .Lnext86
- fail
-.Lnext86: ; OK, pass on.
-
-mov_l_predec_to_predec: ; reg pre-decrement, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @-ers, @-erd
-
- mov.l #long_src+4, er1
- mov.l #long_dst+4, er0
- mov.l @-er1, @-er0
-;;; .word 0x0108
-;;; .word 0xb1b0
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 long_dst er0
- test_h_gr32 long_src er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l @long_src, @long_dst
- beq .Lnext95
- fail
-.Lnext95:
- ;; Now clear the destination location, and verify that.
- mov.l #0, @long_dst
- cmp.l @long_src, @long_dst
- bne .Lnext96
- fail
-.Lnext96: ; OK, pass on.
-
-mov_l_disp2_to_disp2: ; reg 2-bit disp, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @(dd:2, ers), @(dd:2, erd)
-
- mov.l #long_src-1, er1
- mov.l #long_dst-2, er0
- mov.l @(1:2, er1), @(2:2, er0)
-;;; .word 0x0108
-;;; .word 0x1120
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 long_dst-2 er0
- test_h_gr32 long_src-1 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l @long_src, @long_dst
- beq .Lnext105
- fail
-.Lnext105:
- ;; Now clear the destination location, and verify that.
- mov.l #0, @long_dst
- cmp.l @long_src, @long_dst
- bne .Lnext106
- fail
-.Lnext106: ; OK, pass on.
-
-mov_l_disp16_to_disp16: ; reg 16-bit disp, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @(dd:16, ers), @(dd:16, erd)
-
- mov.l #long_src-1, er1
- mov.l #long_dst-2, er0
- mov.l @(1:16, er1), @(2:16, er0)
-;;; .word 0x0108
-;;; .word 0xc1c0
-;;; .word 0x0001
-;;; .word 0x0002
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 long_dst-2 er0
- test_h_gr32 long_src-1 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l @long_src, @long_dst
- beq .Lnext115
- fail
-.Lnext115:
- ;; Now clear the destination location, and verify that.
- mov.l #0, @long_dst
- cmp.l @long_src, @long_dst
- bne .Lnext116
- fail
-.Lnext116: ; OK, pass on.
-
-mov_l_disp32_to_disp32: ; reg 32-bit disp, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @(dd:32, ers), @(dd:32, erd)
-
- mov.l #long_src-1, er1
- mov.l #long_dst-2, er0
- mov.l @(1:32, er1), @(2:32, er0)
-;;; .word 0x0108
-;;; .word 0xc9c8
-;;; .long 1
-;;; .long 2
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 long_dst-2 er0
- test_h_gr32 long_src-1 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l @long_src, @long_dst
- beq .Lnext125
- fail
-.Lnext125:
- ;; Now clear the destination location, and verify that.
- mov.l #0, @long_dst
- cmp.l @long_src, @long_dst
- bne .Lnext126
- fail
-.Lnext126: ; OK, pass on.
-
-mov_l_abs16_to_abs16: ; 16-bit absolute addr, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @aa:16, @aa:16
-
- mov.l @long_src:16, @long_dst:16
-;;; .word 0x0108
-;;; .word 0x4040
-;;; .word @long_src
-;;; .word @long_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
-
- test_gr_a5a5 0 ; Make sure *NO* general registers are changed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l @long_src, @long_dst
- beq .Lnext135
- fail
-.Lnext135:
- ;; Now clear the destination location, and verify that.
- mov.l #0, @long_dst
- cmp.l @long_src, @long_dst
- bne .Lnext136
- fail
-.Lnext136: ; OK, pass on.
-
-mov_l_abs32_to_abs32: ; 32-bit absolute addr, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.l @aa:32, @aa:32
-
- mov.l @long_src:32, @long_dst:32
-;;; .word 0x0108
-;;; .word 0x4848
-;;; .long @long_src
-;;; .long @long_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure *NO* general registers are changed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.l @long_src, @long_dst
- beq .Lnext145
- fail
-.Lnext145:
- ;; Now clear the destination location, and verify that.
- mov.l #0, @long_dst
- cmp.l @long_src, @long_dst
- bne .Lnext146
- fail
-.Lnext146: ; OK, pass on.
-
-
-.endif
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/mov.w.s b/sim/testsuite/sim/h8300/mov.w.s
deleted file mode 100644
index 6f460c8..0000000
--- a/sim/testsuite/sim/h8300/mov.w.s
+++ /dev/null
@@ -1,1857 +0,0 @@
-# Hitachi H8 testcase 'mov.w'
-# mach(): h8300h h8300s h8sx
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
- .data
- .align 2
-word_src:
- .word 0x7777
-word_dst:
- .word 0
-
- .text
-
- ;;
- ;; Move word from immediate source
- ;;
-
-.if (sim_cpu == h8sx)
-mov_w_imm3_to_reg16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:3, rd
- mov.w #0x3:3, r0 ; Immediate 3-bit operand
-;;; .word 0x0f30
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a50003 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-mov_w_imm16_to_reg16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:16, rd
- mov.w #0x1234, r0 ; Immediate 16-bit operand
-;;; .word 0x7900
-;;; .word 0x1234
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a51234 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-mov_w_imm4_to_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:4, @aa:16
- mov.w #0xf:4, @word_dst:16 ; 4-bit imm to 16-bit address-direct
-;;; .word 0x6bdf
-;;; .word @word_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xf, @word_dst
- beq .Lnext21
- fail
-.Lnext21:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm4_to_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:4, @aa:32
- mov.w #0xf:4, @word_dst:32 ; 4-bit imm to 32-bit address-direct
-;;; .word 0x6bff
-;;; .long @word_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xf, @word_dst
- beq .Lnext22
- fail
-.Lnext22:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm8_to_indirect:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:8, @erd
- mov.l #word_dst, er1
- mov.w #0xa5:8, @er1 ; Register indirect operand
-;;; .word 0x015d
-;;; .word 0x01a5
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xa5, @word_dst
- beq .Lnext1
- fail
-.Lnext1:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm8_to_postinc: ; post-increment from imm8 to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:8, @erd+
- mov.l #word_dst, er1
- mov.w #0xa5:8, @er1+ ; Imm8, register post-incr operands.
-;;; .word 0x015d
-;;; .word 0x81a5
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst+2, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xa5, @word_dst
- beq .Lnext2
- fail
-.Lnext2:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm8_to_postdec: ; post-decrement from imm8 to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:8, @erd-
- mov.l #word_dst, er1
- mov.w #0xa5:8, @er1- ; Imm8, register post-decr operands.
-;;; .word 0x015d
-;;; .word 0xa1a5
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst-2, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xa5, @word_dst
- beq .Lnext3
- fail
-.Lnext3:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm8_to_preinc: ; pre-increment from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:8, @+erd
- mov.l #word_dst-2, er1
- mov.w #0xa5:8, @+er1 ; Imm8, register pre-incr operands
-;;; .word 0x015d
-;;; .word 0x91a5
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xa5, @word_dst
- beq .Lnext4
- fail
-.Lnext4:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm8_to_predec: ; pre-decrement from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:8, @-erd
- mov.l #word_dst+2, er1
- mov.w #0xa5:8, @-er1 ; Imm8, register pre-decr operands
-;;; .word 0x015d
-;;; .word 0xb1a5
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xa5, @word_dst
- beq .Lnext5
- fail
-.Lnext5:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm8_to_disp2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:8, @(dd:2, erd)
- mov.l #word_dst-3, er1
- mov.w #0xa5:8, @(3:2, er1) ; Imm8, reg plus 2-bit disp. operand
-;;; .word 0x015d
-;;; .word 0x31a5
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst-3, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xa5, @word_dst
- beq .Lnext6
- fail
-.Lnext6:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm8_to_disp16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:8, @(dd:16, erd)
- mov.l #word_dst-4, er1
- mov.w #0xa5:8, @(4:16, er1) ; Register plus 16-bit disp. operand
-;;; .word 0x015d
-;;; .word 0x6f90
-;;; .word 0x0004
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst-4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xa5, @word_dst
- beq .Lnext7
- fail
-.Lnext7:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm8_to_disp32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:8, @(dd:32, erd)
- mov.l #word_dst-8, er1
- mov.w #0xa5:8, @(8:32, er1) ; Register plus 32-bit disp. operand
-;;; .word 0x015d
-;;; .word 0xc9a5
-;;; .long 8
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst-8, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xa5, @word_dst
- beq .Lnext8
- fail
-.Lnext8:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm8_to_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:8, @aa:16
- mov.w #0xa5:8, @word_dst:16 ; 16-bit address-direct operand
-;;; .word 0x015d
-;;; .word 0x40a5
-;;; .word @word_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xa5, @word_dst
- beq .Lnext9
- fail
-.Lnext9:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm8_to_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:8, @aa:32
- mov.w #0xa5:8, @word_dst:32 ; 32-bit address-direct operand
-;;; .word 0x015d
-;;; .word 0x48a5
-;;; .long @word_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xa5, @word_dst
- beq .Lnext10
- fail
-.Lnext10:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm16_to_indirect:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:16, @erd
- mov.l #word_dst, er1
- mov.w #0xdead:16, @er1 ; Register indirect operand
-;;; .word 0x7974
-;;; .word 0xdead
-;;; .word 0x0100
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xdead, @word_dst
- beq .Lnext11
- fail
-.Lnext11:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm16_to_postinc: ; post-increment from imm16 to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:16, @erd+
- mov.l #word_dst, er1
- mov.w #0xdead:16, @er1+ ; Imm16, register post-incr operands.
-;;; .word 0x7974
-;;; .word 0xdead
-;;; .word 0x8100
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst+2, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xdead, @word_dst
- beq .Lnext12
- fail
-.Lnext12:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm16_to_postdec: ; post-decrement from imm16 to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:16, @erd-
- mov.l #word_dst, er1
- mov.w #0xdead:16, @er1- ; Imm16, register post-decr operands.
-;;; .word 0x7974
-;;; .word 0xdead
-;;; .word 0xa100
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst-2, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xdead, @word_dst
- beq .Lnext13
- fail
-.Lnext13:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm16_to_preinc: ; pre-increment from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:16, @+erd
- mov.l #word_dst-2, er1
- mov.w #0xdead:16, @+er1 ; Imm16, register pre-incr operands
-;;; .word 0x7974
-;;; .word 0xdead
-;;; .word 0x9100
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xdead, @word_dst
- beq .Lnext14
- fail
-.Lnext14:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm16_to_predec: ; pre-decrement from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:16, @-erd
- mov.l #word_dst+2, er1
- mov.w #0xdead:16, @-er1 ; Imm16, register pre-decr operands
-;;; .word 0x7974
-;;; .word 0xdead
-;;; .word 0xb100
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xdead, @word_dst
- beq .Lnext15
- fail
-.Lnext15:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm16_to_disp2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:16, @(dd:2, erd)
- mov.l #word_dst-3, er1
- mov.w #0xdead:16, @(3:2, er1) ; Imm16, reg plus 2-bit disp. operand
-;;; .word 0x7974
-;;; .word 0xdead
-;;; .word 0x3100
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst-3, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xdead, @word_dst
- beq .Lnext16
- fail
-.Lnext16:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm16_to_disp16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:16, @(dd:16, erd)
- mov.l #word_dst-4, er1
- mov.w #0xdead:16, @(4:16, er1) ; Register plus 16-bit disp. operand
-;;; .word 0x7974
-;;; .word 0xdead
-;;; .word 0xc100
-;;; .word 0x0004
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst-4, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xdead, @word_dst
- beq .Lnext17
- fail
-.Lnext17:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm16_to_disp32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:16, @(dd:32, erd)
- mov.l #word_dst-8, er1
- mov.w #0xdead:16, @(8:32, er1) ; Register plus 32-bit disp. operand
-;;; .word 0x7974
-;;; .word 0xdead
-;;; .word 0xc900
-;;; .long 8
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst-8, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xdead, @word_dst
- beq .Lnext18
- fail
-.Lnext18:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm16_to_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:16, @aa:16
- mov.w #0xdead:16, @word_dst:16 ; 16-bit address-direct operand
-;;; .word 0x7974
-;;; .word 0xdead
-;;; .word 0x4000
-;;; .word @word_dst
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xdead, @word_dst
- beq .Lnext19
- fail
-.Lnext19:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_imm16_to_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w #xx:16, @aa:32
- mov.w #0xdead:16, @word_dst:32 ; 32-bit address-direct operand
-;;; .word 0x7974
-;;; .word 0xdead
-;;; .word 0x4800
-;;; .long @word_dst
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w #0xdead, @word_dst
- beq .Lnext20
- fail
-.Lnext20:
- mov.w #0, @word_dst ; zero it again for the next use.
-.endif
-
- ;;
- ;; Move word from register source
- ;;
-
-mov_w_reg16_to_reg16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w ers, erd
- mov.w #0x1234, r1
- mov.w r1, r0 ; Register 16-bit operand
-;;; .word 0x0d10
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
- test_h_gr16 0x1234 r0
- test_h_gr16 0x1234 r1 ; mov src unchanged
-.if (sim_cpu)
- test_h_gr32 0xa5a51234 er0
- test_h_gr32 0xa5a51234 er1 ; mov src unchanged
-.endif
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-
-mov_w_reg16_to_indirect:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w ers, @erd
- mov.l #word_dst, er1
- mov.w r0, @er1 ; Register indirect operand
-;;; .word 0x6990
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.w #0, r0
- mov.w @word_dst, r0
- cmp.w r2, r0
- beq .Lnext44
- fail
-.Lnext44:
- mov.w #0, r0
- mov.w r0, @word_dst ; zero it again for the next use.
-
-.if (sim_cpu == h8sx)
-mov_w_reg16_to_postinc: ; post-increment from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w ers, @erd+
- mov.l #word_dst, er1
- mov.w r0, @er1+ ; Register post-incr operand
-;;; .word 0x0153
-;;; .word 0x6d90
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst+2, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w r2, @word_dst
- beq .Lnext49
- fail
-.Lnext49:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_reg16_to_postdec: ; post-decrement from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w ers, @erd-
- mov.l #word_dst, er1
- mov.w r0, @er1- ; Register post-decr operand
-;;; .word 0x0151
-;;; .word 0x6d90
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst-2, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w r2, @word_dst
- beq .Lnext50
- fail
-.Lnext50:
- mov.w #0, @word_dst ; zero it again for the next use.
-
-mov_w_reg16_to_preinc: ; pre-increment from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w ers, @+erd
- mov.l #word_dst-2, er1
- mov.w r0, @+er1 ; Register pre-incr operand
-;;; .word 0x0152
-;;; .word 0x6d90
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w r2, @word_dst
- beq .Lnext51
- fail
-.Lnext51:
- mov.w #0, @word_dst ; zero it again for the next use.
-.endif
-
-mov_w_reg16_to_predec: ; pre-decrement from register to mem
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w ers, @-erd
- mov.l #word_dst+2, er1
- mov.w r0, @-er1 ; Register pre-decr operand
-;;; .word 0x6d90
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.w #0, r0
- mov.w @word_dst, r0
- cmp.w r2, r0
- beq .Lnext48
- fail
-.Lnext48:
- mov.w #0, r0
- mov.w r0, @word_dst ; zero it again for the next use.
-
-.if (sim_cpu == h8sx)
-mov_w_reg16_to_disp2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w ers, @(dd:2, erd)
- mov.l #word_dst-3, er1
- mov.w r0, @(3:2, er1) ; Register plus 2-bit disp. operand
-;;; .word 0x0153
-;;; .word 0x6990
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_h_gr32 word_dst-3, er1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w r2, @word_dst
- beq .Lnext52
- fail
-.Lnext52:
- mov.w #0, @word_dst ; zero it again for the next use.
-.endif
-
-mov_w_reg16_to_disp16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w ers, @(dd:16, erd)
- mov.l #word_dst-4, er1
- mov.w r0, @(4:16, er1) ; Register plus 16-bit disp. operand
-;;; .word 0x6f90
-;;; .word 0x0004
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 word_dst-4, er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.w #0, r0
- mov.w @word_dst, r0
- cmp.w r2, r0
- beq .Lnext45
- fail
-.Lnext45:
- mov.w #0, r0
- mov.w r0, @word_dst ; zero it again for the next use.
-
-mov_w_reg16_to_disp32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w ers, @(dd:32, erd)
- mov.l #word_dst-8, er1
- mov.w r0, @(8:32, er1) ; Register plus 32-bit disp. operand
-;;; .word 0x7810
-;;; .word 0x6ba0
-;;; .long 8
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 word_dst-8, er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.w #0, r0
- mov.w @word_dst, r0
- cmp.w r2, r0
- beq .Lnext46
- fail
-.Lnext46:
- mov.w #0, r0
- mov.w r0, @word_dst ; zero it again for the next use.
-
-mov_w_reg16_to_abs16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w ers, @aa:16
- mov.w r0, @word_dst:16 ; 16-bit address-direct operand
-;;; .word 0x6b80
-;;; .word @word_dst
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.w #0, r0
- mov.w @word_dst, r0
- cmp.w r0, r1
- beq .Lnext41
- fail
-.Lnext41:
- mov.w #0, r0
- mov.w r0, @word_dst ; zero it again for the next use.
-
-mov_w_reg16_to_abs32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w ers, @aa:32
- mov.w r0, @word_dst:32 ; 32-bit address-direct operand
-;;; .word 0x6ba0
-;;; .long @word_dst
-
- ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_neg_set
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure _ALL_ general regs not disturbed
- test_gr_a5a5 1 ; (first, because on h8/300 we must use one
- test_gr_a5a5 2 ; to examine the destination memory).
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- mov.w #0, r0
- mov.w @word_dst, r0
- cmp.w r0, r1
- beq .Lnext42
- fail
-.Lnext42:
- mov.w #0, r0
- mov.w r0, @word_dst ; zero it again for the next use.
-
- ;;
- ;; Move word to register destination.
- ;;
-
-mov_w_indirect_to_reg16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @ers, rd
- mov.l #word_src, er1
- mov.w @er1, r0 ; Register indirect operand
-;;; .word 0x6910
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a57777 er0
-
- test_h_gr32 word_src, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_w_postinc_to_reg16: ; post-increment from mem to register
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @ers+, rd
-
- mov.l #word_src, er1
- mov.w @er1+, r0 ; Register post-incr operand
-;;; .word 0x6d10
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a57777 er0
-
- test_h_gr32 word_src+2, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-mov_w_postdec_to_reg16: ; post-decrement from mem to register
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @ers-, rd
-
- mov.l #word_src, er1
- mov.w @er1-, r0 ; Register post-decr operand
-;;; .word 0x0152
-;;; .word 0x6d10
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a57777 er0
-
- test_h_gr32 word_src-2, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_w_preinc_to_reg16: ; pre-increment from mem to register
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @+ers, rd
-
- mov.l #word_src-2, er1
- mov.w @+er1, r0 ; Register pre-incr operand
-;;; .word 0x0151
-;;; .word 0x6d10
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a57777 er0
-
- test_h_gr32 word_src, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_w_predec_to_reg16: ; pre-decrement from mem to register
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @-ers, rd
-
- mov.l #word_src+2, er1
- mov.w @-er1, r0 ; Register pre-decr operand
-;;; .word 0x0153
-;;; .word 0x6d10
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a57777 er0
-
- test_h_gr32 word_src, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-
-mov_w_disp2_to_reg16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @(dd:2, ers), rd
- mov.l #word_src-1, er1
- mov.w @(1:2, er1), r0 ; Register plus 2-bit disp. operand
-;;; .word 0x0151
-;;; .word 0x6910
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a57777 er0 ; mov result: a5a5 | 7777
-
- test_h_gr32 word_src-1, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-mov_w_disp16_to_reg16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @(dd:16, ers), rd
- mov.l #word_src+0x1234, er1
- mov.w @(-0x1234:16, er1), r0 ; Register plus 16-bit disp. operand
-;;; .word 0x6f10
-;;; .word -0x1234
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a57777 er0 ; mov result: a5a5 | 7777
-
- test_h_gr32 word_src+0x1234, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_w_disp32_to_reg16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @(dd:32, ers), rd
- mov.l #word_src+65536, er1
- mov.w @(-65536:32, er1), r0 ; Register plus 32-bit disp. operand
-;;; .word 0x7810
-;;; .word 0x6b20
-;;; .long -65536
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a57777 er0 ; mov result: a5a5 | 7777
-
- test_h_gr32 word_src+65536, er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_w_abs16_to_reg16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @aa:16, rd
- mov.w @word_src:16, r0 ; 16-bit address-direct operand
-;;; .word 0x6b00
-;;; .word @word_src
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a57777 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-mov_w_abs32_to_reg16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @aa:32, rd
- mov.w @word_src:32, r0 ; 32-bit address-direct operand
-;;; .word 0x6b20
-;;; .long @word_src
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_h_gr32 0xa5a57777 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-
- ;;
- ;; Move word from memory to memory
- ;;
-
-mov_w_indirect_to_indirect: ; reg indirect, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @ers, @erd
-
- mov.l #word_src, er1
- mov.l #word_dst, er0
- mov.w @er1, @er0
-;;; .word 0x0158
-;;; .word 0x0100
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 word_dst er0
- test_h_gr32 word_src er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w @word_src, @word_dst
- beq .Lnext55
- fail
-.Lnext55:
- ;; Now clear the destination location, and verify that.
- mov.w #0, @word_dst
- cmp.w @word_src, @word_dst
- bne .Lnext56
- fail
-.Lnext56: ; OK, pass on.
-
-mov_w_postinc_to_postinc: ; reg post-increment, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @ers+, @erd+
-
- mov.l #word_src, er1
- mov.l #word_dst, er0
- mov.w @er1+, @er0+
-;;; .word 0x0158
-;;; .word 0x8180
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 word_dst+2 er0
- test_h_gr32 word_src+2 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w @word_src, @word_dst
- beq .Lnext65
- fail
-.Lnext65:
- ;; Now clear the destination location, and verify that.
- mov.w #0, @word_dst
- cmp.w @word_src, @word_dst
- bne .Lnext66
- fail
-.Lnext66: ; OK, pass on.
-
-mov_w_postdec_to_postdec: ; reg post-decrement, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @ers-, @erd-
-
- mov.l #word_src, er1
- mov.l #word_dst, er0
- mov.w @er1-, @er0-
-;;; .word 0x0158
-;;; .word 0xa1a0
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 word_dst-2 er0
- test_h_gr32 word_src-2 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w @word_src, @word_dst
- beq .Lnext75
- fail
-.Lnext75:
- ;; Now clear the destination location, and verify that.
- mov.w #0, @word_dst
- cmp.w @word_src, @word_dst
- bne .Lnext76
- fail
-.Lnext76: ; OK, pass on.
-
-mov_w_preinc_to_preinc: ; reg pre-increment, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @+ers, @+erd
-
- mov.l #word_src-2, er1
- mov.l #word_dst-2, er0
- mov.w @+er1, @+er0
-;;; .word 0x0158
-;;; .word 0x9190
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 word_dst er0
- test_h_gr32 word_src er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w @word_src, @word_dst
- beq .Lnext85
- fail
-.Lnext85:
- ;; Now clear the destination location, and verify that.
- mov.w #0, @word_dst
- cmp.w @word_src, @word_dst
- bne .Lnext86
- fail
-.Lnext86: ; OK, pass on.
-
-mov_w_predec_to_predec: ; reg pre-decrement, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @-ers, @-erd
-
- mov.l #word_src+2, er1
- mov.l #word_dst+2, er0
- mov.w @-er1, @-er0
-;;; .word 0x0158
-;;; .word 0xb1b0
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 word_dst er0
- test_h_gr32 word_src er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w @word_src, @word_dst
- beq .Lnext95
- fail
-.Lnext95:
- ;; Now clear the destination location, and verify that.
- mov.w #0, @word_dst
- cmp.w @word_src, @word_dst
- bne .Lnext96
- fail
-.Lnext96: ; OK, pass on.
-
-mov_w_disp2_to_disp2: ; reg 2-bit disp, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @(dd:2, ers), @(dd:2, erd)
-
- mov.l #word_src-1, er1
- mov.l #word_dst-2, er0
- mov.w @(1:2, er1), @(2:2, er0)
-;;; .word 0x0158
-;;; .word 0x1120
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 word_dst-2 er0
- test_h_gr32 word_src-1 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w @word_src, @word_dst
- beq .Lnext105
- fail
-.Lnext105:
- ;; Now clear the destination location, and verify that.
- mov.w #0, @word_dst
- cmp.w @word_src, @word_dst
- bne .Lnext106
- fail
-.Lnext106: ; OK, pass on.
-
-mov_w_disp16_to_disp16: ; reg 16-bit disp, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @(dd:16, ers), @(dd:16, erd)
-
- mov.l #word_src-1, er1
- mov.l #word_dst-2, er0
- mov.w @(1:16, er1), @(2:16, er0)
-;;; .word 0x0158
-;;; .word 0xc1c0
-;;; .word 0x0001
-;;; .word 0x0002
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 word_dst-2 er0
- test_h_gr32 word_src-1 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w @word_src, @word_dst
- beq .Lnext115
- fail
-.Lnext115:
- ;; Now clear the destination location, and verify that.
- mov.w #0, @word_dst
- cmp.w @word_src, @word_dst
- bne .Lnext116
- fail
-.Lnext116: ; OK, pass on.
-
-mov_w_disp32_to_disp32: ; reg 32-bit disp, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @(dd:32, ers), @(dd:32, erd)
-
- mov.l #word_src-1, er1
- mov.l #word_dst-2, er0
- mov.w @(1:32, er1), @(2:32, er0)
-;;; .word 0x0158
-;;; .word 0xc9c8
-;;; .long 1
-;;; .long 2
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- ;; Verify the affected registers.
-
- test_h_gr32 word_dst-2 er0
- test_h_gr32 word_src-1 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w @word_src, @word_dst
- beq .Lnext125
- fail
-.Lnext125:
- ;; Now clear the destination location, and verify that.
- mov.w #0, @word_dst
- cmp.w @word_src, @word_dst
- bne .Lnext126
- fail
-.Lnext126: ; OK, pass on.
-
-mov_w_abs16_to_abs16: ; 16-bit absolute addr, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @aa:16, @aa:16
-
- mov.w @word_src:16, @word_dst:16
-;;; .word 0x0158
-;;; .word 0x4040
-;;; .word @word_src
-;;; .word @word_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
-
- test_gr_a5a5 0 ; Make sure *NO* general registers are changed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w @word_src, @word_dst
- beq .Lnext135
- fail
-.Lnext135:
- ;; Now clear the destination location, and verify that.
- mov.w #0, @word_dst
- cmp.w @word_src, @word_dst
- bne .Lnext136
- fail
-.Lnext136: ; OK, pass on.
-
-mov_w_abs32_to_abs32: ; 32-bit absolute addr, memory to memory
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; mov.w @aa:32, @aa:32
-
- mov.w @word_src:32, @word_dst:32
-;;; .word 0x0158
-;;; .word 0x4848
-;;; .long @word_src
-;;; .long @word_dst
-
- ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
- test_neg_clear
- test_zero_clear
- test_ovf_clear
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure *NO* general registers are changed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the move to memory.
- cmp.w @word_src, @word_dst
- beq .Lnext145
- fail
-.Lnext145:
- ;; Now clear the destination location, and verify that.
- mov.w #0, @word_dst
- cmp.w @word_src, @word_dst
- bne .Lnext146
- fail
-.Lnext146: ; OK, pass on.
-
-
-.endif
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/movmd.s b/sim/testsuite/sim/h8300/movmd.s
deleted file mode 100644
index fefdc33..0000000
--- a/sim/testsuite/sim/h8300/movmd.s
+++ /dev/null
@@ -1,129 +0,0 @@
-# Hitachi H8 testcase 'movmd'
-# mach(): h8sx
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- .data
-byte_src:
- .byte 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
-byte_dst:
- .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-
- .align 2
-word_src:
- .word 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
-word_dst:
- .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-
- .align 4
-long_src:
- .long 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
-long_dst:
- .long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-
- start
-.if (sim_cpu == h8sx)
-movmd_b:#
- # Byte block transfer
- #
- set_grs_a5a5
-
- mov #byte_src, er5
- mov #byte_dst, er6
- mov #10, r4
- set_ccr_zero
- ;; movmd.b
- movmd.b
-;;; .word 0x7b94
-
- test_cc_clear
- test_gr_a5a5 0
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_h_gr32 0xa5a50000 er4
- test_h_gr32 byte_src+10 er5
- test_h_gr32 byte_dst+10 er6
- test_gr_a5a5 7
-
- #
- # Now make sure exactly 10 bytes were transferred.
- memcmp byte_src byte_dst 10
- cmp.b #0, @byte_dst+10
- beq .L0
- fail
-.L0:
-
-movmd_w:#
- # Word block transfer
- #
- set_grs_a5a5
-
- mov #word_src, er5
- mov #word_dst, er6
- mov #10, r4
- set_ccr_zero
- ;; movmd.w
- movmd.w
-;;; .word 0x7ba4
-
- test_cc_clear
- test_gr_a5a5 0
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_h_gr32 0xa5a50000 er4
- test_h_gr32 word_src+20 er5
- test_h_gr32 word_dst+20 er6
- test_gr_a5a5 7
-
- #
- # Now make sure exactly 20 bytes were transferred.
- memcmp word_src word_dst 20
- cmp.w #0, @word_dst+20
- beq .L1
- fail
-.L1:
-
-movmd_l:#
- # Long block transfer
- #
- set_grs_a5a5
-
- mov #long_src, er5
- mov #long_dst, er6
- mov #10, r4
- set_ccr_zero
- ;; movmd.b
- movmd.l
-;;; .word 0x7bb4
-
- test_cc_clear
- test_gr_a5a5 0
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_h_gr32 0xa5a50000 er4
- test_h_gr32 long_src+40 er5
- test_h_gr32 long_dst+40 er6
- test_gr_a5a5 7
-
- #
- # Now make sure exactly 40 bytes were transferred.
- memcmp long_src long_dst 40
- cmp.l #0, @long_dst+40
- beq .L2
- fail
-.L2:
-
-.endif
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/movsd.s b/sim/testsuite/sim/h8300/movsd.s
deleted file mode 100644
index 2689c53..0000000
--- a/sim/testsuite/sim/h8300/movsd.s
+++ /dev/null
@@ -1,100 +0,0 @@
-# Hitachi H8 testcase 'movsd'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- .data
-src: .byte 'h', 'e', 'l', 'l', 'o', 0
-dst1: .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-dst2: .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-
- start
-.if (sim_cpu == h8sx)
-movsd_n:#
- # In this test, the transfer will stop after n bytes.
- #
- set_grs_a5a5
-
- mov #src, er5
- mov #dst1, er6
- mov #4, r4
- set_ccr_zero
- ;; movsd.b disp:16
- movsd.b fail1:16
-;;; .word 0x7b84
-;;; .word 0x02
-
- bra pass1
-fail1: fail
-pass1: test_cc_clear
- test_gr_a5a5 0
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_h_gr32 0xa5a50000 er4
- test_h_gr32 src+4 er5
- test_h_gr32 dst1+4 er6
- test_gr_a5a5 7
-
- #
- # Now make sure exactly 4 bytes were transferred.
- cmp.b @src, @dst1
- bne fail1:16
- cmp.b @src+1, @dst1+1
- bne fail1:16
- cmp.b @src+2, @dst1+2
- bne fail1:16
- cmp.b @src+3, @dst1+3
- bne fail1:16
- cmp.b @src+4, @dst1+4
- beq fail1:16
-
-movsd_s:#
- # In this test, the entire null-terminated string is transferred.
- #
- set_grs_a5a5
-
- mov #src, er5
- mov #dst2, er6
- mov #8, r4
- set_ccr_zero
- ;; movsd.b disp:16
- movsd.b pass2:16
-;;; .word 0x7b84
-;;; .word 0x10
-
-fail2: fail
-pass2: test_cc_clear
- test_gr_a5a5 0
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_h_gr32 0xa5a50002 er4
- test_h_gr32 src+6 er5
- test_h_gr32 dst2+6 er6
- test_gr_a5a5 7
- #
- # Now make sure 5 bytes were transferred, and the 6th is zero.
- cmp.b @src, @dst2
- bne fail2:16
- cmp.b @src+1, @dst2+1
- bne fail2:16
- cmp.b @src+2, @dst2+2
- bne fail2:16
- cmp.b @src+3, @dst2+3
- bne fail2:16
- cmp.b @src+4, @dst2+4
- bne fail2:16
- cmp.b #0, @dst2+5
- bne fail2:16
-.endif
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/neg.s b/sim/testsuite/sim/h8300/neg.s
deleted file mode 100644
index efb0313..0000000
--- a/sim/testsuite/sim/h8300/neg.s
+++ /dev/null
@@ -1,1022 +0,0 @@
-# Hitachi H8 testcase 'neg.b, neg.w, neg.l'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- # Instructions tested:
- # neg.b rd ; 1 7 8 rd
- # neg.b @erd ; 7 d rd ???? 1 7 8 ignore
- # neg.b @erd+ ; 0 1 7 4 6 c rd 1??? 1 7 8 ignore
- # neg.b @erd- ; 0 1 7 6 6 c rd 1??? 1 7 8 ignore
- # neg.b @+erd ; 0 1 7 5 6 c rd 1??? 1 7 8 ignore
- # neg.b @-erd ; 0 1 7 7 6 c rd 1??? 1 7 8 ignore
- # neg.b @(d:2, erd) ; 0 1 7 01dd 6 8 rd 8 1 7 8 ignore
- # neg.b @(d:16, erd) ; 0 1 7 4 6 e rd 1??? dd:16 1 7 8 ignore
- # neg.b @(d:32, erd) ; 7 8 rd 4 6 a 2 1??? dd:32 1 7 8 ignore
- # neg.b @aa:16 ; 6 a 1 1??? aa:16 1 7 8 ignore
- # neg.b @aa:32 ; 6 a 3 1??? aa:32 1 7 8 ignore
- # word operations
- # long operations
- #
- # Coming soon:
- # neg.b @aa:8 ; 7 f aaaaaaaa 1 7 8 ignore
- #
-
- .data
-byte_dest: .byte 0xa5
- .align 2
-word_dest: .word 0xa5a5
- .align 4
-long_dest: .long 0xa5a5a5a5
- start
-
- #
- # Note: apparently carry is set for neg of anything except zero.
- #
-
- #
- # 8-bit byte operations
- #
-
-neg_b_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.b Rd
- neg r0l ; 8-bit register
-;;; .word 0x1788
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.b #0x5b, r0l ; result of "neg 0xa5"
- beq .Lbrd
- fail
-.Lbrd:
- test_h_gr16 0xa55b r0 ; r0 changed by 'neg'
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a55b er0 ; er0 changed by 'neg'
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-neg_b_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.b @eRd
- mov #byte_dest, er0
- neg.b @er0 ; register indirect operand
-;;; .word 0x7d00
-;;; .word 0x1780
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0 ; er0 still contains address
- cmp.b #0x5b, @er0 ; memory contents changed
- beq .Lbind
- fail
-.Lbind:
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_b_rdpostinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.b @eRd+
- mov #byte_dest, er0 ; register post-increment operand
- neg.b @er0+
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0x1780
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 byte_dest+1 er0 ; er0 contains address plus one
- cmp.b #0xa5, @-er0
- beq .Lbpostinc
- fail
-.Lbpostinc:
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_b_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.b @eRd-
- mov #byte_dest, er0 ; register post-decrement operand
- neg.b @er0-
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0x1780
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-1 er0 ; er0 contains address minus one
- cmp.b #0x5b, @+er0
- beq .Lbpostdec
- fail
-.Lbpostdec:
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_b_rdpreinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.b @+eRd
- mov #byte_dest-1, er0
- neg.b @+er0 ; reg pre-increment operand
-;;; .word 0x0175
-;;; .word 0x6c08
-;;; .word 0x1780
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.b #0xa5, @er0
- beq .Lbpreinc
- fail
-.Lbpreinc:
- test_h_gr32 byte_dest er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_b_rdpredec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.b @-eRd
- mov #byte_dest+1, er0
- neg.b @-er0 ; reg pre-decr operand
-;;; .word 0x0177
-;;; .word 0x6c08
-;;; .word 0x1780
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.b #0x5b, @er0
- beq .Lbpredec
- fail
-.Lbpredec:
- test_h_gr32 byte_dest er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_b_disp2dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.b @(dd:2, erd)
- mov #byte_dest-1, er0
- neg.b @(1:2, er0) ; reg plus 2-bit displacement
-;;; .word 0x0175
-;;; .word 0x6808
-;;; .word 0x1780
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.b #0xa5, @+er0
- beq .Lbdisp2
- fail
-.Lbdisp2:
- test_h_gr32 byte_dest er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_b_disp16dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.b @(dd:16, erd)
- mov #byte_dest+100, er0
- neg.b @(-100:16, er0) ; reg plus 16-bit displacement
-;;; .word 0x0174
-;;; .word 0x6e08
-;;; .word -100
-;;; .word 0x1780
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.b #0x5b, @byte_dest
- beq .Lbdisp16
- fail
-.Lbdisp16:
- test_h_gr32 byte_dest+100 er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_b_disp32dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.b @(dd:32, erd)
- mov #byte_dest-0xfffff, er0
- neg.b @(0xfffff:32, er0) ; reg plus 32-bit displacement
-;;; .word 0x7804
-;;; .word 0x6a28
-;;; .long 0xfffff
-;;; .word 0x1780
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.b #0xa5, @byte_dest
- beq .Lbdisp32
- fail
-.Lbdisp32:
- test_h_gr32 byte_dest-0xfffff er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_b_abs16dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.b @aa:16
- neg.b @byte_dest:16 ; 16-bit absolute address
-;;; .word 0x6a18
-;;; .word byte_dest
-;;; .word 0x1780
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.b #0x5b, @byte_dest
- beq .Lbabs16
- fail
-.Lbabs16:
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_b_abs32dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.b @aa:32
- neg.b @byte_dest:32 ; 32-bit absolute address
-;;; .word 0x6a38
-;;; .long byte_dest
-;;; .word 0x1780
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.b #0xa5, @byte_dest
- beq .Lbabs32
- fail
-.Lbabs32:
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
- #
- # 16-bit word operations
- #
-
-.if (sim_cpu) ; any except plain-vanilla h8/300
-neg_w_reg16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.w Rd
- neg r1 ; 16-bit register operand
-;;; .word 0x1791
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.w #0x5a5b, r1 ; result of "neg 0xa5a5"
- beq .Lwrd
- fail
-.Lwrd:
- test_h_gr32 0xa5a55a5b er1 ; er1 changed by 'neg'
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-neg_w_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.w @eRd
- mov #word_dest, er1
- neg.w @er1 ; register indirect operand
-;;; .word 0x0154
-;;; .word 0x6d18
-;;; .word 0x1790
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.w #0x5a5b, @word_dest ; memory contents changed
- beq .Lwind
- fail
-.Lwind:
- test_h_gr32 word_dest er1 ; er1 still contains address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_w_rdpostinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.w @eRd+
- mov #word_dest, er1 ; register post-increment operand
- neg.w @er1+
-;;; .word 0x0154
-;;; .word 0x6d18
-;;; .word 0x1790
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.w #0xa5a5, @word_dest
- beq .Lwpostinc
- fail
-.Lwpostinc:
- test_h_gr32 word_dest+2 er1 ; er1 contains address plus two
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_w_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.w @eRd-
- mov #word_dest, er1
- neg.w @er1-
-;;; .word 0x0156
-;;; .word 0x6d18
-;;; .word 0x1790
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.w #0x5a5b, @word_dest
- beq .Lwpostdec
- fail
-.Lwpostdec:
- test_h_gr32 word_dest-2 er1 ; er1 contains address minus two
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_w_rdpreinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.w @+eRd
- mov #word_dest-2, er1
- neg.w @+er1 ; reg pre-increment operand
-;;; .word 0x0155
-;;; .word 0x6d18
-;;; .word 0x1790
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.w #0xa5a5, @word_dest
- beq .Lwpreinc
- fail
-.Lwpreinc:
- test_h_gr32 word_dest er1 ; er1 contains destination address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_w_rdpredec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.w @-eRd
- mov #word_dest+2, er1
- neg.w @-er1 ; reg pre-decr operand
-;;; .word 0x0157
-;;; .word 0x6d18
-;;; .word 0x1790
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.w #0x5a5b, @word_dest
- beq .Lwpredec
- fail
-.Lwpredec:
- test_h_gr32 word_dest er1 ; er1 contains destination address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_w_disp2dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.w @(dd:2, erd)
- mov #word_dest-1, er1
- neg.w @(1:2, er1) ; reg plus 2-bit displacement
-;;; .word 0x0155
-;;; .word 0x6918
-;;; .word 0x1790
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.w #0xa5a5, @word_dest
- beq .Lwdisp2
- fail
-.Lwdisp2:
- test_h_gr32 word_dest-1 er1 ; er1 contains address minus one
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_w_disp16dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.w @(dd:16, erd)
- mov #word_dest+100, er1
- neg.w @(-100:16, er1) ; reg plus 16-bit displacement
-;;; .word 0x0154
-;;; .word 0x6f18
-;;; .word -100
-;;; .word 0x1790
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.w #0x5a5b, @word_dest
- beq .Lwdisp16
- fail
-.Lwdisp16:
- test_h_gr32 word_dest+100 er1 ; er1 contains destination address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_w_disp32dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.w @(dd:32, erd)
- mov #word_dest-0xfffff, er1
- neg.w @(0xfffff:32, er1) ; reg plus 32-bit displacement
-;;; .word 0x7814
-;;; .word 0x6b28
-;;; .long 0xfffff
-;;; .word 0x1790
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.w #0xa5a5, @word_dest
- beq .Lwdisp32
- fail
-.Lwdisp32:
- test_h_gr32 word_dest-0xfffff er1 ; er1 contains destination address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_w_abs16dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.w @aa:16
- neg.w @word_dest:16 ; 16-bit absolute address
-;;; .word 0x6b18
-;;; .word word_dest
-;;; .word 0x1790
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.w #0x5a5b, @word_dest
- beq .Lwabs16
- fail
-.Lwabs16:
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_w_abs32dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.w @aa:32
- neg.w @word_dest:32 ; 32-bit absolute address
-;;; .word 0x6b38
-;;; .long word_dest
-;;; .word 0x1790
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.w #0xa5a5, @word_dest
- beq .Lwabs32
- fail
-.Lwabs32:
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.endif ; h8sx
-.endif ; h8/300
-
- #
- # 32-bit word operations
- #
-
-.if (sim_cpu) ; any except plain-vanilla h8/300
-neg_l_reg16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.l eRd
- neg er1 ; 32-bit register operand
-;;; .word 0x17b1
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.l #0x5a5a5a5b, er1 ; result of "neg 0xa5a5a5a5"
- beq .Llrd
- fail
-.Llrd:
- test_h_gr32 0x5a5a5a5b er1 ; er1 changed by 'neg'
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-neg_l_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.l @eRd
- mov #long_dest, er1
- neg.l @er1 ; register indirect operand
-;;; .word 0x0104
-;;; .word 0x6d18
-;;; .word 0x17b0
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.l #0x5a5a5a5b, @long_dest ; memory contents changed
- beq .Llind
- fail
-.Llind:
- test_h_gr32 long_dest er1 ; er1 still contains address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_l_rdpostinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.l @eRd+
- mov #long_dest, er1 ; register post-increment operand
- neg.l @er1+
-;;; .word 0x0104
-;;; .word 0x6d18
-;;; .word 0x17b0
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.l #0xa5a5a5a5, @long_dest
- beq .Llpostinc
- fail
-.Llpostinc:
- test_h_gr32 long_dest+4 er1 ; er1 contains address plus two
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_l_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.l @eRd-
- mov #long_dest, er1
- neg.l @er1-
-;;; .word 0x0106
-;;; .word 0x6d18
-;;; .word 0x17b0
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.l #0x5a5a5a5b, @long_dest
- beq .Llpostdec
- fail
-.Llpostdec:
- test_h_gr32 long_dest-4 er1 ; er1 contains address minus two
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_l_rdpreinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.l @+eRd
- mov #long_dest-4, er1
- neg.l @+er1 ; reg pre-increment operand
-;;; .word 0x0105
-;;; .word 0x6d18
-;;; .word 0x17b0
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.l #0xa5a5a5a5, @long_dest
- beq .Llpreinc
- fail
-.Llpreinc:
- test_h_gr32 long_dest er1 ; er1 contains destination address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_l_rdpredec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.l @-eRd
- mov #long_dest+4, er1
- neg.l @-er1 ; reg pre-decr operand
-;;; .word 0x0107
-;;; .word 0x6d18
-;;; .word 0x17b0
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.l #0x5a5a5a5b, @long_dest
- beq .Llpredec
- fail
-.Llpredec:
- test_h_gr32 long_dest er1 ; er1 contains destination address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_l_disp2dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.l @(dd:2, erd)
- mov #long_dest-1, er1
- neg.l @(1:2, er1) ; reg plus 2-bit displacement
-;;; .word 0x0105
-;;; .word 0x6918
-;;; .word 0x17b0
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.l #0xa5a5a5a5, @long_dest
- beq .Lldisp2
- fail
-.Lldisp2:
- test_h_gr32 long_dest-1 er1 ; er1 contains address minus one
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_l_disp16dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.l @(dd:16, erd)
- mov #long_dest+100, er1
- neg.l @(-100:16, er1) ; reg plus 16-bit displacement
-;;; .word 0x0104
-;;; .word 0x6f18
-;;; .word -100
-;;; .word 0x17b0
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.l #0x5a5a5a5b, @long_dest
- beq .Lldisp16
- fail
-.Lldisp16:
- test_h_gr32 long_dest+100 er1 ; er1 contains destination address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_l_disp32dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.l @(dd:32, erd)
- mov #long_dest-0xfffff, er1
- neg.l @(0xfffff:32, er1) ; reg plus 32-bit displacement
-;;; .word 0x7894
-;;; .word 0x6b28
-;;; .long 0xfffff
-;;; .word 0x17b0
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.l #0xa5a5a5a5, @long_dest
- beq .Lldisp32
- fail
-.Lldisp32:
- test_h_gr32 long_dest-0xfffff er1 ; er1 contains destination address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_l_abs16dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.l @aa:16
- neg.l @long_dest:16 ; 16-bit absolute address
-;;; .word 0x0104
-;;; .word 0x6b08
-;;; .word long_dest
-;;; .word 0x17b0
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.l #0x5a5a5a5b, @long_dest
- beq .Llabs16
- fail
-.Llabs16:
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-neg_l_abs32dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; neg.l @aa:32
- neg.l @long_dest:32 ; 32-bit absolute address
-;;; .word 0x0104
-;;; .word 0x6b28
-;;; .long long_dest
-;;; .word 0x17b0
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.l #0xa5a5a5a5, @long_dest
- beq .Llabs32
- fail
-.Llabs32:
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.endif ; h8sx
-.endif ; h8/300
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/nop.s b/sim/testsuite/sim/h8300/nop.s
deleted file mode 100644
index 1d63b67..0000000
--- a/sim/testsuite/sim/h8300/nop.s
+++ /dev/null
@@ -1,26 +0,0 @@
-# Hitachi H8 testcase 'nop'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
-nop: set_grs_a5a5
- set_ccr_zero
-
- nop
-
- test_cc_clear
- test_grs_a5a5
-
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/not.s b/sim/testsuite/sim/h8300/not.s
deleted file mode 100644
index d96f323..0000000
--- a/sim/testsuite/sim/h8300/not.s
+++ /dev/null
@@ -1,1009 +0,0 @@
-# Hitachi H8 testcase 'not.b, not.w, not.l'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- # Instructions tested:
- # not.b rd ; 1 7 0 rd
- # not.b @erd ; 7 d rd ???? 1 7 0 ignore
- # not.b @erd+ ; 0 1 7 4 6 c rd 1??? 1 7 0 ignore
- # not.b @erd- ; 0 1 7 6 6 c rd 1??? 1 7 0 ignore
- # not.b @+erd ; 0 1 7 5 6 c rd 1??? 1 7 0 ignore
- # not.b @-erd ; 0 1 7 7 6 c rd 1??? 1 7 0 ignore
- # not.b @(d:2, erd) ; 0 1 7 01dd 6 8 rd 8 1 7 0 ignore
- # not.b @(d:16, erd) ; 0 1 7 4 6 e rd 1??? dd:16 1 7 0 ignore
- # not.b @(d:32, erd) ; 7 8 rd 4 6 a 2 1??? dd:32 1 7 0 ignore
- # not.b @aa:16 ; 6 a 1 1??? aa:16 1 7 0 ignore
- # not.b @aa:32 ; 6 a 3 1??? aa:32 1 7 0 ignore
- # word operations
- # long operations
- #
- # Coming soon:
- # not.b @aa:8 ; 7 f aaaaaaaa 1 7 0 ignore
- #
-
-.data
-byte_dest: .byte 0xa5
- .align 2
-word_dest: .word 0xa5a5
- .align 4
-long_dest: .long 0xa5a5a5a5
- start
-
- #
- # 8-bit byte operations
- #
-
-not_b_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; not.b Rd
- not r0l ; 8-bit register
-;;; .word 0x1708
-
- cmp.b #0x5a, r0l ; result of "not 0xa5"
- beq .Lbrd
- fail
-.Lbrd:
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa55a r0 ; r0 changed by 'not'
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a55a er0 ; er0 changed by 'not'
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-not_b_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.b @eRd
- mov #byte_dest, er0
- not.b @er0 ; register indirect operand
-;;; .word 0x7d00
-;;; .word 0x1700
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0 ; er0 still contains address
- cmp.b #0x5a:8, @er0 ; memory contents changed
- beq .Lbind
- fail
-.Lbind:
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_b_rdpostinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.b @eRd+
- mov #byte_dest, er0 ; register post-increment operand
- not.b @er0+
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0x1700
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 byte_dest+1 er0 ; er0 contains address plus one
- cmp.b #0xa5:8, @-er0
- beq .Lbpostinc
- fail
-.Lbpostinc:
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_b_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.b @eRd-
- mov #byte_dest, er0 ; register post-decrement operand
- not.b @er0-
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0x1700
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-1 er0 ; er0 contains address minus one
- cmp.b #0x5a:8, @+er0
-;;; .word 0x0175
-;;; .word 0x6c08
-;;; .word 0xa05a
- beq .Lbpostdec
- fail
-.Lbpostdec:
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_b_rdpreinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.b @+eRd
- mov #byte_dest-1, er0
- not.b @+er0 ; reg pre-increment operand
-;;; .word 0x0175
-;;; .word 0x6c08
-;;; .word 0x1700
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.b #0xa5:8, @er0
- beq .Lbpreinc
- fail
-.Lbpreinc:
- test_h_gr32 byte_dest er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_b_rdpredec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.b @-eRd
- mov #byte_dest+1, er0
- not.b @-er0 ; reg pre-decr operand
-;;; .word 0x0177
-;;; .word 0x6c08
-;;; .word 0x1700
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.b #0x5a:8, @er0
- beq .Lbpredec
- fail
-.Lbpredec:
- test_h_gr32 byte_dest er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_b_disp2dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.b @(dd:2, erd)
- mov #byte_dest-1, er0
- not.b @(1:2, er0) ; reg plus 2-bit displacement
-;;; .word 0x0175
-;;; .word 0x6808
-;;; .word 0x1700
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.b #0xa5:8, @+er0
- beq .Lbdisp2
- fail
-.Lbdisp2:
- test_h_gr32 byte_dest er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_b_disp16dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.b @(dd:16, erd)
- mov #byte_dest+100, er0
- not.b @(-100:16, er0) ; reg plus 16-bit displacement
-;;; .word 0x0174
-;;; .word 0x6e08
-;;; .word -100
-;;; .word 0x1700
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.b #0x5a:8, @byte_dest
- beq .Lbdisp16
- fail
-.Lbdisp16:
- test_h_gr32 byte_dest+100 er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_b_disp32dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.b @(dd:32, erd)
- mov #byte_dest-0xfffff, er0
- not.b @(0xfffff:32, er0) ; reg plus 32-bit displacement
-;;; .word 0x7804
-;;; .word 0x6a28
-;;; .long 0xfffff
-;;; .word 0x1700
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.b #0xa5:8, @byte_dest
- beq .Lbdisp32
- fail
-.Lbdisp32:
- test_h_gr32 byte_dest-0xfffff er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_b_abs16dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.b @aa:16
- not.b @byte_dest:16 ; 16-bit absolute address
-;;; .word 0x6a18
-;;; .word byte_dest
-;;; .word 0x1700
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.b #0x5a:8, @byte_dest
- beq .Lbabs16
- fail
-.Lbabs16:
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_b_abs32dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.b @aa:32
- not.b @byte_dest:32 ; 32-bit absolute address
-;;; .word 0x6a38
-;;; .long byte_dest
-;;; .word 0x1700
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.b #0xa5:8, @byte_dest
- beq .Lbabs32
- fail
-.Lbabs32:
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
- #
- # 16-bit word operations
- #
-
-.if (sim_cpu) ; any except plain-vanilla h8/300
-not_w_reg16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; not.w Rd
- not r1 ; 16-bit register operand
-;;; .word 0x1711
-
- cmp.w #0x5a5a, r1 ; result of "not 0xa5a5"
- beq .Lwrd
- fail
-.Lwrd:
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr32 0xa5a55a5a er1 ; er1 changed by 'not'
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-not_w_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.w @eRd
- mov #word_dest, er1
- not.w @er1 ; register indirect operand
-;;; .word 0x0154
-;;; .word 0x6d18
-;;; .word 0x1710
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.w #0x5a5a, @word_dest ; memory contents changed
- beq .Lwind
- fail
-.Lwind:
- test_h_gr32 word_dest er1 ; er1 still contains address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_w_rdpostinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.w @eRd+
- mov #word_dest, er1 ; register post-increment operand
- not.w @er1+
-;;; .word 0x0154
-;;; .word 0x6d18
-;;; .word 0x1710
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.w #0xa5a5, @word_dest
- beq .Lwpostinc
- fail
-.Lwpostinc:
- test_h_gr32 word_dest+2 er1 ; er1 contains address plus two
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_w_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.w @eRd-
- mov #word_dest, er1
- not.w @er1-
-;;; .word 0x0156
-;;; .word 0x6d18
-;;; .word 0x1710
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.w #0x5a5a, @word_dest
- beq .Lwpostdec
- fail
-.Lwpostdec:
- test_h_gr32 word_dest-2 er1 ; er1 contains address minus two
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_w_rdpreinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.w @+eRd
- mov #word_dest-2, er1
- not.w @+er1 ; reg pre-increment operand
-;;; .word 0x0155
-;;; .word 0x6d18
-;;; .word 0x1710
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.w #0xa5a5, @word_dest
- beq .Lwpreinc
- fail
-.Lwpreinc:
- test_h_gr32 word_dest er1 ; er1 contains destination address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_w_rdpredec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.w @-eRd
- mov #word_dest+2, er1
- not.w @-er1 ; reg pre-decr operand
-;;; .word 0x0157
-;;; .word 0x6d18
-;;; .word 0x1710
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.w #0x5a5a, @word_dest
- beq .Lwpredec
- fail
-.Lwpredec:
- test_h_gr32 word_dest er1 ; er1 contains destination address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_w_disp2dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.w @(dd:2, erd)
- mov #word_dest-1, er1
- not.w @(1:2, er1) ; reg plus 2-bit displacement
-;;; .word 0x0155
-;;; .word 0x6918
-;;; .word 0x1710
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.w #0xa5a5, @word_dest
- beq .Lwdisp2
- fail
-.Lwdisp2:
- test_h_gr32 word_dest-1 er1 ; er1 contains address minus one
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_w_disp16dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.w @(dd:16, erd)
- mov #word_dest+100, er1
- not.w @(-100:16, er1) ; reg plus 16-bit displacement
-;;; .word 0x0154
-;;; .word 0x6f18
-;;; .word -100
-;;; .word 0x1710
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.w #0x5a5a, @word_dest
- beq .Lwdisp16
- fail
-.Lwdisp16:
- test_h_gr32 word_dest+100 er1 ; er1 contains destination address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_w_disp32dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.w @(dd:32, erd)
- mov #word_dest-0xfffff, er1
- not.w @(0xfffff:32, er1) ; reg plus 32-bit displacement
-;;; .word 0x7814
-;;; .word 0x6b28
-;;; .long 0xfffff
-;;; .word 0x1710
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.w #0xa5a5, @word_dest
- beq .Lwdisp32
- fail
-.Lwdisp32:
- test_h_gr32 word_dest-0xfffff er1 ; er1 contains destination address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_w_abs16dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.w @aa:16
- not.w @word_dest:16 ; 16-bit absolute address
-;;; .word 0x6b18
-;;; .word word_dest
-;;; .word 0x1710
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.w #0x5a5a, @word_dest
- beq .Lwabs16
- fail
-.Lwabs16:
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_w_abs32dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.w @aa:32
- not.w @word_dest:32 ; 32-bit absolute address
-;;; .word 0x6b38
-;;; .long word_dest
-;;; .word 0x1710
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.w #0xa5a5, @word_dest
- beq .Lwabs32
- fail
-.Lwabs32:
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.endif ; h8sx
-.endif ; h8/300
-
- #
- # 32-bit word operations
- #
-
-.if (sim_cpu) ; any except plain-vanilla h8/300
-not_l_reg16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; not.l eRd
- not er1 ; 32-bit register operand
-;;; .word 0x1731
-
- cmp.l #0x5a5a5a5a, er1 ; result of "not 0xa5a5a5a5"
- beq .Llrd
- fail
-.Llrd:
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr32 0x5a5a5a5a er1 ; er1 changed by 'not'
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-not_l_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.l @eRd
- mov #long_dest, er1
- not.l @er1 ; register indirect operand
-;;; .word 0x0104
-;;; .word 0x6d18
-;;; .word 0x1730
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.l #0x5a5a5a5a, @long_dest ; memory contents changed
- beq .Llind
- fail
-.Llind:
- test_h_gr32 long_dest er1 ; er1 still contains address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_l_rdpostinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.l @eRd+
- mov #long_dest, er1 ; register post-increment operand
- not.l @er1+
-;;; .word 0x0104
-;;; .word 0x6d18
-;;; .word 0x1730
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.l #0xa5a5a5a5, @long_dest
- beq .Llpostinc
- fail
-.Llpostinc:
- test_h_gr32 long_dest+4 er1 ; er1 contains address plus two
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_l_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.l @eRd-
- mov #long_dest, er1
- not.l @er1-
-;;; .word 0x0106
-;;; .word 0x6d18
-;;; .word 0x1730
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.l #0x5a5a5a5a, @long_dest
- beq .Llpostdec
- fail
-.Llpostdec:
- test_h_gr32 long_dest-4 er1 ; er1 contains address minus two
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_l_rdpreinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.l @+eRd
- mov #long_dest-4, er1
- not.l @+er1 ; reg pre-increment operand
-;;; .word 0x0105
-;;; .word 0x6d18
-;;; .word 0x1730
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.l #0xa5a5a5a5, @long_dest
- beq .Llpreinc
- fail
-.Llpreinc:
- test_h_gr32 long_dest er1 ; er1 contains destination address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_l_rdpredec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.l @-eRd
- mov #long_dest+4, er1
- not.l @-er1 ; reg pre-decr operand
-;;; .word 0x0107
-;;; .word 0x6d18
-;;; .word 0x1730
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.l #0x5a5a5a5a, @long_dest
- beq .Llpredec
- fail
-.Llpredec:
- test_h_gr32 long_dest er1 ; er1 contains destination address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_l_disp2dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.l @(dd:2, erd)
- mov #long_dest-1, er1
- not.l @(1:2, er1) ; reg plus 2-bit displacement
-;;; .word 0x0105
-;;; .word 0x6918
-;;; .word 0x1730
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.l #0xa5a5a5a5, @long_dest
- beq .Lldisp2
- fail
-.Lldisp2:
- test_h_gr32 long_dest-1 er1 ; er1 contains address minus one
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_l_disp16dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.l @(dd:16, erd)
- mov #long_dest+100, er1
- not.l @(-100:16, er1) ; reg plus 16-bit displacement
-;;; .word 0x0104
-;;; .word 0x6f18
-;;; .word -100
-;;; .word 0x1730
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.l #0x5a5a5a5a, @long_dest
- beq .Lldisp16
- fail
-.Lldisp16:
- test_h_gr32 long_dest+100 er1 ; er1 contains destination address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_l_disp32dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.l @(dd:32, erd)
- mov #long_dest-0xfffff, er1
- not.l @(0xfffff:32, er1) ; reg plus 32-bit displacement
-;;; .word 0x7894
-;;; .word 0x6b28
-;;; .long 0xfffff
-;;; .word 0x1730
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.l #0xa5a5a5a5, @long_dest
- beq .Lldisp32
- fail
-.Lldisp32:
- test_h_gr32 long_dest-0xfffff er1 ; er1 contains destination address
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_l_abs16dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.l @aa:16
- not.l @long_dest:16 ; 16-bit absolute address
-;;; .word 0x0104
-;;; .word 0x6b08
-;;; .word long_dest
-;;; .word 0x1730
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- cmp.l #0x5a5a5a5a, @long_dest
- beq .Llabs16
- fail
-.Llabs16:
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-not_l_abs32dst:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; not.l @aa:32
- not.l @long_dest:32 ; 32-bit absolute address
-;;; .word 0x0104
-;;; .word 0x6b28
-;;; .long long_dest
-;;; .word 0x1730
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- cmp.l #0xa5a5a5a5, @long_dest
- beq .Llabs32
- fail
-.Llabs32:
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.endif ; h8sx
-.endif ; h8/300
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/or.b.s b/sim/testsuite/sim/h8300/or.b.s
deleted file mode 100644
index fd06f08..0000000
--- a/sim/testsuite/sim/h8300/or.b.s
+++ /dev/null
@@ -1,493 +0,0 @@
-# Hitachi H8 testcase 'or.b'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- # Instructions tested:
- # or.b #xx:8, rd ; c rd xxxxxxxx
- # or.b #xx:8, @erd ; 7 d rd ???? c ???? xxxxxxxx
- # or.b #xx:8, @erd+ ; 0 1 7 4 6 c rd 1??? c ???? xxxxxxxx
- # or.b #xx:8, @erd- ; 0 1 7 6 6 c rd 1??? c ???? xxxxxxxx
- # or.b #xx:8, @+erd ; 0 1 7 5 6 c rd 1??? c ???? xxxxxxxx
- # or.b #xx:8, @-erd ; 0 1 7 7 6 c rd 1??? c ???? xxxxxxxx
- # or.b rs, rd ; 1 4 rs rd
- # or.b reg8, @erd ; 7 d rd ???? 1 4 rs ????
- # or.b reg8, @erd+ ; 0 1 7 9 8 rd 4 rs
- # or.b reg8, @erd- ; 0 1 7 9 a rd 4 rs
- # or.b reg8, @+erd ; 0 1 7 9 9 rd 4 rs
- # or.b reg8, @-erd ; 0 1 7 9 b rd 4 rs
- #
-
- # Coming soon:
- # ...
-
-.data
-pre_byte: .byte 0
-byte_dest: .byte 0xa5
-post_byte: .byte 0
-
- start
-
-or_b_imm8_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; or.b #xx:8,Rd
- or.b #0xaa, r0l ; Immediate 8-bit src, reg8 dest
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa5af r0 ; or result: a5 | aa
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a5af er0 ; or result: a5 | aa
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-or_b_imm8_rdind:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; or.b #xx:8,@eRd
- mov #byte_dest, er0
- or.b #0xaa:8, @er0 ; Immediate 8-bit src, reg indirect dst
-;;; .word 0x7d00
-;;; .word 0xc0aa
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 byte_dest, er0 ; er0 still contains address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the or to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xaf, r0l
- beq .L1
- fail
-.L1:
-
-or_b_imm8_rdpostinc:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; or.b #xx:8,@eRd+
- mov #byte_dest, er0
- or.b #0x55:8, @er0+ ; Immediate 8-bit src, reg post-incr dest
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0xc055
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 post_byte, er0 ; er0 contains address plus one
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the or to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xf5, r0l
- beq .L2
- fail
-.L2:
-
-or_b_imm8_rdpostdec:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; or.b #xx:8,@eRd-
- mov #byte_dest, er0
- or.b #0xaa:8, @er0- ; Immediate 8-bit src, reg post-decr dest
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0xc0aa
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 pre_byte, er0 ; er0 contains address minus one
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the or to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xaf, r0l
- beq .L3
- fail
-.L3:
-
-or_b_imm8_rdpreinc:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; or.b #xx:8,@+eRd
- mov #pre_byte, er0
- or.b #0x55:8, @+er0 ; Immediate 8-bit src, reg pre-incr dest
-;;; .word 0x0175
-;;; .word 0x6c08
-;;; .word 0xc055
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 byte_dest, er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the or to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xf5, r0l
- beq .L4
- fail
-.L4:
-
-or_b_imm8_rdpredec:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; or.b #xx:8,@-eRd
- mov #post_byte, er0
- or.b #0xaa:8, @-er0 ; Immediate 8-bit src, reg pre-decr dest
-;;; .word 0x0177
-;;; .word 0x6c08
-;;; .word 0xc0aa
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 byte_dest, er0 ; er0 contains destination address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the or to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xaf, r0l
- beq .L5
- fail
-.L5:
-
-
-.endif
-
-or_b_reg8_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; or.b Rs,Rd
- mov.b #0xaa, r0h
- or.b r0h, r0l ; Reg8 src, reg8 dest
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xaaaf r0 ; or result: a5 | aa
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5aaaf er0 ; or result: a5 | aa
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-or_b_reg8_rdind:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; or.b rs8,@eRd ; or reg8 to register indirect
- mov #byte_dest, er0
- mov #0xaa, r1l
- or.b r1l, @er0 ; reg8 src, reg indirect dest
-;;; .word 0x7d00
-;;; .word 0x1490
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0 ; er0 still contains address
- test_h_gr32 0xa5a5a5aa er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the or to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xaf, r0l
- beq .L6
- fail
-.L6:
-
-or_b_reg8_rdpostinc:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; or.b rs8,@eRd+ ; or reg8 to register indirect post-increment
- mov #byte_dest, er0
- mov #0x55, r1l
- or.b r1l, @er0+ ; reg8 src, reg post-incr dest
-;;; .word 0x0179
-;;; .word 0x8049
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 post_byte er0 ; er0 contains address plus one
- test_h_gr32 0xa5a5a555 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the or to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xf5, r0l
- beq .L7
- fail
-.L7:
-
-or_b_reg8_rdpostdec:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; or.b rs8,@eRd- ; or reg8 to register indirect post-decrement
- mov #byte_dest, er0
- mov #0xaa, r1l
- or.b r1l, @er0- ; reg8 src, reg post-decr dest
-;;; .word 0x0179
-;;; .word 0xa049
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 pre_byte er0 ; er0 contains address minus one
- test_h_gr32 0xa5a5a5aa er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the or to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xaf, r0l
- beq .L8
- fail
-.L8:
-
-or_b_reg8_rdpreinc:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; or.b rs8,@+eRd ; or reg8 to register indirect pre-increment
- mov #pre_byte, er0
- mov #0x55, r1l
- or.b r1l, @+er0 ; reg8 src, reg pre-incr dest
-;;; .word 0x0179
-;;; .word 0x9049
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0 ; er0 contains destination address
- test_h_gr32 0xa5a5a555 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the or to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xf5, r0l
- beq .L9
- fail
-.L9:
-
-or_b_reg8_rdpredec:
- mov #byte_dest, er0
- mov.b #0xa5, r1l
- mov.b r1l, @er0
-
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; or.b rs8,@-eRd ; or reg8 to register indirect pre-decrement
- mov #post_byte, er0
- mov #0xaa, r1l
- or.b r1l, @-er0 ; reg8 src, reg pre-decr dest
-;;; .word 0x0179
-;;; .word 0xb049
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0 ; er0 contains destination address
- test_h_gr32 0xa5a5a5aa er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the or to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xaf, r0l
- beq .L10
- fail
-.L10:
-
-orc_imm8_ccr:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; orc #xx:8,ccr
-
- test_neg_clear
- orc #0x8, ccr ; Immediate 8-bit operand (neg flag)
- test_neg_set
-
- test_zero_clear
- orc #0x4, ccr ; Immediate 8-bit operand (zero flag)
- test_zero_set
-
- test_ovf_clear
- orc #0x2, ccr ; Immediate 8-bit operand (overflow flag)
- test_ovf_set
-
- test_carry_clear
- orc #0x1, ccr ; Immediate 8-bit operand (carry flag)
- test_carry_set
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.endif
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/or.l.s b/sim/testsuite/sim/h8300/or.l.s
deleted file mode 100644
index 03c3f22..0000000
--- a/sim/testsuite/sim/h8300/or.l.s
+++ /dev/null
@@ -1,77 +0,0 @@
-# Hitachi H8 testcase 'or.l'
-# mach(): h8300h h8300s h8sx
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
-.if (sim_cpu == h8sx) ; 16-bit immediate is only available on sx.
-or_l_imm16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; or.l #xx:16,Rd
- or.l #0xaaaa, er0 ; Immediate 16-bit operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr32 0xa5a5afaf er0 ; or result: a5a5a5a5 | aaaa
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-or_l_imm32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; or.l #xx:32,Rd
- or.l #0xaaaaaaaa, er0 ; Immediate 32-bit operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr32 0xafafafaf er0 ; or result: a5a5a5a5 | aaaaaaaa
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-or_l_reg:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; or.l Rs,Rd
- mov.l #0xaaaaaaaa, er1
- or.l er1, er0 ; Register operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr32 0xafafafaf er0 ; or result: a5a5a5a5 | aaaaaaaa
- test_h_gr32 0xaaaaaaaa er1 ; Make sure er1 is unchanged
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/or.w.s b/sim/testsuite/sim/h8300/or.w.s
deleted file mode 100644
index 32eef45..0000000
--- a/sim/testsuite/sim/h8300/or.w.s
+++ /dev/null
@@ -1,61 +0,0 @@
-# Hitachi H8 testcase 'or.w'
-# mach(): h8300h h8300s h8sx
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
-or_w_imm16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; or.w #xx:16,Rd
- or.w #0xaaaa, r0 ; Immediate 16-bit operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xafaf r0 ; or result: a5a5 | aaaa
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5afaf er0 ; or result: a5a5 | aaaa
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-or_w_reg:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; or.w Rs,Rd
- mov.w #0xaaaa, r1
- or.w r1, r0 ; Register operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xafaf r0 ; or result: a5a5 | aaaa
- test_h_gr16 0xaaaa r1 ; Make sure r1 is unchanged
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5afaf er0 ; or result: a5a5 | aaaa
- test_h_gr32 0xa5a5aaaa er1 ; Make sure er1 is unchanged
-.endif
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/rotl.s b/sim/testsuite/sim/h8300/rotl.s
deleted file mode 100644
index 088345d..0000000
--- a/sim/testsuite/sim/h8300/rotl.s
+++ /dev/null
@@ -1,1212 +0,0 @@
-# Hitachi H8 testcase 'rotl'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
- .data
-byte_dest: .byte 0xa5
- .align 2
-word_dest: .word 0xa5a5
- .align 4
-long_dest: .long 0xa5a5a5a5
-
- .text
-
-rotl_b_reg8_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotl.b r0l ; shift left arithmetic by one
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- test_h_gr16 0xa54b r0 ; 1010 0101 -> 0100 1011
-.if (sim_cpu)
- test_h_gr32 0xa5a5a54b er0
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-rotl_b_ind_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- rotl.b @er0 ; shift right arithmetic by one, indirect
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0100 1011
- cmp.b #0x4b, @byte_dest
- beq .Lbind1
- fail
-.Lbind1:
- mov.b #0xa5, @byte_dest
-
-rotl_b_indexb16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.b #5, r0l
- rotl.b @(byte_dest-5:16, r0.b) ; indexed byte/byte
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xa5a5a505 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0100 1011
- cmp.b #0x4b, @byte_dest
- beq .Lbindexb161
- fail
-.Lbindexb161:
- mov.b #0xa5, @byte_dest
-
-rotl_b_indexw16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.w #256, r0
- rotl.b @(byte_dest-256:16, r0.w) ; indexed byte/word
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xa5a50100 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0100 1011
- cmp.b #0x4b, @byte_dest
- beq .Lbindexw161
- fail
-.Lbindexw161:
- mov.b #0xa5, @byte_dest
-
-rotl_b_indexl16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.l #0xffffffff, er0
- rotl.b @(byte_dest+1:16, er0.l) ; indexed byte/long
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xffffffff er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0100 1011
- cmp.b #0x4b, @byte_dest
- beq .Lbindexl161
- fail
-.Lbindexl161:
- mov.b #0xa5, @byte_dest
-
-rotl_b_indexb32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.b #5, r1l
- rotl.b @(byte_dest-5:32, r1.b) ; indexed byte/byte
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xa5a5a505 er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0100 1011
- cmp.b #0x4b, @byte_dest
- beq .Lbindexb321
- fail
-.Lbindexb321:
- mov.b #0xa5, @byte_dest
-
-rotl_b_indexw32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.w #256, r1
- rotl.b @(byte_dest-256:32, r1.w) ; indexed byte/word
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xa5a50100 er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0100 1011
- cmp.b #0x4b, @byte_dest
- beq .Lbindexw321
- fail
-.Lbindexw321:
- mov.b #0xa5, @byte_dest
-
-rotl_b_indexl32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.l #0xffffffff, er1
- rotl.b @(byte_dest+1:32, er1.l) ; indexed byte/long
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xffffffff er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0100 1011
- cmp.b #0x4b, @byte_dest
- beq .Lbindexl321
- fail
-.Lbindexl321:
- mov.b #0xa5, @byte_dest
-
-.endif
-
-rotl_b_reg8_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotl.b #2, r0l ; shift left arithmetic by two
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr16 0xa596 r0 ; 1010 0101 -> 1001 0110
-.if (sim_cpu)
- test_h_gr32 0xa5a5a596 er0
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-rotl_b_ind_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- rotl.b #2, @er0 ; shift right arithmetic by one, indirect
-
- test_carry_clear ; H=0 N=1 Z=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1001 0110
- cmp.b #0x96, @byte_dest
- beq .Lbind2
- fail
-.Lbind2:
- mov.b #0xa5, @byte_dest
-
-rotl_b_indexb16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.b #5, r0l
- rotl.b #2, @(byte_dest-5:16, r0.b) ; indexed byte/byte
-
- test_carry_clear ; H=0 N=1 Z=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xa5a5a505 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1001 0110
- cmp.b #0x96, @byte_dest
- beq .Lbindexb162
- fail
-.Lbindexb162:
- mov.b #0xa5, @byte_dest
-
-rotl_b_indexw16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.w #256, r0
- rotl.b #2, @(byte_dest-256:16, r0.w) ; indexed byte/word
-
- test_carry_clear ; H=0 N=1 Z=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xa5a50100 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1001 0110
- cmp.b #0x96, @byte_dest
- beq .Lbindexw162
- fail
-.Lbindexw162:
- mov.b #0xa5, @byte_dest
-
-rotl_b_indexl16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.l #0xffffffff, er0
- rotl.b #2, @(byte_dest+1:16, er0.l) ; indexed byte/long
-
- test_carry_clear ; H=0 N=1 Z=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xffffffff er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1001 0110
- cmp.b #0x96, @byte_dest
- beq .Lbindexl162
- fail
-.Lbindexl162:
- mov.b #0xa5, @byte_dest
-
-rotl_b_indexb32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.b #5, r1l
- rotl.b #2, @(byte_dest-5:32, r1.b) ; indexed byte/byte
-
- test_carry_clear ; H=0 N=1 Z=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xa5a5a505 er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1001 0110
- cmp.b #0x96, @byte_dest
- beq .Lbindexb322
- fail
-.Lbindexb322:
- mov.b #0xa5, @byte_dest
-
-rotl_b_indexw32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.w #256, r1
- rotl.b #2, @(byte_dest-256:32, r1.w) ; indexed byte/word
-
- test_carry_clear ; H=0 N=1 Z=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xa5a50100 er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1001 0110
- cmp.b #0x96, @byte_dest
- beq .Lbindexw322
- fail
-.Lbindexw322:
- mov.b #0xa5, @byte_dest
-
-rotl_b_indexl32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.l #0xffffffff, er1
- rotl.b #2, @(byte_dest+1:32, er1.l) ; indexed byte/long
-
- test_carry_clear ; H=0 N=1 Z=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xffffffff er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1001 0110
- cmp.b #0x96, @byte_dest
- beq .Lbindexl322
- fail
-.Lbindexl322:
- mov.b #0xa5, @byte_dest
-
-.endif
-
-.if (sim_cpu) ; Not available in h8300 mode
-rotl_w_reg16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotl.w r0 ; shift left arithmetic by one
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- test_h_gr16 0x4b4b r0 ; 1010 0101 1010 0101 -> 0100 1011 0100 1011
- test_h_gr32 0xa5a54b4b er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-rotl_w_indexb16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.b #5, r0l
- rotl.w @(word_dest-10:16, r0.b) ; indexed word/byte
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xa5a5a505 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0100 1011 0100 1011
- cmp.w #0x4b4b, @word_dest
- beq .Lwindexb161
- fail
-.Lwindexb161:
- mov.w #0xa5a5, @word_dest
-
-rotl_w_indexw16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.w #256, r0
- rotl.w @(word_dest-512:16, r0.w) ; indexed word/word
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xa5a50100 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0100 1011 0100 1011
- cmp.w #0x4b4b, @word_dest
- beq .Lwindexw161
- fail
-.Lwindexw161:
- mov.w #0xa5a5, @word_dest
-
-rotl_w_indexl16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.l #0xffffffff, er0
- rotl.w @(word_dest+2:16, er0.l) ; indexed word/long
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xffffffff er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0100 1011 0100 1011
- cmp.w #0x4b4b, @word_dest
- beq .Lwindexl161
- fail
-.Lwindexl161:
- mov.w #0xa5a5, @word_dest
-
-rotl_w_indexb32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.b #5, r1l
- rotl.w @(word_dest-10:32, r1.b) ; indexed word/byte
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xa5a5a505 er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0100 1011 0100 1011
- cmp.w #0x4b4b, @word_dest
- beq .Lwindexb321
- fail
-.Lwindexb321:
- mov.w #0xa5a5, @word_dest
-
-rotl_w_indexw32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.w #256, r1
- rotl.w @(word_dest-512:32, r1.w) ; indexed word/byte
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xa5a50100 er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0100 1011 0100 1011
- cmp.w #0x4b4b, @word_dest
- beq .Lwindexw321
- fail
-.Lwindexw321:
- mov.w #0xa5a5, @word_dest
-
-rotl_w_indexl32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.l #0xffffffff, er1
- rotl.w @(word_dest+2:32, er1.l) ; indexed word/byte
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xffffffff er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0100 1011 0100 1011
- cmp.w #0x4b4b, @word_dest
- beq .Lwindexl321
- fail
-.Lwindexl321:
- mov.w #0xa5a5, @word_dest
-.endif
-
-rotl_w_reg16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotl.w #2, r0 ; shift left arithmetic by two
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
- test_h_gr16 0x9696 r0 ; 1010 0101 1010 0101 -> 1001 0110 1001 0110
- test_h_gr32 0xa5a59696 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-rotl_w_indexb16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.b #5, r0l
- rotl.w #2, @(word_dest-10:16, r0.b) ; indexed word/byte
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xa5a5a505 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1001 0110 1001 0110
- cmp.w #0x9696, @word_dest
- beq .Lwindexb162
- fail
-.Lwindexb162:
- mov.w #0xa5a5, @word_dest
-
-rotl_w_indexw16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.w #256, r0
- rotl.w #2, @(word_dest-512:16, r0.w) ; indexed word/word
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xa5a50100 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1001 0110 1001 0110
- cmp.w #0x9696, @word_dest
- beq .Lwindexw162
- fail
-.Lwindexw162:
- mov.w #0xa5a5, @word_dest
-
-rotl_w_indexl16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.l #0xffffffff, er0
- rotl.w #2, @(word_dest+2:16, er0.l) ; indexed word/long
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xffffffff er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1001 0110 1001 0110
- cmp.w #0x9696, @word_dest
- beq .Lwindexl162
- fail
-.Lwindexl162:
- mov.w #0xa5a5, @word_dest
-
-rotl_w_indexb32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.b #5, r1l
- rotl.w #2, @(word_dest-10:32, r1.b) ; indexed word/byte
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xa5a5a505 er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1001 0110 1001 0110
- cmp.w #0x9696, @word_dest
- beq .Lwindexb322
- fail
-.Lwindexb322:
- mov.w #0xa5a5, @word_dest
-
-rotl_w_indexw32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.w #256, r1
- rotl.w #2, @(word_dest-512:32, r1.w) ; indexed word/byte
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xa5a50100 er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1001 0110 1001 0110
- cmp.w #0x9696, @word_dest
- beq .Lwindexw322
- fail
-.Lwindexw322:
- mov.w #0xa5a5, @word_dest
-
-rotl_w_indexl32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.l #0xffffffff, er1
- rotl.w #2, @(word_dest+2:32, er1.l) ; indexed word/byte
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xffffffff er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1001 0110 1001 0110
- cmp.w #0x9696, @word_dest
- beq .Lwindexl322
- fail
-.Lwindexl322:
- mov.w #0xa5a5, @word_dest
-.endif
-
-rotl_l_reg32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotl.l er0 ; shift left arithmetic by one
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0100 1011 0100 1011 0100 1011 0100 1011
- test_h_gr32 0x4b4b4b4b er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-rotl_l_indexb16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.b #5, r0l
- rotl.l @(long_dest-20:16, er0.b) ; indexed long/byte
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xa5a5a505 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0100 1011 0100 1011 0100 1011 0100 1011
- cmp.l #0x4b4b4b4b, @long_dest
- beq .Llindexb161
- fail
-.Llindexb161:
- mov.l #0xa5a5a5a5, @long_dest
-
-rotl_l_indexw16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.w #256, r0
- rotl.l @(long_dest-1024:16, er0.w) ; indexed long/word
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xa5a50100 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0100 1011 0100 1011 0100 1011 0100 1011
- cmp.l #0x4b4b4b4b, @long_dest
- beq .Llindexw161
- fail
-.Llindexw161:
- mov.l #0xa5a5a5a5, @long_dest
-
-rotl_l_indexl16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.l #0xffffffff, er0
- rotl.l @(long_dest+4:16, er0.l) ; indexed long/long
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xffffffff er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0100 1011 0100 1011 0100 1011 0100 1011
- cmp.l #0x4b4b4b4b, @long_dest
- beq .Llindexl161
- fail
-.Llindexl161:
- mov.l #0xa5a5a5a5, @long_dest
-
-rotl_l_indexb32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.b #5, r1l
- rotl.l @(long_dest-20:32, er1.b) ; indexed long/byte
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xa5a5a505 er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0100 1011 0100 1011 0100 1011 0100 1011
- cmp.l #0x4b4b4b4b, @long_dest
- beq .Llindexb321
- fail
-.Llindexb321:
- mov.l #0xa5a5a5a5, @long_dest
-
-rotl_l_indexw32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.w #256, r1
- rotl.l @(long_dest-1024:32, er1.w) ; indexed long/byte
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xa5a50100 er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0100 1011 0100 1011 0100 1011 0100 1011
- cmp.l #0x4b4b4b4b, @long_dest
- beq .Llindexw321
- fail
-.Llindexw321:
- mov.l #0xa5a5a5a5, @long_dest
-
-rotl_l_indexl32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.l #0xffffffff, er1
- rotl.l @(long_dest+4:32, er1.l) ; indexed long/byte
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 0xffffffff er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0100 1011 0100 1011 0100 1011 0100 1011
- cmp.l #0x4b4b4b4b, @long_dest
- beq .Llindexl321
- fail
-.Llindexl321:
- mov.l #0xa5a5a5a5, @long_dest
-.endif
-
-rotl_l_reg32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotl.l #2, er0 ; shift left arithmetic by two
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 1001 0110 1001 0110 1001 0110 1001 0110
- test_h_gr32 0x96969696 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-rotl_l_indexb16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.b #5, r0l
- rotl.l #2, @(long_dest-20:16, er0.b) ; indexed long/byte
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xa5a5a505 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 1001 0110 1001 0110 1001 0110 1001 0110
- cmp.l #0x96969696, @long_dest
- beq .Llindexb162
- fail
-.Llindexb162:
- mov.l #0xa5a5a5a5, @long_dest
-
-rotl_l_indexw16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.w #256, r0
- rotl.l #2, @(long_dest-1024:16, er0.w) ; indexed long/word
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xa5a50100 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 1001 0110 1001 0110 1001 0110 1001 0110
- cmp.l #0x96969696, @long_dest
- beq .Llindexw162
- fail
-.Llindexw162:
- mov.l #0xa5a5a5a5, @long_dest
-
-rotl_l_indexl16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.l #0xffffffff, er0
- rotl.l #2, @(long_dest+4:16, er0.l) ; indexed long/long
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xffffffff er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 1001 0110 1001 0110 1001 0110 1001 0110
- cmp.l #0x96969696, @long_dest
- beq .Llindexl162
- fail
-.Llindexl162:
- mov.l #0xa5a5a5a5, @long_dest
-
-rotl_l_indexb32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.b #5, r1l
- rotl.l #2, @(long_dest-20:32, er1.b) ; indexed long/byte
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xa5a5a505 er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 1001 0110 1001 0110 1001 0110 1001 0110
- cmp.l #0x96969696, @long_dest
- beq .Llindexb322
- fail
-.Llindexb322:
- mov.l #0xa5a5a5a5, @long_dest
-
-rotl_l_indexw32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.w #256, r1
- rotl.l #2, @(long_dest-1024:32, er1.w) ; indexed long/byte
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xa5a50100 er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 1001 0110 1001 0110 1001 0110 1001 0110
- cmp.l #0x96969696, @long_dest
- beq .Llindexw322
- fail
-.Llindexw322:
- mov.l #0xa5a5a5a5, @long_dest
-
-rotl_l_indexl32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov.l #0xffffffff, er1
- rotl.l #2, @(long_dest+4:32, er1.l) ; indexed long/byte
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 0xffffffff er1
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 1001 0110 1001 0110 1001 0110 1001 0110
- cmp.l #0x96969696, @long_dest
- beq .Llindexl322
- fail
-.Llindexl322:
- mov.l #0xa5a5a5a5, @long_dest
-.endif
-.endif
-
- pass
-
- exit 0
-
diff --git a/sim/testsuite/sim/h8300/rotr.s b/sim/testsuite/sim/h8300/rotr.s
deleted file mode 100644
index af5cba0..0000000
--- a/sim/testsuite/sim/h8300/rotr.s
+++ /dev/null
@@ -1,1802 +0,0 @@
-# Hitachi H8 testcase 'rotr'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
- .data
-byte_dest: .byte 0xa5
- .align 2
-word_dest: .word 0xa5a5
- .align 4
-long_dest: .long 0xa5a5a5a5
-
- .text
-
-rotr_b_reg8_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.b r0l ; shift right arithmetic by one
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr16 0xa5d2 r0 ; 1010 0101 -> 1101 0010
-.if (sim_cpu)
- test_h_gr32 0xa5a5a5d2 er0
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-rotr_b_ind_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- rotr.b @er0 ; shift right arithmetic by one, indirect
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbind1
- fail
-.Lbind1:
- mov.b #0xa5, @byte_dest
-
-rotr_b_postinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- rotr.b @er0+ ; shift right arithmetic by one, postinc
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest+1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbpostinc1
- fail
-.Lbpostinc1:
- mov.b #0xa5, @byte_dest
-
-rotr_b_postdec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- rotr.b @er0- ; shift right arithmetic by one, postdec
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest-1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbpostdec1
- fail
-.Lbpostdec1:
- mov.b #0xa5, @byte_dest
-
-rotr_b_preinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-1, er0
- rotr.b @+er0 ; shift right arithmetic by one, preinc
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbpreinc1
- fail
-.Lbpreinc1:
- mov.b #0xa5, @byte_dest
-
-rotr_b_predec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest+1, er0
- rotr.b @-er0 ; shift right arithmetic by one, predec
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbpredec1
- fail
-.Lbpredec1:
- mov.b #0xa5, @byte_dest
-
-rotr_b_disp2_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-2, er0
- rotr.b @(2:2, er0) ; shift right arithmetic by one, disp2
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbdisp21
- fail
-.Lbdisp21:
- mov.b #0xa5, @byte_dest
-
-rotr_b_disp16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-44, er0
- rotr.b @(44:16, er0) ; shift right arithmetic by one, disp16
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbdisp161
- fail
-.Lbdisp161:
- mov.b #0xa5, @byte_dest
-
-rotr_b_disp32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-666, er0
- rotr.b @(666:32, er0) ; shift right arithmetic by one, disp32
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbdisp321
- fail
-.Lbdisp321:
- mov.b #0xa5, @byte_dest
-
-rotr_b_abs16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.b @byte_dest:16 ; shift right arithmetic by one, abs16
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbabs161
- fail
-.Lbabs161:
- mov.b #0xa5, @byte_dest
-
-rotr_b_abs32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.b @byte_dest:32 ; shift right arithmetic by one, abs32
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbabs321
- fail
-.Lbabs321:
- mov.b #0xa5, @byte_dest
-.endif
-
-rotr_b_reg8_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.b #2, r0l ; shift right arithmetic by two
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- test_h_gr16 0xa569 r0 ; 1010 0101 -> 0110 1001
-.if (sim_cpu)
- test_h_gr32 0xa5a5a569 er0
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-rotr_b_ind_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- rotr.b #2, @er0 ; shift right arithmetic by two, indirect
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0110 1001
- cmp.b #0x69, @byte_dest
- beq .Lbind2
- fail
-.Lbind2:
- mov.b #0xa5, @byte_dest
-
-rotr_b_postinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- rotr.b #2, @er0+ ; shift right arithmetic by two, postinc
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest+1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0110 1001
- cmp.b #0x69, @byte_dest
- beq .Lbpostinc2
- fail
-.Lbpostinc2:
- mov.b #0xa5, @byte_dest
-
-rotr_b_postdec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- rotr.b #2, @er0- ; shift right arithmetic by two, postdec
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0110 1001
- cmp.b #0x69, @byte_dest
- beq .Lbpostdec2
- fail
-.Lbpostdec2:
- mov.b #0xa5, @byte_dest
-
-rotr_b_preinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-1, er0
- rotr.b #2, @+er0 ; shift right arithmetic by two, preinc
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0110 1001
- cmp.b #0x69, @byte_dest
- beq .Lbpreinc2
- fail
-.Lbpreinc2:
- mov.b #0xa5, @byte_dest
-
-rotr_b_predec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest+1, er0
- rotr.b #2, @-er0 ; shift right arithmetic by two, predec
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0110 1001
- cmp.b #0x69, @byte_dest
- beq .Lbpredec2
- fail
-.Lbpredec2:
- mov.b #0xa5, @byte_dest
-
-rotr_b_disp2_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-2, er0
- rotr.b #2, @(2:2, er0) ; shift right arithmetic by two, disp2
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0110 1001
- cmp.b #0x69, @byte_dest
- beq .Lbdisp22
- fail
-.Lbdisp22:
- mov.b #0xa5, @byte_dest
-
-rotr_b_disp16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-44, er0
- rotr.b #2, @(44:16, er0) ; shift right arithmetic by two, disp16
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0110 1001
- cmp.b #0x69, @byte_dest
- beq .Lbdisp162
- fail
-.Lbdisp162:
- mov.b #0xa5, @byte_dest
-
-rotr_b_disp32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-666, er0
- rotr.b #2, @(666:32, er0) ; shift right arithmetic by two, disp32
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0110 1001
- cmp.b #0x69, @byte_dest
- beq .Lbdisp322
- fail
-.Lbdisp322:
- mov.b #0xa5, @byte_dest
-
-rotr_b_abs16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.b #2, @byte_dest:16 ; shift right arithmetic by two, abs16
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0110 1001
- cmp.b #0x69, @byte_dest
- beq .Lbabs162
- fail
-.Lbabs162:
- mov.b #0xa5, @byte_dest
-
-rotr_b_abs32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.b #2, @byte_dest:32 ; shift right arithmetic by two, abs32
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0110 1001
- cmp.b #0x69, @byte_dest
- beq .Lbabs322
- fail
-.Lbabs322:
- mov.b #0xa5, @byte_dest
-.endif
-
-.if (sim_cpu) ; Not available in h8300 mode
-rotr_w_reg16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.w r0 ; shift right arithmetic by one
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
- test_h_gr16 0xd2d2 r0 ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- test_h_gr32 0xa5a5d2d2 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-rotr_w_ind_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- rotr.w @er0 ; shift right arithmetic by one, indirect
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwind1
- fail
-.Lwind1:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_postinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- rotr.w @er0+ ; shift right arithmetic by one, postinc
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest+2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwpostinc1
- fail
-.Lwpostinc1:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_postdec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- rotr.w @er0- ; shift right arithmetic by one, postdec
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwpostdec1
- fail
-.Lwpostdec1:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_preinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- rotr.w @+er0 ; shift right arithmetic by one, preinc
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwpreinc1
- fail
-.Lwpreinc1:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_predec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest+2, er0
- rotr.w @-er0 ; shift right arithmetic by one, predec
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwpredec1
- fail
-.Lwpredec1:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_disp2_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- rotr.w @(2:2, er0) ; shift right arithmetic by one, disp2
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwdisp21
- fail
-.Lwdisp21:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_disp16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-44, er0
- rotr.w @(44:16, er0) ; shift right arithmetic by one, disp16
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwdisp161
- fail
-.Lwdisp161:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_disp32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-666, er0
- rotr.w @(666:32, er0) ; shift right arithmetic by one, disp32
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwdisp321
- fail
-.Lwdisp321:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_abs16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.w @word_dest:16 ; shift right arithmetic by one, abs16
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwabs161
- fail
-.Lwabs161:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_abs32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.w @word_dest:32 ; shift right arithmetic by one, abs32
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwabs321
- fail
-.Lwabs321:
- mov.w #0xa5a5, @word_dest
-.endif
-
-rotr_w_reg16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.w #2, r0 ; shift right arithmetic by two
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr16 0x6969 r0 ; 1010 0101 1010 0101 -> 0110 1001 0110 1001
- test_h_gr32 0xa5a56969 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-rotr_w_ind_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- rotr.w #2, @er0 ; shift right arithmetic by two, indirect
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0110 1001 0110 1001
- cmp.w #0x6969, @word_dest
- beq .Lwind2
- fail
-.Lwind2:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_postinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- rotr.w #2, @er0+ ; shift right arithmetic by two, postinc
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest+2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0110 1001 0110 1001
- cmp.w #0x6969, @word_dest
- beq .Lwpostinc2
- fail
-.Lwpostinc2:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_postdec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- rotr.w #2, @er0- ; shift right arithmetic by two, postdec
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0110 1001 0110 1001
- cmp.w #0x6969, @word_dest
- beq .Lwpostdec2
- fail
-.Lwpostdec2:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_preinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- rotr.w #2, @+er0 ; shift right arithmetic by two, preinc
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0110 1001 0110 1001
- cmp.w #0x6969, @word_dest
- beq .Lwpreinc2
- fail
-.Lwpreinc2:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_predec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest+2, er0
- rotr.w #2, @-er0 ; shift right arithmetic by two, predec
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0110 1001 0110 1001
- cmp.w #0x6969, @word_dest
- beq .Lwpredec2
- fail
-.Lwpredec2:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_disp2_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- rotr.w #2, @(2:2, er0) ; shift right arithmetic by two, disp2
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0110 1001 0110 1001
- cmp.w #0x6969, @word_dest
- beq .Lwdisp22
- fail
-.Lwdisp22:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_disp16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-44, er0
- rotr.w #2, @(44:16, er0) ; shift right arithmetic by two, disp16
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0110 1001 0110 1001
- cmp.w #0x6969, @word_dest
- beq .Lwdisp162
- fail
-.Lwdisp162:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_disp32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-666, er0
- rotr.w #2, @(666:32, er0) ; shift right arithmetic by two, disp32
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0110 1001 0110 1001
- cmp.w #0x6969, @word_dest
- beq .Lwdisp322
- fail
-.Lwdisp322:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_abs16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.w #2, @word_dest:16 ; shift right arithmetic by two, abs16
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0110 1001 0110 1001
- cmp.w #0x6969, @word_dest
- beq .Lwabs162
- fail
-.Lwabs162:
- mov.w #0xa5a5, @word_dest
-
-rotr_w_abs32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.w #2, @word_dest:32 ; shift right arithmetic by two, abs32
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0110 1001 0110 1001
- cmp.w #0x6969, @word_dest
- beq .Lwabs322
- fail
-.Lwabs322:
- mov.w #0xa5a5, @word_dest
-.endif
-
-rotr_l_reg32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.l er0 ; shift right arithmetic by one, register
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 1101 0010 1101 0010 1101 0010 1101 0010
- test_h_gr32 0xd2d2d2d2 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-rotr_l_ind_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- rotr.l @er0 ; shift right arithmetic by one, indirect
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Llind1
- fail
-.Llind1:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_postinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- rotr.l @er0+ ; shift right arithmetic by one, postinc
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest+4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Llpostinc1
- fail
-.Llpostinc1:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_postdec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- rotr.l @er0- ; shift right arithmetic by one, postdec
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest-4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Llpostdec1
- fail
-.Llpostdec1:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_preinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-4, er0
- rotr.l @+er0 ; shift right arithmetic by one, preinc
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Llpreinc1
- fail
-.Llpreinc1:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_predec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest+4, er0
- rotr.l @-er0 ; shift right arithmetic by one, predec
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Llpredec1
- fail
-.Llpredec1:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_disp2_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-2, er0
- rotr.l @(2:2, er0) ; shift right arithmetic by one, disp2
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Lldisp21
- fail
-.Lldisp21:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_disp16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-44, er0
- rotr.l @(44:16, er0) ; shift right arithmetic by one, disp16
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Lldisp161
- fail
-.Lldisp161:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_disp32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-666, er0
- rotr.l @(666:32, er0) ; shift right arithmetic by one, disp32
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Lldisp321
- fail
-.Lldisp321:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_abs16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.l @long_dest:16 ; shift right arithmetic by one, abs16
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Llabs161
- fail
-.Llabs161:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_abs32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.l @long_dest:32 ; shift right arithmetic by one, abs32
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Llabs321
- fail
-.Llabs321:
- mov #0xa5a5a5a5, @long_dest
-.endif
-
-rotr_l_reg32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.l #2, er0 ; shift right arithmetic by two, register
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0110 1001 0110 1001 0110 1001 0110 1001
- test_h_gr32 0x69696969 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-
-rotr_l_ind_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- rotr.l #2, @er0 ; shift right arithmetic by two, indirect
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x69696969, @long_dest
- beq .Llind2
- fail
-.Llind2:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_postinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- rotr.l #2, @er0+ ; shift right arithmetic by two, postinc
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest+4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x69696969, @long_dest
- beq .Llpostinc2
- fail
-.Llpostinc2:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_postdec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- rotr.l #2, @er0- ; shift right arithmetic by two, postdec
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x69696969, @long_dest
- beq .Llpostdec2
- fail
-.Llpostdec2:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_preinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-4, er0
- rotr.l #2, @+er0 ; shift right arithmetic by two, preinc
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x69696969, @long_dest
- beq .Llpreinc2
- fail
-.Llpreinc2:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_predec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest+4, er0
- rotr.l #2, @-er0 ; shift right arithmetic by two, predec
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x69696969, @long_dest
- beq .Llpredec2
- fail
-.Llpredec2:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_disp2_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-2, er0
- rotr.l #2, @(2:2, er0) ; shift right arithmetic by two, disp2
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x69696969, @long_dest
- beq .Lldisp22
- fail
-.Lldisp22:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_disp16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-44, er0
- rotr.l #2, @(44:16, er0) ; shift right arithmetic by two, disp16
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x69696969, @long_dest
- beq .Lldisp162
- fail
-.Lldisp162:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_disp32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-666, er0
- rotr.l #2, @(666:32, er0) ; shift right arithmetic by two, disp32
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x69696969, @long_dest
- beq .Lldisp322
- fail
-.Lldisp322:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_abs16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.l #2, @long_dest:16 ; shift right arithmetic by two, abs16
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x69696969, @long_dest
- beq .Llabs162
- fail
-.Llabs162:
- mov #0xa5a5a5a5, @long_dest
-
-rotr_l_abs32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotr.l #2, @long_dest:32 ; shift right arithmetic by two, abs32
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x69696969, @long_dest
- beq .Llabs322
- fail
-.Llabs322:
- mov #0xa5a5a5a5, @long_dest
-
-.endif
-.endif
- pass
-
- exit 0
-
diff --git a/sim/testsuite/sim/h8300/rotxl.s b/sim/testsuite/sim/h8300/rotxl.s
deleted file mode 100644
index 3ae703e..0000000
--- a/sim/testsuite/sim/h8300/rotxl.s
+++ /dev/null
@@ -1,167 +0,0 @@
-# Hitachi H8 testcase 'rotxl'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
- .data
-byte_dest: .byte 0xa5
- .align 2
-word_dest: .word 0xa5a5
- .align 4
-long_dest: .long 0xa5a5a5a5
-
- .text
-
-rotxl_b_reg8_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxl.b r0l ; shift left arithmetic by one
-;;; .word 0x1208
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- test_h_gr16 0xa54a r0 ; 1010 0101 -> 0100 1010
-.if (sim_cpu)
- test_h_gr32 0xa5a5a54a er0
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-rotxl_b_reg8_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxl.b #2, r0l ; shift left arithmetic by two
-;;; .word 0x1248
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr16 0xa595 r0 ; 1010 0101 -> 1001 0101
-.if (sim_cpu)
- test_h_gr32 0xa5a5a595 er0
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu) ; Not available in h8300 mode
-rotxl_w_reg16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxl.w r0 ; shift left arithmetic by one
-;;; .word 0x1210
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- test_h_gr16 0x4b4a r0 ; 1010 0101 1010 0101 -> 0100 1011 0100 1010
- test_h_gr32 0xa5a54b4a er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-rotxl_w_reg16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxl.w #2, r0 ; shift left arithmetic by two
-;;; .word 0x1250
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
- test_h_gr16 0x9695 r0 ; 1010 0101 1010 0101 -> 1001 0110 1001 0101
- test_h_gr32 0xa5a59695 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-rotxl_l_reg32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxl.l er0 ; shift left arithmetic by one
-;;; .word 1030
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0100 1011 0100 1011 0100 1011 0100 1010
- test_h_gr32 0x4b4b4b4a er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-rotxl_l_reg32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxl.l #2, er0 ; shift left arithmetic by two
-;;; .word 0x1270
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 1001 0110 1001 0110 1001 0110 1001 0101
- test_h_gr32 0x96969695 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.endif
-
- pass
-
- exit 0
-
diff --git a/sim/testsuite/sim/h8300/rotxr.s b/sim/testsuite/sim/h8300/rotxr.s
deleted file mode 100644
index 6fc5b2c..0000000
--- a/sim/testsuite/sim/h8300/rotxr.s
+++ /dev/null
@@ -1,2002 +0,0 @@
-# Hitachi H8 testcase 'rotxr'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
- .data
-byte_dest: .byte 0xa5
- .align 2
-word_dest: .word 0xa5a5
- .align 4
-long_dest: .long 0xa5a5a5a5
-
- .text
-
-rotxr_b_reg8_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.b r0l ; shift right arithmetic by one
-;;; .word 0x1308
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr16 0xa552 r0 ; 1010 0101 -> 0101 0010
-.if (sim_cpu)
- test_h_gr32 0xa5a5a552 er0
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-rotxr_b_ind_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- rotxr.b @er0 ; shift right arithmetic by one, indirect
-;;; .word 0x7d00
-;;; .word 0x1300
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbind1
- fail
-.Lbind1:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_postinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- rotxr.b @er0+ ; shift right arithmetic by one, postinc
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0x1300
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest+1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbpostinc1
- fail
-.Lbpostinc1:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_postdec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- rotxr.b @er0- ; shift right arithmetic by one, postdec
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0x1300
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbpostdec1
- fail
-.Lbpostdec1:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_preinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-1, er0
- rotxr.b @+er0 ; shift right arithmetic by one, preinc
-;;; .word 0x0175
-;;; .word 0x6c08
-;;; .word 0x1300
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbpreinc1
- fail
-.Lbpreinc1:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_predec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest+1, er0
- rotxr.b @-er0 ; shift right arithmetic by one, predec
-;;; .word 0x0177
-;;; .word 0x6c08
-;;; .word 0x1300
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbpredec1
- fail
-.Lbpredec1:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_disp2_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-2, er0
- rotxr.b @(2:2, er0) ; shift right arithmetic by one, disp2
-;;; .word 0x0176
-;;; .word 0x6808
-;;; .word 0x1300
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbdisp21
- fail
-.Lbdisp21:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_disp16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-44, er0
- rotxr.b @(44:16, er0) ; shift right arithmetic by one, disp16
-;;; .word 0x0174
-;;; .word 0x6e08
-;;; .word 44
-;;; .word 0x1300
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbdisp161
- fail
-.Lbdisp161:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_disp32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-666, er0
- rotxr.b @(666:32, er0) ; shift right arithmetic by one, disp32
-;;; .word 0x7884
-;;; .word 0x6a28
-;;; .long 666
-;;; .word 0x1300
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbdisp321
- fail
-.Lbdisp321:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_abs16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.b @byte_dest:16 ; shift right arithmetic by one, abs16
-;;; .word 0x6a18
-;;; .word byte_dest
-;;; .word 0x1300
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbabs161
- fail
-.Lbabs161:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_abs32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.b @byte_dest:32 ; shift right arithmetic by one, abs32
-;;; .word 0x6a38
-;;; .long byte_dest
-;;; .word 0x1300
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbabs321
- fail
-.Lbabs321:
- mov #0xa5a5a5a5, @byte_dest
-.endif
-
-rotxr_b_reg8_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.b #2, r0l ; shift right arithmetic by two
-;;; .word 0x1348
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr16 0xa5a9 r0 ; 1010 0101 -> 1010 1001
-.if (sim_cpu)
- test_h_gr32 0xa5a5a5a9 er0
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-rotxr_b_ind_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- rotxr.b #2, @er0 ; shift right arithmetic by two, indirect
-;;; .word 0x7d00
-;;; .word 0x1340
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1010 1001
- cmp.b #0xa9, @byte_dest
- beq .Lbind2
- fail
-.Lbind2:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_postinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- rotxr.b #2, @er0+ ; shift right arithmetic by two, postinc
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0x1340
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest+1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1010 1001
- cmp.b #0xa9, @byte_dest
- beq .Lbpostinc2
- fail
-.Lbpostinc2:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_postdec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- rotxr.b #2, @er0- ; shift right arithmetic by two, postdec
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0x1340
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest-1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1010 1001
- cmp.b #0xa9, @byte_dest
- beq .Lbpostdec2
- fail
-.Lbpostdec2:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_preinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-1, er0
- rotxr.b #2, @+er0 ; shift right arithmetic by two, preinc
-;;; .word 0x0175
-;;; .word 0x6c08
-;;; .word 0x1340
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1010 1001
- cmp.b #0xa9, @byte_dest
- beq .Lbpreinc2
- fail
-.Lbpreinc2:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_predec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest+1, er0
- rotxr.b #2, @-er0 ; shift right arithmetic by two, predec
-;;; .word 0x0177
-;;; .word 0x6c08
-;;; .word 0x1340
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1010 1001
- cmp.b #0xa9, @byte_dest
- beq .Lbpredec2
- fail
-.Lbpredec2:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_disp2_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-2, er0
- rotxr.b #2, @(2:2, er0) ; shift right arithmetic by two, disp2
-;;; .word 0x0176
-;;; .word 0x6808
-;;; .word 0x1340
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1010 1001
- cmp.b #0xa9, @byte_dest
- beq .Lbdisp22
- fail
-.Lbdisp22:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_disp16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-44, er0
- rotxr.b #2, @(44:16, er0) ; shift right arithmetic by two, disp16
-;;; .word 0x0174
-;;; .word 0x6e08
-;;; .word 44
-;;; .word 0x1340
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1010 1001
- cmp.b #0xa9, @byte_dest
- beq .Lbdisp162
- fail
-.Lbdisp162:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_disp32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-666, er0
- rotxr.b #2, @(666:32, er0) ; shift right arithmetic by two, disp32
-;;; .word 0x7884
-;;; .word 0x6a28
-;;; .long 666
-;;; .word 0x1340
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1010 1001
- cmp.b #0xa9, @byte_dest
- beq .Lbdisp322
- fail
-.Lbdisp322:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_abs16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.b #2, @byte_dest:16 ; shift right arithmetic by two, abs16
-;;; .word 0x6a18
-;;; .word byte_dest
-;;; .word 0x1340
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1010 1001
- cmp.b #0xa9, @byte_dest
- beq .Lbabs162
- fail
-.Lbabs162:
- mov #0xa5a5a5a5, @byte_dest
-
-rotxr_b_abs32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.b #2, @byte_dest:32 ; shift right arithmetic by two, abs32
-;;; .word 0x6a38
-;;; .long byte_dest
-;;; .word 0x1340
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1010 1001
- cmp.b #0xa9, @byte_dest
- beq .Lbabs322
- fail
-.Lbabs322:
- mov #0xa5a5a5a5, @byte_dest
-.endif
-
-.if (sim_cpu) ; Not available in h8300 mode
-rotxr_w_reg16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.w r0 ; shift right arithmetic by one
-;;; .word 0x1310
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr16 0x52d2 r0 ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- test_h_gr32 0xa5a552d2 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-rotxr_w_ind_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- rotxr.w @er0 ; shift right arithmetic by one, indirect
-;;; .word 0x7d80
-;;; .word 0x1310
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwind1
- fail
-.Lwind1:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_postinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- rotxr.w @er0+ ; shift right arithmetic by one, postinc
-;;; .word 0x0154
-;;; .word 0x6d08
-;;; .word 0x1310
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest+2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwpostinc1
- fail
-.Lwpostinc1:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_postdec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- rotxr.w @er0- ; shift right arithmetic by one, postdec
-;;; .word 0x0156
-;;; .word 0x6d08
-;;; .word 0x1310
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwpostdec1
- fail
-.Lwpostdec1:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_preinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- rotxr.w @+er0 ; shift right arithmetic by one, preinc
-;;; .word 0x0155
-;;; .word 0x6d08
-;;; .word 0x1310
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwpreinc1
- fail
-.Lwpreinc1:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_predec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest+2, er0
- rotxr.w @-er0 ; shift right arithmetic by one, predec
-;;; .word 0x0157
-;;; .word 0x6d08
-;;; .word 0x1310
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwpredec1
- fail
-.Lwpredec1:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_disp2_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- rotxr.w @(2:2, er0) ; shift right arithmetic by one, disp2
-;;; .word 0x0156
-;;; .word 0xa908
-;;; .word 0x1310
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwdisp21
- fail
-.Lwdisp21:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_disp16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-44, er0
- rotxr.w @(44:16, er0) ; shift right arithmetic by one, disp16
-;;; .word 0x0154
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x1310
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwdisp161
- fail
-.Lwdisp161:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_disp32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-666, er0
- rotxr.w @(666:32, er0) ; shift right arithmetic by one, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x1310
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwdisp321
- fail
-.Lwdisp321:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_abs16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.w @word_dest:16 ; shift right arithmetic by one, abs16
-;;; .word 0x6b18
-;;; .word word_dest
-;;; .word 0x1310
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwabs161
- fail
-.Lwabs161:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_abs32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.w @word_dest:32 ; shift right arithmetic by one, abs32
-;;; .word 0x6b38
-;;; .long word_dest
-;;; .word 0x1310
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwabs321
- fail
-.Lwabs321:
- mov #0xa5a5a5a5, @word_dest
-.endif
-
-rotxr_w_reg16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.w #2, r0 ; shift right arithmetic by two
-;;; .word 0x1350
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr16 0xa969 r0 ; 1010 0101 1010 0101 -> 1010 1001 0110 1001
- test_h_gr32 0xa5a5a969 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-rotxr_w_ind_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- rotxr.w #2, @er0 ; shift right arithmetic by two, indirect
-;;; .word 0x7d80
-;;; .word 0x1350
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1010 1001 0110 1001
- cmp.w #0xa969, @word_dest
- beq .Lwind2
- fail
-.Lwind2:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_postinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- rotxr.w #2, @er0+ ; shift right arithmetic by two, postinc
-;;; .word 0x0154
-;;; .word 0x6d08
-;;; .word 0x1350
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest+2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1010 1001 0110 1001
- cmp.w #0xa969, @word_dest
- beq .Lwpostinc2
- fail
-.Lwpostinc2:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_postdec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- rotxr.w #2, @er0- ; shift right arithmetic by two, postdec
-;;; .word 0x0156
-;;; .word 0x6d08
-;;; .word 0x1350
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1010 1001 0110 1001
- cmp.w #0xa969, @word_dest
- beq .Lwpostdec2
- fail
-.Lwpostdec2:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_preinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- rotxr.w #2, @+er0 ; shift right arithmetic by two, preinc
-;;; .word 0x0155
-;;; .word 0x6d08
-;;; .word 0x1350
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1010 1001 0110 1001
- cmp.w #0xa969, @word_dest
- beq .Lwpreinc2
- fail
-.Lwpreinc2:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_predec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest+2, er0
- rotxr.w #2, @-er0 ; shift right arithmetic by two, predec
-;;; .word 0x0157
-;;; .word 0x6d08
-;;; .word 0x1350
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1010 1001 0110 1001
- cmp.w #0xa969, @word_dest
- beq .Lwpredec2
- fail
-.Lwpredec2:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_disp2_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- rotxr.w #2, @(2:2, er0) ; shift right arithmetic by two, disp2
-;;; .word 0x0156
-;;; .word 0xa908
-;;; .word 0x1350
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1010 1001 0110 1001
- cmp.w #0xa969, @word_dest
- beq .Lwdisp22
- fail
-.Lwdisp22:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_disp16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-44, er0
- rotxr.w #2, @(44:16, er0) ; shift right arithmetic by two, disp16
-;;; .word 0x0154
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x1350
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1010 1001 0110 1001
- cmp.w #0xa969, @word_dest
- beq .Lwdisp162
- fail
-.Lwdisp162:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_disp32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-666, er0
- rotxr.w #2, @(666:32, er0) ; shift right arithmetic by two, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x1350
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1010 1001 0110 1001
- cmp.w #0xa969, @word_dest
- beq .Lwdisp322
- fail
-.Lwdisp322:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_abs16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.w #2, @word_dest:16 ; shift right arithmetic by two, abs16
-;;; .word 0x6b18
-;;; .word word_dest
-;;; .word 0x1350
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1010 1001 0110 1001
- cmp.w #0xa969, @word_dest
- beq .Lwabs162
- fail
-.Lwabs162:
- mov #0xa5a5a5a5, @word_dest
-
-rotxr_w_abs32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.w #2, @word_dest:32 ; shift right arithmetic by two, abs32
-;;; .word 0x6b38
-;;; .long word_dest
-;;; .word 0x1350
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1010 1001 0110 1001
- cmp.w #0xa969, @word_dest
- beq .Lwabs322
- fail
-.Lwabs322:
- mov #0xa5a5a5a5, @word_dest
-.endif
-
-rotxr_l_reg32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.l er0 ; shift right arithmetic by one, register
-;;; .word 0x1330
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0101 0010 1101 0010 1101 0010 1101 0010
- test_h_gr32 0x52d2d2d2 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-rotxr_l_ind_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- rotxr.l @er0 ; shift right arithmetic by one, indirect
-;;; .word 0x0104
-;;; .word 0xa908
-;;; .word 0x1330
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Llind1
- fail
-.Llind1:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_postinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- rotxr.l @er0+ ; shift right arithmetic by one, postinc
-;;; .word 0x0104
-;;; .word 0x6d08
-;;; .word 0x1330
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest+4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Llpostinc1
- fail
-.Llpostinc1:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_postdec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- rotxr.l @er0- ; shift right arithmetic by one, postdec
-;;; .word 0x0106
-;;; .word 0x6d08
-;;; .word 0x1330
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Llpostdec1
- fail
-.Llpostdec1:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_preinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-4, er0
- rotxr.l @+er0 ; shift right arithmetic by one, preinc
-;;; .word 0x0105
-;;; .word 0x6d08
-;;; .word 0x1330
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Llpreinc1
- fail
-.Llpreinc1:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_predec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest+4, er0
- rotxr.l @-er0 ; shift right arithmetic by one, predec
-;;; .word 0x0107
-;;; .word 0x6d08
-;;; .word 0x1330
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Llpredec1
- fail
-.Llpredec1:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_disp2_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-2, er0
- rotxr.l @(2:2, er0) ; shift right arithmetic by one, disp2
-;;; .word 0x0106
-;;; .word 0xa908
-;;; .word 0x1330
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Lldisp21
- fail
-.Lldisp21:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_disp16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-44, er0
- rotxr.l @(44:16, er0) ; shift right arithmetic by one, disp16
-;;; .word 0x0104
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x1330
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Lldisp161
- fail
-.Lldisp161:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_disp32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-666, er0
- rotxr.l @(666:32, er0) ; shift right arithmetic by one, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x1330
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Lldisp321
- fail
-.Lldisp321:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_abs16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.l @long_dest:16 ; shift right arithmetic by one, abs16
-;;; .word 0x0104
-;;; .word 0x6b08
-;;; .word long_dest
-;;; .word 0x1330
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Llabs161
- fail
-.Llabs161:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_abs32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.l @long_dest:32 ; shift right arithmetic by one, abs32
-;;; .word 0x0104
-;;; .word 0x6b28
-;;; .long long_dest
-;;; .word 0x1330
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Llabs321
- fail
-.Llabs321:
- mov #0xa5a5a5a5, @long_dest
-.endif
-
-rotxr_l_reg32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.l #2, er0 ; shift right arithmetic by two, register
-;;; .word 0x1370
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 1010 1001 0110 1001 0110 1001 0110 1001
- test_h_gr32 0xa9696969 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-
-rotxr_l_ind_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- rotxr.l #2, @er0 ; shift right arithmetic by two, indirect
-;;; .word 0x0104
-;;; .word 0xa908
-;;; .word 0x1370
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xa9696969, @long_dest
- beq .Llind2
- fail
-.Llind2:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_postinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- rotxr.l #2, @er0+ ; shift right arithmetic by two, postinc
-;;; .word 0x0104
-;;; .word 0x6d08
-;;; .word 0x1370
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest+4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xa9696969, @long_dest
- beq .Llpostinc2
- fail
-.Llpostinc2:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_postdec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- rotxr.l #2, @er0- ; shift right arithmetic by two, postdec
-;;; .word 0x0106
-;;; .word 0x6d08
-;;; .word 0x1370
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest-4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xa9696969, @long_dest
- beq .Llpostdec2
- fail
-.Llpostdec2:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_preinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-4, er0
- rotxr.l #2, @+er0 ; shift right arithmetic by two, preinc
-;;; .word 0x0105
-;;; .word 0x6d08
-;;; .word 0x1370
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xa9696969, @long_dest
- beq .Llpreinc2
- fail
-.Llpreinc2:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_predec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest+4, er0
- rotxr.l #2, @-er0 ; shift right arithmetic by two, predec
-;;; .word 0x0107
-;;; .word 0x6d08
-;;; .word 0x1370
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xa9696969, @long_dest
- beq .Llpredec2
- fail
-.Llpredec2:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_disp2_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-2, er0
- rotxr.l #2, @(2:2, er0) ; shift right arithmetic by two, disp2
-;;; .word 0x0106
-;;; .word 0xa908
-;;; .word 0x1370
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xa9696969, @long_dest
- beq .Lldisp22
- fail
-.Lldisp22:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_disp16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-44, er0
- rotxr.l #2, @(44:16, er0) ; shift right arithmetic by two, disp16
-;;; .word 0x0104
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x1370
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xa9696969, @long_dest
- beq .Lldisp162
- fail
-.Lldisp162:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_disp32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-666, er0
- rotxr.l #2, @(666:32, er0) ; shift right arithmetic by two, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x1370
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xa9696969, @long_dest
- beq .Lldisp322
- fail
-.Lldisp322:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_abs16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.l #2, @long_dest:16 ; shift right arithmetic by two, abs16
-;;; .word 0x0104
-;;; .word 0x6b08
-;;; .word long_dest
-;;; .word 0x1370
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xa9696969, @long_dest
- beq .Llabs162
- fail
-.Llabs162:
- mov #0xa5a5a5a5, @long_dest
-
-rotxr_l_abs32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- rotxr.l #2, @long_dest:32 ; shift right arithmetic by two, abs32
-;;; .word 0x0104
-;;; .word 0x6b28
-;;; .long long_dest
-;;; .word 0x1370
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xa9696969, @long_dest
- beq .Llabs322
- fail
-.Llabs322:
- mov #0xa5a5a5a5, @long_dest
-
-.endif
-.endif
- pass
-
- exit 0
-
diff --git a/sim/testsuite/sim/h8300/shal.s b/sim/testsuite/sim/h8300/shal.s
deleted file mode 100644
index ccea907..0000000
--- a/sim/testsuite/sim/h8300/shal.s
+++ /dev/null
@@ -1,167 +0,0 @@
-# Hitachi H8 testcase 'shal'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
- .data
-byte_dest: .byte 0xa5
- .align 2
-word_dest: .word 0xa5a5
- .align 4
-long_dest: .long 0xa5a5a5a5
-
- .text
-
-shal_b_reg8_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shal.b r0l ; shift left arithmetic by one
-;;; .word 0x1088
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
-; test_ovf_clear ; FIXME
- test_neg_clear
- test_h_gr16 0xa54a r0 ; 1010 0101 -> 0100 1010
-.if (sim_cpu)
- test_h_gr32 0xa5a5a54a er0
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-shal_b_reg8_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shal.b #2, r0l ; shift left arithmetic by two
-;;; .word 0x10c8
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
-; test_ovf_clear ; FIXME
- test_neg_set
-
- test_h_gr16 0xa594 r0 ; 1010 0101 -> 1001 0100
-.if (sim_cpu)
- test_h_gr32 0xa5a5a594 er0
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu) ; Not available in h8300 mode
-shal_w_reg16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shal.w r0 ; shift left arithmetic by one
-;;; .word 0x1090
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
-; test_ovf_clear ; FIXME
- test_neg_clear
- test_h_gr16 0x4b4a r0 ; 1010 0101 1010 0101 -> 0100 1011 0100 1010
- test_h_gr32 0xa5a54b4a er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-shal_w_reg16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shal.w #2, r0 ; shift left arithmetic by two
-;;; .word 0x10d0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
-; test_ovf_clear ; FIXME
- test_neg_set
- test_h_gr16 0x9694 r0 ; 1010 0101 1010 0101 -> 1001 0110 1001 0100
- test_h_gr32 0xa5a59694 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-shal_l_reg32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shal.l er0 ; shift left arithmetic by one
-;;; .word 10b0
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
-; test_ovf_clear ; FIXME
- test_neg_clear
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0100 1011 0100 1011 0100 1011 0100 1010
- test_h_gr32 0x4b4b4b4a er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-shal_l_reg32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shal.l #2, er0 ; shift left arithmetic by two
-;;; .word 0x10f0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
-; test_ovf_clear ; FIXME
- test_neg_set
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 1001 0110 1001 0110 1001 0110 1001 0100
- test_h_gr32 0x96969694 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.endif
-
- pass
-
- exit 0
-
diff --git a/sim/testsuite/sim/h8300/shar.s b/sim/testsuite/sim/h8300/shar.s
deleted file mode 100644
index b0ea673..0000000
--- a/sim/testsuite/sim/h8300/shar.s
+++ /dev/null
@@ -1,2000 +0,0 @@
-# Hitachi H8 testcase 'shar'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
- .data
-byte_dest: .byte 0xa5
- .align 2
-word_dest: .word 0xa5a5
- .align 4
-long_dest: .long 0xa5a5a5a5
-
- .text
-
-shar_b_reg8_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.b r0l ; shift right arithmetic by one
-;;; .word 0x1188
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr16 0xa5d2 r0 ; 1010 0101 -> 1101 0010
-.if (sim_cpu)
- test_h_gr32 0xa5a5a5d2 er0
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-shar_b_ind_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- shar.b @er0 ; shift right arithmetic by one, indirect
-;;; .word 0x7d00
-;;; .word 0x1180
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbind1
- fail
-.Lbind1:
- mov.b #0xa5, @byte_dest
-
-shar_b_postinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- shar.b @er0+ ; shift right arithmetic by one, postinc
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0x1180
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest+1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbpostinc1
- fail
-.Lbpostinc1:
- mov.b #0xa5, @byte_dest
-
-shar_b_postdec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- shar.b @er0- ; shift right arithmetic by one, postdec
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0x1180
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest-1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbpostdec1
- fail
-.Lbpostdec1:
- mov.b #0xa5, @byte_dest
-
-shar_b_preinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-1, er0
- shar.b @+er0 ; shift right arithmetic by one, preinc
-;;; .word 0x0175
-;;; .word 0x6c08
-;;; .word 0x1180
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbpreinc1
- fail
-.Lbpreinc1:
- mov.b #0xa5, @byte_dest
-
-shar_b_predec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest+1, er0
- shar.b @-er0 ; shift right arithmetic by one, predec
-;;; .word 0x0177
-;;; .word 0x6c08
-;;; .word 0x1180
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbpredec1
- fail
-.Lbpredec1:
- mov.b #0xa5, @byte_dest
-
-shar_b_disp2_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-2, er0
- shar.b @(2:2, er0) ; shift right arithmetic by one, disp2
-;;; .word 0x0176
-;;; .word 0x6808
-;;; .word 0x1180
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbdisp21
- fail
-.Lbdisp21:
- mov.b #0xa5, @byte_dest
-
-shar_b_disp16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-44, er0
- shar.b @(44:16, er0) ; shift right arithmetic by one, disp16
-;;; .word 0x0174
-;;; .word 0x6e08
-;;; .word 44
-;;; .word 0x1180
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbdisp161
- fail
-.Lbdisp161:
- mov.b #0xa5, @byte_dest
-
-shar_b_disp32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-666, er0
- shar.b @(666:32, er0) ; shift right arithmetic by one, disp32
-;;; .word 0x7884
-;;; .word 0x6a28
-;;; .long 666
-;;; .word 0x1180
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbdisp321
- fail
-.Lbdisp321:
- mov.b #0xa5, @byte_dest
-
-shar_b_abs16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.b @byte_dest:16 ; shift right arithmetic by one, abs16
-;;; .word 0x6a18
-;;; .word byte_dest
-;;; .word 0x1180
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbabs161
- fail
-.Lbabs161:
- mov.b #0xa5, @byte_dest
-
-shar_b_abs32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.b @byte_dest:32 ; shift right arithmetic by one, abs32
-;;; .word 0x6a38
-;;; .long byte_dest
-;;; .word 0x1180
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1101 0010
- cmp.b #0xd2, @byte_dest
- beq .Lbabs321
- fail
-.Lbabs321:
- mov.b #0xa5, @byte_dest
-.endif
-
-shar_b_reg8_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.b #2, r0l ; shift right arithmetic by two
-;;; .word 0x11c8
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
- test_h_gr16 0xa5e9 r0 ; 1010 0101 -> 1110 1001
-.if (sim_cpu)
- test_h_gr32 0xa5a5a5e9 er0
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-shar_b_ind_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- shar.b #2, @er0 ; shift right arithmetic by two, indirect
-;;; .word 0x7d00
-;;; .word 0x11c0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1110 1001
- cmp.b #0xe9, @byte_dest
- beq .Lbind2
- fail
-.Lbind2:
- mov.b #0xa5, @byte_dest
-
-shar_b_postinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- shar.b #2, @er0+ ; shift right arithmetic by two, postinc
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0x11c0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest+1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1110 1001
- cmp.b #0xe9, @byte_dest
- beq .Lbpostinc2
- fail
-.Lbpostinc2:
- mov.b #0xa5, @byte_dest
-
-shar_b_postdec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- shar.b #2, @er0- ; shift right arithmetic by two, postdec
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0x11c0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest-1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1110 1001
- cmp.b #0xe9, @byte_dest
- beq .Lbpostdec2
- fail
-.Lbpostdec2:
- mov.b #0xa5, @byte_dest
-
-shar_b_preinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-1, er0
- shar.b #2, @+er0 ; shift right arithmetic by two, preinc
-;;; .word 0x0175
-;;; .word 0x6c08
-;;; .word 0x11c0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1110 1001
- cmp.b #0xe9, @byte_dest
- beq .Lbpreinc2
- fail
-.Lbpreinc2:
- mov.b #0xa5, @byte_dest
-
-shar_b_predec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest+1, er0
- shar.b #2, @-er0 ; shift right arithmetic by two, predec
-;;; .word 0x0177
-;;; .word 0x6c08
-;;; .word 0x11c0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1110 1001
- cmp.b #0xe9, @byte_dest
- beq .Lbpredec2
- fail
-.Lbpredec2:
- mov.b #0xa5, @byte_dest
-
-shar_b_disp2_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-2, er0
- shar.b #2, @(2:2, er0) ; shift right arithmetic by two, disp2
-;;; .word 0x0176
-;;; .word 0x6808
-;;; .word 0x11c0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1110 1001
- cmp.b #0xe9, @byte_dest
- beq .Lbdisp22
- fail
-.Lbdisp22:
- mov.b #0xa5, @byte_dest
-
-shar_b_disp16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-44, er0
- shar.b #2, @(44:16, er0) ; shift right arithmetic by two, disp16
-;;; .word 0x0174
-;;; .word 0x6e08
-;;; .word 44
-;;; .word 0x11c0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1110 1001
- cmp.b #0xe9, @byte_dest
- beq .Lbdisp162
- fail
-.Lbdisp162:
- mov.b #0xa5, @byte_dest
-
-shar_b_disp32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-666, er0
- shar.b #2, @(666:32, er0) ; shift right arithmetic by two, disp32
-;;; .word 0x7884
-;;; .word 0x6a28
-;;; .long 666
-;;; .word 0x11c0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 byte_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1110 1001
- cmp.b #0xe9, @byte_dest
- beq .Lbdisp322
- fail
-.Lbdisp322:
- mov.b #0xa5, @byte_dest
-
-shar_b_abs16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.b #2, @byte_dest:16 ; shift right arithmetic by two, abs16
-;;; .word 0x6a18
-;;; .word byte_dest
-;;; .word 0x11c0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1110 1001
- cmp.b #0xe9, @byte_dest
- beq .Lbabs162
- fail
-.Lbabs162:
- mov.b #0xa5, @byte_dest
-
-shar_b_abs32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.b #2, @byte_dest:32 ; shift right arithmetic by two, abs32
-;;; .word 0x6a38
-;;; .long byte_dest
-;;; .word 0x11c0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 1110 1001
- cmp.b #0xe9, @byte_dest
- beq .Lbabs322
- fail
-.Lbabs322:
- mov.b #0xa5, @byte_dest
-.endif
-
-.if (sim_cpu) ; Not available in h8300 mode
-shar_w_reg16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.w r0 ; shift right arithmetic by one
-;;; .word 0x1190
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
- test_h_gr16 0xd2d2 r0 ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- test_h_gr32 0xa5a5d2d2 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-shar_w_ind_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shar.w @er0 ; shift right arithmetic by one, indirect
-;;; .word 0x7d80
-;;; .word 0x1190
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwind1
- fail
-.Lwind1:
- mov.w #0xa5a5, @word_dest
-
-shar_w_postinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shar.w @er0+ ; shift right arithmetic by one, postinc
-;;; .word 0x0154
-;;; .word 0x6d08
-;;; .word 0x1190
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest+2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwpostinc1
- fail
-.Lwpostinc1:
- mov.w #0xa5a5, @word_dest
-
-shar_w_postdec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shar.w @er0- ; shift right arithmetic by one, postdec
-;;; .word 0x0156
-;;; .word 0x6d08
-;;; .word 0x1190
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwpostdec1
- fail
-.Lwpostdec1:
- mov.w #0xa5a5, @word_dest
-
-shar_w_preinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- shar.w @+er0 ; shift right arithmetic by one, preinc
-;;; .word 0x0155
-;;; .word 0x6d08
-;;; .word 0x1190
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwpreinc1
- fail
-.Lwpreinc1:
- mov.w #0xa5a5, @word_dest
-
-shar_w_predec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest+2, er0
- shar.w @-er0 ; shift right arithmetic by one, predec
-;;; .word 0x0157
-;;; .word 0x6d08
-;;; .word 0x1190
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwpredec1
- fail
-.Lwpredec1:
- mov.w #0xa5a5, @word_dest
-
-shar_w_disp2_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- shar.w @(2:2, er0) ; shift right arithmetic by one, disp2
-;;; .word 0x0156
-;;; .word 0x6908
-;;; .word 0x1190
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwdisp21
- fail
-.Lwdisp21:
- mov.w #0xa5a5, @word_dest
-
-shar_w_disp16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-44, er0
- shar.w @(44:16, er0) ; shift right arithmetic by one, disp16
-;;; .word 0x0154
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x1190
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwdisp161
- fail
-.Lwdisp161:
- mov.w #0xa5a5, @word_dest
-
-shar_w_disp32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-666, er0
- shar.w @(666:32, er0) ; shift right arithmetic by one, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x1190
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwdisp321
- fail
-.Lwdisp321:
- mov.w #0xa5a5, @word_dest
-
-shar_w_abs16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.w @word_dest:16 ; shift right arithmetic by one, abs16
-;;; .word 0x6b18
-;;; .word word_dest
-;;; .word 0x1190
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwabs161
- fail
-.Lwabs161:
- mov.w #0xa5a5, @word_dest
-
-shar_w_abs32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.w @word_dest:32 ; shift right arithmetic by one, abs32
-;;; .word 0x6b38
-;;; .long word_dest
-;;; .word 0x1190
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1101 0010 1101 0010
- cmp.w #0xd2d2, @word_dest
- beq .Lwabs321
- fail
-.Lwabs321:
- mov.w #0xa5a5, @word_dest
-.endif
-
-shar_w_reg16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.w #2, r0 ; shift right arithmetic by two
-;;; .word 0x11d0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr16 0xe969 r0 ; 1010 0101 1010 0101 -> 1110 1001 0110 1001
- test_h_gr32 0xa5a5e969 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-shar_w_ind_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shar.w #2, @er0 ; shift right arithmetic by two, indirect
-;;; .word 0x7d80
-;;; .word 0x11d0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1110 1001 0110 1001
- cmp.w #0xe969, @word_dest
- beq .Lwind2
- fail
-.Lwind2:
- mov.w #0xa5a5, @word_dest
-
-shar_w_postinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shar.w #2, @er0+ ; shift right arithmetic by two, postinc
-;;; .word 0x0154
-;;; .word 0x6d08
-;;; .word 0x11d0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest+2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1110 1001 0110 1001
- cmp.w #0xe969, @word_dest
- beq .Lwpostinc2
- fail
-.Lwpostinc2:
- mov.w #0xa5a5, @word_dest
-
-shar_w_postdec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shar.w #2, @er0- ; shift right arithmetic by two, postdec
-;;; .word 0x0156
-;;; .word 0x6d08
-;;; .word 0x11d0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1110 1001 0110 1001
- cmp.w #0xe969, @word_dest
- beq .Lwpostdec2
- fail
-.Lwpostdec2:
- mov.w #0xa5a5, @word_dest
-
-shar_w_preinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- shar.w #2, @+er0 ; shift right arithmetic by two, preinc
-;;; .word 0x0155
-;;; .word 0x6d08
-;;; .word 0x11d0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1110 1001 0110 1001
- cmp.w #0xe969, @word_dest
- beq .Lwpreinc2
- fail
-.Lwpreinc2:
- mov.w #0xa5a5, @word_dest
-
-shar_w_predec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest+2, er0
- shar.w #2, @-er0 ; shift right arithmetic by two, predec
-;;; .word 0x0157
-;;; .word 0x6d08
-;;; .word 0x11d0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1110 1001 0110 1001
- cmp.w #0xe969, @word_dest
- beq .Lwpredec2
- fail
-.Lwpredec2:
- mov.w #0xa5a5, @word_dest
-
-shar_w_disp2_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- shar.w #2, @(2:2, er0) ; shift right arithmetic by two, disp2
-;;; .word 0x0156
-;;; .word 0x6908
-;;; .word 0x11d0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1110 1001 0110 1001
- cmp.w #0xe969, @word_dest
- beq .Lwdisp22
- fail
-.Lwdisp22:
- mov.w #0xa5a5, @word_dest
-
-shar_w_disp16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-44, er0
- shar.w #2, @(44:16, er0) ; shift right arithmetic by two, disp16
-;;; .word 0x0154
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x11d0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1110 1001 0110 1001
- cmp.w #0xe969, @word_dest
- beq .Lwdisp162
- fail
-.Lwdisp162:
- mov.w #0xa5a5, @word_dest
-
-shar_w_disp32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-666, er0
- shar.w #2, @(666:32, er0) ; shift right arithmetic by two, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x11d0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 word_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1110 1001 0110 1001
- cmp.w #0xe969, @word_dest
- beq .Lwdisp322
- fail
-.Lwdisp322:
- mov.w #0xa5a5, @word_dest
-
-shar_w_abs16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.w #2, @word_dest:16 ; shift right arithmetic by two, abs16
-;;; .word 0x6b18
-;;; .word word_dest
-;;; .word 0x11d0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1110 1001 0110 1001
- cmp.w #0xe969, @word_dest
- beq .Lwabs162
- fail
-.Lwabs162:
- mov.w #0xa5a5, @word_dest
-
-shar_w_abs32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.w #2, @word_dest:32 ; shift right arithmetic by two, abs32
-;;; .word 0x6b38
-;;; .long word_dest
-;;; .word 0x11d0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 1110 1001 0110 1001
- cmp.w #0xe969, @word_dest
- beq .Lwabs322
- fail
-.Lwabs322:
- mov.w #0xa5a5, @word_dest
-.endif
-
-shar_l_reg32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.l er0 ; shift right arithmetic by one, register
-;;; .word 0x11b0
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 1101 0010 1101 0010 1101 0010 1101 0010
- test_h_gr32 0xd2d2d2d2 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-shar_l_ind_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shar.l @er0 ; shift right arithmetic by one, indirect
-;;; .word 0x0104
-;;; .word 0x6908
-;;; .word 0x11b0
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Llind1
- fail
-.Llind1:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_postinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shar.l @er0+ ; shift right arithmetic by one, postinc
-;;; .word 0x0104
-;;; .word 0x6d08
-;;; .word 0x11b0
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest+4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Llpostinc1
- fail
-.Llpostinc1:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_postdec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shar.l @er0- ; shift right arithmetic by one, postdec
-;;; .word 0x0106
-;;; .word 0x6d08
-;;; .word 0x11b0
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest-4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Llpostdec1
- fail
-.Llpostdec1:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_preinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-4, er0
- shar.l @+er0 ; shift right arithmetic by one, preinc
-;;; .word 0x0105
-;;; .word 0x6d08
-;;; .word 0x11b0
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Llpreinc1
- fail
-.Llpreinc1:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_predec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest+4, er0
- shar.l @-er0 ; shift right arithmetic by one, predec
-;;; .word 0x0107
-;;; .word 0x6d08
-;;; .word 0x11b0
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Llpredec1
- fail
-.Llpredec1:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_disp2_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-2, er0
- shar.l @(2:2, er0) ; shift right arithmetic by one, disp2
-;;; .word 0x0106
-;;; .word 0x6908
-;;; .word 0x11b0
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Lldisp21
- fail
-.Lldisp21:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_disp16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-44, er0
- shar.l @(44:16, er0) ; shift right arithmetic by one, disp16
-;;; .word 0x0104
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x11b0
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Lldisp161
- fail
-.Lldisp161:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_disp32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-666, er0
- shar.l @(666:32, er0) ; shift right arithmetic by one, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x11b0
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Lldisp321
- fail
-.Lldisp321:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_abs16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.l @long_dest:16 ; shift right arithmetic by one, abs16
-;;; .word 0x0104
-;;; .word 0x6b08
-;;; .word long_dest
-;;; .word 0x11b0
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Llabs161
- fail
-.Llabs161:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_abs32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.l @long_dest:32 ; shift right arithmetic by one, abs32
-;;; .word 0x0104
-;;; .word 0x6b28
-;;; .long long_dest
-;;; .word 0x11b0
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0xd2d2d2d2, @long_dest
- beq .Llabs321
- fail
-.Llabs321:
- mov #0xa5a5a5a5, @long_dest
-.endif
-
-shar_l_reg32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.l #2, er0 ; shift right arithmetic by two, register
-;;; .word 0x11f0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 1110 1001 0110 1001 0110 1001 0110 1001
- test_h_gr32 0xe9696969 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-
-shar_l_ind_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shar.l #2, @er0 ; shift right arithmetic by two, indirect
-;;; .word 0x0104
-;;; .word 0x6908
-;;; .word 0x11f0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xe9696969, @long_dest
- beq .Llind2
- fail
-.Llind2:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_postinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shar.l #2, @er0+ ; shift right arithmetic by two, postinc
-;;; .word 0x0104
-;;; .word 0x6d08
-;;; .word 0x11f0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest+4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xe9696969, @long_dest
- beq .Llpostinc2
- fail
-.Llpostinc2:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_postdec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shar.l #2, @er0- ; shift right arithmetic by two, postdec
-;;; .word 0x0106
-;;; .word 0x6d08
-;;; .word 0x11f0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest-4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xe9696969, @long_dest
- beq .Llpostdec2
- fail
-.Llpostdec2:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_preinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-4, er0
- shar.l #2, @+er0 ; shift right arithmetic by two, preinc
-;;; .word 0x0105
-;;; .word 0x6d08
-;;; .word 0x11f0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xe9696969, @long_dest
- beq .Llpreinc2
- fail
-.Llpreinc2:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_predec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest+4, er0
- shar.l #2, @-er0 ; shift right arithmetic by two, predec
-;;; .word 0x0107
-;;; .word 0x6d08
-;;; .word 0x11f0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xe9696969, @long_dest
- beq .Llpredec2
- fail
-.Llpredec2:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_disp2_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-2, er0
- shar.l #2, @(2:2, er0) ; shift right arithmetic by two, disp2
-;;; .word 0x0106
-;;; .word 0x6908
-;;; .word 0x11f0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xe9696969, @long_dest
- beq .Lldisp22
- fail
-.Lldisp22:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_disp16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-44, er0
- shar.l #2, @(44:16, er0) ; shift right arithmetic by two, disp16
-;;; .word 0x0104
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x11f0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xe9696969, @long_dest
- beq .Lldisp162
- fail
-.Lldisp162:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_disp32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-666, er0
- shar.l #2, @(666:32, er0) ; shift right arithmetic by two, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x11f0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr32 long_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xe9696969, @long_dest
- beq .Lldisp322
- fail
-.Lldisp322:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_abs16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.l #2, @long_dest:16 ; shift right arithmetic by two, abs16
-;;; .word 0x0104
-;;; .word 0x6b08
-;;; .word long_dest
-;;; .word 0x11f0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xe9696969, @long_dest
- beq .Llabs162
- fail
-.Llabs162:
- mov #0xa5a5a5a5, @long_dest
-
-shar_l_abs32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shar.l #2, @long_dest:32 ; shift right arithmetic by two, abs32
-;;; .word 0x0104
-;;; .word 0x6b28
-;;; .long long_dest
-;;; .word 0x11f0
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1110 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0xe9696969, @long_dest
- beq .Llabs322
- fail
-.Llabs322:
- mov #0xa5a5a5a5, @long_dest
-
-.endif
-.endif
- pass
-
- exit 0
-
diff --git a/sim/testsuite/sim/h8300/shll.s b/sim/testsuite/sim/h8300/shll.s
deleted file mode 100644
index fcff565..0000000
--- a/sim/testsuite/sim/h8300/shll.s
+++ /dev/null
@@ -1,308 +0,0 @@
-# Hitachi H8 testcase 'shll'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
- .data
-byte_dest: .byte 0xa5
- .align 2
-word_dest: .word 0xa5a5
- .align 4
-long_dest: .long 0xa5a5a5a5
-
- .text
-
-shll_b_reg8_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shll.b r0l ; shift left logical by one
-;;; .word 0x1008
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- test_h_gr16 0xa54a r0 ; 1010 0101 -> 0100 1010
-.if (sim_cpu)
- test_h_gr32 0xa5a5a54a er0
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-shll_b_reg8_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shll.b #2, r0l ; shift left logical by two
-;;; .word 0x1048
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
-
- test_h_gr16 0xa594 r0 ; 1010 0101 -> 1001 0100
-.if (sim_cpu)
- test_h_gr32 0xa5a5a594 er0
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-shll_b_reg8_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shll.b #4, r0l ; shift left logical by four
-;;; .word 0x10a8
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- test_h_gr16 0xa550 r0 ; 1010 0101 -> 0101 0000
- test_h_gr32 0xa5a5a550 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-.if (sim_cpu) ; Not available in h8300 mode
-shll_w_reg16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shll.w r0 ; shift left logical by one
-;;; .word 0x1010
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- test_h_gr16 0x4b4a r0 ; 1010 0101 1010 0101 -> 0100 1011 0100 1010
- test_h_gr32 0xa5a54b4a er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-shll_w_reg16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shll.w #2, r0 ; shift left logical by two
-;;; .word 0x1050
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
- test_h_gr16 0x9694 r0 ; 1010 0101 1010 0101 -> 1001 0110 1001 0100
- test_h_gr32 0xa5a59694 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-shll_w_reg16_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shll.w #4, r0 ; shift left logical by four
-;;; .word 0x1020
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- test_h_gr16 0x5a50 r0 ; 1010 0101 1010 0101 -> 0101 1010 0101 0000
- test_h_gr32 0xa5a55a50 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-shll_w_reg16_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shll.w #8, r0 ; shift left logical by eight
-;;; .word 0x1060
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
- test_h_gr16 0xa500 r0 ; 1010 0101 1010 0101 -> 1010 0101 0000 0000
- test_h_gr32 0xa5a5a500 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-shll_l_reg32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shll.l er0 ; shift left logical by one
-;;; .word 1030
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0100 1011 0100 1011 0100 1011 0100 1010
- test_h_gr32 0x4b4b4b4a er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-shll_l_reg32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shll.l #2, er0 ; shift left logical by two
-;;; .word 0x1070
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_set
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 1001 0110 1001 0110 1001 0110 1001 0100
- test_h_gr32 0x96969694 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-shll_l_reg32_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shll.l #4, er0 ; shift left logical by four
-;;; .word 0x1038
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0101 1010 0101 1010 0101 1010 0101 0000
- test_h_gr32 0x5a5a5a50 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-shll_l_reg32_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shll.l #8, er0 ; shift left logical by eight
-;;; .word 0x1078
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
- test_h_gr16 0xa500 r0
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 1010 0101 1010 0101 1010 0101 0000 0000
- test_h_gr32 0xa5a5a500 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-shll_l_reg32_16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shll.l #16, er0 ; shift left logical by sixteen
-;;; .word 0x10f8
-
- test_carry_set ; H=0 N=1 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_set
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 1010 0101 1010 0101 0000 0000 0000 0000
- test_h_gr32 0xa5a50000 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-.endif
-
- pass
-
- exit 0
-
diff --git a/sim/testsuite/sim/h8300/shlr.s b/sim/testsuite/sim/h8300/shlr.s
deleted file mode 100644
index 14b80da..0000000
--- a/sim/testsuite/sim/h8300/shlr.s
+++ /dev/null
@@ -1,4018 +0,0 @@
-# Hitachi H8 testcase 'shlr'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
- .data
-byte_dest: .byte 0xa5
- .align 2
-word_dest: .word 0xa5a5
- .align 4
-long_dest: .long 0xa5a5a5a5
-
- .text
-
-shlr_b_reg8_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.b r0l ; shift right logical by one
-;;; .word 0x1108
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr16 0xa552 r0 ; 1010 0101 -> 0101 0010
-.if (sim_cpu)
- test_h_gr32 0xa5a5a552 er0
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-shlr_b_ind_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- shlr.b @er0 ; shift right logical by one, indirect
-;;; .word 0x7d00
-;;; .word 0x1100
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbind1
- fail
-.Lbind1:
- mov.b #0xa5, @byte_dest
-
-shlr_b_postinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- shlr.b @er0+ ; shift right logical by one, postinc
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0x1100
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest+1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbpostinc1
- fail
-.Lbpostinc1:
- mov.b #0xa5, @byte_dest
-
-shlr_b_postdec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- shlr.b @er0- ; shift right logical by one, postdec
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0x1100
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbpostdec1
- fail
-.Lbpostdec1:
- mov.b #0xa5, @byte_dest
-
-shlr_b_preinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-1, er0
- shlr.b @+er0 ; shift right logical by one, preinc
-;;; .word 0x0175
-;;; .word 0x6c08
-;;; .word 0x1100
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbpreinc1
- fail
-.Lbpreinc1:
- mov.b #0xa5, @byte_dest
-
-shlr_b_predec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest+1, er0
- shlr.b @-er0 ; shift right logical by one, predec
-;;; .word 0x0177
-;;; .word 0x6c08
-;;; .word 0x1100
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbpredec1
- fail
-.Lbpredec1:
- mov.b #0xa5, @byte_dest
-
-shlr_b_disp2_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-2, er0
- shlr.b @(2:2, er0) ; shift right logical by one, disp2
-;;; .word 0x0176
-;;; .word 0x6808
-;;; .word 0x1100
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbdisp21
- fail
-.Lbdisp21:
- mov.b #0xa5, @byte_dest
-
-shlr_b_disp16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-44, er0
- shlr.b @(44:16, er0) ; shift right logical by one, disp16
-;;; .word 0x0174
-;;; .word 0x6e08
-;;; .word 44
-;;; .word 0x1100
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbdisp161
- fail
-.Lbdisp161:
- mov.b #0xa5, @byte_dest
-
-shlr_b_disp32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-666, er0
- shlr.b @(666:32, er0) ; shift right logical by one, disp32
-;;; .word 0x7884
-;;; .word 0x6a28
-;;; .long 666
-;;; .word 0x1100
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbdisp321
- fail
-.Lbdisp321:
- mov.b #0xa5, @byte_dest
-
-shlr_b_abs16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.b @byte_dest:16 ; shift right logical by one, abs16
-;;; .word 0x6a18
-;;; .word byte_dest
-;;; .word 0x1100
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbabs161
- fail
-.Lbabs161:
- mov.b #0xa5, @byte_dest
-
-shlr_b_abs32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.b @byte_dest:32 ; shift right logical by one, abs32
-;;; .word 0x6a38
-;;; .long byte_dest
-;;; .word 0x1100
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0101 0010
- cmp.b #0x52, @byte_dest
- beq .Lbabs321
- fail
-.Lbabs321:
- mov.b #0xa5, @byte_dest
-.endif
-
-shlr_b_reg8_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.b #2, r0l ; shift right logical by two
-;;; .word 0x1148
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- test_h_gr16 0xa529 r0 ; 1010 0101 -> 0010 1001
-.if (sim_cpu)
- test_h_gr32 0xa5a5a529 er0
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-shlr_b_ind_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- shlr.b #2, @er0 ; shift right logical by two, indirect
-;;; .word 0x7d00
-;;; .word 0x1140
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0010 1001
- cmp.b #0x29, @byte_dest
- beq .Lbind2
- fail
-.Lbind2:
- mov.b #0xa5, @byte_dest
-
-shlr_b_postinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- shlr.b #2, @er0+ ; shift right logical by two, postinc
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0x1140
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest+1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0010 1001
- cmp.b #0x29, @byte_dest
- beq .Lbpostinc2
- fail
-.Lbpostinc2:
- mov.b #0xa5, @byte_dest
-
-shlr_b_postdec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- shlr.b #2, @er0- ; shift right logical by two, postdec
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0x1140
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0010 1001
- cmp.b #0x29, @byte_dest
- beq .Lbpostdec2
- fail
-.Lbpostdec2:
- mov.b #0xa5, @byte_dest
-
-shlr_b_preinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-1, er0
- shlr.b #2, @+er0 ; shift right logical by two, preinc
-;;; .word 0x0175
-;;; .word 0x6c08
-;;; .word 0x1140
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0010 1001
- cmp.b #0x29, @byte_dest
- beq .Lbpreinc2
- fail
-.Lbpreinc2:
- mov.b #0xa5, @byte_dest
-
-shlr_b_predec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest+1, er0
- shlr.b #2, @-er0 ; shift right logical by two, predec
-;;; .word 0x0177
-;;; .word 0x6c08
-;;; .word 0x1140
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0010 1001
- cmp.b #0x29, @byte_dest
- beq .Lbpredec2
- fail
-.Lbpredec2:
- mov.b #0xa5, @byte_dest
-
-shlr_b_disp2_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-2, er0
- shlr.b #2, @(2:2, er0) ; shift right logical by two, disp2
-;;; .word 0x0176
-;;; .word 0x6808
-;;; .word 0x1140
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0010 1001
- cmp.b #0x29, @byte_dest
- beq .Lbdisp22
- fail
-.Lbdisp22:
- mov.b #0xa5, @byte_dest
-
-shlr_b_disp16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-44, er0
- shlr.b #2, @(44:16, er0) ; shift right logical by two, disp16
-;;; .word 0x0174
-;;; .word 0x6e08
-;;; .word 44
-;;; .word 0x1140
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0010 1001
- cmp.b #0x29, @byte_dest
- beq .Lbdisp162
- fail
-.Lbdisp162:
- mov.b #0xa5, @byte_dest
-
-shlr_b_disp32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-666, er0
- shlr.b #2, @(666:32, er0) ; shift right logical by two, disp32
-;;; .word 0x7884
-;;; .word 0x6a28
-;;; .long 666
-;;; .word 0x1140
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0010 1001
- cmp.b #0x29, @byte_dest
- beq .Lbdisp322
- fail
-.Lbdisp322:
- mov.b #0xa5, @byte_dest
-
-shlr_b_abs16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.b #2, @byte_dest:16 ; shift right logical by two, abs16
-;;; .word 0x6a18
-;;; .word byte_dest
-;;; .word 0x1140
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0010 1001
- cmp.b #0x29, @byte_dest
- beq .Lbabs162
- fail
-.Lbabs162:
- mov.b #0xa5, @byte_dest
-
-shlr_b_abs32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.b #2, @byte_dest:32 ; shift right logical by two, abs32
-;;; .word 0x6a38
-;;; .long byte_dest
-;;; .word 0x1140
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0010 1001
- cmp.b #0x29, @byte_dest
- beq .Lbabs322
- fail
-.Lbabs322:
- mov.b #0xa5, @byte_dest
-
-shlr_b_reg8_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.b #4, r0l ; shift right logical by four
-;;; .word 0x11a8
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr16 0xa50a r0 ; 1010 0101 -> 0000 1010
- test_h_gr32 0xa5a5a50a er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-shlr_b_ind_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- shlr.b #4, @er0 ; shift right logical by four, indirect
-;;; .word 0x7d00
-;;; .word 0x11a0
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0000 1010
- cmp.b #0x0a, @byte_dest
- beq .Lbind4
- fail
-.Lbind4:
- mov.b #0xa5, @byte_dest
-
-shlr_b_postinc_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- shlr.b #4, @er0+ ; shift right logical by four, postinc
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0x11a0
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest+1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0000 1010
- cmp.b #0x0a, @byte_dest
- beq .Lbpostinc4
- fail
-.Lbpostinc4:
- mov.b #0xa5, @byte_dest
-
-shlr_b_postdec_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest, er0
- shlr.b #4, @er0- ; shift right logical by four, postdec
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0x11a0
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-1 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0000 1010
- cmp.b #0x0a, @byte_dest
- beq .Lbpostdec4
- fail
-.Lbpostdec4:
- mov.b #0xa5, @byte_dest
-
-shlr_b_preinc_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-1, er0
- shlr.b #4, @+er0 ; shift right logical by four, preinc
-;;; .word 0x0175
-;;; .word 0x6c08
-;;; .word 0x11a0
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0000 1010
- cmp.b #0x0a, @byte_dest
- beq .Lbpreinc4
- fail
-.Lbpreinc4:
- mov.b #0xa5, @byte_dest
-
-shlr_b_predec_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest+1, er0
- shlr.b #4, @-er0 ; shift right logical by four, predec
-;;; .word 0x0177
-;;; .word 0x6c08
-;;; .word 0x11a0
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0000 1010
- cmp.b #0x0a, @byte_dest
- beq .Lbpredec4
- fail
-.Lbpredec4:
- mov.b #0xa5, @byte_dest
-
-shlr_b_disp2_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-2, er0
- shlr.b #4, @(2:2, er0) ; shift right logical by four, disp2
-;;; .word 0x0176
-;;; .word 0x6808
-;;; .word 0x11a0
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0000 1010
- cmp.b #0x0a, @byte_dest
- beq .Lbdisp24
- fail
-.Lbdisp24:
- mov.b #0xa5, @byte_dest
-
-shlr_b_disp16_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-44, er0
- shlr.b #4, @(44:16, er0) ; shift right logical by four, disp16
-;;; .word 0x0174
-;;; .word 0x6e08
-;;; .word 44
-;;; .word 0x11a0
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0000 1010
- cmp.b #0x0a, @byte_dest
- beq .Lbdisp164
- fail
-.Lbdisp164:
- mov.b #0xa5, @byte_dest
-
-shlr_b_disp32_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #byte_dest-666, er0
- shlr.b #4, @(666:32, er0) ; shift right logical by four, disp32
-;;; .word 0x7884
-;;; .word 0x6a28
-;;; .long 666
-;;; .word 0x11a0
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 byte_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0000 1010
- cmp.b #0x0a, @byte_dest
- beq .Lbdisp324
- fail
-.Lbdisp324:
- mov.b #0xa5, @byte_dest
-
-shlr_b_abs16_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.b #4, @byte_dest:16 ; shift right logical by four, abs16
-;;; .word 0x6a18
-;;; .word byte_dest
-;;; .word 0x11a0
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0000 1010
- cmp.b #0x0a, @byte_dest
- beq .Lbabs164
- fail
-.Lbabs164:
- mov.b #0xa5, @byte_dest
-
-shlr_b_abs32_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.b #4, @byte_dest:32 ; shift right logical by four, abs32
-;;; .word 0x6a38
-;;; .long byte_dest
-;;; .word 0x11a0
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 -> 0000 1010
- cmp.b #0x0a, @byte_dest
- beq .Lbabs324
- fail
-.Lbabs324:
- mov.b #0xa5, @byte_dest
-.endif
-
-.if (sim_cpu == h8sx)
-shlr_w_imm5_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.w #15:5, r0 ; shift right logical by 5-bit immediate
-;;; .word 0x038f
-;;; .word 0x1110
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- ; 1010 0101 1010 0101 -> 0000 0000 0000 0001
- test_h_gr32 0xa5a50001 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-.if (sim_cpu) ; Not available in h8300 mode
-shlr_w_reg16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.w r0 ; shift right logical by one
-;;; .word 0x1110
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- test_h_gr16 0x52d2 r0 ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- test_h_gr32 0xa5a552d2 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-shlr_w_ind_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shlr.w @er0 ; shift right logical by one, indirect
-;;; .word 0x7d80
-;;; .word 0x1110
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwind1
- fail
-.Lwind1:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_postinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shlr.w @er0+ ; shift right logical by one, postinc
-;;; .word 0x0154
-;;; .word 0x6d08
-;;; .word 0x1110
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest+2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwpostinc1
- fail
-.Lwpostinc1:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_postdec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shlr.w @er0- ; shift right logical by one, postdec
-;;; .word 0x0156
-;;; .word 0x6d08
-;;; .word 0x1110
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwpostdec1
- fail
-.Lwpostdec1:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_preinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- shlr.w @+er0 ; shift right logical by one, preinc
-;;; .word 0x0155
-;;; .word 0x6d08
-;;; .word 0x1110
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwpreinc1
- fail
-.Lwpreinc1:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_predec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest+2, er0
- shlr.w @-er0 ; shift right logical by one, predec
-;;; .word 0x0157
-;;; .word 0x6d08
-;;; .word 0x1110
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwpredec1
- fail
-.Lwpredec1:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_disp2_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- shlr.w @(2:2, er0) ; shift right logical by one, disp2
-;;; .word 0x0156
-;;; .word 0x6908
-;;; .word 0x1110
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwdisp21
- fail
-.Lwdisp21:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_disp16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-44, er0
- shlr.w @(44:16, er0) ; shift right logical by one, disp16
-;;; .word 0x0154
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x1110
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwdisp161
- fail
-.Lwdisp161:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_disp32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-666, er0
- shlr.w @(666:32, er0) ; shift right logical by one, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x1110
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwdisp321
- fail
-.Lwdisp321:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_abs16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.w @word_dest:16 ; shift right logical by one, abs16
-;;; .word 0x6b18
-;;; .word word_dest
-;;; .word 0x1110
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwabs161
- fail
-.Lwabs161:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_abs32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.w @word_dest:32 ; shift right logical by one, abs32
-;;; .word 0x6b38
-;;; .long word_dest
-;;; .word 0x1110
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0101 0010 1101 0010
- cmp.w #0x52d2, @word_dest
- beq .Lwabs321
- fail
-.Lwabs321:
- mov.w #0xa5a5, @word_dest
-.endif
-
-shlr_w_reg16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.w #2, r0 ; shift right logical by two
-;;; .word 0x1150
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr16 0x2969 r0 ; 1010 0101 1010 0101 -> 0010 1001 0110 1001
- test_h_gr32 0xa5a52969 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-shlr_w_ind_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shlr.w #2, @er0 ; shift right logical by two, indirect
-;;; .word 0x7d80
-;;; .word 0x1150
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0010 1001 0110 1001
- cmp.w #0x2969, @word_dest
- beq .Lwind2
- fail
-.Lwind2:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_postinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shlr.w #2, @er0+ ; shift right logical by two, postinc
-;;; .word 0x0154
-;;; .word 0x6d08
-;;; .word 0x1150
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest+2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0010 1001 0110 1001
- cmp.w #0x2969, @word_dest
- beq .Lwpostinc2
- fail
-.Lwpostinc2:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_postdec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shlr.w #2, @er0- ; shift right logical by two, postdec
-;;; .word 0x0156
-;;; .word 0x6d08
-;;; .word 0x1150
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0010 1001 0110 1001
- cmp.w #0x2969, @word_dest
- beq .Lwpostdec2
- fail
-.Lwpostdec2:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_preinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- shlr.w #2, @+er0 ; shift right logical by two, preinc
-;;; .word 0x0155
-;;; .word 0x6d08
-;;; .word 0x1150
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0010 1001 0110 1001
- cmp.w #0x2969, @word_dest
- beq .Lwpreinc2
- fail
-.Lwpreinc2:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_predec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest+2, er0
- shlr.w #2, @-er0 ; shift right logical by two, predec
-;;; .word 0x0157
-;;; .word 0x6d08
-;;; .word 0x1150
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0010 1001 0110 1001
- cmp.w #0x2969, @word_dest
- beq .Lwpredec2
- fail
-.Lwpredec2:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_disp2_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- shlr.w #2, @(2:2, er0) ; shift right logical by two, disp2
-;;; .word 0x0156
-;;; .word 0x6908
-;;; .word 0x1150
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0010 1001 0110 1001
- cmp.w #0x2969, @word_dest
- beq .Lwdisp22
- fail
-.Lwdisp22:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_disp16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-44, er0
- shlr.w #2, @(44:16, er0) ; shift right logical by two, disp16
-;;; .word 0x0154
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x1150
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0010 1001 0110 1001
- cmp.w #0x2969, @word_dest
- beq .Lwdisp162
- fail
-.Lwdisp162:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_disp32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-666, er0
- shlr.w #2, @(666:32, er0) ; shift right logical by two, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x1150
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0010 1001 0110 1001
- cmp.w #0x2969, @word_dest
- beq .Lwdisp322
- fail
-.Lwdisp322:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_abs16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.w #2, @word_dest:16 ; shift right logical by two, abs16
-;;; .word 0x6b18
-;;; .word word_dest
-;;; .word 0x1150
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0010 1001 0110 1001
- cmp.w #0x2969, @word_dest
- beq .Lwabs162
- fail
-.Lwabs162:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_abs32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.w #2, @word_dest:32 ; shift right logical by two, abs32
-;;; .word 0x6b38
-;;; .long word_dest
-;;; .word 0x1150
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0010 1001 0110 1001
- cmp.w #0x2969, @word_dest
- beq .Lwabs322
- fail
-.Lwabs322:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_reg16_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.w #4, r0 ; shift right logical by four
-;;; .word 0x1120
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr16 0x0a5a r0 ; 1010 0101 1010 0101 -> 0000 1010 0101 1010
- test_h_gr32 0xa5a50a5a er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-shlr_w_ind_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shlr.w #4, @er0 ; shift right logical by four, indirect
-;;; .word 0x7d80
-;;; .word 0x1120
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 1010 0101 1010
- cmp.w #0x0a5a, @word_dest
- beq .Lwind4
- fail
-.Lwind4:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_postinc_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shlr.w #4, @er0+ ; shift right logical by four, postinc
-;;; .word 0x0154
-;;; .word 0x6d08
-;;; .word 0x1120
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest+2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 1010 0101 1010
- cmp.w #0x0a5a, @word_dest
- beq .Lwpostinc4
- fail
-.Lwpostinc4:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_postdec_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shlr.w #4, @er0- ; shift right logical by four, postdec
-;;; .word 0x0156
-;;; .word 0x6d08
-;;; .word 0x1120
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 1010 0101 1010
- cmp.w #0x0a5a, @word_dest
- beq .Lwpostdec4
- fail
-.Lwpostdec4:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_preinc_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- shlr.w #4, @+er0 ; shift right logical by four, preinc
-;;; .word 0x0155
-;;; .word 0x6d08
-;;; .word 0x1120
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 1010 0101 1010
- cmp.w #0x0a5a, @word_dest
- beq .Lwpreinc4
- fail
-.Lwpreinc4:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_predec_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest+2, er0
- shlr.w #4, @-er0 ; shift right logical by four, predec
-;;; .word 0x0157
-;;; .word 0x6d08
-;;; .word 0x1120
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 1010 0101 1010
- cmp.w #0x0a5a, @word_dest
- beq .Lwpredec4
- fail
-.Lwpredec4:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_disp2_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- shlr.w #4, @(2:2, er0) ; shift right logical by four, disp2
-;;; .word 0x0156
-;;; .word 0x6908
-;;; .word 0x1120
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 1010 0101 1010
- cmp.w #0x0a5a, @word_dest
- beq .Lwdisp24
- fail
-.Lwdisp24:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_disp16_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-44, er0
- shlr.w #4, @(44:16, er0) ; shift right logical by four, disp16
-;;; .word 0x0154
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x1120
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 1010 0101 1010
- cmp.w #0x0a5a, @word_dest
- beq .Lwdisp164
- fail
-.Lwdisp164:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_disp32_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-666, er0
- shlr.w #4, @(666:32, er0) ; shift right logical by four, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x1120
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 1010 0101 1010
- cmp.w #0x0a5a, @word_dest
- beq .Lwdisp324
- fail
-.Lwdisp324:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_abs16_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.w #4, @word_dest:16 ; shift right logical by four, abs16
-;;; .word 0x6b18
-;;; .word word_dest
-;;; .word 0x1120
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 1010 0101 1010
- cmp.w #0x0a5a, @word_dest
- beq .Lwabs164
- fail
-.Lwabs164:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_abs32_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.w #4, @word_dest:32 ; shift right logical by four, abs32
-;;; .word 0x6b38
-;;; .long word_dest
-;;; .word 0x1120
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 1010 0101 1010
- cmp.w #0x0a5a, @word_dest
- beq .Lwabs324
- fail
-.Lwabs324:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_reg16_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.w #8, r0 ; shift right logical by eight
-;;; .word 0x1160
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr16 0x00a5 r0 ; 1010 0101 1010 0101 -> 0000 0000 1010 0101
- test_h_gr32 0xa5a500a5 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-shlr_w_ind_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shlr.w #8, @er0 ; shift right logical by eight, indirect
-;;; .word 0x7d80
-;;; .word 0x1160
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 0000 1010 0101
- cmp.w #0x00a5, @word_dest
- beq .Lwind8
- fail
-.Lwind8:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_postinc_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shlr.w #8, @er0+ ; shift right logical by eight, postinc
-;;; .word 0x0154
-;;; .word 0x6d08
-;;; .word 0x1160
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest+2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 0000 1010 0101
- cmp.w #0x00a5, @word_dest
- beq .Lwpostinc8
- fail
-.Lwpostinc8:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_postdec_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest, er0
- shlr.w #8, @er0- ; shift right logical by eight, postdec
-;;; .word 0x0156
-;;; .word 0x6d08
-;;; .word 0x1160
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 0000 1010 0101
- cmp.w #0x00a5, @word_dest
- beq .Lwpostdec8
- fail
-.Lwpostdec8:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_preinc_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- shlr.w #8, @+er0 ; shift right logical by eight, preinc
-;;; .word 0x0155
-;;; .word 0x6d08
-;;; .word 0x1160
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 0000 1010 0101
- cmp.w #0x00a5, @word_dest
- beq .Lwpreinc8
- fail
-.Lwpreinc8:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_predec_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest+2, er0
- shlr.w #8, @-er0 ; shift right logical by eight, predec
-;;; .word 0x0157
-;;; .word 0x6d08
-;;; .word 0x1160
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 0000 1010 0101
- cmp.w #0x00a5, @word_dest
- beq .Lwpredec8
- fail
-.Lwpredec8:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_disp2_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-2, er0
- shlr.w #8, @(2:2, er0) ; shift right logical by eight, disp2
-;;; .word 0x0156
-;;; .word 0x6908
-;;; .word 0x1160
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 0000 1010 0101
- cmp.w #0x00a5, @word_dest
- beq .Lwdisp28
- fail
-.Lwdisp28:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_disp16_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-44, er0
- shlr.w #8, @(44:16, er0) ; shift right logical by eight, disp16
-;;; .word 0x0154
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x1160
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 0000 1010 0101
- cmp.w #0x00a5, @word_dest
- beq .Lwdisp168
- fail
-.Lwdisp168:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_disp32_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #word_dest-666, er0
- shlr.w #8, @(666:32, er0) ; shift right logical by eight, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x1160
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 word_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 0000 1010 0101
- cmp.w #0x00a5, @word_dest
- beq .Lwdisp328
- fail
-.Lwdisp328:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_abs16_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.w #8, @word_dest:16 ; shift right logical by eight, abs16
-;;; .word 0x6b18
-;;; .word word_dest
-;;; .word 0x1160
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 0000 1010 0101
- cmp.w #0x00a5, @word_dest
- beq .Lwabs168
- fail
-.Lwabs168:
- mov.w #0xa5a5, @word_dest
-
-shlr_w_abs32_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.w #8, @word_dest:32 ; shift right logical by eight, abs32
-;;; .word 0x6b38
-;;; .long word_dest
-;;; .word 0x1160
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 -> 0000 0000 1010 0101
- cmp.w #0x00a5, @word_dest
- beq .Lwabs328
- fail
-.Lwabs328:
- mov.w #0xa5a5, @word_dest
-
-shlr_l_imm5_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.l #31:5, er0 ; shift right logical by 5-bit immediate
-;;; .word 0x0399
-;;; .word 0x1130
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0000 0000 0000 0000 0000 0000 0000 0001
- test_h_gr32 0x1 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-shlr_l_reg32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.l er0 ; shift right logical by one, register
-;;; .word 0x1130
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0101 0010 1101 0010 1101 0010 1101 0010
- test_h_gr32 0x52d2d2d2 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-shlr_l_ind_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shlr.l @er0 ; shift right logical by one, indirect
-;;; .word 0x0104
-;;; .word 0x6908
-;;; .word 0x1130
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Llind1
- fail
-.Llind1:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_postinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shlr.l @er0+ ; shift right logical by one, postinc
-;;; .word 0x0104
-;;; .word 0x6d08
-;;; .word 0x1130
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest+4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Llpostinc1
- fail
-.Llpostinc1:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_postdec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shlr.l @er0- ; shift right logical by one, postdec
-;;; .word 0x0106
-;;; .word 0x6d08
-;;; .word 0x1130
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Llpostdec1
- fail
-.Llpostdec1:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_preinc_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-4, er0
- shlr.l @+er0 ; shift right logical by one, preinc
-;;; .word 0x0105
-;;; .word 0x6d08
-;;; .word 0x1130
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Llpreinc1
- fail
-.Llpreinc1:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_predec_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest+4, er0
- shlr.l @-er0 ; shift right logical by one, predec
-;;; .word 0x0107
-;;; .word 0x6d08
-;;; .word 0x1130
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Llpredec1
- fail
-.Llpredec1:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_disp2_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-2, er0
- shlr.l @(2:2, er0) ; shift right logical by one, disp2
-;;; .word 0x0106
-;;; .word 0x6908
-;;; .word 0x1130
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Lldisp21
- fail
-.Lldisp21:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_disp16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-44, er0
- shlr.l @(44:16, er0) ; shift right logical by one, disp16
-;;; .word 0x0104
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x1130
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Lldisp161
- fail
-.Lldisp161:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_disp32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-666, er0
- shlr.l @(666:32, er0) ; shift right logical by one, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x1130
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Lldisp321
- fail
-.Lldisp321:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_abs16_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.l @long_dest:16 ; shift right logical by one, abs16
-;;; .word 0x0104
-;;; .word 0x6b08
-;;; .word long_dest
-;;; .word 0x1130
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Llabs161
- fail
-.Llabs161:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_abs32_1:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.l @long_dest:32 ; shift right logical by one, abs32
-;;; .word 0x0104
-;;; .word 0x6b28
-;;; .long long_dest
-;;; .word 0x1130
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0101 0010 1101 0010 1101 0010 1101 0010
- cmp.l #0x52d2d2d2, @long_dest
- beq .Llabs321
- fail
-.Llabs321:
- mov #0xa5a5a5a5, @long_dest
-.endif
-
-shlr_l_reg32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.l #2, er0 ; shift right logical by two, register
-;;; .word 0x1170
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0010 1001 0110 1001 0110 1001 0110 1001
- test_h_gr32 0x29696969 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-
-shlr_l_ind_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shlr.l #2, @er0 ; shift right logical by two, indirect
-;;; .word 0x0104
-;;; .word 0x6908
-;;; .word 0x1170
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x29696969, @long_dest
- beq .Llind2
- fail
-.Llind2:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_postinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shlr.l #2, @er0+ ; shift right logical by two, postinc
-;;; .word 0x0104
-;;; .word 0x6d08
-;;; .word 0x1170
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest+4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x29696969, @long_dest
- beq .Llpostinc2
- fail
-.Llpostinc2:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_postdec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shlr.l #2, @er0- ; shift right logical by two, postdec
-;;; .word 0x0106
-;;; .word 0x6d08
-;;; .word 0x1170
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x29696969, @long_dest
- beq .Llpostdec2
- fail
-.Llpostdec2:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_preinc_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-4, er0
- shlr.l #2, @+er0 ; shift right logical by two, preinc
-;;; .word 0x0105
-;;; .word 0x6d08
-;;; .word 0x1170
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x29696969, @long_dest
- beq .Llpreinc2
- fail
-.Llpreinc2:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_predec_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest+4, er0
- shlr.l #2, @-er0 ; shift right logical by two, predec
-;;; .word 0x0107
-;;; .word 0x6d08
-;;; .word 0x1170
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x29696969, @long_dest
- beq .Llpredec2
- fail
-.Llpredec2:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_disp2_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-2, er0
- shlr.l #2, @(2:2, er0) ; shift right logical by two, disp2
-;;; .word 0x0106
-;;; .word 0x6908
-;;; .word 0x1170
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x29696969, @long_dest
- beq .Lldisp22
- fail
-.Lldisp22:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_disp16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-44, er0
- shlr.l #2, @(44:16, er0) ; shift right logical by two, disp16
-;;; .word 0x0104
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x1170
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x29696969, @long_dest
- beq .Lldisp162
- fail
-.Lldisp162:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_disp32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-666, er0
- shlr.l #2, @(666:32, er0) ; shift right logical by two, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x1170
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x29696969, @long_dest
- beq .Lldisp322
- fail
-.Lldisp322:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_abs16_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.l #2, @long_dest:16 ; shift right logical by two, abs16
-;;; .word 0x0104
-;;; .word 0x6b08
-;;; .word long_dest
-;;; .word 0x1170
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x29696969, @long_dest
- beq .Llabs162
- fail
-.Llabs162:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_abs32_2:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.l #2, @long_dest:32 ; shift right logical by two, abs32
-;;; .word 0x0104
-;;; .word 0x6b28
-;;; .long long_dest
-;;; .word 0x1170
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0010 1001 0110 1001 0110 1001 0110 1001
- cmp.l #0x29696969, @long_dest
- beq .Llabs322
- fail
-.Llabs322:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_reg32_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.l #4, er0 ; shift right logical by four, register
-;;; .word 0x1138
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0000 1010 0101 1010 0101 1010 0101 1010
- test_h_gr32 0x0a5a5a5a er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-shlr_l_ind_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shlr.l #4, @er0 ; shift right logical by four, indirect
-;;; .word 0x0104
-;;; .word 0x6908
-;;; .word 0x1138
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 1010 0101 1010 0101 1010 0101 1010
- cmp.l #0x0a5a5a5a, @long_dest
- beq .Llind4
- fail
-.Llind4:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_postinc_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shlr.l #4, @er0+ ; shift right logical by four, postinc
-;;; .word 0x0104
-;;; .word 0x6d08
-;;; .word 0x1138
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest+4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 1010 0101 1010 0101 1010 0101 1010
- cmp.l #0x0a5a5a5a, @long_dest
- beq .Llpostinc4
- fail
-.Llpostinc4:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_postdec_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shlr.l #4, @er0- ; shift right logical by four, postdec
-;;; .word 0x0106
-;;; .word 0x6d08
-;;; .word 0x1138
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 1010 0101 1010 0101 1010 0101 1010
- cmp.l #0x0a5a5a5a, @long_dest
- beq .Llpostdec4
- fail
-.Llpostdec4:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_preinc_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-4, er0
- shlr.l #4, @+er0 ; shift right logical by four, preinc
-;;; .word 0x0105
-;;; .word 0x6d08
-;;; .word 0x1138
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 1010 0101 1010 0101 1010 0101 1010
- cmp.l #0x0a5a5a5a, @long_dest
- beq .Llpreinc4
- fail
-.Llpreinc4:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_predec_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest+4, er0
- shlr.l #4, @-er0 ; shift right logical by four, predec
-;;; .word 0x0107
-;;; .word 0x6d08
-;;; .word 0x1138
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 1010 0101 1010 0101 1010 0101 1010
- cmp.l #0x0a5a5a5a, @long_dest
- beq .Llpredec4
- fail
-.Llpredec4:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_disp2_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-2, er0
- shlr.l #4, @(2:2, er0) ; shift right logical by four, disp2
-;;; .word 0x0106
-;;; .word 0x6908
-;;; .word 0x1138
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 1010 0101 1010 0101 1010 0101 1010
- cmp.l #0x0a5a5a5a, @long_dest
- beq .Lldisp24
- fail
-.Lldisp24:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_disp16_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-44, er0
- shlr.l #4, @(44:16, er0) ; shift right logical by four, disp16
-;;; .word 0x0104
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x1138
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 1010 0101 1010 0101 1010 0101 1010
- cmp.l #0x0a5a5a5a, @long_dest
- beq .Lldisp164
- fail
-.Lldisp164:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_disp32_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-666, er0
- shlr.l #4, @(666:32, er0) ; shift right logical by four, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x1138
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 1010 0101 1010 0101 1010 0101 1010
- cmp.l #0x0a5a5a5a, @long_dest
- beq .Lldisp324
- fail
-.Lldisp324:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_abs16_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.l #4, @long_dest:16 ; shift right logical by four, abs16
-;;; .word 0x0104
-;;; .word 0x6b08
-;;; .word long_dest
-;;; .word 0x1138
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 1010 0101 1010 0101 1010 0101 1010
- cmp.l #0x0a5a5a5a, @long_dest
- beq .Llabs164
- fail
-.Llabs164:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_abs32_4:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.l #4, @long_dest:32 ; shift right logical by four, abs32
-;;; .word 0x0104
-;;; .word 0x6b28
-;;; .long long_dest
-;;; .word 0x1138
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 1010 0101 1010 0101 1010 0101 1010
- cmp.l #0x0a5a5a5a, @long_dest
- beq .Llabs324
- fail
-.Llabs324:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_reg32_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.l #8, er0 ; shift right logical by eight, register
-;;; .word 0x1178
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ; -> 0000 0000 1010 0101 1010 0101 1010 0101
- test_h_gr32 0x00a5a5a5 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-shlr_l_ind_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shlr.l #8, @er0 ; shift right logical by eight, indirect
-;;; .word 0x0104
-;;; .word 0x6908
-;;; .word 0x1178
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 1010 0101 1010 0101 1010 0101
- cmp.l #0x00a5a5a5, @long_dest
- beq .Llind8
- fail
-.Llind8:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_postinc_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shlr.l #8, @er0+ ; shift right logical by eight, postinc
-;;; .word 0x0104
-;;; .word 0x6d08
-;;; .word 0x1178
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest+4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 1010 0101 1010 0101 1010 0101
- cmp.l #0x00a5a5a5, @long_dest
- beq .Llpostinc8
- fail
-.Llpostinc8:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_postdec_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shlr.l #8, @er0- ; shift right logical by eight, postdec
-;;; .word 0x0106
-;;; .word 0x6d08
-;;; .word 0x1178
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 1010 0101 1010 0101 1010 0101
- cmp.l #0x00a5a5a5, @long_dest
- beq .Llpostdec8
- fail
-.Llpostdec8:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_preinc_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-4, er0
- shlr.l #8, @+er0 ; shift right logical by eight, preinc
-;;; .word 0x0105
-;;; .word 0x6d08
-;;; .word 0x1178
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 1010 0101 1010 0101 1010 0101
- cmp.l #0x00a5a5a5, @long_dest
- beq .Llpreinc8
- fail
-.Llpreinc8:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_predec_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest+4, er0
- shlr.l #8, @-er0 ; shift right logical by eight, predec
-;;; .word 0x0107
-;;; .word 0x6d08
-;;; .word 0x1178
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 1010 0101 1010 0101 1010 0101
- cmp.l #0x00a5a5a5, @long_dest
- beq .Llpredec8
- fail
-.Llpredec8:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_disp2_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-2, er0
- shlr.l #8, @(2:2, er0) ; shift right logical by eight, disp2
-;;; .word 0x0106
-;;; .word 0x6908
-;;; .word 0x1178
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 1010 0101 1010 0101 1010 0101
- cmp.l #0x00a5a5a5, @long_dest
- beq .Lldisp28
- fail
-.Lldisp28:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_disp16_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-44, er0
- shlr.l #8, @(44:16, er0) ; shift right logical by eight, disp16
-;;; .word 0x0104
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x1178
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 1010 0101 1010 0101 1010 0101
- cmp.l #0x00a5a5a5, @long_dest
- beq .Lldisp168
- fail
-.Lldisp168:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_disp32_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-666, er0
- shlr.l #8, @(666:32, er0) ; shift right logical by eight, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x1178
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 1010 0101 1010 0101 1010 0101
- cmp.l #0x00a5a5a5, @long_dest
- beq .Lldisp328
- fail
-.Lldisp328:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_abs16_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.l #8, @long_dest:16 ; shift right logical by eight, abs16
-;;; .word 0x0104
-;;; .word 0x6b08
-;;; .word long_dest
-;;; .word 0x1178
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 1010 0101 1010 0101 1010 0101
- cmp.l #0x00a5a5a5, @long_dest
- beq .Llabs168
- fail
-.Llabs168:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_abs32_8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.l #8, @long_dest:32 ; shift right logical by eight, abs32
-;;; .word 0x0104
-;;; .word 0x6b28
-;;; .long long_dest
-;;; .word 0x1178
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 1010 0101 1010 0101 1010 0101
- cmp.l #0x00a5a5a5, @long_dest
- beq .Llabs328
- fail
-.Llabs328:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_reg32_16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.l #16, er0 ; shift right logical by sixteen, register
-;;; .word 0x11f8
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 0000 0000 1010 0101 1010 0101
- test_h_gr32 0x0000a5a5 er0
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-shlr_l_ind_16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shlr.l #16, @er0 ; shift right logical by sixteen, indirect
-;;; .word 0x0104
-;;; .word 0x6908
-;;; .word 0x11f8
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 0000 0000 1010 0101 1010 0101
- cmp.l #0x0000a5a5, @long_dest
- beq .Llind16
- fail
-.Llind16:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_postinc_16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shlr.l #16, @er0+ ; shift right logical by sixteen, postinc
-;;; .word 0x0104
-;;; .word 0x6d08
-;;; .word 0x11f8
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest+4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 0000 0000 1010 0101 1010 0101
- cmp.l #0x0000a5a5, @long_dest
- beq .Llpostinc16
- fail
-.Llpostinc16:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_postdec_16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest, er0
- shlr.l #16, @er0- ; shift right logical by sixteen, postdec
-;;; .word 0x0106
-;;; .word 0x6d08
-;;; .word 0x11f8
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-4 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 0000 0000 1010 0101 1010 0101
- cmp.l #0x0000a5a5, @long_dest
- beq .Llpostdec16
- fail
-.Llpostdec16:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_preinc_16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-4, er0
- shlr.l #16, @+er0 ; shift right logical by sixteen, preinc
-;;; .word 0x0105
-;;; .word 0x6d08
-;;; .word 0x11f8
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 0000 0000 1010 0101 1010 0101
- cmp.l #0x0000a5a5, @long_dest
- beq .Llpreinc16
- fail
-.Llpreinc16:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_predec_16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest+4, er0
- shlr.l #16, @-er0 ; shift right logical by sixteen, predec
-;;; .word 0x0107
-;;; .word 0x6d08
-;;; .word 0x11f8
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 0000 0000 1010 0101 1010 0101
- cmp.l #0x0000a5a5, @long_dest
- beq .Llpredec16
- fail
-.Llpredec16:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_disp2_16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-2, er0
- shlr.l #16, @(2:2, er0) ; shift right logical by 16, dest2
-;;; .word 0x0106
-;;; .word 0x6908
-;;; .word 0x11f8
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-2 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 0000 0000 1010 0101 1010 0101
- cmp.l #0x0000a5a5, @long_dest
- beq .Lldisp216
- fail
-.Lldisp216:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_disp16_16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-44, er0
- shlr.l #16, @(44:16, er0) ; shift right logical by 16, disp16
-;;; .word 0x0104
-;;; .word 0x6f08
-;;; .word 44
-;;; .word 0x11f8
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-44 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 0000 0000 1010 0101 1010 0101
- cmp.l #0x0000a5a5, @long_dest
- beq .Lldisp1616
- fail
-.Lldisp1616:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_disp32_16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- mov #long_dest-666, er0
- shlr.l #16, @(666:32, er0) ; shift right logical by 16, disp32
-;;; .word 0x7884
-;;; .word 0x6b28
-;;; .long 666
-;;; .word 0x11f8
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_h_gr32 long_dest-666 er0
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 0000 0000 1010 0101 1010 0101
- cmp.l #0x0000a5a5, @long_dest
- beq .Lldisp3216
- fail
-.Lldisp3216:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_abs16_16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.l #16, @long_dest:16 ; shift right logical by 16, abs16
-;;; .word 0x0104
-;;; .word 0x6b08
-;;; .word long_dest
-;;; .word 0x11f8
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 0000 0000 1010 0101 1010 0101
- cmp.l #0x0000a5a5, @long_dest
- beq .Llabs1616
- fail
-.Llabs1616:
- mov #0xa5a5a5a5, @long_dest
-
-shlr_l_abs32_16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- shlr.l #16, @long_dest:32 ; shift right logical by 16, abs32
-;;; .word 0x0104
-;;; .word 0x6b28
-;;; .long long_dest
-;;; .word 0x11f8
-
- test_carry_set ; H=0 N=0 Z=0 V=0 C=1
- test_zero_clear
- test_ovf_clear
- test_neg_clear
-
- test_gr_a5a5 0 ; Make sure ALL general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- ; 1010 0101 1010 0101 1010 0101 1010 0101
- ;; -> 0000 0000 0000 0000 1010 0101 1010 0101
- cmp.l #0x0000a5a5, @long_dest
- beq .Llabs3216
- fail
-.Llabs3216:
- mov #0xa5a5a5a5, @long_dest
-.endif
-.endif
- pass
-
- exit 0
-
diff --git a/sim/testsuite/sim/h8300/stc.s b/sim/testsuite/sim/h8300/stc.s
deleted file mode 100644
index cbbd824..0000000
--- a/sim/testsuite/sim/h8300/stc.s
+++ /dev/null
@@ -1,389 +0,0 @@
-# Hitachi H8 testcase 'stc'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
- .data
-byte_dest1:
- .byte 0
-byte_dest2:
- .byte 0
-byte_dest3:
- .byte 0
-byte_dest4:
- .byte 0
-byte_dest5:
- .byte 0
-byte_dest6:
- .byte 0
-byte_dest7:
- .byte 0
-byte_dest8:
- .byte 0
-byte_dest9:
- .byte 0
-byte_dest10:
- .byte 0
-byte_dest11:
- .byte 0
-byte_dest12:
- .byte 0
-
- start
-
-stc_ccr_reg8:
- set_grs_a5a5
- set_ccr_zero
-
- ldc #0xff, ccr ; test value
- stc ccr, r0h ; copy test value to r0h
-
- test_h_gr16 0xffa5 r0 ; ff in r0h, a5 in r0l
-.if (sim_cpu) ; h/s/sx
- test_h_gr32 0xa5a5ffa5 er0 ; ff in r0h, a5 everywhere else
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8300s || sim_cpu == h8sx) ; Earlier versions, no exr
-stc_exr_reg8:
- set_grs_a5a5
- set_ccr_zero
-
- ldc #0x87, exr ; set exr to 0x87
- stc exr, r0l ; retrieve and check exr value
- cmp.b #0x87, r0l
- beq .L21
- fail
-.L21:
- test_h_gr32 0xa5a5a587 er0 ; Register 0 modified by test procedure.
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-stc_ccr_abs16:
- set_grs_a5a5
- set_ccr_zero
-
- ldc #0xff, ccr
- stc ccr, @byte_dest1:16 ; abs16 dest
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-stc_exr_abs16:
- set_grs_a5a5
- set_ccr_zero
-
- ldc #0x87, exr
- stc exr, @byte_dest2:16 ; abs16 dest
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-stc_ccr_abs32:
- set_grs_a5a5
- set_ccr_zero
-
- ldc #0xff, ccr
- stc ccr, @byte_dest3:32 ; abs32 dest
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-stc_exr_abs32:
- set_grs_a5a5
- set_ccr_zero
-
- ldc #0x87, exr
- stc exr, @byte_dest4:32 ; abs32 dest
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-stc_ccr_disp16:
- set_grs_a5a5
- set_ccr_zero
-
- mov #byte_dest4, er1
- ldc #0xff, ccr
- stc ccr, @(1:16,er1) ; disp16 dest (5)
-
- test_h_gr32 byte_dest4, er1 ; er1 still contains address
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-stc_exr_disp16:
- set_grs_a5a5
- set_ccr_zero
-
- mov #byte_dest7, er1
- ldc #0x87, exr
- stc exr, @(-1:16,er1) ; disp16 dest (6)
-
- test_h_gr32 byte_dest7, er1 ; er1 still contains address
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-stc_ccr_disp32:
- set_grs_a5a5
- set_ccr_zero
-
- mov #byte_dest6, er1
- ldc #0xff, ccr
- stc ccr, @(1:32,er1) ; disp32 dest (7)
-
- test_h_gr32 byte_dest6, er1 ; er1 still contains address
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-stc_exr_disp32:
- set_grs_a5a5
- set_ccr_zero
-
- mov #byte_dest9, er1
- ldc #0x87, exr
- stc exr, @(-1:32,er1) ; disp16 dest (8)
-
- test_h_gr32 byte_dest9, er1 ; er1 still contains address
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-stc_ccr_predecr:
- set_grs_a5a5
- set_ccr_zero
-
- mov #byte_dest10, er1
- ldc #0xff, ccr
- stc ccr, @-er1 ; predecr dest (9)
-
- test_h_gr32 byte_dest9, er1 ; er1 still contains address
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-stc_exr_predecr:
- set_grs_a5a5
- set_ccr_zero
-
- mov #byte_dest11, er1
- ldc #0x87, exr
- stc exr, @-er1 ; predecr dest (10)
-
- test_h_gr32 byte_dest10, er1 ; er1 still contains address
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-stc_ccr_ind:
- set_grs_a5a5
- set_ccr_zero
-
- mov #byte_dest11, er1
- ldc #0xff, ccr
- stc ccr, @er1 ; postinc dest (11)
-
- test_h_gr32 byte_dest11, er1 ; er1 still contains address
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-stc_exr_ind:
- set_grs_a5a5
- set_ccr_zero
-
- mov #byte_dest12, er1
- ldc #0x87, exr
- stc exr, @er1, exr ; postinc dest (12)
-
- test_h_gr32 byte_dest12, er1 ; er1 still contains address
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.endif
-
-.if (sim_cpu == h8sx) ; New vbr and sbr registers for h8sx
-stc_sbr_reg:
- set_grs_a5a5
- set_ccr_zero
-
- mov #0xaaaaaaaa, er0
- ldc er0, sbr ; set sbr to 0xaaaaaaaa
- stc sbr, er1 ; retreive and check sbr value
-
- test_h_gr32 0xaaaaaaaa er1
- test_h_gr32 0xaaaaaaaa er0 ; Register 0 modified by test procedure.
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-stc_vbr_reg:
- set_grs_a5a5
- set_ccr_zero
-
- mov #0xaaaaaaaa, er0
- ldc er0, vbr ; set sbr to 0xaaaaaaaa
- stc vbr, er1 ; retreive and check sbr value
-
- test_h_gr32 0xaaaaaaaa er1
- test_h_gr32 0xaaaaaaaa er0 ; Register 0 modified by test procedure.
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-check_results:
- ;; Now check results
- mov @byte_dest1, r0h
- cmp.b #0xff, r0h
- beq .L1
- fail
-
-.L1: mov @byte_dest2, r0h
- cmp.b #0x87, r0h
- beq .L2
- fail
-
-.L2: mov @byte_dest3, r0h
- cmp.b #0xff, r0h
- beq .L3
- fail
-
-.L3: mov @byte_dest4, r0h
- cmp.b #0x87, r0h
- beq .L4
- fail
-
-.L4: mov @byte_dest5, r0h
- cmp.b #0xff, r0h
- beq .L5
- fail
-
-.L5: mov @byte_dest6, r0h
- cmp.b #0x87, r0h
- beq .L6
- fail
-
-.L6: mov @byte_dest7, r0h
- cmp.b #0xff, r0h
- beq .L7
- fail
-
-.L7: mov @byte_dest8, r0h
- cmp.b #0x87, r0h
- beq .L8
- fail
-
-.L8: mov @byte_dest9, r0h
- cmp.b #0xff, r0h
- beq .L9
- fail
-
-.L9: mov @byte_dest10, r0h
- cmp.b #0x87, r0h
- beq .L10
- fail
-
-.L10: mov @byte_dest11, r0h
- cmp.b #0xff, r0h
- beq .L11
- fail
-
-.L11: mov @byte_dest12, r0h
- cmp.b #0x87, r0h
- beq .L12
- fail
-
-.L12:
-.endif
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/sub.b.s b/sim/testsuite/sim/h8300/sub.b.s
deleted file mode 100644
index 0183294..0000000
--- a/sim/testsuite/sim/h8300/sub.b.s
+++ /dev/null
@@ -1,289 +0,0 @@
-# Hitachi H8 testcase 'sub.b'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- # Instructions tested:
- # sub.b #xx:8, rd ; <illegal>
- # sub.b #xx:8, @erd ; 7 d rd ???? a ???? xxxxxxxx
- # sub.b #xx:8, @erd+ ; 0 1 7 4 6 c rd 1??? a ???? xxxxxxxx
- # sub.b #xx:8, @erd- ; 0 1 7 6 6 c rd 1??? a ???? xxxxxxxx
- # sub.b rs, rd ; 1 8 rs rd
- # sub.b reg8, @erd ; 7 d rd ???? 1 8 rs ????
- # sub.b reg8, @erd+ ; 0 1 7 9 8 rd 3 rs
- # sub.b reg8, @erd- ; 0 1 7 9 a rd 3 rs
- #
-
- # Coming soon:
- # sub.b #xx:8, @+erd ; 0 1 7 5 6 c rd 1??? a ???? xxxxxxxx
- # sub.b #xx:8, @-erd ; 0 1 7 7 6 c rd 1??? a ???? xxxxxxxx
- # sub.b reg8, @+erd ; 0 1 7 9 9 rd 3 rs
- # sub.b reg8, @-erd ; 0 1 7 9 b rd 3 rs
- # ...
-
-.data
-pre_byte: .byte 0
-byte_dest: .byte 0xa5
-post_byte: .byte 0
-
- start
-
-.if (0) ; Guess what? Sub.b immediate reg8 is illegal!
-sub_b_imm8_reg:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; sub.b #xx:8,Rd
- sub.b #5, r0l ; Immediate 8-bit operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa5a0 r0 ; sub result: a5 - 5
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a5a0 er0 ; sub result: a5 - 5
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-.if (sim_cpu == h8sx)
-sub_b_imm8_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; sub.b #xx:8,@eRd
- mov #byte_dest, er0
- sub.b #5:8, @er0 ; Immediate 8-bit src, reg indirect dst
-;;; .word 0x7d00
-;;; .word 0xa105
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 byte_dest, er0 ; er0 still contains address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the sub to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa0, r0l
- beq .L1
- fail
-.L1:
-
-sub_b_imm8_rdpostinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; sub.b #xx:8,@eRd+
- mov #byte_dest, er0
- sub.b #5:8, @er0+ ; Immediate 8-bit src, reg post-incr dest
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0xa105
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 post_byte, er0 ; er0 still contains address plus one
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the sub to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0x9b, r0l
- beq .L2
- fail
-.L2:
-
-sub_b_imm8_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; sub.b #xx:8,@eRd-
- mov #byte_dest, er0
- sub.b #5:8, @er0- ; Immediate 8-bit src, reg post-decr dest
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0xa105
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 pre_byte, er0 ; er0 still contains address minus one
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the sub to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0x96, r0l
- beq .L3
- fail
-.L3:
-
-.endif
-
-sub_b_reg8_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; sub.b Rs,Rd
- mov.b #5, r0h
- sub.b r0h, r0l ; Register operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0x05a0 r0 ; sub result: a5 - 5
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a505a0 er0 ; sub result: a5 - 5
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-sub_b_reg8_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; sub.b rs8,@eRd ; Subx to register indirect
- mov #byte_dest, er0
- mov #5, r1l
- sub.b r1l, @er0 ; reg8 src, reg indirect dest
-;;; .word 0x7d00
-;;; .word 0x1890
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0 ; er0 still contains address
- test_h_gr32 0xa5a5a505 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the sub to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0x91, r0l
- beq .L4
- fail
-.L4:
-
-sub_b_reg8_rdpostinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; sub.b rs8,@eRd+ ; Subx to register indirect
- mov #byte_dest, er0
- mov #5, r1l
- sub.b r1l, @er0+ ; reg8 src, reg indirect dest
-;;; .word 0x0179
-;;; .word 0x8039
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 post_byte er0 ; er0 still contains address plus one
- test_h_gr32 0xa5a5a505 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the sub to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0x8c, r0l
- beq .L5
- fail
-.L5:
-
-sub_b_reg8_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; sub.b rs8,@eRd- ; Subx to register indirect
- mov #byte_dest, er0
- mov #5, r1l
- sub.b r1l, @er0- ; reg8 src, reg indirect dest
-;;; .word 0x0179
-;;; .word 0xa039
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 pre_byte er0 ; er0 still contains address minus one
- test_h_gr32 0xa5a5a505 er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the sub to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0x87, r0l
- beq .L6
- fail
-.L6:
-
-.endif
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/sub.l.s b/sim/testsuite/sim/h8300/sub.l.s
deleted file mode 100644
index 7f62f11..0000000
--- a/sim/testsuite/sim/h8300/sub.l.s
+++ /dev/null
@@ -1,91 +0,0 @@
-# Hitachi H8 testcase 'sub.l'
-# mach(): h8300h h8300s h8sx
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
-.if (sim_cpu == h8sx) ;
-sub_l_imm3: ; 3-bit immediate mode only for h8sx
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; sub.l #xx:3,eRd ; Immediate 3-bit operand
- sub.l #7:3, er0
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr32 0xa5a5a59e er0 ; sub result: a5a5 - 7
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-sub_l_imm16: ; sub immediate 16-bit value
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; sub.l #xx:16,eRd ; Immediate 16-bit operand
- sub.l #0x1111:16, er0
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0x9494 r0 ; sub result: a5a5 - 1111
- test_h_gr32 0xa5a59494 er0 ; sub result: a5a5 - 1111
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.endif
-
-sub_l_imm32:
- ;; sub.l immediate not available in h8300 mode.
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; sub.l #xx:32,Rd
- sub.l #0x11111111, er0 ; Immediate 32-bit operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr32 0x94949494 er0 ; sub result: a5a5a5a5 - 11111111
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-sub.l.reg:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; add.l Rs,Rd
- mov.l #0x11111111, er1
- sub.l er1, er0 ; Register operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr32 0x94949494 er0 ; sub result: a5a5a5a5 - 11111111
- test_h_gr32 0x11111111 er1
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/sub.w.s b/sim/testsuite/sim/h8300/sub.w.s
deleted file mode 100644
index 2370250..0000000
--- a/sim/testsuite/sim/h8300/sub.w.s
+++ /dev/null
@@ -1,78 +0,0 @@
-# Hitachi H8 testcase 'sub.w'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-.if (sim_cpu == h8sx) ; 3-bit immediate mode only for h8sx
-sub_w_imm3: ; sub.w immediate not available in h8300 mode.
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; sub.w #xx:3,Rd ; Immediate 3-bit operand
- sub.w #7:3, r0
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa59e r0 ; sub result: a5a5 - 7
- test_h_gr32 0xa5a5a59e er0 ; sub result: a5a5 - 7
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
-sub_w_imm16: ; sub.w immediate not available in h8300 mode.
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; sub.w #xx:16,Rd
- sub.w #0x111, r0 ; Immediate 16-bit operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa494 r0 ; sub result: a5a5 - 111
- test_h_gr32 0xa5a5a494 er0 ; sub result: a5a5 - 111
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-sub.w.reg:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; sub.w Rs,Rd
- mov.w #0x111, r1
- sub.w r1, r0 ; Register operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa494 r0 ; sub result: a5a5 - 111
- test_h_gr16 0x0111 r1
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a494 er0 ; sub result: a5a5 - 111
- test_h_gr32 0xa5a50111 er1
-.endif
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/testutils.inc b/sim/testsuite/sim/h8300/testutils.inc
deleted file mode 100644
index fb8bdca..0000000
--- a/sim/testsuite/sim/h8300/testutils.inc
+++ /dev/null
@@ -1,341 +0,0 @@
-# Support macros for the Hitachi H8 assembly test cases.
-
-; Set up a minimal machine state
- .macro start
- .equ h8300, 0
- .equ h8300h, 1
- .equ h8300s, 2
- .equ h8sx, 3
- .if (sim_cpu == h8300s)
- .h8300s
- .else
- .if (sim_cpu == h8300h)
- .h8300h
- .else
- .if (sim_cpu == h8sx)
- .h8300sx
- .endif
- .endif
- .endif
-
- .text
- .align 2
- .global _start
-_start:
- jmp _main
-
- .data
- .align 2
- .global pass_str
- .global fail_str
- .global ok_str
- .global pass_loc
- .global fail_loc
- .global ok_loc
-pass_str:
- .ascii "pass\n"
-fail_str:
- .ascii "fail\n"
-ok_str:
- .ascii "ok\n"
-pass_loc16:
- .word pass_str
-pass_loc32:
- .long pass_str
-fail_loc16:
- .word fail_str
-fail_loc32:
- .long fail_str
-ok_loc16:
- .word ok_str
-ok_loc32:
- .long ok_str
- .text
-
- .global _write_and_exit
-_write_and_exit:
-;ssize_t write(int fd, const void *buf, size_t count);
-;Integer arguments have to be zero extended.
-.if (sim_cpu)
-#if __INT_MAX__ == 32767
- extu.l er0
-#endif
-.endif
- jsr @@0xc7
- mov #0, r0
- jmp _exit
-
- .global _exit
-_exit:
- mov.b r0l, r0h
- mov.w #0xdead, r1
- mov.w #0xbeef, r2
- sleep
-
- .global _main
-_main:
- .endm
-
-
-; Exit with an exit code
- .macro exit code
- mov.w #\code, r0
- jmp _exit
- .endm
-
-; Output "pass\n"
- .macro pass
- mov.w #0, r0 ; fd == stdout
-.if (sim_cpu == h8300)
- mov.w #pass_str, r1 ; buf == "pass\n"
- mov.w #5, r2 ; len == 5
-.else
- mov.l #pass_str, er1 ; buf == "pass\n"
- mov.l #5, er2 ; len == 5
-.endif
- jmp _write_and_exit
- .endm
-
-; Output "fail\n"
- .macro fail
- mov.w #0, r0 ; fd == stdout
-.if (sim_cpu == h8300)
- mov.w #fail_str, r1 ; buf == "fail\n"
- mov.w #5, r2 ; len == 5
-.else
- mov.l #fail_str, er1 ; buf == "fail\n"
- mov.l #5, er2 ; len == 5
-.endif
- jmp _write_and_exit
- .endm
-
-
-; Load an 8-bit immediate value into a general register
-; (reg must be r0l - r7l or r0h - r7h)
- .macro mvi_h_gr8 val reg
- mov.b #\val, \reg
- .endm
-
-; Load a 16-bit immediate value into a general register
-; (reg must be r0 - r7)
- .macro mvi_h_gr16 val reg
- mov.w #\val, \reg
- .endm
-
-; Load a 32-bit immediate value into a general register
-; (reg must be er0 - er7)
- .macro mvi_h_gr32 val reg
- mov.l #\val, \reg
- .endm
-
-; Test the value of an 8-bit immediate against a general register
-; (reg must be r0l - r7l or r0h - r7h)
- .macro test_h_gr8 val reg
- cmp.b #\val, \reg
- beq .Ltest_gr8\@
- fail
-.Ltest_gr8\@:
- .endm
-
-; Test the value of a 16-bit immediate against a general register
-; (reg must be r0 - r7)
- .macro test_h_gr16 val reg h=h l=l
- .if (sim_cpu == h8300)
- test_h_gr8 (\val >> 8) \reg\h
- test_h_gr8 (\val & 0xff) \reg\l
- .else
- cmp.w #\val, \reg
- beq .Ltest_gr16\@
- fail
-.Ltest_gr16\@:
- .endif
- .endm
-
-; Test the value of a 32-bit immediate against a general register
-; (reg must be er0 - er7)
- .macro test_h_gr32 val reg
- cmp.l #\val, \reg
- beq .Ltest_gr32\@
- fail
-.Ltest_gr32\@:
- .endm
-
-; Set a general register to the fixed pattern 'a5a5a5a5'
- .macro set_gr_a5a5 reg
- .if (sim_cpu == 0)
- ; h8300
- mov.w #0xa5a5, r\reg
- .else
- mov.l #0xa5a5a5a5, er\reg
- .endif
- .endm
-
-; Set all general registers to the fixed pattern 'a5a5a5a5'
- .macro set_grs_a5a5
- .if (sim_cpu == 0)
- ; h8300
- mov.w #0xa5a5, r0
- mov.w #0xa5a5, r1
- mov.w #0xa5a5, r2
- mov.w #0xa5a5, r3
- mov.w #0xa5a5, r4
- mov.w #0xa5a5, r5
- mov.w #0xa5a5, r6
- mov.w #0xa5a5, r7
- .else
- mov.l #0xa5a5a5a5, er0
- mov.l #0xa5a5a5a5, er1
- mov.l #0xa5a5a5a5, er2
- mov.l #0xa5a5a5a5, er3
- mov.l #0xa5a5a5a5, er4
- mov.l #0xa5a5a5a5, er5
- mov.l #0xa5a5a5a5, er6
- mov.l #0xa5a5a5a5, er7
- .endif
- .endm
-
-; Test that a general register contains the fixed pattern 'a5a5a5a5'
- .macro test_gr_a5a5 reg
- .if (sim_cpu == 0)
- ; h8300
- test_h_gr16 0xa5a5 r\reg
- .else
- test_h_gr32 0xa5a5a5a5 er\reg
- .endif
- .endm
-
-; Test that all general regs contain the fixed pattern 'a5a5a5a5'
- .macro test_grs_a5a5
- test_gr_a5a5 0
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
- .endm
-
-; Set condition code register to an explicit value
- .macro set_ccr val
- ldc #\val, ccr
- .endm
-
-; Set all condition code flags to zero
- .macro set_ccr_zero
- ldc #0, ccr
- .endm
-
-; Set carry flag to value
- .macro set_carry_flag val
- .data
-scf\@: .byte 0
- .text
- mov.b r0l, @scf\@
- mov.b #\val:8, r0l
- or.b r0l, r0l
- beq .Lccf\@ ; clear
- stc ccr, r0l ; set
- or.b #0x1, r0l
- jmp .Lecf\@
-.Lccf\@: ; clear
- stc ccr, r0l
- and.b #0xfe, r0l
-.Lecf\@:
- ldc r0l, ccr
- mov @scf\@, r0l
- .endm
-
-; Test that carry flag is clear
- .macro test_carry_clear
- bcc .Lcc\@
- fail ; carry flag not clear
-.Lcc\@:
- .endm
-
-; Test that carry flag is set
- .macro test_carry_set
- bcs .Lcs\@
- fail ; carry flag not clear
-.Lcs\@:
- .endm
-
-; Test that overflow flag is clear
- .macro test_ovf_clear
- bvc .Lvc\@
- fail ; overflow flag not clear
-.Lvc\@:
- .endm
-
-; Test that overflow flag is set
- .macro test_ovf_set
- bvs .Lvs\@
- fail ; overflow flag not clear
-.Lvs\@:
- .endm
-
-; Test that zero flag is clear
- .macro test_zero_clear
- bne .Lne\@
- fail ; zero flag not clear
-.Lne\@:
- .endm
-
-; Test that zero flag is set
- .macro test_zero_set
- beq .Leq\@
- fail ; zero flag not clear
-.Leq\@:
- .endm
-
-; Test that neg flag is clear
- .macro test_neg_clear
- bpl .Lneg\@
- fail ; negative flag not clear
-.Lneg\@:
- .endm
-
-; Test that neg flag is set
- .macro test_neg_set
- bmi .Lneg\@
- fail ; negative flag not clear
-.Lneg\@:
- .endm
-
-; Test ccr against an explicit value
- .macro test_ccr val
- .data
-tccr\@: .byte 0
- .text
- mov.b r0l, @tccr\@
- stc ccr, r0l
- cmp.b #\val, r0l
- bne .Ltcc\@
- fail
-.Ltcc\@:
- mov.b @tccr\@, r0l
- .endm
-
-; Test that all (accessable) condition codes are clear
- .macro test_cc_clear
- test_carry_clear
- test_ovf_clear
- test_zero_clear
- test_neg_clear
- ; leaves H, I, U, and UI untested
- .endm
-
-; Compare memory, fail if not equal (h8sx only, len > 0).
- .macro memcmp src dst len
- mov.l #\src, er5
- mov.l #\dst, er6
- mov.l #\len, er4
-.Lmemcmp_\@:
- cmp.b @er5+, @er6+
- beq .Lmemcmp2_\@
- fail
-.Lmemcmp2_\@:
- dec.l #1, er4
- bne .Lmemcmp_\@
- .endm
-
diff --git a/sim/testsuite/sim/h8300/xor.b.s b/sim/testsuite/sim/h8300/xor.b.s
deleted file mode 100644
index 7005a95..0000000
--- a/sim/testsuite/sim/h8300/xor.b.s
+++ /dev/null
@@ -1,327 +0,0 @@
-# Hitachi H8 testcase 'xor.b'
-# mach(): all
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- # Instructions tested:
- # xor.b #xx:8, rd ; d rd xxxxxxxx
- # xor.b #xx:8, @erd ; 7 d rd ???? d ???? xxxxxxxx
- # xor.b #xx:8, @erd+ ; 0 1 7 4 6 c rd 1??? d ???? xxxxxxxx
- # xor.b #xx:8, @erd- ; 0 1 7 6 6 c rd 1??? d ???? xxxxxxxx
- # xor.b #xx:8, @+erd ; 0 1 7 5 6 c rd 1??? d ???? xxxxxxxx
- # xor.b #xx:8, @-erd ; 0 1 7 7 6 c rd 1??? d ???? xxxxxxxx
- # xor.b rs, rd ; 1 5 rs rd
- # xor.b reg8, @erd ; 7 d rd ???? 1 5 rs ????
- # xor.b reg8, @erd+ ; 0 1 7 9 8 rd 5 rs
- # xor.b reg8, @erd- ; 0 1 7 9 a rd 5 rs
- # xor.b reg8, @+erd ; 0 1 7 9 9 rd 5 rs
- # xor.b reg8, @-erd ; 0 1 7 9 b rd 5 rs
- #
-
- # Coming soon:
- # ...
-
-.data
-pre_byte: .byte 0
-byte_dest: .byte 0xa5
-post_byte: .byte 0
-
- start
-
-xor_b_imm8_reg:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; xor.b #xx:8,Rd
- xor.b #0xff, r0l ; Immediate 8-bit operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xa55a r0 ; xor result: a5 ^ ff
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5a55a er0 ; xor result: a5 ^ ff
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-xor_b_imm8_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; xor.b #xx:8,@eRd
- mov #byte_dest, er0
- xor.b #0xff:8, @er0 ; Immediate 8-bit src, reg indirect dst
-;;; .word 0x7d00
-;;; .word 0xd0ff
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 byte_dest, er0 ; er0 still contains address
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the xor to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0x5a, r0l
- beq .L1
- fail
-.L1:
-
-xor_b_imm8_postinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; xor.b #xx:8,@eRd+
- mov #byte_dest, er0
- xor.b #0xff:8, @er0+ ; Immediate 8-bit src, reg indirect dst
-;;; .word 0x0174
-;;; .word 0x6c08
-;;; .word 0xd0ff
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 post_byte, er0 ; er0 contains address plus one
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the xor to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa5, r0l
- beq .L2
- fail
-.L2:
-
-xor_b_imm8_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; xor.b #xx:8,@eRd-
- mov #byte_dest, er0
- xor.b #0xff:8, @er0- ; Immediate 8-bit src, reg indirect dst
-;;; .word 0x0176
-;;; .word 0x6c08
-;;; .word 0xd0ff
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 pre_byte, er0 ; er0 contains address minus one
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the xor to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0x5a, r0l
- beq .L3
- fail
-.L3:
-
-
-.endif
-
-xor_b_reg8_reg8:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; xor.b Rs,Rd
- mov.b #0xff, r0h
- xor.b r0h, r0l ; Register operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0xff5a r0 ; xor result: a5 ^ ff
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a5ff5a er0 ; xor result: a5 ^ ff
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.if (sim_cpu == h8sx)
-xor_b_reg8_rdind:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; xor.b rs8,@eRd ; xor reg8 to register indirect
- mov #byte_dest, er0
- mov #0xff, r1l
- xor.b r1l, @er0 ; reg8 src, reg indirect dest
-;;; .word 0x7d00
-;;; .word 0x1590
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 byte_dest er0 ; er0 still contains address
- test_h_gr32 0xa5a5a5ff er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the or to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa5, r0l
- beq .L4
- fail
-.L4:
-
-xor_b_reg8_rdpostinc:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; xor.b rs8,@eRd+ ; xor reg8 to register post-increment
- mov #byte_dest, er0
- mov #0xff, r1l
- xor.b r1l, @er0+ ; reg8 src, reg post-increment dest
-;;; .word 0x0179
-;;; .word 0x8059
-
- test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_clear
-
- test_h_gr32 post_byte er0 ; er0 contains address plus one
- test_h_gr32 0xa5a5a5ff er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the or to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0x5a, r0l
- beq .L5
- fail
-.L5:
-
-xor_b_reg8_rdpostdec:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; xor.b rs8,@eRd- ; xor reg8 to register post-decrement
- mov #byte_dest, er0
- mov #0xff, r1l
- xor.b r1l, @er0- ; reg8 src, reg indirect dest
-;;; .word 0x0179
-;;; .word 0xa059
-
- test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
- test_ovf_clear
- test_zero_clear
- test_neg_set
-
- test_h_gr32 pre_byte er0 ; er0 contains address minus one
- test_h_gr32 0xa5a5a5ff er1 ; er1 has the test load
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- ;; Now check the result of the or to memory.
- sub.b r0l, r0l
- mov.b @byte_dest, r0l
- cmp.b #0xa5, r0l
- beq .L6
- fail
-.L6:
-
-xorc_imm8_ccr:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- set_ccr_zero
-
- ;; xorc #xx:8,ccr
-
- test_neg_clear
- xorc #0x8, ccr ; Immediate 8-bit operand (neg flag)
- test_neg_set
- xorc #0x8, ccr
- test_neg_clear
-
- test_zero_clear
- xorc #0x4, ccr ; Immediate 8-bit operand (zero flag)
- test_zero_set
- xorc #0x4, ccr
- test_zero_clear
-
- test_ovf_clear
- xorc #0x2, ccr ; Immediate 8-bit operand (overflow flag)
- test_ovf_set
- xorc #0x2, ccr
- test_ovf_clear
-
- test_carry_clear
- xorc #0x1, ccr ; Immediate 8-bit operand (carry flag)
- test_carry_set
- xorc #0x1, ccr
- test_carry_clear
-
- test_gr_a5a5 0 ; Make sure other general regs not disturbed
- test_gr_a5a5 1
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-.endif
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/xor.l.s b/sim/testsuite/sim/h8300/xor.l.s
deleted file mode 100644
index 67b2e49..0000000
--- a/sim/testsuite/sim/h8300/xor.l.s
+++ /dev/null
@@ -1,77 +0,0 @@
-# Hitachi H8 testcase 'xor.l'
-# mach(): h8300h h8300s h8sx
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
-.if (sim_cpu == h8sx) ; 16-bit immediate is only available on sx.
-xor_l_imm16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; xor.l #xx:16,Rd
- xor.l #0xffff:16, er0 ; Immediate 16-bit operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr32 0xa5a55a5a er0 ; xor result: a5a5a5a5 | ffff
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-xor_l_imm32:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; xor.l #xx:32,Rd
- xor.l #0xffffffff, er0 ; Immediate 32-bit operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr32 0x5a5a5a5a er0 ; xor result: a5a5a5a5 ^ ffffffff
-
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
-xor_l_reg:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; xor.l Rs,Rd
- mov.l #0xffffffff, er1
- xor.l er1, er0 ; Register operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
-
- test_h_gr32 0x5a5a5a5a er0 ; xor result: a5a5a5a5 ^ ffffffff
- test_h_gr32 0xffffffff er1 ; Make sure er1 is unchanged
-
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- pass
-
- exit 0
diff --git a/sim/testsuite/sim/h8300/xor.w.s b/sim/testsuite/sim/h8300/xor.w.s
deleted file mode 100644
index 3c5e5b8..0000000
--- a/sim/testsuite/sim/h8300/xor.w.s
+++ /dev/null
@@ -1,61 +0,0 @@
-# Hitachi H8 testcase 'xor.w'
-# mach(): h8300h h8300s h8sx
-# as(h8300): --defsym sim_cpu=0
-# as(h8300h): --defsym sim_cpu=1
-# as(h8300s): --defsym sim_cpu=2
-# as(h8sx): --defsym sim_cpu=3
-# ld(h8300h): -m h8300helf
-# ld(h8300s): -m h8300self
-# ld(h8sx): -m h8300sxelf
-
- .include "testutils.inc"
-
- start
-
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
-xor_w_imm16:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; xor.w #xx:16,Rd
- xor.w #0xffff, r0 ; Immediate 16-bit operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0x5a5a r0 ; xor result: a5a5 ^ ffff
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a55a5a er0 ; xor result: a5a5 ^ ffff
-.endif
- test_gr_a5a5 1 ; Make sure other general regs not disturbed
- test_gr_a5a5 2
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-.endif
-
-xor_w_reg:
- set_grs_a5a5 ; Fill all general regs with a fixed pattern
- ;; fixme set ccr
-
- ;; xor.w Rs,Rd
- mov.w #0xffff, r1
- xor.w r1, r0 ; Register operand
-
- ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
- test_h_gr16 0x5a5a r0 ; xor result: a5a5 ^ ffff
- test_h_gr16 0xffff r1 ; Make sure r1 is unchanged
-.if (sim_cpu) ; non-zero means h8300h, s, or sx
- test_h_gr32 0xa5a55a5a er0 ; xor result: a5a5 ^ ffff
- test_h_gr32 0xa5a5ffff er1 ; Make sure er1 is unchanged
-.endif
- test_gr_a5a5 2 ; Make sure other general regs not disturbed
- test_gr_a5a5 3
- test_gr_a5a5 4
- test_gr_a5a5 5
- test_gr_a5a5 6
- test_gr_a5a5 7
-
- pass
-
- exit 0