* ========== Copyright Header Begin ==========================================
* OpenSPARC T2 Processor File: exu_muldiv_n2.s
* Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
* 4150 Network Circle, Santa Clara, California 95054, U.S.A.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* For the avoidance of doubt, and except that if any non-GPL license
* choice is available it will apply instead, Sun elects to use only
* the General Public License version 2 (GPLv2) at this time for any
* software where a choice of GPL license versions is made
* available with the language indicating that GPLv2 or any later version
* may be used, or where a choice of which version of the GPL is applied is
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* ========== Copyright Header End ============================================
#define NUM_IMMED_CASES 5
! for divide by zero cases
#define H_T0_Division_By_Zero
#define My_T0_Division_By_Zero \
/*******************************************************/
th_fork(th_main,%l0) ! start up to four threads.
! All threads do the same thing, but with different data patterns.
! No need to run more than one core.
!*************************************************************
! Operand2 as a register: MULX, UMUL, SMUL, UMULcc, SMULcc
!*************************************************************
add %g0,NUM_MUL_CASES,%g2
mova %icc,%g1,%g3 ! keep the multiply operand address handy
wr %g0,%g0,%ccr ! ccr clear
rd %y,%i1 ! be sure SAS looks at Y-reg
wr %g0,%g0,%ccr ! clear ccr
wr %g0,0xff,%ccr ! set ccr. Should not matter.
add %g1,0x10,%g1 ! move operand pointer
!**********************************
! Operand2 as a register: MULScc
!**********************************
mova %icc,%g3,%g1 ! same ops as mul_loop1
add %g0,NUM_MUL_CASES,%g2
wr %g0,%g0,%ccr ! ccr clear
wr %l1,0,%y ! lower bits of multiplier into Y-reg
rd %y,%l0 ! for sas debug
srl %l1,0,%l1 ! clear rs1 upper
srl %l2,0,%l2 ! clear rs2 upper
mulx %l1,%l2,%l4 ! save for later compare
add %g0,0,%l1 ! clear rs1 (product upper) completely
add %g0,32,%l3 ! bit position counter
sllx %l1,33,%l1 ! product upper
rd %y,%l3 ! product lower
or %l1,%l3,%l3 ! full product should be equal to mulx
add %g1,0x10,%g1 ! move operand pointer
!****************************************
! Operand2 as a register: SDIVX, UDIVX
!****************************************
rdth_id ! get thid in %o1
ba th_divx_3 ! if there are more than 4 threads...
setx divx_data_t0,%g7,%g1
setx divx_data_t1,%g7,%g1
setx divx_data_t2,%g7,%g1
setx divx_data_t3,%g7,%g1
add %g0,NUM_DIV_CASES,%g2
wr %g0,%g0,%ccr ! ccr clear
sdivx %l2,%l1,%l5 ! use each operand as divisor and dividend
add %g1,0x10,%g1 ! move operand pointer
!*******************************************************
! Operand2 as a register: SDIV, SDIVcc, UDIV, UDIVcc
!*******************************************************
rdth_id ! get thid in %o1
! if there are more than 4 threads, run with same data as t0
add %g0,NUM_DIV_CASES,%g2
sub %g0,1,%g3 ! build masks for part 2 of the test
srl %g3,0,%g3 ! g3 is foxes in lower half
sllx %g3,32,%g4 ! g4 is foxes in upper half
wr %g0,%g0,%ccr ! ccr clear
! pick up Y from top half of %l1. Invert %l1<63:32>.
xor %l1,%g4,%l1 ! invert upper half of %l1
wr %l0,%g0,%y ! div ops are allowed to trash Y, so reload
wr %g0,%g0,%ccr ! ccr clear
! pick up Y from top half of %l2. Clear %l2<63:32>.
and %l2,%g3,%l2 ! clear upper half of %l2
wr %l0,%g0,%y ! div ops are allowed to trash Y, so reload
wr %g0,0xff,%ccr ! ccr set
wr %g0,0xff,%ccr ! ccr set
add %g1,0x10,%g1 ! move operand pointer
!**************************
!**************************
setx immed_data,%g7,%g1 ! run all threads with same immediate cases
add %g0,NUM_IMMED_CASES,%g2
wr %g0,%g0,%ccr ! ccr clear
srlx %l0,32,%l0 ! use %l0 to hold %y value
xor %l1,%g4,%l1 ! invert upper half of %l1
wr %l0,%g0,%y ! div ops are allowed to trash Y, so reload
srlx %l0,32,%l0 ! use %l0 to hold %y value
xor %l1,%g4,%l1 ! invert upper half of %l1
wr %l0,%g0,%y ! div ops are allowed to trash Y, so reload
srlx %l0,32,%l0 ! use %l0 to hold %y value
xor %l1,%g4,%l1 ! invert upper half of %l1
wr %l0,%g0,%y ! div ops are allowed to trash Y, so reload
srlx %l0,32,%l0 ! use %l0 to hold %y value
xor %l1,%g4,%l1 ! invert upper half of %l1
wr %l0,%g0,%y ! div ops are allowed to trash Y, so reload
srlx %l0,32,%l0 ! use %l0 to hold %y value
xor %l1,%g4,%l1 ! invert upper half of %l1
wr %l0,%g0,%y ! div ops are allowed to trash Y, so reload
add %g1,8,%g1 ! move operand pointer
!***************************************************************
! MULScc cases for icc.n, icc.v and Y<0> to hit all combinations
!***************************************************************
/********************************************************************************
* The following test cases check implementation dependent cases.
* 1. long ops in the delay slot of a branch, with and without nullification
* 2. uninitialized cache lines and the divide by zero detect logic
* 3. contention for register write ports
**********************************************************************************/
!*******************************************************************
! Mul/Div operations in delay slots of a branch. Data is unimportant
!*******************************************************************
! branch taken, delay instr not annulled
! branch taken, delay instr annulled
! branch taken, delay instr not annulled
! branch taken, delay instr annulled
!***********************************************************************
! Div rs2 used during a cache miss on a previously unused cache line.
! X's in the divide-by-zero logic have caused problems in the past.
!***********************************************************************
nop ! change timing slightly
udivx %l1,%l2,%l3 ! loaded value is zero
sdivx %l1,%l2,%l1 ! rs1 same as rd
sdivx %l1,%l2,%l2 ! rs2 same as rd
nop ! change timing slightly
sdivx %l1,%l2,%l2 ! loaded value is zero
nop ! change timing slightly
udiv %l1,%l2,%l1 ! loaded value is zero
setx sdivcc_miss1,%g7,%g1
setx sdivcc_miss2,%g7,%g1
setx sdivcc_miss3,%g7,%g1
nop ! change timing slightly
setx sdivcc_miss4,%g7,%g1
sdivcc %l1,%l2,%g1 ! loaded value is zero
!****************************************************************
! contention for register write ports
!****************************************************************
rdth_id ! get thid in %o1
! if there are more than 4 threads, run with same data as t0
setx reg_port_contention_0,%g7,%g1
setx reg_port_contention_1,%g7,%g1
setx reg_port_contention_2,%g7,%g1
setx reg_port_contention_3,%g7,%g1
ldx [%g1],%l1 ! cache miss, rs1
ldx [%g1],%l2 ! cache hit, rs1
ldx [%g1],%l1 ! cache miss, rs2
ldx [%g1+8],%l1 ! cache hit, rs2
ldsb [%g1],%l1 ! cache miss, byte load, rs1
ldub [%g1+13],%l6 ! cache hit, byte load, rs2
ldsh [%g1+2],%l1 ! cache miss, halfword load, rs2
lduh [%g1],%l4 ! cache hit, halfword load, rs1
ldsw [%g1+8],%l1 ! cache miss, word load, rs1
smulcc %l1,0x0020,%l6 ! same rd as next load
lduw [%g1],%l6 ! cache hit, word load, rs1
ldx [%g1],%l1 ! cache miss, rs1
ldx [%g1+8],%l2 ! cache hit, rs2
ldx [%g1+8],%l1 ! cache miss, rs1 = rs2
ldx [%g1],%l2 ! cache hit, rs1 = rs2
ldx [%g1],%l1 ! cache miss, rs1
ldx [%g1],%l3 ! cache hit, rs1
ldx [%g1],%l2 ! cache miss, rs2
ldx [%g1],%l2 ! cache hit, rs2
ldx [%g1],%l1 ! cache miss, rs1 and rs2
ldx [%g1+8],%l1 ! cache hit, rs1 and rs2
ldx [%g1],%l1 ! cache miss, rs2 and rs1
ldx [%g1],%l1 ! cache hit, rs2 and rs1
ldsw [%g1],%l1 ! cache miss, word load, rs1
ldsw [%g1+4],%l1 ! cache hit, word load, rs2
lduh [%g1],%l1 ! cache miss, halfword load, rs2
ldsh [%g1],%l1 ! cache hit, halfword load, rs2
!==========================
! be sure each mul_data_t* has same number of cases
.xword 0x0000000000000000
.xword 0x0000000000000001
.xword 0x0000000000000003
.xword 0x000000000000000c
.xword 0x000000007fffffff
.xword 0x0000000080000000
.xword 0x0000000080000001
.xword 0x00000000fffffffe
.xword 0x7fffffffffffffff
.xword 0x8000000000000000
.xword 0x8000000000000001
.xword 0xfffffffffffffffc
.xword 0xffffffffffffffff
.xword 0x0000000000000001
.xword 0x000000007ffffffc
.xword 0x000000007fffffff
.xword 0x0000000080000000
.xword 0x0000000080000001
.xword 0x00000000fffffffe
.xword 0x7fffffffffffffff
.xword 0x8000000000000000
.xword 0x8000000000000001
.xword 0xffffffffffffffff
.xword 0xaaaaaaaaaaaaaaaa
.xword 0xaaaaaaaaaaaaaaaa
.xword 0x5555555555555555
.xword 0x1111111111111111
.xword 0xeeeeeeeeeeeeeeee
.xword 0xfffffffffffffffc
.xword 0xffffffff00000001
.xword 0x0000000088888888
.xword 0x0000000080000001
.xword 0x0000000000000001
.xword 0x00000000fffffffe
.xword 0xffffffffffffffff
.xword 0x80000aaa5550000e
.xword 0x2222222222222222
.xword 0x4444444444444444
.xword 0xcccccccccccccccc
.xword 0x0000000000000002
.xword 0x0000000000000002
.xword 0xf0f0f0f0f0f0f0f0
.xword 0xe11d548a139bcb18
.xword 0x000000005aeb5d3b
.xword 0x056e61a23ad8a1c8
.xword 0x6adb9bfd446daaac
.xword 0x000000002e5f37ec
.xword 0x000000002eb16c25
.xword 0x0000000000000000
.xword 0x0000000000000001
.xword 0x0000000000000064
.xword 0x0000000000000005
.xword 0x000000007ffffffc ! positive remainder
.xword 0x000000007ffffffe
.xword 0x000000007fffffff
.xword 0x0000000080000000
.xword 0x0000000080000001
.xword 0x00000000fffffffe
.xword 0x00000000ffffffff
.xword 0x7ffffffffffffffe
.xword 0x7fffffffffffffff
.xword 0x8000000000000000
.xword 0x8000000000000001
.xword 0xfffffffffffffffc
.xword 0xfffffffffffffffe
.xword 0xffffffffffffffff
.xword 0x0000000000000001
.xword 0x0000000000000010
.xword 0x0000000000000011
.xword 0x000000007ffffffc
.xword 0x000000007ffffffe
.xword 0x000000007fffffff
.xword 0x0000000080000000
.xword 0x0000000080000001
.xword 0x00000000fffffffe
.xword 0x00000000ffffffff
.xword 0x7ffffffffffffffe
.xword 0x7fffffffffffffff
.xword 0x8000000000000000 ! overflow case 800...000/-1
.xword 0xffffffffffffffff
.xword 0x0000000000000000
.xword 0x0000000000000001
.xword 0xffffffffffffff9c ! -100 decimal
.xword 0x0000000000000014
.xword 0x000000007ffffffc
.xword 0x000000007ffffffe
.xword 0x000000007fffffff
.xword 0x0000000080000000
.xword 0x0000000080000001
.xword 0x00000000fffffffe
.xword 0x00000000ffffffff
.xword 0x7ffffffffffffffe
.xword 0x7fffffffffffffff
.xword 0x8000000000000000 ! overflow case 800..../-1
.xword 0x8000000000000001
.xword 0xfffffffffffffffc
.xword 0xfffffffffffffffe
.xword 0xffffffffffffffff
.xword 0x0000000000000001
.xword 0x0000000000000010
.xword 0x0000000000000011
.xword 0x000000007ffffffc
.xword 0x000000007ffffffe
.xword 0x000000007fffffff
.xword 0x0000000080000000
.xword 0x0000000080000001
.xword 0x00000000fffffffe
.xword 0x00000000ffffffff
.xword 0x7ffffffffffffffe
.xword 0x7fffffffffffffff
.xword 0x8000000000000000 ! overflow case 800...000/-1
.xword 0xffffffffffffffff
.word 0x00000000, 0x00000000
.word 0x00000000, 0x7fffffff
.word 0x00000000, 0x00000001
.word 0x7fffffff, 0xffffffff
.word 0xffffffff, 0xffffffff
!*********************************************************************
! at a 256byte boundary for cache miss/ uninitialized cache line tests
!*********************************************************************
.word 0x00000000, 0x00001111 ! first half of line
.word 0x00000000, 0x00002222 ! second half of line
.word 0xffffffff, 0xffff3333 ! for use with nop case
.word 0x00000000, 0x00000000 ! divide by zero
.word 0x00000000, 0x00001111 ! first half of line
.word 0x00000000, 0x00002222 ! second half of line
.word 0xffffffff, 0xffff3333 ! for use with nop case
.word 0x00000000, 0x00000000 ! divide by zero
.word 0x00000000, 0x00001111 ! first half of line
.word 0x00000000, 0x00002222 ! second half of line
.word 0xffffffff, 0xffff3333 ! for use with nop case
.word 0x00000000, 0x00000000 ! divide by zero
.word 0x00000000, 0x00001111 ! first half of line
.word 0x00000000, 0x00002222 ! second half of line
.word 0xffffffff, 0xffff3333 ! for use with nop case
.word 0x00000000, 0x00000000 ! divide by zero
reg_port_contention_0: ! boring data
.word 0x10000000, 0x00000001, 0xffffffff, 0xffffffff
.word 0x20000000, 0x00000002, 0xffffffff, 0xfffffffe
.word 0x40000000, 0x00000004, 0xffffffff, 0xfffffffd
.word 0x80000000, 0x00000008, 0xffffffff, 0xfffffffb
.word 0x01000000, 0x00000010, 0xffffffff, 0xfffffff7
.word 0x02000000, 0x00000020, 0xffffffff, 0xffffffef
.word 0x04000000, 0x00000040, 0xffffffff, 0xffffffdf
.word 0x08000000, 0x00000080, 0xffffffff, 0xffffffbf
.word 0x00100000, 0x00000100, 0xffffffff, 0xffffff7f
.word 0x00200000, 0x00000200, 0xffffffff, 0xfffffeff
.word 0x00400000, 0x00000400, 0xffffffff, 0xfffffdff
.word 0x00800000, 0x00000800, 0xffffffff, 0xfffffbff
.word 0x00010000, 0x00001000, 0xffffffff, 0xfffff7ff
.word 0x00020000, 0x00002000, 0xffffffff, 0xffffefff
.word 0x00040000, 0x00004000, 0xffffffff, 0xffffdfff
.word 0x00080000, 0x00008000, 0xffffffff, 0xffffbfff
.word 0x00001000, 0x00010000, 0xffffffff, 0xffff7fff
.word 0x00002000, 0x00020000, 0xffffffff, 0xfffeffff
.word 0x00004000, 0x00040000, 0xffffffff, 0xfffdffff
.word 0x00008000, 0x00080000, 0xffffffff, 0xfffbffff
.word 0x00000100, 0x00100000, 0xffffffff, 0xfff7ffff
.word 0x10000000, 0x00000001, 0xffffffff, 0xffffffff
.word 0x20000000, 0x00000002, 0xffffffff, 0xfffffffe
.word 0x40000000, 0x00000004, 0xffffffff, 0xfffffffd
.word 0x80000000, 0x00000008, 0xffffffff, 0xfffffffb
.word 0x01000000, 0x00000010, 0xffffffff, 0xfffffff7
.word 0x02000000, 0x00000020, 0xffffffff, 0xffffffef
.word 0x04000000, 0x00000040, 0xffffffff, 0xffffffdf
.word 0x08000000, 0x00000080, 0xffffffff, 0xffffffbf
.word 0x00100000, 0x00000100, 0xffffffff, 0xffffff7f
.word 0x00200000, 0x00000200, 0xffffffff, 0xfffffeff
.word 0x00400000, 0x00000400, 0xffffffff, 0xfffffdff
.word 0x00800000, 0x00000800, 0xffffffff, 0xfffffbff
.word 0x00010000, 0x00001000, 0xffffffff, 0xfffff7ff
.word 0x00020000, 0x00002000, 0xffffffff, 0xffffefff
.word 0x00040000, 0x00004000, 0xffffffff, 0xffffdfff
.word 0x00080000, 0x00008000, 0xffffffff, 0xffffbfff
.word 0x00001000, 0x00010000, 0xffffffff, 0xffff7fff
.word 0x00002000, 0x00020000, 0xffffffff, 0xfffeffff
.word 0x00004000, 0x00040000, 0xffffffff, 0xfffdffff
.word 0x00008000, 0x00080000, 0xffffffff, 0xfffbffff
.word 0x00000100, 0x00100000, 0xffffffff, 0xfff7ffff
reg_port_contention_1: ! boring data
.word 0x1dead000, 0xdead0001, 0xffffffff, 0xffffffff
.word 0x2dead000, 0xdead0002, 0xffffffff, 0xfffffffe
.word 0x4dead000, 0xdead0004, 0xffffffff, 0xfffffffd
.word 0x8dead000, 0xdead0008, 0xffffffff, 0xfffffffb
.word 0x01dead00, 0xdead0010, 0xffffffff, 0xfffffff7
.word 0x02dead00, 0xdead0020, 0xffffffff, 0xffffffef
.word 0x04dead00, 0xdead0040, 0xffffffff, 0xffffffdf
.word 0x08dead00, 0xdead0080, 0xffffffff, 0xffffffbf
.word 0x001dead0, 0xdead0100, 0xffffffff, 0xffffff7f
.word 0x002dead0, 0xdead0200, 0xffffffff, 0xfffffeff
.word 0x004dead0, 0xdead0400, 0xffffffff, 0xfffffdff
.word 0x008dead0, 0xdead0800, 0xffffffff, 0xfffffbff
.word 0x0001dead, 0xdead1000, 0xffffffff, 0xfffff7ff
.word 0x0002dead, 0xdead2000, 0xffffffff, 0xffffefff
.word 0x0004dead, 0xdead4000, 0xffffffff, 0xffffdfff
.word 0x0008dead, 0xdead8000, 0xffffffff, 0xffffbfff
.word 0xdead1000, 0x0001dead, 0xffffffff, 0xffff7fff
.word 0xdead2000, 0x0002dead, 0xffffffff, 0xfffeffff
.word 0xdead4000, 0x0004dead, 0xffffffff, 0xfffdffff
.word 0xdead8000, 0x0008dead, 0xffffffff, 0xfffbffff
.word 0xdead0100, 0x001dead0, 0xffffffff, 0xfff7ffff
.word 0x1dead000, 0xdead0001, 0xffffffff, 0xffffffff
.word 0x2dead000, 0xdead0002, 0xffffffff, 0xfffffffe
.word 0x4dead000, 0xdead0004, 0xffffffff, 0xfffffffd
.word 0x8dead000, 0xdead0008, 0xffffffff, 0xfffffffb
.word 0x01dead00, 0xdead0010, 0xffffffff, 0xfffffff7
.word 0x02dead00, 0xdead0020, 0xffffffff, 0xffffffef
.word 0x04dead00, 0xdead0040, 0xffffffff, 0xffffffdf
.word 0x08dead00, 0xdead0080, 0xffffffff, 0xffffffbf
.word 0x001dead0, 0xdead0100, 0xffffffff, 0xffffff7f
.word 0x002dead0, 0xdead0200, 0xffffffff, 0xfffffeff
.word 0x004dead0, 0xdead0400, 0xffffffff, 0xfffffdff
.word 0x008dead0, 0xdead0800, 0xffffffff, 0xfffffbff
.word 0x0001dead, 0xdead1000, 0xffffffff, 0xfffff7ff
.word 0x0002dead, 0xdead2000, 0xffffffff, 0xffffefff
.word 0x0004dead, 0xdead4000, 0xffffffff, 0xffffdfff
.word 0x0008dead, 0xdead8000, 0xffffffff, 0xffffbfff
.word 0xdead1000, 0x0001dead, 0xffffffff, 0xffff7fff
.word 0xdead2000, 0x0002dead, 0xffffffff, 0xfffeffff
.word 0xdead4000, 0x0004dead, 0xffffffff, 0xfffdffff
.word 0xdead8000, 0x0008dead, 0xffffffff, 0xfffbffff
.word 0xdead0100, 0x001dead0, 0xffffffff, 0xfff7ffff
reg_port_contention_2: ! boring data
.word 0x10000000, 0x00000001, 0xf0f0f0f0, 0xffffffff
.word 0x20000000, 0x00000002, 0xf0f0f0f0, 0xfffffffe
.word 0x40000000, 0x00000004, 0xf0f0f0f0, 0xfffffffd
.word 0x80000000, 0x00000008, 0xf0f0f0f0, 0xfffffffb
.word 0x01000000, 0x00000010, 0xf0f0f0f0, 0xfffffff7
.word 0x02000000, 0x00000020, 0xf0f0f0f0, 0xffffffef
.word 0x04000000, 0x00000040, 0xf0f0f0f0, 0xffffffdf
.word 0x08000000, 0x00000080, 0xf0f0f0f0, 0xffffffbf
.word 0x00100000, 0x00000100, 0xf0f0f0f0, 0xffffff7f
.word 0x00200000, 0x00000200, 0xf0f0f0f0, 0xfffffeff
.word 0x00400000, 0x00000400, 0xf0f0f0f0, 0xfffffdff
.word 0x00800000, 0x00000800, 0xf0f0f0f0, 0xfffffbff
.word 0x00010000, 0x00001000, 0xf0f0f0f0, 0xfffff7ff
.word 0x00020000, 0x00002000, 0xf0f0f0f0, 0xffffefff
.word 0x00040000, 0x00004000, 0xf0f0f0f0, 0xffffdfff
.word 0x00080000, 0x00008000, 0xf0f0f0f0, 0xffffbfff
.word 0x00001000, 0x00010000, 0xf0f0f0f0, 0xffff7fff
.word 0x00002000, 0x00020000, 0xf0f0f0f0, 0xfffeffff
.word 0x00004000, 0x00040000, 0xf0f0f0f0, 0xfffdffff
.word 0x00008000, 0x00080000, 0xf0f0f0f0, 0xfffbffff
.word 0x00000100, 0x00100000, 0xf0f0f0f0, 0xfff7ffff
.word 0x10000000, 0x00000001, 0xf0f0f0f0, 0xf0f0f0f0
.word 0x20000000, 0x00000002, 0xf0f0f0f0, 0xfffffffe
.word 0x40000000, 0x00000004, 0xf0f0f0f0, 0xfffffffd
.word 0x80000000, 0x00000008, 0xf0f0f0f0, 0xfffffffb
.word 0x01000000, 0x00000010, 0xf0f0f0f0, 0xfffffff7
.word 0x02000000, 0x00000020, 0xf0f0f0f0, 0xffffffef
.word 0x04000000, 0x00000040, 0xf0f0f0f0, 0xffffffdf
.word 0x08000000, 0x00000080, 0xf0f0f0f0, 0xffffffbf
.word 0x00100000, 0x00000100, 0xf0f0f0f0, 0xffffff7f
.word 0x00200000, 0x00000200, 0xf0f0f0f0, 0xfffffeff
.word 0x00400000, 0x00000400, 0xf0f0f0f0, 0xfffffdff
.word 0x00800000, 0x00000800, 0xf0f0f0f0, 0xfffffbff
.word 0x00010000, 0x00001000, 0xf0f0f0f0, 0xfffff7ff
.word 0x00020000, 0x00002000, 0xf0f0f0f0, 0xffffefff
.word 0x00040000, 0x00004000, 0xf0f0f0f0, 0xffffdfff
.word 0x00080000, 0x00008000, 0xf0f0f0f0, 0xffffbfff
.word 0x00001000, 0x00010000, 0xf0f0f0f0, 0xffff7fff
.word 0x00002000, 0x00020000, 0xf0f0f0f0, 0xfffeffff
.word 0x00004000, 0x00040000, 0xf0f0f0f0, 0xfffdffff
.word 0x00008000, 0x00080000, 0xf0f0f0f0, 0xfffbffff
.word 0x00000100, 0x00100000, 0xf0f0f0f0, 0xfff7ffff
reg_port_contention_3: ! boring data
.word 0x10000000, 0x00000001, 0xffffffff, 0xffffffff
.word 0x20000000, 0x00000002, 0xefffffff, 0xfffffffe
.word 0x40000000, 0x00000004, 0xdfffffff, 0xfffffffd
.word 0x80000000, 0x00000008, 0xbfffffff, 0xfffffffb
.word 0x01000000, 0x00000010, 0x7fffffff, 0xfffffff7
.word 0x02000000, 0x00000020, 0xfeffffff, 0xffffffef
.word 0x04000000, 0x00000040, 0xfdffffff, 0xffffffdf
.word 0x08000000, 0x00000080, 0xfbffffff, 0xffffffbf
.word 0x00100000, 0x00000100, 0xf7ffffff, 0xffffff7f
.word 0x00200000, 0x00000200, 0xffefffff, 0xfffffeff
.word 0x00400000, 0x00000400, 0xffdfffff, 0xfffffdff
.word 0x00800000, 0x00000800, 0xffbfffff, 0xfffffbff
.word 0x00010000, 0x00001000, 0xff7fffff, 0xfffff7ff
.word 0x00020000, 0x00002000, 0xfffeffff, 0xffffefff
.word 0x00040000, 0x00004000, 0xfffdffff, 0xffffdfff
.word 0x00080000, 0x00008000, 0xfffbffff, 0xffffbfff
.word 0x00001000, 0x00010000, 0xfff7ffff, 0xffff7fff
.word 0x00002000, 0x00020000, 0xffffefff, 0xfffeffff
.word 0x00004000, 0x00040000, 0xffffdfff, 0xfffdffff
.word 0x00008000, 0x00080000, 0xffffbfff, 0xfffbffff
.word 0x00000100, 0x00100000, 0xffff7fff, 0xfff7ffff
.word 0x10000000, 0x00000001, 0xfffffeff, 0xffffffff
.word 0x20000000, 0x00000002, 0xfffffdff, 0xfffffffe
.word 0x40000000, 0x00000004, 0xfffffbff, 0xfffffffd
.word 0x80000000, 0x00000008, 0xfffff7ff, 0xfffffffb
.word 0x01000000, 0x00000010, 0xffffffef, 0xfffffff7
.word 0x02000000, 0x00000020, 0xffffffdf, 0xffffffef
.word 0x04000000, 0x00000040, 0xffffffbf, 0xffffffdf
.word 0x08000000, 0x00000080, 0xffffff7f, 0xffffffbf
.word 0x00100000, 0x00000100, 0xfffffffe, 0xffffff7f
.word 0x00200000, 0x00000200, 0xfffffffd, 0xfffffeff
.word 0x00400000, 0x00000400, 0xfffffffb, 0xfffffdff
.word 0x00800000, 0x00000800, 0xfffffff7, 0xfffffbff
.word 0x00010000, 0x00001000, 0x7fffffff, 0xfffff7ff
.word 0x00020000, 0x00002000, 0x3fffffff, 0xffffefff
.word 0x00040000, 0x00004000, 0x1fffffff, 0xffffdfff
.word 0x00080000, 0x00008000, 0x0fffffff, 0xffffbfff
.word 0x00001000, 0x00010000, 0x07ffffff, 0xffff7fff
.word 0x00002000, 0x00020000, 0x03ffffff, 0xfffeffff
.word 0x00004000, 0x00040000, 0x01ffffff, 0xfffdffff
.word 0x00008000, 0x00080000, 0x007fffff, 0xfffbffff
.word 0x00000100, 0x00100000, 0x003fffff, 0xfff7ffff