* ========== Copyright Header Begin ==========================================
* OpenSPARC T2 Processor File: tsotool_1t_75971.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 REGION_MAPPED_SIZE_RTL 8192
#define REGION_SIZE_RTL (64 * 1024)
#define RESULTS_BUF_SIZE_PER_CPU_RTL 128
#define PRIVATE_DATA_AREA_PER_CPU_RTL 64
#define ALIGN_PAGE_8K .align 8192
#define ALIGN_PAGE_64K .align 65536
#define ALIGN_PAGE_512K .align 524288
#define ALIGN_PAGE_4M .align 4194304
SECTION .MY_HYP_SEC TEXT_VA = 0x1100150000
.global intr0x60_custom_trap
.global intr0x190_custom_trap
.global intr0x190_custom_trap
! programming the JBI - not quite rrugho
!setx 0x0000000006040012, %g1, %g2
!setx 0x8503000010, %g1, %g3
!setx 0x0000000000000003, %g1, %g2
!setx 0x8500000100, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000000, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000400, %g1, %g3
!setx 0x0000000000000003, %g1, %g2
!setx 0x8500000108, %g1, %g3
!setx 0x0000000000000101, %g1, %g2
!setx 0x9800000008, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000408, %g1, %g3
!setx 0x0000000000000003, %g1, %g2
!setx 0x8500000110, %g1, %g3
!setx 0x0000000000000202, %g1, %g2
!setx 0x9800000010, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000410, %g1, %g3
!setx 0x0000000000000003, %g1, %g2
!setx 0x8500000118, %g1, %g3
!setx 0x0000000000000303, %g1, %g2
!setx 0x9800000018, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000418, %g1, %g3
!setx 0x0000000000000003, %g1, %g2
!setx 0x8500000120, %g1, %g3
!setx 0x0000000000000404, %g1, %g2
!setx 0x9800000020, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000420, %g1, %g3
!setx 0x0000000000000003, %g1, %g2
!setx 0x8500000128, %g1, %g3
!setx 0x0000000000000505, %g1, %g2
!setx 0x9800000028, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000428, %g1, %g3
!setx 0x0000000000000003, %g1, %g2
!setx 0x8500000130, %g1, %g3
!setx 0x0000000000000606, %g1, %g2
!setx 0x9800000030, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000430, %g1, %g3
!setx 0x0000000000000003, %g1, %g2
!setx 0x8500000138, %g1, %g3
!setx 0x0000000000000707, %g1, %g2
!setx 0x9800000038, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000438, %g1, %g3
!setx 0x0000000000000003, %g1, %g2
!setx 0x8500000140, %g1, %g3
!setx 0x0000000000000808, %g1, %g2
!setx 0x9800000040, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000440, %g1, %g3
!setx 0x0000000000000003, %g1, %g2
!setx 0x8500000148, %g1, %g3
!setx 0x0000000000000909, %g1, %g2
!setx 0x9800000048, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000448, %g1, %g3
!setx 0x0000000000000003, %g1, %g2
!setx 0x8500000150, %g1, %g3
!setx 0x0000000000000a0a, %g1, %g2
!setx 0x9800000050, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000450, %g1, %g3
!setx 0x0000000000000003, %g1, %g2
!setx 0x8500000158, %g1, %g3
!setx 0x0000000000000b0b, %g1, %g2
!setx 0x9800000058, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000458, %g1, %g3
!setx 0x0000000000000003, %g1, %g2
!setx 0x8500000160, %g1, %g3
!setx 0x0000000000000c0c, %g1, %g2
!setx 0x9800000060, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000460, %g1, %g3
!setx 0x0000000000000003, %g1, %g2
!setx 0x8500000168, %g1, %g3
!setx 0x0000000000000d0d, %g1, %g2
!setx 0x9800000068, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000468, %g1, %g3
!setx 0x0000000000000003, %g1, %g2
!setx 0x8500000170, %g1, %g3
!setx 0x0000000000000e0e, %g1, %g2
!setx 0x9800000070, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000470, %g1, %g3
!setx 0x0000000000000003, %g1, %g2
!setx 0x8500000178, %g1, %g3
!setx 0x0000000000000f0f, %g1, %g2
!setx 0x9800000078, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000478, %g1, %g3
!setx 0x000000000000007f, %g1, %g2
!setx 0x8503000008, %g1, %g3
!setx 0x0000000000001010, %g1, %g2
!setx 0x9800000080, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000480, %g1, %g3
!setx 0x0000000000001111, %g1, %g2
!setx 0x9800000088, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000488, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9300000c00, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9300000e20, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9300000e28, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9300000e38, %g1, %g3
!setx 0x0000000000000008, %g1, %g2
!setx 0x8503000018, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x9800000828, %g1, %g3
!setx 0x0000000000000000, %g1, %g2
!setx 0x8503000028, %g1, %g3
!setx 0x0000000000000001, %g1, %g2
!setx 0x8503000020, %g1, %g3
/***********************************************************************
Disable L2 Cache Visibility Port
***********************************************************************/
setx 0x0000000000000000, %g1, %g2
setx 0x9800001800, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800001820, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800001828, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800001830, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800001838, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800001840, %g1, %g3
/***********************************************************************
Disable IOBridge Visibility Ports
***********************************************************************/
setx 0x0000000000000000, %g1, %g2
setx 0x9800001000, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800002000, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800002008, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800002100, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800002140, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800002160, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800002180, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x98000021a0, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800002148, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800002168, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800002188, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x98000021a8, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800002150, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800002170, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x9800002190, %g1, %g3
setx 0x0000000000000000, %g1, %g2
setx 0x98000021b0, %g1, %g3
/***********************************************************************
***********************************************************************/
setx 0x03fb303e00000001, %g1, %g2
setx 0x8000000000, %g1, %g3
setx 0x000000007033fe0f, %g1, %g2
setx 0x8000000008, %g1, %g3
setx 0x0000003fc0000000, %g1, %g2
setx 0x80000100a0, %g1, %g3
setx 0x00000000fe0003ff, %g1, %g2
setx 0x8000004100, %g1, %g3
/***********************************************************************
IOSYNC cycles to start sjm
***********************************************************************/
setx 0xdeadbeefdeadbeef, %g1, %g2
setx 0xcf00beef00, %g1, %g3
setx 0xdeadbeefdeadbeef, %g1, %g2
setx 0xef00beef00, %g1, %g3
!=============================
stxa %l0, [%g0] 0x45 /* turn D-cache off */
stxa %i0, [%g0] 0x45 /* turn D-cache back on */
!============================================================================
#define ENABLE_T0_Fp_exception_ieee_754_0x21
#define ENABLE_T0_Fp_exception_other_0x22
#define ENABLE_T0_Fp_disabled_0x20
#define ENABLE_T0_Illegal_instruction_0x10
#define ENABLE_T1_Illegal_instruction_0x10
#define ENABLE_HT0_Illegal_instruction_0x10
#define ENABLE_HT1_Illegal_instruction_0x10
#define ENABLE_T0_Clean_Window_0x24
#define H_T0_Trap_Instruction_0
#define My_T0_Trap_Instruction_0 \
#define H_HT0_HTrap_Instruction_0 intr0x190_custom_trap
#define My_HT0_HTrap_Instruction_0 \
setx intr0x190_custom_trap, %g1, %g2; \
#define My_HT0_HTrap_Instruction_0 \
#define H_HT0_Interrupt_0x60 intr0x60_custom_trap
#define My_HT0_Interrupt_0x60 \
! stxa %l6, [$8] (0x22 | ($2 & 0x9)) ! ASI is randomly set
add $6, ($7 & 0xfff0), $8 ! 4-byte align the offset
stxa %l6, [$8] 0x22 ! ASI is randomly set
!ldda [$8] (0x22 | ($2 & 0x9)), %l6 ! ASI is randomly set
add $6, ($7 & 0xfff0), $8 ! 4-byte align the offset
ldda [$8] 0x22, %l6 ! ASI is randomly set
wr %g0, 0x4, %fprs /* make sure fef is 1 */
! --- Common Macro Definitions ---
! macros will be instantiated with these arguments
! macro_name(P#, rand#, my_cpu#, PA_val, VA_val, VA_reg, VA_offset, \
! tmp_reg0, tmp_reg1, tmp_reg2, tmp_reg3)
! P# - Pid, just in case one needs unique number
! PA_val - shared memory physisal address value
! VA_val - shared memory virtual address value
! VA_reg - register containing VA region base address
! VA_offset - VA_reg + VA_offset will give correct VA address value
! tmp_reg0-tmp_reg3 - integer registers for arbitrary use within the macro
! tmp_reg0 & tmp_reg1 are even-odd register pair
! VA_val may be incorrect since VA will be determined at compile time by assembler
! and may not available at diag generation time, but VA_reg+VA_offset is valid
! ex. SAMPLE(1, 1249, 0, 0x43400100, 0x100, %i1, 0x100, %l6, %l7, %o5, %l3)
! load unsigned byte from the given shared addr into tmp_reg1
! the given shared addr is 4-byte aligned and we will randomly
! pick one byte from the 4 bytes.
! ldub [$6+$7+($2 mod 4)], $8
! Can also use C-like macro definition format.
! issue an "ldda" instruction to the randomly picked shared location
! (aligned it to 16-byte boundary first) with a random ASI value among
! 0x22, 0x23, 0x2a, and 0x2b (utilizing the provided "rand" value).
! #define BLD_INIT(Pid, rand, my_cpu, PA_val, \
! VA_val, VA_reg, VA_offset, \
! tmp_reg0, tmp_reg1, tmp_reg2, tmp_reg3) \
! add VA_reg, (VA_offset & 0xfff0), tmp_reg3; \
! ldda [tmp_reg2] (0x22 | (rand & 0x9)), tmp_reg0;
#define NOPTRAIN(Pid, rand, my_cpu, PA_val, VA_val, VA_reg, VA_offset, tmp_reg1, tmp_reg2, tmp_reg3, tmp_reg4) \
! Train of total 4 of UW stores.
! Note: doesn't use shared addresses
#define STTRAIN4(Pid, rand, my_cpu, PA_val, VA_val, VA_reg, VA_offset, tmp_reg1, tmp_reg2, tmp_reg3, tmp_reg4) \
add %i0, tmp_reg1, tmp_reg1; \
stw tmp_reg2, [tmp_reg1]; \
stw tmp_reg2, [tmp_reg1+4]; \
stw tmp_reg2, [tmp_reg1+8]; \
stw tmp_reg2, [tmp_reg1+16];
! Train of total 8 of UW stores
#define STTRAIN8(Pid, rand, my_cpu, PA_val, VA_val, VA_reg, VA_offset, tmp_reg1, tmp_reg2, tmp_reg3, tmp_reg4) \
add %i0, tmp_reg1, tmp_reg1; \
add tmp_reg2, rand % 4096, tmp_reg3; \
stw tmp_reg2, [tmp_reg1]; \
stw tmp_reg2, [tmp_reg1+4]; \
stw tmp_reg2, [tmp_reg1+8]; \
stw tmp_reg2, [tmp_reg1+12]; \
stw tmp_reg3, [tmp_reg1+4]; \
stw tmp_reg3, [tmp_reg1+12]; \
stw tmp_reg3, [tmp_reg1]; \
stw tmp_reg3, [tmp_reg1+8];
! Train of total 4 of UW Loads
! Note the values of those loads inside the macro will not be analized,
! even though the access are [possibly] made to the shared locations
#define LDTRAIN4(Pid, rand, my_cpu, PA_val, VA_val, VA_reg, VA_offset, tmp_reg1, tmp_reg2, tmp_reg3, tmp_reg4) \
#define LDTRAIN8(Pid, rand, my_cpu, PA_val, VA_val, VA_reg, VA_offset, tmp_reg1, tmp_reg2, tmp_reg3, tmp_reg4) \
#define PREFETCHTRAIN4(Pid, rand, my_cpu, PA_val, VA_val, VA_reg, VA_offset, tmp_reg1, tmp_reg2, tmp_reg3, tmp_reg4) \
#define PREFETCHTRAIN8(Pid, rand, my_cpu, PA_val, VA_val, VA_reg, VA_offset, tmp_reg1, tmp_reg2, tmp_reg3, tmp_reg4) \
! This is an interesting macro that will probably create the write congessions
! access to the shared locations (offsets from bases have to be adjusted)
! the values of the locations are not changed, so it should not affect analysis
#define CASTRAIN4(Pid, rand, my_cpu, PA_val, VA_val, VA_reg, VA_offset, tmp_reg1, tmp_reg2, tmp_reg3, tmp_reg4) \
add %i0, tmp_reg1, tmp_reg1;\
add %i1, tmp_reg2, tmp_reg2;\
ld [tmp_reg1], tmp_reg3;\
ld [tmp_reg2], tmp_reg4;\
cas [tmp_reg1], tmp_reg3, tmp_reg3;\
cas [tmp_reg1], tmp_reg3, tmp_reg3;\
cas [tmp_reg2], tmp_reg4, tmp_reg4;\
cas [tmp_reg2], tmp_reg4, tmp_reg4;
wrpr $1, %pstate ! set PSTATE.IE
define(CHECK_DISPATCH_STATUS,`
ldxa [%g0]ASI_INTR_DISPATCH_STATUS, $3
define(CHECK_RECEIVE_STATUS,`
ldxa [%g0]ASI_INTR_RECEIVE, $1
define(WRITE_INTR_DATA_REGS,`
add %g0, ASI_INTR_DATA0_W_VAL, $2
stxa $3, [$2]ASI_INTR_DATA0_W
add %g0, ASI_INTR_DATA1_W_VAL, $2
stxa $3, [$2]ASI_INTR_DATA1_W
add %g0, ASI_INTR_DATA2_W_VAL, $2
stxa $3, [$2]ASI_INTR_DATA2_W
add %g0, ASI_INTR_DATA3_W_VAL, $2
stxa $3, [$2]ASI_INTR_DATA3_W
add %g0, ASI_INTR_DATA4_W_VAL, $2
stxa $3, [$2]ASI_INTR_DATA4_W
add %g0, ASI_INTR_DATA5_W_VAL, $2
stxa $3, [$2]ASI_INTR_DATA5_W
add %g0, ASI_INTR_DATA6_W_VAL, $2
stxa $3, [$2]ASI_INTR_DATA6_W
add %g0, ASI_INTR_DATA7_W_VAL, $2
stxa $3, [$2]ASI_INTR_DATA7_W
define(INTR_SET_DISPATCH_VECTOR,`
sllx $4, 24, $4 ! BN pair
or $5,0x70,$5 ! VA[13:0] = 0x70
stxa %g0, [$1]ASI_INTR_DISPATCH_W
#define REGION0_ALIAS0_O 0x0
#define REGION1_ALIAS0_O 0x10000
#define REGION2_ALIAS0_O 0x20000
#define REGION3_ALIAS0_O 0x30000
#define REPLACEMENT0_ALIAS0_O 0x40000
!------------------------------------------------------------------------
tsotool_unshared_data_start:
!-- label names of res_buf must match with extract_loads_m64.pl --
.align 64 ! for self bcopy()
.skip RESULTS_BUF_SIZE_PER_CPU_RTL/2
.align 64 ! for self bcopy()
.skip RESULTS_BUF_SIZE_PER_CPU_RTL/2
.skip PRIVATE_DATA_AREA_PER_CPU_RTL
tsotool_unshared_data_end:
! to prevent VAs from running over from this section into shared regions
!------------------------------------------------------------------------
! 4 shared memory regions, 0 alias(es) each (Alias 0 is normal VA)
.skip REGION_MAPPED_SIZE_RTL
.skip REGION_SIZE_RTL-REGION_MAPPED_SIZE_RTL
.skip REGION_MAPPED_SIZE_RTL
.skip REGION_SIZE_RTL-REGION_MAPPED_SIZE_RTL
.skip REGION_MAPPED_SIZE_RTL
.skip REGION_SIZE_RTL-REGION_MAPPED_SIZE_RTL
.skip REGION_MAPPED_SIZE_RTL
.skip REGION_SIZE_RTL-REGION_MAPPED_SIZE_RTL
REPLACEMENT0_ALIAS0_START:
.skip REGION_MAPPED_SIZE_RTL
.skip REGION_SIZE_RTL-REGION_MAPPED_SIZE_RTL
REPLACEMENT1_ALIAS0_START:
.skip REGION_MAPPED_SIZE_RTL
.skip REGION_SIZE_RTL-REGION_MAPPED_SIZE_RTL
REPLACEMENT2_ALIAS0_START:
.skip REGION_MAPPED_SIZE_RTL
.skip REGION_SIZE_RTL-REGION_MAPPED_SIZE_RTL
REPLACEMENT3_ALIAS0_START:
.skip REGION_MAPPED_SIZE_RTL
.skip REGION_SIZE_RTL-REGION_MAPPED_SIZE_RTL
local_trap_handlers_start:
extern_interrupt_handler:
stxa %g0, [%g0]ASI_INTR_RECEIVE
! at this point, g1 should have CPU id (0, 1, 2, ...)
set REGION0_ALIAS0_START, %o0 ! shared address 0
set REGION1_ALIAS0_START, %o1 ! shared address 1
set REGION2_ALIAS0_START, %o2 ! shared address 2
set REGION3_ALIAS0_START, %o3 ! shared address 3
EXIT_BAD ! Should never reach here
setx stack_top_p0, %g1, %l1
setx res_buf_fp_p_0, %g1, %o4
setx private_data_p0, %g1, %o5
#define NO_REAL_CPUS_MINUS_1 0
! %i0 %i1 : base registers for first 2 regions
! %i2 %i3 : cache registers for 4 regions
! %i4 fixed pointer to per-cpu results area
! %l1 moving pointer to per-cpu FP results area
! %o7 moving pointer to per-cpu integer results area
! %i5 pointer to per-cpu private area
! %l0 holds lfsr, used as source of random bits
! %l2 loop count register
! %f16 running counter for unique fp store values
! %f17 holds increment value for fp counter
! %l4 running counter for unique integer store values (increment value is always 1)
! %l5 move-to register for load values (simulation only)
! %f30 move-to register for FP values (simulation only)
! %l3 %l6 %l7 %o5 : 4 temporary registers
! %o0 %o1 %o2 %o3 %o4 : 5 integer results buffer registers
! %f0-f15 FP results buffer registers
! %f32-f47 FP block load/store registers
! 100 (dynamic) instruction sequence begins
! Force %i0-%i3 to be 64-byte aligned
! Initialize pointer to FP load results area
! Initialize pointer to integer load results area
or %o7, %lo(0x80000), %o7
! Initialize %f0-%f62 to 0xdeadbee0deadbee1
sethi %hi(0xdeadbee0), %l6
or %l6, %lo(0xdeadbee0), %l6
sethi %hi(0xdeadbee1), %l6
or %l6, %lo(0xdeadbee1), %l6
! Signature for extract_loads script to start extracting load values for this stream
sethi %hi(0x00deade1), %l6
or %l6, %lo(0x00deade1), %l6
! Initialize running integer counter in register %l4
! Initialize running FP counter in register %f16
sethi %hi(0x3f800001), %l6
or %l6, %lo(0x3f800001), %l6
! Initialize FP counter increment value in register %f17 (constant)
sethi %hi(0x34000000), %l6
or %l6, %lo(0x34000000), %l6
! Initialize LFSR to 0x75ef^4
!-- init shared addrs 0 to 15 ---
sethi %hi(REGION2_ALIAS0_O-REGION0_ALIAS0_O), %i3
sethi %hi(REGION3_ALIAS0_O-REGION0_ALIAS0_O), %i2
! use untouched cache-line (offset 4K) in replacement area for sync
! need to do atomic ops, so need CV=1 (guarunteed in replacement area)
sethi %hi(REPLACEMENT0_ALIAS0_O-REGION0_ALIAS0_O), %i3
sethi %hi(0x10000), %l6 ! for sync time-out
!-- master of sync_init ---
or %g0, NO_REAL_CPUS_MINUS_1, %o5
sub %l6, 1, %l6 ! delay slot
lduw [%l7], %o5 ! delay slot
BEGIN_NODES0: ! Test istream for CPU 0 begins
P1: !_QWST [6] (maybe <- 0x3f800001) (FP) (Loop entry) (Loop exit)
! preparing store val #0, next val will be in f20
! preparing store val #1, next val will be in f21
P2: !_PREFETCH [2] (Int) (Loop entry)
P3: !_PREFETCH [11] (Int)
sethi %hi(REGION2_ALIAS0_O-REGION0_ALIAS0_O), %i2
P4: !_PREFETCH [1] (Int) (LE)
prefetcha [%i0 + 4] %asi, 1
P6: !_QWST [2] (maybe <- 0x3f800003) (FP)
! preparing store val #0, next val will be in f20
! preparing store val #1, next val will be in f21
! preparing store val #2, next val will be in f23
P7: !_QWST [12] (maybe <- 0x3f800006) (FP)
sethi %hi(REGION3_ALIAS0_O-REGION0_ALIAS0_O), %i3
! preparing store val #0, next val will be in f20
P9: !_PREFETCH [6] (Int) (Loop exit)
P10: !_QWST [7] (maybe <- 0x3f800007) (FP) (Loop entry)
! preparing store val #0, next val will be in f20
! preparing store val #1, next val will be in f21
P11: !_PREFETCH [12] (Int)
sethi %hi(REGION3_ALIAS0_O-REGION0_ALIAS0_O), %i2
P12: !_QWST [13] (maybe <- 0x3f800009) (FP)
! preparing store val #0, next val will be in f20
P13: !_PREFETCH [2] (Int) (Branch target of P48)
P14: !_PREFETCH [5] (Int)
P15: !_PREFETCH [5] (Int)
P16: !_QWST [7] (maybe <- 0x3f80000a) (FP)
! preparing store val #0, next val will be in f20
! preparing store val #1, next val will be in f21
P17: !_PREFETCH [11] (Int) (Loop exit)
sethi %hi(REGION2_ALIAS0_O-REGION0_ALIAS0_O), %i3
P18: !_QWST [0] (maybe <- 0x3f80000c) (FP) (Loop entry)
! preparing store val #0, next val will be in f20
! preparing store val #1, next val will be in f21
! preparing store val #2, next val will be in f23
P19: !_QWST [12] (maybe <- 0x3f80000f) (FP)
sethi %hi(REGION3_ALIAS0_O-REGION0_ALIAS0_O), %i2
! preparing store val #0, next val will be in f20
P20: !_PREFETCH [7] (Int)
P21: !_QWST [15] (maybe <- 0x3f800010) (FP)
! preparing store val #0, next val will be in f20
P22: !_PREFETCH [0] (Int)
P23: !_PREFETCH [4] (Int)
P24: !_PREFETCH [15] (Int)
P25: !_PREFETCH [1] (Int)
P26: !_QWST [3] (maybe <- 0x3f800011) (FP) (Loop exit) (Branch target of P78)
! preparing store val #0, next val will be in f20
P27: !_QWST [5] (maybe <- 0x3f800012) (FP) (Loop entry)
! preparing store val #0, next val will be in f23
P28: !_QWST [0] (maybe <- 0x3f800013) (FP)
! preparing store val #0, next val will be in f20
! preparing store val #1, next val will be in f21
! preparing store val #2, next val will be in f23
P29: !_QWST [12] (maybe <- 0x3f800016) (FP)
sethi %hi(REGION3_ALIAS0_O-REGION0_ALIAS0_O), %i3
! preparing store val #0, next val will be in f20
! move %o0(lower) -> %o0(upper)
P31: !_PREFETCH [1] (Int)
P32: !_PREFETCH [14] (Int)
P33: !_PREFETCH [14] (Int)
P34: !_QWST [7] (maybe <- 0x3f800017) (FP)
! preparing store val #0, next val will be in f20
! preparing store val #1, next val will be in f21
P35: !_REPLACEMENT [1] (Int)
sethi %hi(REPLACEMENT0_ALIAS0_O-REGION0_ALIAS0_O), %i2
P36: !_PREFETCH [0] (Int)
P37: !_QWST [3] (maybe <- 0x3f800019) (FP)
! preparing store val #0, next val will be in f20
P38: !_QWST [10] (maybe <- 0x3f80001a) (FP)
sethi %hi(REGION2_ALIAS0_O-REGION0_ALIAS0_O), %i3
! preparing store val #0, next val will be in f20
P39: !_QWST [1] (maybe <- 0x3f80001b) (FP)
! preparing store val #0, next val will be in f20
! preparing store val #1, next val will be in f21
! preparing store val #2, next val will be in f23
P40: !_QWST [6] (maybe <- 0x3f80001e) (FP)
! preparing store val #0, next val will be in f20
! preparing store val #1, next val will be in f21
! move %l7(lower) -> %o0(lower)
! move %o1(lower) -> %o1(upper)
! move %l7(lower) -> %o1(lower)
! move %o2(lower) -> %o2(upper)
! move %l7(lower) -> %o2(lower)
sethi %hi(REGION3_ALIAS0_O-REGION0_ALIAS0_O), %i2
! move %o3(lower) -> %o3(upper)
! move %l7(lower) -> %o3(lower)
P48: !_LD [3] (Int) (CBR)
! move %o4(lower) -> %o4(upper)
P49: !_LD [6] (Int) (Loop exit)
! move %o5(lower) -> %o4(lower)
!---- flushing int results buffer----
P50: !_QWST [3] (maybe <- 0x3f800020) (FP) (Loop entry)
! preparing store val #0, next val will be in f20
! move %o0(lower) -> %o0(upper)
P52: !_QWST [9] (maybe <- 0x3f800021) (FP)
! preparing store val #0, next val will be in f20
P53: !_QWST [3] (maybe <- 0x3f800022) (FP)
! preparing store val #0, next val will be in f20
P54: !_QWST [12] (maybe <- 0x3f800023) (FP)
sethi %hi(REGION3_ALIAS0_O-REGION0_ALIAS0_O), %i3
! preparing store val #0, next val will be in f20
P55: !_PREFETCH [9] (Int)
! move %l3(lower) -> %o0(lower)
! move %o1(lower) -> %o1(upper)
sethi %hi(REGION2_ALIAS0_O-REGION0_ALIAS0_O), %i2
! move %l3(lower) -> %o1(lower)
lduwa [%i1 + 256] %asi, %o2
! move %o2(lower) -> %o2(upper)
! move %l3(lower) -> %o2(lower)
! move %o3(lower) -> %o3(upper)
! move %l3(lower) -> %o3(lower)
! move %o4(lower) -> %o4(upper)
P64: !_LD [0] (Int) (Loop exit)
! move %l3(lower) -> %o4(lower)
!---- flushing int results buffer----
P65: !_PREFETCH [3] (Int) (Loop entry)
P66: !_QWST [3] (maybe <- 0x3f800024) (FP)
! preparing store val #0, next val will be in f20
P67: !_QWST [14] (maybe <- 0x3f800025) (FP) (Loop exit)
sethi %hi(REGION3_ALIAS0_O-REGION0_ALIAS0_O), %i3
! preparing store val #0, next val will be in f20
! move %o0(lower) -> %o0(upper)
! move %l3(lower) -> %o0(lower)
lduwa [%i0 + 12] %asi, %o1
! move %o1(lower) -> %o1(upper)
! move %l3(lower) -> %o1(lower)
! move %o2(lower) -> %o2(upper)
! move %l3(lower) -> %o2(lower)
P78: !_LD [9] (Int) (CBR)
! move %o3(lower) -> %o3(upper)
sethi %hi(REGION2_ALIAS0_O-REGION0_ALIAS0_O), %i2
! move %l6(lower) -> %o3(lower)
! move %o4(lower) -> %o4(upper)
sethi %hi(REGION3_ALIAS0_O-REGION0_ALIAS0_O), %i3
! move %l6(lower) -> %o4(lower)
!---- flushing int results buffer----
! move %o0(lower) -> %o0(upper)
! move %l6(lower) -> %o0(lower)
! move %o1(lower) -> %o1(upper)
END_NODES0: ! Test istream for CPU 0 ends
sethi %hi(0xdead0e0f), %l3
or %l3, %lo(0xdead0e0f), %l3
! move %l3(lower) -> %o1(lower)
!---- flushing int results buffer----
!---- flushing fp results buffer to %f30 ----
!#0 N1 P1 QWST 6 0x3f800001 FP BE Pri
!#0 N2 P1 QWST 7 0x3f800002 FP BE Pri
!#0 N7 P6 QWST 0 0x3f800003 FP BE Pri
!#0 N8 P6 QWST 1 0x3f800004 FP BE Pri
!#0 N9 P6 QWST 2 0x3f800005 FP BE Pri
!#0 N10 P7 QWST 12 0x3f800006 FP BE Pri
!#0 N17 P6 QWST 0 0x3f800007 FP BE Pri
!#0 N18 P6 QWST 1 0x3f800008 FP BE Pri
!#0 N19 P6 QWST 2 0x3f800009 FP BE Pri
!#0 N20 P7 QWST 12 0x3f80000a FP BE Pri
!#0 N23 P10 QWST 6 0x3f80000b FP BE Pri
!#0 N24 P10 QWST 7 0x3f80000c FP BE Pri
!#0 N26 P12 QWST 13 0x3f80000d FP BE Pri
!#0 N30 P16 QWST 6 0x3f80000e FP BE Pri
!#0 N31 P16 QWST 7 0x3f80000f FP BE Pri
!#0 N33 P10 QWST 6 0x3f800010 FP BE Pri
!#0 N34 P10 QWST 7 0x3f800011 FP BE Pri
!#0 N36 P12 QWST 13 0x3f800012 FP BE Pri
!#0 N40 P16 QWST 6 0x3f800013 FP BE Pri
!#0 N41 P16 QWST 7 0x3f800014 FP BE Pri
!#0 N43 P10 QWST 6 0x3f800015 FP BE Pri
!#0 N44 P10 QWST 7 0x3f800016 FP BE Pri
!#0 N46 P12 QWST 13 0x3f800017 FP BE Pri
!#0 N50 P16 QWST 6 0x3f800018 FP BE Pri
!#0 N51 P16 QWST 7 0x3f800019 FP BE Pri
!#0 N53 P18 QWST 0 0x3f80001a FP BE Pri
!#0 N54 P18 QWST 1 0x3f80001b FP BE Pri
!#0 N55 P18 QWST 2 0x3f80001c FP BE Pri
!#0 N56 P19 QWST 12 0x3f80001d FP BE Pri
!#0 N58 P21 QWST 15 0x3f80001e FP BE Pri
!#0 N63 P26 QWST 3 0x3f80001f FP BE Pri
!#0 N64 P18 QWST 0 0x3f800020 FP BE Pri
!#0 N65 P18 QWST 1 0x3f800021 FP BE Pri
!#0 N66 P18 QWST 2 0x3f800022 FP BE Pri
!#0 N67 P19 QWST 12 0x3f800023 FP BE Pri
!#0 N69 P21 QWST 15 0x3f800024 FP BE Pri
!#0 N74 P26 QWST 3 0x3f800025 FP BE Pri
!#0 N75 P27 QWST 5 0x3f800026 FP BE Pri
!#0 N76 P28 QWST 0 0x3f800027 FP BE Pri
!#0 N77 P28 QWST 1 0x3f800028 FP BE Pri
!#0 N78 P28 QWST 2 0x3f800029 FP BE Pri
!#0 N79 P29 QWST 12 0x3f80002a FP BE Pri
!#0 N80 P30 LD 14 -1 Int BE Pri
!#0 N84 P34 QWST 6 0x3f80002b FP BE Pri
!#0 N85 P34 QWST 7 0x3f80002c FP BE Pri
!#0 N88 P37 QWST 3 0x3f80002d FP BE Pri
!#0 N89 P38 QWST 10 0x3f80002e FP BE Pri
!#0 N90 P39 QWST 0 0x3f80002f FP BE Pri
!#0 N91 P39 QWST 1 0x3f800030 FP BE Pri
!#0 N92 P39 QWST 2 0x3f800031 FP BE Pri
!#0 N93 P40 QWST 6 0x3f800032 FP BE Pri
!#0 N94 P40 QWST 7 0x3f800033 FP BE Pri
!#0 N95 P41 LD 2 -1 Int BE Pri
!#0 N96 P42 LD 2 -1 Int BE Pri
!#0 N97 P43 LD 9 -1 Int BE Pri
!#0 N98 P44 LD 9 -1 Int BE Pri
!#0 N99 P45 LD 0 -1 Int BE Pri
!#0 N100 P46 LD 13 -1 Int BE Pri
!#0 N101 P47 LD 15 -1 Int BE Pri
!#0 N102 P48 LD 3 -1 Int BE Pri
!#0 N103 P49 LD 6 -1 Int BE Pri
!#0 N104 P50 QWST 3 0x3f800034 FP BE Pri
!#0 N105 P51 LD 4 -1 Int BE Pri
!#0 N106 P52 QWST 9 0x3f800035 FP BE Pri
!#0 N107 P53 QWST 3 0x3f800036 FP BE Pri
!#0 N108 P54 QWST 12 0x3f800037 FP BE Pri
!#0 N110 P56 LD 6 -1 Int BE Pri
!#0 N111 P57 LD 5 -1 Int BE Pri
!#0 N112 P58 LD 10 -1 Int BE Pri
!#0 N113 P59 LD 8 -1 Int LE Pri
!#0 N114 P60 LD 15 -1 Int BE Pri
!#0 N115 P61 LD 9 -1 Int BE Pri
!#0 N116 P62 LD 0 -1 Int BE Pri
!#0 N117 P63 LD 8 -1 Int BE Pri
!#0 N118 P64 LD 0 -1 Int BE Pri
!#0 N120 P66 QWST 3 0x3f800038 FP BE Pri
!#0 N121 P67 QWST 14 0x3f800039 FP BE Pri
!#0 N123 P69 LD 0 -1 Int BE Pri
!#0 N124 P70 LD 1 -1 Int BE Pri
!#0 N125 P71 LD 2 -1 Int LE Pri
!#0 N126 P72 LD 3 -1 FP BE Pri
!#0 N127 P73 LD 4 -1 Int BE Pri
!#0 N128 P74 LD 5 -1 Int BE Pri
!#0 N129 P75 LD 6 -1 FP BE Pri
!#0 N130 P76 LD 7 -1 Int BE Pri
!#0 N131 P77 LD 8 -1 FP BE Pri
!#0 N132 P78 LD 9 -1 Int BE Pri
!#0 N133 P79 LD 10 -1 Int BE Pri
!#0 N134 P80 LD 11 -1 Int BE Pri
!#0 N135 P81 LD 12 -1 Int BE Pri
!#0 N136 P82 LD 13 -1 Int BE Pri
!#0 N137 P83 LD 14 -1 Int BE Pri
!#0 N138 P84 LD 15 -1 Int BE Pri