diff options
Diffstat (limited to 'samples/disas/ia64.asm')
-rw-r--r-- | samples/disas/ia64.asm | 1084 |
1 files changed, 1084 insertions, 0 deletions
diff --git a/samples/disas/ia64.asm b/samples/disas/ia64.asm new file mode 100644 index 0000000..189eb28 --- /dev/null +++ b/samples/disas/ia64.asm @@ -0,0 +1,1084 @@ +///////////////////////////////////////////////////////////////////////////// +// +// Detours Test Program (ia64.asm/disas.exe) +// +// Microsoft Research Detours Package +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// + + .section .text + .proc TestCodes# + .global TestCodes# + .align 64 + +TestCodes: +{ .mii + and r21 = 7, r32 + mux1 r25 = r33, @brcst + add r16 = r32, r34 +} { .mmb + cmp.ge p9 = 0, r34 + mov r8 = r32 +(p9) br.ret.spnt b0 + ;; +} +// align on an 8-byte boundary +{ .mmi + cmp.ne p15 = 0, r21 //Low 3 bits zero? + cmp.gt p10 = 0x30, r34 + cmp.eq p6, p7 = 0, r33 +} { .mmb + nop.m 0 + nop.m 0 +(p15) br.cond.dpnt Align_Loop + ;; +} { .mmi +(p7) mov r27 = 0x88 +(p6) mov r27 = 0x90 + tbit.nz p14,p13 = r32, 3 // is aligned on 8-bytes (to align on 16 before FP loop)? +} { .mbb + nop.m 0 +(p10) br.cond.dpnt Aligned_Short // blocks < 48 bytes +(p7) br.cond.dpnt Aligned_Long; // do 8-byte stores for non-zero fills, 16-byte f0 for zero-fills + ;; +} + +// zero-fills >= 48 bytes goes through an f0 16-byte store loop +Aligned_FP_Long: +{ .mmi + add r28 = 0x80, r27 + add r29 = 0x100, r27 + add r30 = 0x180, r27 +} { .mmi +(p14) add r14 = 0x88, r32 +(p14) st8 [r32] = r0, 8 +(p14) add r34 = -0x8, r34 + ;; +} { .mmi +(p13) add r14 = 0x80, r32 + cmp.ge p7 = r34, r27 + add r27 = 0x200, r27 +} { .mmi + add r15 = 0x180, r32 + add r17 = 0x200, r32 + nop.i 0 + ;; +} { .mmi + add r26 = 0x280, r32 + cmp.ge p8 = r34, r28 + cmp.ge p9 = r34, r29 +} { .mmi + stf.spill [r32] = f0 // Line 0 +(p7) stf.spill [r14] = f0,0x80 // Line +1 0x80 + add r28 = 0x200, r28 + ;; +} { .mmi +(p8) stf.spill [r14] = f0 // Line +2 0x100 +(p9) stf.spill [r15] = f0 // Line +3 0x180 + cmp.ge p10 = r34, r28 +} { .mmi + cmp.ge p11 = r34, r30 + cmp.ge p12 = r34, r27 + nop.i 0 + ;; +} { .mmi +(p11) stf.spill [r17] = f0 // Line +4 0x200 +(p12) stf.spill [r26] = f0, 0x80 // Line +5 0x280 + add r31 = 0x10, r32 + ;; +} + + .align 32 +Long_FP_loop: +{ .mmi +(p10) stf.spill [r26] = f0, 0x80 // Line +6 + stf.spill [r31] = f0, 0x20 + cmp.le p15,p12 = 0x40, r34 +} { .mmb + add r32 = 0x20, r32 + add r34 = -0x20, r34 +(p12) br.cond.dpnt Aligned_Short + ;; +} { .mmi +(p15) stf.spill [r32] = f0, 0x20 +(p15) stf.spill [r31] = f0, 0x20 + cmp.le p15,p12 = 0x40, r34 +} { .mmb + add r21 = -0x60, r34 + add r34 = -0x20, r34 +(p12) br.cond.dpnt Aligned_Short + ;; +} { .mmi +(p15) stf.spill [r32] = f0, 0x20 +(p15) stf.spill [r31] = f0, 0x20 + cmp.le p15,p12 = 0x40, r34 +} { .mmb + cmp.ge p10 = r21, r28 + add r34 = -0x20, r34 +(p12) br.cond.dpnt Aligned_Short + ;; +} { .mmi +(p15) stf.spill [r32] = f0, 0x20 +(p15) stf.spill [r31] = f0, 0x20 + cmp.le p15,p12 = 0x40, r34 +} { .mbb + add r34 = -0x20, r34 +(p15) br.cond.sptk.many Long_FP_loop + br.cond.dpnt.many Aligned_Short + ;; +} + + .align 32 +// >= 48 bytes non-zero fills go through a 8-byte store based loop +Aligned_Long: +{ .mmi + add r28 = 0x80, r27 + add r29 = 0x100, r27 + add r30 = 0x180, r27 +} { .mmi + add r14 = 0x80, r32 + cmp.ge p7 = r34, r27 + nop.i 0 + ;; +} { .mmi + add r26 = 0x180, r32 + cmp.ge p8 = r34, r28 + add r31 = 8, r32 +} { .mmi + st8 [r32] = r25 +(p7) st8 [r14] = r25, 0x80 + cmp.ge p9 = r34, r29 + ;; +} { .mmi +(p8) st8 [r14] = r25 +(p9) st8 [r26] = r25, 0x80 + cmp.ge p10 = r34, r30 + ;; +} + .align 32 +Long_loop: +{ .mmi +(p10) st8 [r26] = r25, 0x80 + st8 [r31] = r25, 0x10 + cmp.le p15,p12 = 0x20, r34 +} { .mmb + add r32 = 0x10, r32 + add r34 = -0x10, r34 +(p12) br.cond.dpnt Aligned_Short + ;; +} { .mmi +(p15) st8 [r32] = r25, 0x10 +(p15) st8 [r31] = r25, 0x10 + cmp.le p15,p12 = 0x20, r34 +} { .mmb + nop.m 0 + add r34 = -0x10, r34 +(p12) br.cond.dpnt Aligned_Short + ;; +} { .mmi +(p15) st8 [r32] = r25, 0x10 +(p15) st8 [r31] = r25, 0x10 + cmp.le p15,p12 = 0x20, r34 +} { .mmb + nop.m 0 + add r34 = -0x10, r34 +(p12) br.cond.dpnt Aligned_Short + ;; +} { .mmi +(p15) st8 [r32] = r25, 0x10 +(p15) st8 [r31] = r25, 0x10 + cmp.le p15,p12 = 0x20, r34 +} { .mmb + nop.m 0 + add r34 = -0x10, r34 +(p12) br.cond.dpnt Aligned_Short + ;; +} { .mmi +(p15) st8 [r32] = r25, 0x10 +(p15) st8 [r31] = r25, 0x10 + cmp.le p15,p12 = 0x20, r34 +} { .mmb + nop.m 0 + add r34 = -0x10, r34 +(p12) br.cond.dpnt Aligned_Short + ;; +} { .mmi +(p15) st8 [r32] = r25, 0x10 +(p15) st8 [r31] = r25, 0x10 + cmp.le p15,p12 = 0x20, r34 +} { .mmb + add r21 = -0x30, r34 + add r34 = -0x10, r34 +(p12) br.cond.dpnt Aligned_Short + ;; +} { .mmi +(p15) st8 [r32] = r25, 0x10 +(p15) st8 [r31] = r25, 0x10 + cmp.le p15,p12 = 0x20, r34 +} { .mmb + cmp.ge p10 = r21, r30 + add r34 = -0x10, r34 +(p12) br.cond.dpnt Aligned_Short + ;; +} { .mmi +(p15) st8 [r32] = r25, 0x10 +(p15) st8 [r31] = r25, 0x10 + cmp.le p15,p12 = 0x20, r34 +} { .mmb + add r34 = -0x10, r34 + nop.m 0 +(p15) br.cond.sptk.many Long_loop + ;; + +} + +// +// Do partial word stores +// + .align 32 +Aligned_Short: +{ .mmi + and r27 = 2, r34 + add r31 = 8, r32 + tbit.nz p6 = r34, 0 //bit 0 on? +} { .mmb + cmp.le p11 = 0x10, r34 + cmp.eq p10 = 0, r34 +(p10) br.ret.dpnt b0 + ;; +} { .mmi +(p11) st8 [r32] = r25, 0x10 +(p11) st8 [r31] = r25, 0x10 + cmp.le p12 = 0x20, r34 +} { .mmi + add r17 = -2, r16 + add r18 = -4, r16 + tbit.nz p9 = r34, 3 //odd number of st8s? + ;; +} { .mmi +(p12) st8 [r32] = r25, 0x10 +(p12) st8 [r31] = r25, 0x10 + nop.i 0 +} { .mmi +(p6) add r18 = -1, r18 +(p6) add r16 = -1, r16 + cmp.ne p7 = 0, r27 + ;; +} { .mmi +(p9) st8 [r32] = r25 +(p6) st1 [r16] = r25 + tbit.nz p8 = r34, 2 //bit 2 on? +} { .mmi +(p7) add r18 = -2, r18 +(p6) add r17 = -1, r17 + nop.i 0 + ;; +} { .mmb +(p8) st4 [r18] = r25 +(p7) st2 [r17] = r25 + br.ret.sptk.many b0 + ;; +} + + .align 32 +// Align the input pointer to an 8-byte boundary +Align_Loop: +{ .mmi + st1 [r32] = r33,1 + add r21 = 1, r21 + cmp.eq p15 = 1, r34 +} { .mmb + cmp.ge p11 = 0x30, r34 + add r34 = -1, r34 +(p15) br.ret.dpnt b0 + ;; +} { .mmb + cmp.gt p10 = 8, r21 + cmp.eq p6, p7 = 0, r33 +(p10) br.cond.sptk Align_Loop + ;; +} { .mmi +(p7) mov r27 = 0x88 +(p6) mov r27 = 0x90 + tbit.nz p14,p13 = r32, 3 // is aligned on 8-bytes (to align on 16 before FP loop)? +} { .bbb +(p11) br.cond.dpnt Aligned_Short // blocks < 48 bytes +(p7) br.cond.dpnt Aligned_Long; // non-zero fills + br.cond.dptk Aligned_FP_Long; // zero fills + ;; +} + .endp TestCodes# + + .proc Again# +Again: + brl TestCodes + brl TestCodes + brl TestCodes + brl TestCodes + brl TestCodes + brl TestCodes + brl TestCodes + brl TestCodes + brl TestCodes + brl TestCodes + brl Fore1 + brl Fore2 + brl Fore3 + brl Fore4 + brl Fore5 + brl Fore6 + brl Fore7 + .endp Again# + + data4 0xffffff00 + data4 0xffffffff + data4 0xffffffff + data4 0xffffffff + .align 64 + + data4 0xffffff00 + data4 0xffffffff + data4 0xffffffff + data4 0xffffffff + +{ + addl r2=0xffffffffffffffff, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0xfffffffffffffff0, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0xffffffffffffff00, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0xfffffffffffff000, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0xfffffffffffff000, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0xffffffffffff0000, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0xfffffffffff00000, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0xffffffffffe00000, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x00000000001fffff, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x00000000000fffff, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x000000000000ffff, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000000fff, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x00000000000000ff, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x000000000000000f, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000000000, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000000001, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000000002, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000000004, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000000008, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000000010, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000000020, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000000040, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000000080, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000000100, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000000200, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000000400, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000000800, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000001000, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000002000, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000004000, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000008000, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000010000, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000020000, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000040000, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000080000, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0x0000000000100000, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} +{ + addl r2=0xffffffffffe00000, gp ;; + ld8 r2=[r2] + nop.i 0 ;; +} + + data4 0 + .align 64 + + .align 64 ; + .proc Fore1# +Fore1: + brl Fore2 + .endp Fore1# + + data4 0 + .align 64 + + .proc Fore2# +Fore2: + brl Fore3 + .endp Fore2# + + data4 0 + .align 64 + + .proc Fore3# +Fore3: + brl Fore3 + movl gp = 0xffffffffffffffff + brl Fore4 + movl gp = 0x0000000000000000 + movl gp = 0x0000000000000001 + movl gp = 0x0000000000000002 + movl gp = 0x0000000000000004 + movl gp = 0x0000000000000008 + movl gp = 0x0000000000000010 + movl gp = 0x0000000000000020 + movl gp = 0x0000000000000040 + movl gp = 0x0000000000000080 + movl gp = 0x0000000000000100 + movl gp = 0x0000000000000200 + movl gp = 0x0000000000000400 + movl gp = 0x0000000000000800 + movl gp = 0x0000000000001000 + movl gp = 0x0000000000002000 + movl gp = 0x0000000000004000 + brl Fore4 + movl gp = 0x0000000000000000 + brl Fore4 + movl gp = 0x0000000000000001 + brl Fore4 + movl gp = 0x0000000000000002 + brl Fore4 + movl gp = 0x0000000000000004 + brl Fore4 + movl gp = 0x0000000000000008 + brl Fore4 + movl gp = 0x0000000000000010 + brl Fore4 + movl gp = 0x0000000000000020 + brl Fore4 + movl gp = 0x0000000000000040 + brl Fore4 + movl gp = 0x0000000000000080 + brl Fore4 + movl gp = 0x0000000000000100 + brl Fore4 + movl gp = 0x0000000000000200 + brl Fore4 + movl gp = 0x0000000000000400 + brl Fore4 + movl gp = 0x0000000000000800 + brl Fore4 + movl gp = 0x0000000000001000 + brl Fore4 + movl gp = 0x0000000000002000 + brl Fore4 + movl gp = 0x0000000000004000 + brl Fore4 + movl gp = 0x0000000000008000 + brl Fore4 + movl gp = 0x0000000000010000 + brl Fore4 + movl gp = 0x0000000000020000 + brl Fore4 + movl gp = 0x0000000000040000 + brl Fore4 + movl gp = 0x0000000000080000 + brl Fore4 + movl gp = 0x0000000000100000 + brl Fore4 + movl gp = 0x0000000000200000 + brl Fore4 + movl gp = 0x0000000000400000 + brl Fore4 + movl gp = 0x0000000000800000 + brl Fore4 + movl gp = 0x0000000001000000 + brl Fore4 + movl gp = 0x0000000002000000 + brl Fore4 + movl gp = 0x0000000004000000 + brl Fore4 + movl gp = 0x0000000008000000 + brl Fore4 + movl gp = 0x0000000010000000 + brl Fore4 + movl gp = 0x0000000020000000 + brl Fore4 + movl gp = 0x0000000040000000 + brl Fore4 + movl gp = 0x0000000080000000 + brl Fore4 + movl gp = 0x0000000100000000 + brl Fore4 + movl gp = 0x0000000200000000 + brl Fore4 + movl gp = 0x0000000400000000 + brl Fore4 + movl gp = 0x0000000800000000 + brl Fore4 + movl gp = 0x0000001000000000 + brl Fore4 + movl gp = 0x0000002000000000 + brl Fore4 + movl gp = 0x0000004000000000 + brl Fore4 + movl gp = 0x0000008000000000 + brl Fore4 + movl gp = 0x0000010000000000 + brl Fore4 + movl gp = 0x0000020000000000 + brl Fore4 + movl gp = 0x0000040000000000 + brl Fore4 + movl gp = 0x0000080000000000 + brl Fore4 + movl gp = 0x0000100000000000 + brl Fore4 + movl gp = 0x0000200000000000 + brl Fore4 + movl gp = 0x0000400000000000 + brl Fore4 + movl gp = 0x0000800000000000 + brl Fore4 + movl gp = 0x0001000000000000 + brl Fore4 + movl gp = 0x0002000000000000 + brl Fore4 + movl gp = 0x0004000000000000 + brl Fore4 + movl gp = 0x0008000000000000 + brl Fore4 + movl gp = 0x0010000000000000 + brl Fore4 + movl gp = 0x0020000000000000 + brl Fore4 + movl gp = 0x0040000000000000 + brl Fore4 + movl gp = 0x0080000000000000 + brl Fore4 + movl gp = 0x0100000000000000 + brl Fore4 + movl gp = 0x0200000000000000 + brl Fore4 + movl gp = 0x0400000000000000 + brl Fore4 + movl gp = 0x0800000000000000 + brl Fore4 + movl gp = 0x1000000000000000 + brl Fore4 + movl gp = 0x2000000000000000 + brl Fore4 + movl gp = 0x4000000000000000 + brl Fore4 + movl gp = 0x8000000000000000 + brl Fore4 + movl gp = 0xffffffffffffffff + brl Fore4 + movl gp = 0x0000000000000000 + brl Fore4 + movl gp = 0xfffffffffffffffe + brl Fore4 + movl gp = 0xfffffffffffffffc + brl Fore4 + movl gp = 0xfffffffffffffff8 + brl Fore4 + movl gp = 0xfffffffffffffff0 + brl Fore4 + movl gp = 0xffffffffffffffe0 + brl Fore4 + movl gp = 0xffffffffffffffc0 + brl Fore4 + movl gp = 0xffffffffffffff80 + brl Fore4 + movl gp = 0xffffffffffffff00 + brl Fore4 + movl gp = 0xfffffffffffffe00 + brl Fore4 + movl gp = 0xfffffffffffffc00 + brl Fore4 + movl gp = 0xfffffffffffff800 + brl Fore4 + movl gp = 0xfffffffffffff000 + brl Fore4 + movl gp = 0xffffffffffffe000 + brl Fore4 + movl gp = 0xffffffffffffc000 + brl Fore4 + movl gp = 0xffffffffffff8000 + brl Fore4 + movl gp = 0xffffffffffff0000 + brl Fore4 + movl gp = 0xfffffffffffe0000 + brl Fore4 + movl gp = 0xfffffffffffc0000 + brl Fore4 + movl gp = 0xfffffffffff80000 + brl Fore4 + movl gp = 0xfffffffffff00000 + brl Fore4 + movl gp = 0xffffffffffe00000 + brl Fore4 + movl gp = 0xffffffffffc00000 + brl Fore4 + movl gp = 0xffffffffff800000 + brl Fore4 + movl gp = 0xffffffffff000000 + brl Fore4 + movl gp = 0xfffffffffe000000 + brl Fore4 + movl gp = 0xfffffffffc000000 + brl Fore4 + movl gp = 0xfffffffff8000000 + brl Fore4 + movl gp = 0xfffffffff0000000 + brl Fore4 + movl gp = 0xffffffffe0000000 + brl Fore4 + movl gp = 0xffffffffc0000000 + brl Fore4 + movl gp = 0xffffffff80000000 + brl Fore4 + movl gp = 0xffffffff00000000 + brl Fore4 + movl gp = 0xfffffffe00000000 + brl Fore4 + movl gp = 0xfffffffc00000000 + brl Fore4 + movl gp = 0xfffffff800000000 + brl Fore4 + movl gp = 0xfffffff000000000 + brl Fore4 + movl gp = 0xffffffe000000000 + brl Fore4 + movl gp = 0xffffffc000000000 + brl Fore4 + movl gp = 0xffffff8000000000 + brl Fore4 + movl gp = 0xffffff0000000000 + brl Fore4 + movl gp = 0xfffffe0000000000 + brl Fore4 + movl gp = 0xfffffc0000000000 + brl Fore4 + movl gp = 0xfffff80000000000 + brl Fore4 + movl gp = 0xfffff00000000000 + brl Fore4 + movl gp = 0xffffe00000000000 + brl Fore4 + movl gp = 0xffffc00000000000 + brl Fore4 + movl gp = 0xffff800000000000 + brl Fore4 + movl gp = 0xffff000000000000 + brl Fore4 + movl gp = 0xfffe000000000000 + brl Fore4 + movl gp = 0xfffc000000000000 + brl Fore4 + movl gp = 0xfff8000000000000 + brl Fore4 + movl gp = 0xfff0000000000000 + brl Fore4 + movl gp = 0xffe0000000000000 + brl Fore4 + movl gp = 0xffc0000000000000 + brl Fore4 + movl gp = 0xff80000000000000 + brl Fore4 + movl gp = 0xff00000000000000 + brl Fore4 + movl gp = 0xfe00000000000000 + brl Fore4 + movl gp = 0xfc00000000000000 + brl Fore4 + movl gp = 0xf800000000000000 + brl Fore4 + movl gp = 0xf000000000000000 + brl Fore4 + movl gp = 0xe000000000000000 + brl Fore4 + movl gp = 0xc000000000000000 + brl Fore4 + movl gp = 0x8000000000000000 + brl Fore4 + movl gp = 0x0000000000000000 + brl Fore4 + movl gp = 0x0000000000000000 + brl Fore4 + brl.sptk.many Fore4 + brl.sptk.many Fore4 + brl.sptk.many Fore4 + brl.sptk.many Fore4 + + movl gp = 0xf0f0f0f0f0f0f0f0 + brl.sptk.many Fore9 +Fore9: + brl.sptk.few Fore8 +Fore8: + brl.sptk.few Fore8 + brl.sptk.few Fore8 + brl.sptk.few Fore8 + data1 0x05,0x00,0x00,0x00,0x01,0x00,0xff,0xff,0xff,0xff,0x7f,0x00,0xf0,0xff,0xff,0xc8 + data1 0x05,0x00,0x00,0x00,0x01,0x00,0xff,0xff,0xff,0xff,0x7f,0x00,0xf0,0xff,0xff,0xc0 + data1 0x05,0x00,0x00,0x00,0x01,0x00,0xff,0xff,0xff,0xff,0x7f,0x00,0xf0,0xff,0xff,0xc8 + data1 0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x25,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x45,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x85,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x08,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x10,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x20,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x40,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x04,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x00,0x01,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data1 0x05,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 + data4 0xffffffff + data4 0xffffffff + data4 0xffffffff + data4 0xffffffff + movl gp = 0xf0f0f0f0f0f0f0f0 + +{ .mii + nop.m 0 + nop.i 0 + nop.i 0 +} +{ .mmi + nop.m 0 + nop.m 0 + nop.i 0 +} +{ .mmb + nop.m 0 + nop.m 0 + nop.b 0 +} +{ .mmf + nop.m 0 + nop.m 0 + nop.f 0 +} +{ .mbb + nop.m 0 + nop.b 0 + nop.b 0 +} + movl gp = 0x0000000000000000 +{ .mlx + flushrs + movl gp = 0x0000000000000000 +} + movl gp = 0x0000000000000000 + .endp Fore3# + + data4 0 + .align 64 + + .proc Fore4# +Fore4: + movl gp = 0x0000000000000000 + brl Fore5 + .endp Fore4# + + data4 0 + .align 64 + + data4 0 + .align 64 + + .proc Fore5# +Fore5: + movl gp = 0xffffffffffffffff + brl Fore6 + .endp Fore5# + + data4 0 + .align 64 + + .proc Fore6# +Fore6: + movl gp = 0x0000000000000000 + brl Fore7 + .endp Fore6# + + data4 0 + .align 64 + + .proc Fore7# +Fore7: + movl gp = 0xffffffffffffffff + brl Fore6 + brl.call.dptk.many b0=Fore6 + br.call.dptk.many b0=Fore6 + br.ret.dpnt.many b0 + br.ret.dptk.many b0 + br.ret.spnt.many b0 + br.ret.sptk.many b0 + .endp Fore7# + + data4 0 + .align 64 + + .proc Call8# +Call8: +{ + alloc r41=ar.pfs, 10, 0, 8, 0 + adds r49=0, r39 + mov r40=rp +} +{ + adds r48=0, r38 + adds r47=0, r37 + adds r46=0, r36 ;; +} +{ + adds r45=0, r35 + adds r44=0, r34 + adds r43=0, r33 +} +{ + movl gp = 0xffffffffffffffff ;; +} +{ + adds r42=0, r32 + brl.call.sptk.few rp=Call8Real ;; +} +Call8Real: +{ + movl gp = 0xffffffffffffffff ;; +} +{ + nop.m 0 + mov rp=r40, +0 ;; + mov.i ar.pfs=r41 +} +{ + nop.m 0 + nop.m 0 + br.ret.sptk.many rp ;; +} + .endp Call8# + + data4 0 + .align 64 + + .proc Pass8# +Pass8: +{ + alloc r41=ar.pfs, 11, 0, 8, 0 + mov r40=rp +} +{ + adds r50=0, r39 + adds r49=0, r38 + adds r48=0, r37 ;; +} +{ + adds r47=0, r36 + adds r46=0, r35 + adds r45=0, r34 +} +{ + adds r44=0, r33 + adds r43=0, r32 + adds r42=0, gp ;; +} +{ + movl gp = 0xffffffffffffffff ;; +} +{ + brl.call.sptk.few rp=Pass8Real ;; +} +Pass8Real: +{ + adds gp=0, r42 + mov rp=r40, +0 ;; + mov.i ar.pfs=r41 +} +{ + nop.m 0 + nop.m 0 + br.ret.sptk.many rp ;; +} + .endp Pass8# + + data4 0 + .align 64 + + .proc Last# +Last: + data4 0xffffffff + data4 0xffffffff + data4 0xffffffff + data4 0xffffffff + .skip 0x1000 + data4 0xffffffff + data4 0xffffffff + data4 0xffffffff + data4 0xffffffff + .endp Last# + +// End |