mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-02-06 13:31:05 +00:00
Renamed multiply.kc to fastmultiply.kc - and methods multiply()/signed_multiply() to mulf8u(), mulf8s()
This commit is contained in:
parent
7900c846c9
commit
a6f32bea13
@ -2,24 +2,24 @@
|
||||
// See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication
|
||||
// Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2
|
||||
|
||||
// mul_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255).
|
||||
// mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255).
|
||||
// <f(x) = <(( x * x )/4)
|
||||
byte[512] align($100) mul_sqr1_lo;
|
||||
byte[512] align($100) mulf_sqr1_lo;
|
||||
// >f(x) = >(( x * x )/4)
|
||||
byte[512] align($100) mul_sqr1_hi;
|
||||
byte[512] align($100) mulf_sqr1_hi;
|
||||
// <g(x) = <((( x - 255) * ( x - 255 ))/4)
|
||||
byte[512] align($100) mul_sqr2_lo;
|
||||
byte[512] align($100) mulf_sqr2_lo;
|
||||
// >g(x) = >((( x - 255) * ( x - 255 ))/4)
|
||||
byte[512] align($100) mul_sqr2_hi;
|
||||
byte[512] align($100) mulf_sqr2_hi;
|
||||
|
||||
// Initialize the mul_sqr multiplication tables with f(x)=int(x*x/4)
|
||||
void init_multiply() {
|
||||
// Fill mul_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4
|
||||
// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4)
|
||||
void mulf_init() {
|
||||
// Fill mulf_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4
|
||||
word sqr = 0; // sqr = (x*x)/4
|
||||
byte x_2 = 0; // x/2
|
||||
byte c = 0; // Counter used for determining x%2==0
|
||||
byte* sqr1_hi = mul_sqr1_hi+1;
|
||||
for(byte* sqr1_lo = mul_sqr1_lo+1; sqr1_lo!=mul_sqr1_lo+512; sqr1_lo++) {
|
||||
byte* sqr1_hi = mulf_sqr1_hi+1;
|
||||
for(byte* sqr1_lo = mulf_sqr1_lo+1; sqr1_lo!=mulf_sqr1_lo+512; sqr1_lo++) {
|
||||
if((++c&1)==0) {
|
||||
x_2++; // increase i/2 on even numbers
|
||||
sqr++; // sqr++ on even numbers because 1 = 2*1/4 (from the two previous numbers) + 1/2 (half of the previous uneven number)
|
||||
@ -28,27 +28,27 @@ void init_multiply() {
|
||||
*sqr1_hi++ = >sqr;
|
||||
sqr = sqr + x_2; // sqr = sqr + i/2 (when uneven the 1/2 is not added here - see above)
|
||||
}
|
||||
// Fill mul_sqr2 = g(x) = f(x-255) : If x-255<0 then g(x)=f(255-x) (because x*x = -x*-x)
|
||||
// Fill mulf_sqr2 = g(x) = f(x-255) : If x-255<0 then g(x)=f(255-x) (because x*x = -x*-x)
|
||||
// g(0) = f(255), g(1) = f(254), ..., g(254) = f(1), g(255) = f(0), g(256) = f(1), ..., g(510) = f(255), g(511) = f(256)
|
||||
byte x_255 = (byte)-1; //Start with g(0)=f(255)
|
||||
byte dir = $ff; // Decrease or increase x_255 - initially we decrease
|
||||
byte* sqr2_hi = mul_sqr2_hi;
|
||||
for(byte* sqr2_lo = mul_sqr2_lo; sqr2_lo!=mul_sqr2_lo+511; sqr2_lo++) {
|
||||
*sqr2_lo = mul_sqr1_lo[x_255];
|
||||
*sqr2_hi++ = mul_sqr1_hi[x_255];
|
||||
byte* sqr2_hi = mulf_sqr2_hi;
|
||||
for(byte* sqr2_lo = mulf_sqr2_lo; sqr2_lo!=mulf_sqr2_lo+511; sqr2_lo++) {
|
||||
*sqr2_lo = mulf_sqr1_lo[x_255];
|
||||
*sqr2_hi++ = mulf_sqr1_hi[x_255];
|
||||
x_255 = x_255 + dir;
|
||||
if(x_255==0) {
|
||||
dir = 1; // when x_255=0 then start counting up
|
||||
}
|
||||
}
|
||||
// Set the very last value g(511) = f(256)
|
||||
*(mul_sqr2_lo+511) = *(mul_sqr1_lo+256);
|
||||
*(mul_sqr2_hi+511) = *(mul_sqr1_hi+256);
|
||||
*(mulf_sqr2_lo+511) = *(mulf_sqr1_lo+256);
|
||||
*(mulf_sqr2_hi+511) = *(mulf_sqr1_hi+256);
|
||||
}
|
||||
|
||||
// Fast multiply two unsigned bytes to a word result
|
||||
// Done in assembler to utilize fast addition A+X
|
||||
word multiply(byte a, byte b) {
|
||||
word mulf8u(byte a, byte b) {
|
||||
const byte* memA = $fe;
|
||||
const byte* memB = $ff;
|
||||
*memA = a;
|
||||
@ -63,14 +63,14 @@ word multiply(byte a, byte b) {
|
||||
ldx memB
|
||||
sec
|
||||
sm1:
|
||||
lda mul_sqr1_lo,x
|
||||
lda mulf_sqr1_lo,x
|
||||
sm2:
|
||||
sbc mul_sqr2_lo,x
|
||||
sbc mulf_sqr2_lo,x
|
||||
sta memA
|
||||
sm3:
|
||||
lda mul_sqr1_hi,x
|
||||
lda mulf_sqr1_hi,x
|
||||
sm4:
|
||||
sbc mul_sqr2_hi,x
|
||||
sbc mulf_sqr2_hi,x
|
||||
sta memB
|
||||
}
|
||||
return { *memB, *memA };
|
||||
@ -78,8 +78,8 @@ word multiply(byte a, byte b) {
|
||||
|
||||
// Fast multiply of two signed bytes to a signed word
|
||||
// Fixes offsets introduced by using unsigned multiplication
|
||||
signed word signed_multiply(signed byte a, signed byte b) {
|
||||
word m = multiply((byte)a, (byte) b);
|
||||
signed word mulf8s(signed byte a, signed byte b) {
|
||||
word m = mulf8u((byte)a, (byte) b);
|
||||
if(a<0) {
|
||||
>m = (>m)-(byte)b;
|
||||
}
|
@ -1,21 +1,22 @@
|
||||
// Test the fast multiplication library
|
||||
import "print.kc"
|
||||
import "multiply.kc"
|
||||
import "fastmultiply.kc"
|
||||
|
||||
byte* BGCOL = $d021;
|
||||
|
||||
void main() {
|
||||
*BGCOL = 5;
|
||||
print_cls();
|
||||
init_multiply();
|
||||
init_multiply_asm();
|
||||
mulf_init();
|
||||
mulf_init_asm();
|
||||
multiply_tables_compare();
|
||||
multiply_results_compare();
|
||||
signed_multiply_results_compare();
|
||||
}
|
||||
|
||||
// Slow multiplication of unsigned bytes
|
||||
// Calculate an unsigned multiplication by repeated addition
|
||||
word slow_multiply(byte a, byte b) {
|
||||
word muls8u(byte a, byte b) {
|
||||
word m = 0;
|
||||
if(a!=0) {
|
||||
for(byte i = 0; i!=a; i++) {
|
||||
@ -25,8 +26,9 @@ word slow_multiply(byte a, byte b) {
|
||||
return m;
|
||||
}
|
||||
|
||||
// Slow multiplication of signed bytes
|
||||
// Perform a signed multiplication by repeated addition/
|
||||
signed word slow_signed_multiply(signed byte a, signed byte b) {
|
||||
signed word muls8s(signed byte a, signed byte b) {
|
||||
signed word m = 0;
|
||||
if(a<0) {
|
||||
for(signed byte i = 0; i!=a; i--) {
|
||||
@ -42,16 +44,16 @@ signed word slow_signed_multiply(signed byte a, signed byte b) {
|
||||
|
||||
// ASM based multiplication tables
|
||||
// <(( x * x )/4)
|
||||
byte[512] align($100) asm_mul_sqr1_lo;
|
||||
byte[512] align($100) mula_sqr1_lo;
|
||||
// >(( x * x )/4)
|
||||
byte[512] align($100) asm_mul_sqr1_hi;
|
||||
byte[512] align($100) mula_sqr1_hi;
|
||||
// <((( x - 255) * ( x - 255 ))/4)
|
||||
byte[512] align($100) asm_mul_sqr2_lo;
|
||||
byte[512] align($100) mula_sqr2_lo;
|
||||
// >((( x - 255) * ( x - 255 ))/4)
|
||||
byte[512] align($100) asm_mul_sqr2_hi;
|
||||
byte[512] align($100) mula_sqr2_hi;
|
||||
// Initialize the multiplication tables using ASM code from
|
||||
// http://codebase64.org/doku.php?id=base:seriously_fast_multiplication
|
||||
void init_multiply_asm() {
|
||||
void mulf_init_asm() {
|
||||
asm{
|
||||
ldx #$00
|
||||
txa
|
||||
@ -60,7 +62,7 @@ void init_multiply_asm() {
|
||||
tya
|
||||
adc #$00
|
||||
ml1:
|
||||
sta asm_mul_sqr1_hi,x
|
||||
sta mula_sqr1_hi,x
|
||||
tay
|
||||
cmp #$40
|
||||
txa
|
||||
@ -70,7 +72,7 @@ void init_multiply_asm() {
|
||||
sta ml9+1
|
||||
inx
|
||||
ml0:
|
||||
sta asm_mul_sqr1_lo,x
|
||||
sta mula_sqr1_lo,x
|
||||
bne lb1
|
||||
inc ml0+2
|
||||
inc ml1+2
|
||||
@ -80,31 +82,31 @@ void init_multiply_asm() {
|
||||
ldx #$00
|
||||
ldy #$ff
|
||||
!:
|
||||
lda asm_mul_sqr1_hi+1,x
|
||||
sta asm_mul_sqr2_hi+$100,x
|
||||
lda asm_mul_sqr1_hi,x
|
||||
sta asm_mul_sqr2_hi,y
|
||||
lda asm_mul_sqr1_lo+1,x
|
||||
sta asm_mul_sqr2_lo+$100,x
|
||||
lda asm_mul_sqr1_lo,x
|
||||
sta asm_mul_sqr2_lo,y
|
||||
lda mula_sqr1_hi+1,x
|
||||
sta mula_sqr2_hi+$100,x
|
||||
lda mula_sqr1_hi,x
|
||||
sta mula_sqr2_hi,y
|
||||
lda mula_sqr1_lo+1,x
|
||||
sta mula_sqr2_lo+$100,x
|
||||
lda mula_sqr1_lo,x
|
||||
sta mula_sqr2_lo,y
|
||||
dey
|
||||
inx
|
||||
bne !-
|
||||
}
|
||||
// Ensure the ASM tables are not detected as unused by the optimizer
|
||||
byte* mem = $ff;
|
||||
*mem = *asm_mul_sqr1_lo;
|
||||
*mem = *asm_mul_sqr1_hi;
|
||||
*mem = *asm_mul_sqr2_lo;
|
||||
*mem = *asm_mul_sqr2_hi;
|
||||
*mem = *mula_sqr1_lo;
|
||||
*mem = *mula_sqr1_hi;
|
||||
*mem = *mula_sqr2_lo;
|
||||
*mem = *mula_sqr2_hi;
|
||||
}
|
||||
|
||||
// Compare the ASM-based mul tables with the KC-based mul tables
|
||||
// Red screen on failure - green on success
|
||||
void multiply_tables_compare() {
|
||||
byte* asm_sqr = asm_mul_sqr1_lo;
|
||||
for( byte* kc_sqr=mul_sqr1_lo; kc_sqr<mul_sqr1_lo+512*4; kc_sqr++) {
|
||||
byte* asm_sqr = mula_sqr1_lo;
|
||||
for( byte* kc_sqr=mulf_sqr1_lo; kc_sqr<mulf_sqr1_lo+512*4; kc_sqr++) {
|
||||
if(*kc_sqr != *asm_sqr) {
|
||||
*BGCOL = 2;
|
||||
print_str("multiply table mismatch at @");
|
||||
@ -123,8 +125,8 @@ void multiply_tables_compare() {
|
||||
void multiply_results_compare() {
|
||||
for(byte a: 0..255) {
|
||||
for(byte b: 0..255) {
|
||||
word ms = slow_multiply(a, b);
|
||||
word ma = multiply(a,b);
|
||||
word ms = muls8u(a, b);
|
||||
word ma = mulf8u(a,b);
|
||||
if(ms!=ma) {
|
||||
*BGCOL = 2;
|
||||
multiply_error(a,b, ms, ma);
|
||||
@ -152,8 +154,8 @@ void multiply_error(byte a, byte b, word ms, word ma) {
|
||||
void signed_multiply_results_compare() {
|
||||
for(signed byte a = -128; a!=-128; a++) {
|
||||
for(signed byte b = -128; b!=-128; b++) {
|
||||
signed word ms = slow_signed_multiply(a, b);
|
||||
signed word ma = signed_multiply(a,b);
|
||||
signed word ms = muls8s(a, b);
|
||||
signed word ma = mulf8s(a,b);
|
||||
if(ms!=ma) {
|
||||
*BGCOL = 2;
|
||||
signed_multiply_error(a,b, ms, ma);
|
||||
|
@ -10,8 +10,8 @@ main: {
|
||||
lda #5
|
||||
sta BGCOL
|
||||
jsr print_cls
|
||||
jsr init_multiply
|
||||
jsr init_multiply_asm
|
||||
jsr mulf_init
|
||||
jsr mulf_init_asm
|
||||
jsr multiply_tables_compare
|
||||
jsr multiply_results_compare
|
||||
jsr signed_multiply_results_compare
|
||||
@ -29,9 +29,9 @@ signed_multiply_results_compare: {
|
||||
sta b
|
||||
b2:
|
||||
ldx b
|
||||
jsr slow_signed_multiply
|
||||
jsr muls8s
|
||||
ldy a
|
||||
jsr signed_multiply
|
||||
jsr mulf8s
|
||||
lda ms
|
||||
cmp ma
|
||||
bne !+
|
||||
@ -221,13 +221,13 @@ print_sbyte: {
|
||||
jsr print_byte
|
||||
rts
|
||||
}
|
||||
signed_multiply: {
|
||||
mulf8s: {
|
||||
.label m = $c
|
||||
.label b = 3
|
||||
.label return = $c
|
||||
tya
|
||||
ldx b
|
||||
jsr multiply
|
||||
jsr mulf8u
|
||||
cpy #0
|
||||
bpl b1
|
||||
lda m+1
|
||||
@ -246,7 +246,7 @@ signed_multiply: {
|
||||
b2:
|
||||
rts
|
||||
}
|
||||
multiply: {
|
||||
mulf8u: {
|
||||
.label memA = $fe
|
||||
.label memB = $ff
|
||||
.label return = $c
|
||||
@ -259,14 +259,14 @@ multiply: {
|
||||
sta sm4+1
|
||||
sec
|
||||
sm1:
|
||||
lda mul_sqr1_lo,x
|
||||
lda mulf_sqr1_lo,x
|
||||
sm2:
|
||||
sbc mul_sqr2_lo,x
|
||||
sbc mulf_sqr2_lo,x
|
||||
sta memA
|
||||
sm3:
|
||||
lda mul_sqr1_hi,x
|
||||
lda mulf_sqr1_hi,x
|
||||
sm4:
|
||||
sbc mul_sqr2_hi,x
|
||||
sbc mulf_sqr2_hi,x
|
||||
sta memB
|
||||
lda memA
|
||||
sta return
|
||||
@ -274,7 +274,7 @@ multiply: {
|
||||
sta return+1
|
||||
rts
|
||||
}
|
||||
slow_signed_multiply: {
|
||||
muls8s: {
|
||||
.label m = 8
|
||||
.label return = 8
|
||||
.label a = 2
|
||||
@ -350,10 +350,10 @@ multiply_results_compare: {
|
||||
sta b
|
||||
b2:
|
||||
ldx b
|
||||
jsr slow_multiply
|
||||
jsr muls8u
|
||||
lda a
|
||||
ldx b
|
||||
jsr multiply
|
||||
jsr mulf8u
|
||||
lda ms
|
||||
cmp ma
|
||||
bne !+
|
||||
@ -423,7 +423,7 @@ multiply_error: {
|
||||
str2: .text " slow:@"
|
||||
str3: .text " / fast asm:@"
|
||||
}
|
||||
slow_multiply: {
|
||||
muls8u: {
|
||||
.label return = 8
|
||||
.label m = 8
|
||||
.label a = 2
|
||||
@ -455,13 +455,13 @@ slow_multiply: {
|
||||
multiply_tables_compare: {
|
||||
.label asm_sqr = 8
|
||||
.label kc_sqr = 4
|
||||
lda #<asm_mul_sqr1_lo
|
||||
lda #<mula_sqr1_lo
|
||||
sta asm_sqr
|
||||
lda #>asm_mul_sqr1_lo
|
||||
lda #>mula_sqr1_lo
|
||||
sta asm_sqr+1
|
||||
lda #<mul_sqr1_lo
|
||||
lda #<mulf_sqr1_lo
|
||||
sta kc_sqr
|
||||
lda #>mul_sqr1_lo
|
||||
lda #>mulf_sqr1_lo
|
||||
sta kc_sqr+1
|
||||
b1:
|
||||
ldy #0
|
||||
@ -506,11 +506,11 @@ multiply_tables_compare: {
|
||||
inc kc_sqr+1
|
||||
!:
|
||||
lda kc_sqr+1
|
||||
cmp #>mul_sqr1_lo+$200*4
|
||||
cmp #>mulf_sqr1_lo+$200*4
|
||||
bcc b1
|
||||
bne !+
|
||||
lda kc_sqr
|
||||
cmp #<mul_sqr1_lo+$200*4
|
||||
cmp #<mulf_sqr1_lo+$200*4
|
||||
bcc b1
|
||||
!:
|
||||
lda #<SCREEN
|
||||
@ -536,7 +536,7 @@ multiply_tables_compare: {
|
||||
str1: .text " / @"
|
||||
str2: .text "multiply tables match!@"
|
||||
}
|
||||
init_multiply_asm: {
|
||||
mulf_init_asm: {
|
||||
.label mem = $ff
|
||||
ldx #0
|
||||
txa
|
||||
@ -545,7 +545,7 @@ init_multiply_asm: {
|
||||
tya
|
||||
adc #0
|
||||
ml1:
|
||||
sta asm_mul_sqr1_hi,x
|
||||
sta mula_sqr1_hi,x
|
||||
tay
|
||||
cmp #$40
|
||||
txa
|
||||
@ -555,7 +555,7 @@ init_multiply_asm: {
|
||||
sta ml9+1
|
||||
inx
|
||||
ml0:
|
||||
sta asm_mul_sqr1_lo,x
|
||||
sta mula_sqr1_lo,x
|
||||
bne lb1
|
||||
inc ml0+2
|
||||
inc ml1+2
|
||||
@ -565,28 +565,28 @@ init_multiply_asm: {
|
||||
ldx #0
|
||||
ldy #$ff
|
||||
!:
|
||||
lda asm_mul_sqr1_hi+1,x
|
||||
sta asm_mul_sqr2_hi+$100,x
|
||||
lda asm_mul_sqr1_hi,x
|
||||
sta asm_mul_sqr2_hi,y
|
||||
lda asm_mul_sqr1_lo+1,x
|
||||
sta asm_mul_sqr2_lo+$100,x
|
||||
lda asm_mul_sqr1_lo,x
|
||||
sta asm_mul_sqr2_lo,y
|
||||
lda mula_sqr1_hi+1,x
|
||||
sta mula_sqr2_hi+$100,x
|
||||
lda mula_sqr1_hi,x
|
||||
sta mula_sqr2_hi,y
|
||||
lda mula_sqr1_lo+1,x
|
||||
sta mula_sqr2_lo+$100,x
|
||||
lda mula_sqr1_lo,x
|
||||
sta mula_sqr2_lo,y
|
||||
dey
|
||||
inx
|
||||
bne !-
|
||||
lda asm_mul_sqr1_lo
|
||||
lda mula_sqr1_lo
|
||||
sta mem
|
||||
lda asm_mul_sqr1_hi
|
||||
lda mula_sqr1_hi
|
||||
sta mem
|
||||
lda asm_mul_sqr2_lo
|
||||
lda mula_sqr2_lo
|
||||
sta mem
|
||||
lda asm_mul_sqr2_hi
|
||||
lda mula_sqr2_hi
|
||||
sta mem
|
||||
rts
|
||||
}
|
||||
init_multiply: {
|
||||
mulf_init: {
|
||||
.label sqr1_hi = 6
|
||||
.label sqr = 8
|
||||
.label sqr1_lo = 4
|
||||
@ -596,13 +596,13 @@ init_multiply: {
|
||||
.label dir = 2
|
||||
lda #0
|
||||
sta x_2
|
||||
lda #<mul_sqr1_hi+1
|
||||
lda #<mulf_sqr1_hi+1
|
||||
sta sqr1_hi
|
||||
lda #>mul_sqr1_hi+1
|
||||
lda #>mulf_sqr1_hi+1
|
||||
sta sqr1_hi+1
|
||||
lda #<mul_sqr1_lo+1
|
||||
lda #<mulf_sqr1_lo+1
|
||||
sta sqr1_lo
|
||||
lda #>mul_sqr1_lo+1
|
||||
lda #>mulf_sqr1_lo+1
|
||||
sta sqr1_lo+1
|
||||
lda #0
|
||||
sta sqr
|
||||
@ -641,27 +641,27 @@ init_multiply: {
|
||||
inc sqr1_lo+1
|
||||
!:
|
||||
lda sqr1_lo+1
|
||||
cmp #>mul_sqr1_lo+$200
|
||||
cmp #>mulf_sqr1_lo+$200
|
||||
bne b1
|
||||
lda sqr1_lo
|
||||
cmp #<mul_sqr1_lo+$200
|
||||
cmp #<mulf_sqr1_lo+$200
|
||||
bne b1
|
||||
lda #$ff
|
||||
sta dir
|
||||
lda #<mul_sqr2_hi
|
||||
lda #<mulf_sqr2_hi
|
||||
sta sqr2_hi
|
||||
lda #>mul_sqr2_hi
|
||||
lda #>mulf_sqr2_hi
|
||||
sta sqr2_hi+1
|
||||
lda #<mul_sqr2_lo
|
||||
lda #<mulf_sqr2_lo
|
||||
sta sqr2_lo
|
||||
lda #>mul_sqr2_lo
|
||||
lda #>mulf_sqr2_lo
|
||||
sta sqr2_lo+1
|
||||
ldx #-1
|
||||
b3:
|
||||
lda mul_sqr1_lo,x
|
||||
lda mulf_sqr1_lo,x
|
||||
ldy #0
|
||||
sta (sqr2_lo),y
|
||||
lda mul_sqr1_hi,x
|
||||
lda mulf_sqr1_hi,x
|
||||
sta (sqr2_hi),y
|
||||
inc sqr2_hi
|
||||
bne !+
|
||||
@ -681,15 +681,15 @@ init_multiply: {
|
||||
inc sqr2_lo+1
|
||||
!:
|
||||
lda sqr2_lo+1
|
||||
cmp #>mul_sqr2_lo+$1ff
|
||||
cmp #>mulf_sqr2_lo+$1ff
|
||||
bne b3
|
||||
lda sqr2_lo
|
||||
cmp #<mul_sqr2_lo+$1ff
|
||||
cmp #<mulf_sqr2_lo+$1ff
|
||||
bne b3
|
||||
lda mul_sqr1_lo+$100
|
||||
sta mul_sqr2_lo+$1ff
|
||||
lda mul_sqr1_hi+$100
|
||||
sta mul_sqr2_hi+$1ff
|
||||
lda mulf_sqr1_lo+$100
|
||||
sta mulf_sqr2_lo+$1ff
|
||||
lda mulf_sqr1_hi+$100
|
||||
sta mulf_sqr2_hi+$1ff
|
||||
rts
|
||||
}
|
||||
print_cls: {
|
||||
@ -715,18 +715,18 @@ print_cls: {
|
||||
rts
|
||||
}
|
||||
.align $100
|
||||
mul_sqr1_lo: .fill $200, 0
|
||||
mulf_sqr1_lo: .fill $200, 0
|
||||
.align $100
|
||||
mul_sqr1_hi: .fill $200, 0
|
||||
mulf_sqr1_hi: .fill $200, 0
|
||||
.align $100
|
||||
mul_sqr2_lo: .fill $200, 0
|
||||
mulf_sqr2_lo: .fill $200, 0
|
||||
.align $100
|
||||
mul_sqr2_hi: .fill $200, 0
|
||||
mulf_sqr2_hi: .fill $200, 0
|
||||
.align $100
|
||||
asm_mul_sqr1_lo: .fill $200, 0
|
||||
mula_sqr1_lo: .fill $200, 0
|
||||
.align $100
|
||||
asm_mul_sqr1_hi: .fill $200, 0
|
||||
mula_sqr1_hi: .fill $200, 0
|
||||
.align $100
|
||||
asm_mul_sqr2_lo: .fill $200, 0
|
||||
mula_sqr2_lo: .fill $200, 0
|
||||
.align $100
|
||||
asm_mul_sqr2_hi: .fill $200, 0
|
||||
mula_sqr2_hi: .fill $200, 0
|
||||
|
@ -13,11 +13,11 @@ main: scope:[main] from @20
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
[6] phi() [ ] ( main:2 [ ] )
|
||||
[7] call init_multiply param-assignment [ ] ( main:2 [ ] )
|
||||
[7] call mulf_init param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
[8] phi() [ ] ( main:2 [ ] )
|
||||
[9] call init_multiply_asm param-assignment [ ] ( main:2 [ ] )
|
||||
[9] call mulf_init_asm param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
[10] phi() [ ] ( main:2 [ ] )
|
||||
@ -42,20 +42,20 @@ signed_multiply_results_compare::@1: scope:[signed_multiply_results_compare] fr
|
||||
to:signed_multiply_results_compare::@2
|
||||
signed_multiply_results_compare::@2: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@1 signed_multiply_results_compare::@3
|
||||
[19] (signed byte) signed_multiply_results_compare::b#2 ← phi( signed_multiply_results_compare::@1/-(byte/word/signed word/dword/signed dword) 128 signed_multiply_results_compare::@3/(signed byte) signed_multiply_results_compare::b#1 ) [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 ] )
|
||||
[20] (signed byte) slow_signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 line_cursor#1 ] )
|
||||
[21] (signed byte) slow_signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 slow_signed_multiply::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::a#0 slow_signed_multiply::b#0 line_cursor#1 ] )
|
||||
[22] call slow_signed_multiply param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#0 line_cursor#1 ] )
|
||||
[23] (signed word) slow_signed_multiply::return#2 ← (signed word) slow_signed_multiply::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 slow_signed_multiply::return#2 line_cursor#1 ] )
|
||||
[20] (signed byte) muls8s::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 line_cursor#1 ] )
|
||||
[21] (signed byte) muls8s::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 muls8s::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 muls8s::b#0 line_cursor#1 ] )
|
||||
[22] call muls8s param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#0 line_cursor#1 ] )
|
||||
[23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#2 line_cursor#1 ] )
|
||||
to:signed_multiply_results_compare::@8
|
||||
signed_multiply_results_compare::@8: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@2
|
||||
[24] (signed word) signed_multiply_results_compare::ms#0 ← (signed word) slow_signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] )
|
||||
[25] (signed byte) signed_multiply::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 line_cursor#1 ] )
|
||||
[26] (signed byte) signed_multiply::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 signed_multiply::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::a#0 signed_multiply::b#0 line_cursor#1 ] )
|
||||
[27] call signed_multiply param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::m#4 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::m#4 line_cursor#1 ] )
|
||||
[28] (signed word) signed_multiply::return#2 ← (signed word)(word) signed_multiply::m#4 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply::return#2 line_cursor#1 ] )
|
||||
[24] (signed word) signed_multiply_results_compare::ms#0 ← (signed word) muls8s::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 ] )
|
||||
[25] (signed byte) mulf8s::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::a#0 line_cursor#1 ] )
|
||||
[26] (signed byte) mulf8s::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::a#0 mulf8s::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::a#0 mulf8s::b#0 line_cursor#1 ] )
|
||||
[27] call mulf8s param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::m#4 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::m#4 line_cursor#1 ] )
|
||||
[28] (signed word) mulf8s::return#2 ← (signed word)(word) mulf8s::m#4 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::return#2 line_cursor#1 ] )
|
||||
to:signed_multiply_results_compare::@9
|
||||
signed_multiply_results_compare::@9: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@8
|
||||
[29] (signed word) signed_multiply_results_compare::ma#0 ← (signed word) signed_multiply::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] )
|
||||
[29] (signed word) signed_multiply_results_compare::ma#0 ← (signed word) mulf8s::return#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] )
|
||||
[30] if((signed word) signed_multiply_results_compare::ms#0==(signed word) signed_multiply_results_compare::ma#0) goto signed_multiply_results_compare::@3 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 signed_multiply_results_compare::ma#0 line_cursor#1 ] )
|
||||
to:signed_multiply_results_compare::@4
|
||||
signed_multiply_results_compare::@4: scope:[signed_multiply_results_compare] from signed_multiply_results_compare::@9
|
||||
@ -230,73 +230,73 @@ print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@4
|
||||
print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1
|
||||
[112] return [ char_cursor#17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:61 [ signed_multiply_error::b#0 signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sbyte:65 [ signed_multiply_error::ms#0 signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 ] )
|
||||
to:@return
|
||||
signed_multiply: scope:[signed_multiply] from signed_multiply_results_compare::@8
|
||||
[113] (byte~) multiply::a#4 ← (byte)(signed byte) signed_multiply::a#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#4 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#4 ] )
|
||||
[114] (byte~) multiply::b#4 ← (byte)(signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#4 multiply::b#4 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#4 multiply::b#4 ] )
|
||||
[115] call multiply param-assignment [ signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] )
|
||||
[116] (word) multiply::return#2 ← (word) multiply::return#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::return#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#2 ] )
|
||||
to:signed_multiply::@6
|
||||
signed_multiply::@6: scope:[signed_multiply] from signed_multiply
|
||||
[117] (word) signed_multiply::m#0 ← (word) multiply::return#2 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] )
|
||||
[118] if((signed byte) signed_multiply::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto signed_multiply::@1 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 ] )
|
||||
to:signed_multiply::@3
|
||||
signed_multiply::@3: scope:[signed_multiply] from signed_multiply::@6
|
||||
[119] (byte~) signed_multiply::$6 ← > (word) signed_multiply::m#0 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$6 ] )
|
||||
[120] (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$16 ← (byte~) signed_multiply::$6 - (byte)(signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$16 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#0 signed_multiply::$16 ] )
|
||||
[121] (word) signed_multiply::m#1 ← (word) signed_multiply::m#0 hi= (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$16 [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#1 ] )
|
||||
to:signed_multiply::@1
|
||||
signed_multiply::@1: scope:[signed_multiply] from signed_multiply::@3 signed_multiply::@6
|
||||
[122] (word) signed_multiply::m#5 ← phi( signed_multiply::@3/(word) signed_multiply::m#1 signed_multiply::@6/(word) signed_multiply::m#0 ) [ signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 signed_multiply::m#5 ] )
|
||||
[123] if((signed byte) signed_multiply::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto signed_multiply::@2 [ signed_multiply::a#0 signed_multiply::m#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::m#5 ] )
|
||||
to:signed_multiply::@4
|
||||
signed_multiply::@4: scope:[signed_multiply] from signed_multiply::@1
|
||||
[124] (byte~) signed_multiply::$12 ← > (word) signed_multiply::m#5 [ signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::m#5 signed_multiply::$12 ] )
|
||||
[125] (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte)(signed byte) signed_multiply::a#0 [ signed_multiply::m#5 signed_multiply::$17 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#5 signed_multiply::$17 ] )
|
||||
[126] (word) signed_multiply::m#2 ← (word) signed_multiply::m#5 hi= (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$17 [ signed_multiply::m#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#2 ] )
|
||||
to:signed_multiply::@2
|
||||
signed_multiply::@2: scope:[signed_multiply] from signed_multiply::@1 signed_multiply::@4
|
||||
[127] (word) signed_multiply::m#4 ← phi( signed_multiply::@1/(word) signed_multiply::m#5 signed_multiply::@4/(word) signed_multiply::m#2 ) [ signed_multiply::m#4 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#4 ] )
|
||||
to:signed_multiply::@return
|
||||
signed_multiply::@return: scope:[signed_multiply] from signed_multiply::@2
|
||||
[128] return [ signed_multiply::m#4 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::m#4 ] )
|
||||
mulf8s: scope:[mulf8s] from signed_multiply_results_compare::@8
|
||||
[113] (byte~) mulf8u::a#3 ← (byte)(signed byte) mulf8s::a#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 ] )
|
||||
[114] (byte~) mulf8u::b#3 ← (byte)(signed byte) mulf8s::b#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 mulf8u::b#3 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 mulf8u::b#3 ] )
|
||||
[115] call mulf8u param-assignment [ mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] )
|
||||
[116] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::return#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#2 ] )
|
||||
to:mulf8s::@6
|
||||
mulf8s::@6: scope:[mulf8s] from mulf8s
|
||||
[117] (word) mulf8s::m#0 ← (word) mulf8u::return#2 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] )
|
||||
[118] if((signed byte) mulf8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s::@1 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] )
|
||||
to:mulf8s::@3
|
||||
mulf8s::@3: scope:[mulf8s] from mulf8s::@6
|
||||
[119] (byte~) mulf8s::$6 ← > (word) mulf8s::m#0 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$6 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$6 ] )
|
||||
[120] (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 ← (byte~) mulf8s::$6 - (byte)(signed byte) mulf8s::b#0 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$16 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$16 ] )
|
||||
[121] (word) mulf8s::m#1 ← (word) mulf8s::m#0 hi= (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#1 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#1 ] )
|
||||
to:mulf8s::@1
|
||||
mulf8s::@1: scope:[mulf8s] from mulf8s::@3 mulf8s::@6
|
||||
[122] (word) mulf8s::m#5 ← phi( mulf8s::@3/(word) mulf8s::m#1 mulf8s::@6/(word) mulf8s::m#0 ) [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#5 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#5 ] )
|
||||
[123] if((signed byte) mulf8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s::@2 [ mulf8s::a#0 mulf8s::m#5 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::m#5 ] )
|
||||
to:mulf8s::@4
|
||||
mulf8s::@4: scope:[mulf8s] from mulf8s::@1
|
||||
[124] (byte~) mulf8s::$12 ← > (word) mulf8s::m#5 [ mulf8s::a#0 mulf8s::m#5 mulf8s::$12 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::m#5 mulf8s::$12 ] )
|
||||
[125] (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 ← (byte~) mulf8s::$12 - (byte)(signed byte) mulf8s::a#0 [ mulf8s::m#5 mulf8s::$17 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#5 mulf8s::$17 ] )
|
||||
[126] (word) mulf8s::m#2 ← (word) mulf8s::m#5 hi= (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 [ mulf8s::m#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#2 ] )
|
||||
to:mulf8s::@2
|
||||
mulf8s::@2: scope:[mulf8s] from mulf8s::@1 mulf8s::@4
|
||||
[127] (word) mulf8s::m#4 ← phi( mulf8s::@1/(word) mulf8s::m#5 mulf8s::@4/(word) mulf8s::m#2 ) [ mulf8s::m#4 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#4 ] )
|
||||
to:mulf8s::@return
|
||||
mulf8s::@return: scope:[mulf8s] from mulf8s::@2
|
||||
[128] return [ mulf8s::m#4 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#4 ] )
|
||||
to:@return
|
||||
multiply: scope:[multiply] from multiply_results_compare::@8 signed_multiply
|
||||
[129] (byte) multiply::b#2 ← phi( multiply_results_compare::@8/(byte) multiply::b#1 signed_multiply/(byte~) multiply::b#4 ) [ multiply::a#2 multiply::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#2 multiply::b#2 ] main:2::multiply_results_compare:13::multiply:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#2 multiply::b#2 ] )
|
||||
[129] (byte) multiply::a#2 ← phi( multiply_results_compare::@8/(byte) multiply::a#1 signed_multiply/(byte~) multiply::a#4 ) [ multiply::a#2 multiply::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::a#2 multiply::b#2 ] main:2::multiply_results_compare:13::multiply:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#2 multiply::b#2 ] )
|
||||
[130] *((const byte*) multiply::memA#0) ← (byte) multiply::a#2 [ multiply::b#2 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::b#2 ] main:2::multiply_results_compare:13::multiply:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::b#2 ] )
|
||||
[131] *((const byte*) multiply::memB#0) ← (byte) multiply::b#2 [ ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 ] main:2::multiply_results_compare:13::multiply:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] )
|
||||
asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamul_sqr1_lo,x sm2: sbcmul_sqr2_lo,x stamemA sm3: ldamul_sqr1_hi,x sm4: sbcmul_sqr2_hi,x stamemB }
|
||||
[133] (word) multiply::return#0 ← *((const byte*) multiply::memB#0) w= *((const byte*) multiply::memA#0) [ multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] main:2::multiply_results_compare:13::multiply:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] )
|
||||
to:multiply::@return
|
||||
multiply::@return: scope:[multiply] from multiply
|
||||
[134] return [ multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::signed_multiply:27::multiply:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 signed_multiply::a#0 signed_multiply::b#0 multiply::return#0 ] main:2::multiply_results_compare:13::multiply:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] )
|
||||
mulf8u: scope:[mulf8u] from mulf8s multiply_results_compare::@8
|
||||
[129] (byte) mulf8u::b#2 ← phi( mulf8s/(byte~) mulf8u::b#3 multiply_results_compare::@8/(byte) mulf8u::b#1 ) [ mulf8u::a#2 mulf8u::b#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#2 mulf8u::b#2 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::a#2 mulf8u::b#2 ] )
|
||||
[129] (byte) mulf8u::a#2 ← phi( mulf8s/(byte~) mulf8u::a#3 multiply_results_compare::@8/(byte) mulf8u::a#1 ) [ mulf8u::a#2 mulf8u::b#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#2 mulf8u::b#2 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::a#2 mulf8u::b#2 ] )
|
||||
[130] *((const byte*) mulf8u::memA#0) ← (byte) mulf8u::a#2 [ mulf8u::b#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::b#2 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::b#2 ] )
|
||||
[131] *((const byte*) mulf8u::memB#0) ← (byte) mulf8u::b#2 [ ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] )
|
||||
asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x stamemA sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB }
|
||||
[133] (word) mulf8u::return#0 ← *((const byte*) mulf8u::memB#0) w= *((const byte*) mulf8u::memA#0) [ mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#0 ] )
|
||||
to:mulf8u::@return
|
||||
mulf8u::@return: scope:[mulf8u] from mulf8u
|
||||
[134] return [ mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#0 ] )
|
||||
to:@return
|
||||
slow_signed_multiply: scope:[slow_signed_multiply] from signed_multiply_results_compare::@2
|
||||
[135] if((signed byte) slow_signed_multiply::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto slow_signed_multiply::@1 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] )
|
||||
to:slow_signed_multiply::@2
|
||||
slow_signed_multiply::@2: scope:[slow_signed_multiply] from slow_signed_multiply slow_signed_multiply::@2
|
||||
[136] (signed byte) slow_signed_multiply::i#2 ← phi( slow_signed_multiply::@2/(signed byte) slow_signed_multiply::i#1 slow_signed_multiply/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#3 slow_signed_multiply::i#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#3 slow_signed_multiply::i#2 ] )
|
||||
[136] (signed word) slow_signed_multiply::m#3 ← phi( slow_signed_multiply::@2/(signed word) slow_signed_multiply::m#1 slow_signed_multiply/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#3 slow_signed_multiply::i#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#3 slow_signed_multiply::i#2 ] )
|
||||
[137] (signed word) slow_signed_multiply::m#1 ← (signed word) slow_signed_multiply::m#3 - (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::i#2 slow_signed_multiply::m#1 ] )
|
||||
[138] (signed byte) slow_signed_multiply::i#1 ← -- (signed byte) slow_signed_multiply::i#2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] )
|
||||
[139] if((signed byte) slow_signed_multiply::i#1!=(signed byte) slow_signed_multiply::a#0) goto slow_signed_multiply::@2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#1 slow_signed_multiply::i#1 ] )
|
||||
to:slow_signed_multiply::@3
|
||||
slow_signed_multiply::@3: scope:[slow_signed_multiply] from slow_signed_multiply::@1 slow_signed_multiply::@2 slow_signed_multiply::@5
|
||||
[140] (signed word) slow_signed_multiply::return#0 ← phi( slow_signed_multiply::@2/(signed word) slow_signed_multiply::m#1 slow_signed_multiply::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 slow_signed_multiply::@5/(signed word) slow_signed_multiply::m#2 ) [ slow_signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::return#0 ] )
|
||||
to:slow_signed_multiply::@return
|
||||
slow_signed_multiply::@return: scope:[slow_signed_multiply] from slow_signed_multiply::@3
|
||||
[141] return [ slow_signed_multiply::return#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::return#0 ] )
|
||||
muls8s: scope:[muls8s] from signed_multiply_results_compare::@2
|
||||
[135] if((signed byte) muls8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@1 [ muls8s::a#0 muls8s::b#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 ] )
|
||||
to:muls8s::@2
|
||||
muls8s::@2: scope:[muls8s] from muls8s muls8s::@2
|
||||
[136] (signed byte) muls8s::i#2 ← phi( muls8s::@2/(signed byte) muls8s::i#1 muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8s::a#0 muls8s::b#0 muls8s::m#3 muls8s::i#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#3 muls8s::i#2 ] )
|
||||
[136] (signed word) muls8s::m#3 ← phi( muls8s::@2/(signed word) muls8s::m#1 muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8s::a#0 muls8s::b#0 muls8s::m#3 muls8s::i#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#3 muls8s::i#2 ] )
|
||||
[137] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#1 ] )
|
||||
[138] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 [ muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] )
|
||||
[139] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@2 [ muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] )
|
||||
to:muls8s::@3
|
||||
muls8s::@3: scope:[muls8s] from muls8s::@1 muls8s::@2 muls8s::@5
|
||||
[140] (signed word) muls8s::return#0 ← phi( muls8s::@2/(signed word) muls8s::m#1 muls8s::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed word) muls8s::m#2 ) [ muls8s::return#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::return#0 ] )
|
||||
to:muls8s::@return
|
||||
muls8s::@return: scope:[muls8s] from muls8s::@3
|
||||
[141] return [ muls8s::return#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::return#0 ] )
|
||||
to:@return
|
||||
slow_signed_multiply::@1: scope:[slow_signed_multiply] from slow_signed_multiply
|
||||
[142] if((signed byte) slow_signed_multiply::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto slow_signed_multiply::@3 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 ] )
|
||||
to:slow_signed_multiply::@5
|
||||
slow_signed_multiply::@5: scope:[slow_signed_multiply] from slow_signed_multiply::@1 slow_signed_multiply::@5
|
||||
[143] (signed byte) slow_signed_multiply::j#2 ← phi( slow_signed_multiply::@5/(signed byte) slow_signed_multiply::j#1 slow_signed_multiply::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#5 slow_signed_multiply::j#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#5 slow_signed_multiply::j#2 ] )
|
||||
[143] (signed word) slow_signed_multiply::m#5 ← phi( slow_signed_multiply::@5/(signed word) slow_signed_multiply::m#2 slow_signed_multiply::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#5 slow_signed_multiply::j#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#5 slow_signed_multiply::j#2 ] )
|
||||
[144] (signed word) slow_signed_multiply::m#2 ← (signed word) slow_signed_multiply::m#5 + (signed byte) slow_signed_multiply::b#0 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#2 ] )
|
||||
[145] (signed byte) slow_signed_multiply::j#1 ← ++ (signed byte) slow_signed_multiply::j#2 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] )
|
||||
[146] if((signed byte) slow_signed_multiply::j#1!=(signed byte) slow_signed_multiply::a#0) goto slow_signed_multiply::@5 [ slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] ( main:2::signed_multiply_results_compare:15::slow_signed_multiply:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 slow_signed_multiply::a#0 slow_signed_multiply::b#0 slow_signed_multiply::m#2 slow_signed_multiply::j#1 ] )
|
||||
to:slow_signed_multiply::@3
|
||||
muls8s::@1: scope:[muls8s] from muls8s
|
||||
[142] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@3 [ muls8s::a#0 muls8s::b#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 ] )
|
||||
to:muls8s::@5
|
||||
muls8s::@5: scope:[muls8s] from muls8s::@1 muls8s::@5
|
||||
[143] (signed byte) muls8s::j#2 ← phi( muls8s::@5/(signed byte) muls8s::j#1 muls8s::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8s::a#0 muls8s::b#0 muls8s::m#5 muls8s::j#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#5 muls8s::j#2 ] )
|
||||
[143] (signed word) muls8s::m#5 ← phi( muls8s::@5/(signed word) muls8s::m#2 muls8s::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8s::a#0 muls8s::b#0 muls8s::m#5 muls8s::j#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#5 muls8s::j#2 ] )
|
||||
[144] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#2 ] )
|
||||
[145] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] )
|
||||
[146] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@5 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] )
|
||||
to:muls8s::@3
|
||||
multiply_results_compare: scope:[multiply_results_compare] from main::@4
|
||||
[147] phi() [ line_cursor#10 char_cursor#30 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 ] )
|
||||
to:multiply_results_compare::@1
|
||||
@ -305,20 +305,20 @@ multiply_results_compare::@1: scope:[multiply_results_compare] from multiply_re
|
||||
to:multiply_results_compare::@2
|
||||
multiply_results_compare::@2: scope:[multiply_results_compare] from multiply_results_compare::@1 multiply_results_compare::@3
|
||||
[149] (byte) multiply_results_compare::b#2 ← phi( multiply_results_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 multiply_results_compare::@3/(byte) multiply_results_compare::b#1 ) [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 ] )
|
||||
[150] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] )
|
||||
[151] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] )
|
||||
[152] call slow_multiply param-assignment [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] )
|
||||
[153] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] )
|
||||
[150] (byte) muls8u::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 ] )
|
||||
[151] (byte) muls8u::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] )
|
||||
[152] call muls8u param-assignment [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] )
|
||||
[153] (word) muls8u::return#2 ← (word) muls8u::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#2 ] )
|
||||
to:multiply_results_compare::@8
|
||||
multiply_results_compare::@8: scope:[multiply_results_compare] from multiply_results_compare::@2
|
||||
[154] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] )
|
||||
[155] (byte) multiply::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] )
|
||||
[156] (byte) multiply::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] )
|
||||
[157] call multiply param-assignment [ line_cursor#10 char_cursor#30 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] )
|
||||
[158] (word) multiply::return#3 ← (word) multiply::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] )
|
||||
[154] (word) multiply_results_compare::ms#0 ← (word) muls8u::return#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] )
|
||||
[155] (byte) mulf8u::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 mulf8u::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 mulf8u::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] )
|
||||
[156] (byte) mulf8u::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 mulf8u::a#1 mulf8u::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 mulf8u::a#1 mulf8u::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] )
|
||||
[157] call mulf8u param-assignment [ line_cursor#10 char_cursor#30 mulf8u::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 mulf8u::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] )
|
||||
[158] (word) mulf8u::return#3 ← (word) mulf8u::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#3 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#3 ] )
|
||||
to:multiply_results_compare::@9
|
||||
multiply_results_compare::@9: scope:[multiply_results_compare] from multiply_results_compare::@8
|
||||
[159] (word) multiply_results_compare::ma#0 ← (word) multiply::return#3 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] )
|
||||
[159] (word) multiply_results_compare::ma#0 ← (word) mulf8u::return#3 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] )
|
||||
[160] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] )
|
||||
to:multiply_results_compare::@4
|
||||
multiply_results_compare::@4: scope:[multiply_results_compare] from multiply_results_compare::@9
|
||||
@ -387,28 +387,28 @@ multiply_error::@8: scope:[multiply_error] from multiply_error::@7
|
||||
multiply_error::@return: scope:[multiply_error] from multiply_error::@8
|
||||
[194] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13::multiply_error:166 [ line_cursor#1 ] )
|
||||
to:@return
|
||||
slow_multiply: scope:[slow_multiply] from multiply_results_compare::@2
|
||||
[195] if((byte) slow_multiply::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] )
|
||||
to:slow_multiply::@2
|
||||
slow_multiply::@2: scope:[slow_multiply] from slow_multiply slow_multiply::@2
|
||||
[196] (byte) slow_multiply::i#2 ← phi( slow_multiply::@2/(byte) slow_multiply::i#1 slow_multiply/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] )
|
||||
[196] (word) slow_multiply::m#3 ← phi( slow_multiply::@2/(word) slow_multiply::m#1 slow_multiply/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] )
|
||||
[197] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] )
|
||||
[198] (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] )
|
||||
[199] if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] )
|
||||
to:slow_multiply::@1
|
||||
slow_multiply::@1: scope:[slow_multiply] from slow_multiply slow_multiply::@2
|
||||
[200] (word) slow_multiply::return#0 ← phi( slow_multiply/(byte/signed byte/word/signed word/dword/signed dword) 0 slow_multiply::@2/(word) slow_multiply::m#1 ) [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] )
|
||||
to:slow_multiply::@return
|
||||
slow_multiply::@return: scope:[slow_multiply] from slow_multiply::@1
|
||||
[201] return [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] )
|
||||
muls8u: scope:[muls8u] from multiply_results_compare::@2
|
||||
[195] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 [ muls8u::a#0 muls8u::b#0 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] )
|
||||
to:muls8u::@2
|
||||
muls8u::@2: scope:[muls8u] from muls8u muls8u::@2
|
||||
[196] (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8u::a#0 muls8u::b#0 muls8u::m#3 muls8u::i#2 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#3 muls8u::i#2 ] )
|
||||
[196] (word) muls8u::m#3 ← phi( muls8u::@2/(word) muls8u::m#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8u::a#0 muls8u::b#0 muls8u::m#3 muls8u::i#2 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#3 muls8u::i#2 ] )
|
||||
[197] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] )
|
||||
[198] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 [ muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] )
|
||||
[199] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 [ muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] )
|
||||
to:muls8u::@1
|
||||
muls8u::@1: scope:[muls8u] from muls8u muls8u::@2
|
||||
[200] (word) muls8u::return#0 ← phi( muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8u::@2/(word) muls8u::m#1 ) [ muls8u::return#0 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] )
|
||||
to:muls8u::@return
|
||||
muls8u::@return: scope:[muls8u] from muls8u::@1
|
||||
[201] return [ muls8u::return#0 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] )
|
||||
to:@return
|
||||
multiply_tables_compare: scope:[multiply_tables_compare] from main::@3
|
||||
[202] phi() [ ] ( main:2::multiply_tables_compare:11 [ ] )
|
||||
to:multiply_tables_compare::@1
|
||||
multiply_tables_compare::@1: scope:[multiply_tables_compare] from multiply_tables_compare multiply_tables_compare::@2
|
||||
[203] (byte*) multiply_tables_compare::asm_sqr#2 ← phi( multiply_tables_compare/(const byte[512]) asm_mul_sqr1_lo#0 multiply_tables_compare::@2/(byte*) multiply_tables_compare::asm_sqr#1 ) [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] )
|
||||
[203] (byte*) multiply_tables_compare::kc_sqr#2 ← phi( multiply_tables_compare/(const byte[512]) mul_sqr1_lo#0 multiply_tables_compare::@2/(byte*) multiply_tables_compare::kc_sqr#1 ) [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] )
|
||||
[203] (byte*) multiply_tables_compare::asm_sqr#2 ← phi( multiply_tables_compare/(const byte[512]) mula_sqr1_lo#0 multiply_tables_compare::@2/(byte*) multiply_tables_compare::asm_sqr#1 ) [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] )
|
||||
[203] (byte*) multiply_tables_compare::kc_sqr#2 ← phi( multiply_tables_compare/(const byte[512]) mulf_sqr1_lo#0 multiply_tables_compare::@2/(byte*) multiply_tables_compare::kc_sqr#1 ) [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] )
|
||||
[204] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] )
|
||||
to:multiply_tables_compare::@3
|
||||
multiply_tables_compare::@3: scope:[multiply_tables_compare] from multiply_tables_compare::@1
|
||||
@ -435,7 +435,7 @@ multiply_tables_compare::@return: scope:[multiply_tables_compare] from multiply
|
||||
multiply_tables_compare::@2: scope:[multiply_tables_compare] from multiply_tables_compare::@1
|
||||
[215] (byte*) multiply_tables_compare::asm_sqr#1 ← ++ (byte*) multiply_tables_compare::asm_sqr#2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#1 ] )
|
||||
[216] (byte*) multiply_tables_compare::kc_sqr#1 ← ++ (byte*) multiply_tables_compare::kc_sqr#2 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] )
|
||||
[217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] )
|
||||
[217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] )
|
||||
to:multiply_tables_compare::@5
|
||||
multiply_tables_compare::@5: scope:[multiply_tables_compare] from multiply_tables_compare::@2
|
||||
[218] phi() [ ] ( main:2::multiply_tables_compare:11 [ ] )
|
||||
@ -446,71 +446,71 @@ multiply_tables_compare::@10: scope:[multiply_tables_compare] from multiply_tab
|
||||
[221] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 ] )
|
||||
[222] (byte*~) char_cursor#201 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#201 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#201 ] )
|
||||
to:multiply_tables_compare::@return
|
||||
init_multiply_asm: scope:[init_multiply_asm] from main::@2
|
||||
asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- }
|
||||
[224] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] )
|
||||
[225] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] )
|
||||
[226] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] )
|
||||
[227] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] )
|
||||
to:init_multiply_asm::@return
|
||||
init_multiply_asm::@return: scope:[init_multiply_asm] from init_multiply_asm
|
||||
[228] return [ ] ( main:2::init_multiply_asm:9 [ ] )
|
||||
mulf_init_asm: scope:[mulf_init_asm] from main::@2
|
||||
asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- }
|
||||
[224] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] )
|
||||
[225] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] )
|
||||
[226] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] )
|
||||
[227] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] )
|
||||
to:mulf_init_asm::@return
|
||||
mulf_init_asm::@return: scope:[mulf_init_asm] from mulf_init_asm
|
||||
[228] return [ ] ( main:2::mulf_init_asm:9 [ ] )
|
||||
to:@return
|
||||
init_multiply: scope:[init_multiply] from main::@1
|
||||
[229] phi() [ ] ( main:2::init_multiply:7 [ ] )
|
||||
to:init_multiply::@1
|
||||
init_multiply::@1: scope:[init_multiply] from init_multiply init_multiply::@2
|
||||
[230] (byte) init_multiply::x_2#3 ← phi( init_multiply/(byte/signed byte/word/signed word/dword/signed dword) 0 init_multiply::@2/(byte) init_multiply::x_2#2 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] )
|
||||
[230] (byte*) init_multiply::sqr1_hi#2 ← phi( init_multiply/(const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 init_multiply::@2/(byte*) init_multiply::sqr1_hi#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] )
|
||||
[230] (byte*) init_multiply::sqr1_lo#2 ← phi( init_multiply/(const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 init_multiply::@2/(byte*) init_multiply::sqr1_lo#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] )
|
||||
[230] (word) init_multiply::sqr#4 ← phi( init_multiply/(byte/signed byte/word/signed word/dword/signed dword) 0 init_multiply::@2/(word) init_multiply::sqr#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] )
|
||||
[230] (byte) init_multiply::c#2 ← phi( init_multiply/(byte/signed byte/word/signed word/dword/signed dword) 0 init_multiply::@2/(byte) init_multiply::c#1 ) [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] ( main:2::init_multiply:7 [ init_multiply::c#2 init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 ] )
|
||||
[231] (byte) init_multiply::c#1 ← ++ (byte) init_multiply::c#2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] )
|
||||
[232] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 init_multiply::$2 ] )
|
||||
[233] if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_multiply::@2 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::x_2#3 init_multiply::c#1 ] )
|
||||
to:init_multiply::@5
|
||||
init_multiply::@5: scope:[init_multiply] from init_multiply::@1
|
||||
[234] (byte) init_multiply::x_2#1 ← ++ (byte) init_multiply::x_2#3 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr#4 init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 ] )
|
||||
[235] (word) init_multiply::sqr#2 ← ++ (word) init_multiply::sqr#4 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#1 init_multiply::sqr#2 ] )
|
||||
to:init_multiply::@2
|
||||
init_multiply::@2: scope:[init_multiply] from init_multiply::@1 init_multiply::@5
|
||||
[236] (byte) init_multiply::x_2#2 ← phi( init_multiply::@1/(byte) init_multiply::x_2#3 init_multiply::@5/(byte) init_multiply::x_2#1 ) [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] )
|
||||
[236] (word) init_multiply::sqr#3 ← phi( init_multiply::@1/(word) init_multiply::sqr#4 init_multiply::@5/(word) init_multiply::sqr#2 ) [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] )
|
||||
[237] (byte~) init_multiply::$5 ← < (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$5 ] )
|
||||
[238] *((byte*) init_multiply::sqr1_lo#2) ← (byte~) init_multiply::$5 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] )
|
||||
[239] (byte~) init_multiply::$6 ← > (word) init_multiply::sqr#3 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 init_multiply::$6 ] )
|
||||
[240] *((byte*) init_multiply::sqr1_hi#2) ← (byte~) init_multiply::$6 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_hi#2 init_multiply::c#1 init_multiply::x_2#2 init_multiply::sqr#3 ] )
|
||||
[241] (byte*) init_multiply::sqr1_hi#1 ← ++ (byte*) init_multiply::sqr1_hi#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 init_multiply::sqr#3 ] )
|
||||
[242] (word) init_multiply::sqr#1 ← (word) init_multiply::sqr#3 + (byte) init_multiply::x_2#2 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::sqr1_lo#2 init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] )
|
||||
[243] (byte*) init_multiply::sqr1_lo#1 ← ++ (byte*) init_multiply::sqr1_lo#2 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] )
|
||||
[244] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto init_multiply::@1 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] ( main:2::init_multiply:7 [ init_multiply::c#1 init_multiply::sqr#1 init_multiply::sqr1_lo#1 init_multiply::sqr1_hi#1 init_multiply::x_2#2 ] )
|
||||
to:init_multiply::@3
|
||||
init_multiply::@3: scope:[init_multiply] from init_multiply::@2 init_multiply::@4
|
||||
[245] (byte) init_multiply::dir#2 ← phi( init_multiply::@4/(byte) init_multiply::dir#3 init_multiply::@2/(byte/word/signed word/dword/signed dword) 255 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] )
|
||||
[245] (byte*) init_multiply::sqr2_hi#2 ← phi( init_multiply::@4/(byte*) init_multiply::sqr2_hi#1 init_multiply::@2/(const byte[512]) mul_sqr2_hi#0 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] )
|
||||
[245] (byte*) init_multiply::sqr2_lo#2 ← phi( init_multiply::@4/(byte*) init_multiply::sqr2_lo#1 init_multiply::@2/(const byte[512]) mul_sqr2_lo#0 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] )
|
||||
[245] (byte) init_multiply::x_255#2 ← phi( init_multiply::@4/(byte) init_multiply::x_255#1 init_multiply::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] )
|
||||
[246] *((byte*) init_multiply::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] )
|
||||
[247] *((byte*) init_multiply::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_multiply::x_255#2) [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::sqr2_hi#2 init_multiply::dir#2 ] )
|
||||
[248] (byte*) init_multiply::sqr2_hi#1 ← ++ (byte*) init_multiply::sqr2_hi#2 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::x_255#2 init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::sqr2_hi#1 ] )
|
||||
[249] (byte) init_multiply::x_255#1 ← (byte) init_multiply::x_255#2 + (byte) init_multiply::dir#2 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] )
|
||||
[250] if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_multiply::@12 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] )
|
||||
to:init_multiply::@4
|
||||
init_multiply::@4: scope:[init_multiply] from init_multiply::@12 init_multiply::@3
|
||||
[251] (byte) init_multiply::dir#3 ← phi( init_multiply::@12/(byte) init_multiply::dir#2 init_multiply::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ init_multiply::sqr2_lo#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] )
|
||||
[252] (byte*) init_multiply::sqr2_lo#1 ← ++ (byte*) init_multiply::sqr2_lo#2 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] )
|
||||
[253] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto init_multiply::@3 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] ( main:2::init_multiply:7 [ init_multiply::x_255#1 init_multiply::sqr2_lo#1 init_multiply::sqr2_hi#1 init_multiply::dir#3 ] )
|
||||
to:init_multiply::@8
|
||||
init_multiply::@8: scope:[init_multiply] from init_multiply::@4
|
||||
[254] *((const byte[512]) mul_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::init_multiply:7 [ ] )
|
||||
[255] *((const byte[512]) mul_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::init_multiply:7 [ ] )
|
||||
to:init_multiply::@return
|
||||
init_multiply::@return: scope:[init_multiply] from init_multiply::@8
|
||||
[256] return [ ] ( main:2::init_multiply:7 [ ] )
|
||||
mulf_init: scope:[mulf_init] from main::@1
|
||||
[229] phi() [ ] ( main:2::mulf_init:7 [ ] )
|
||||
to:mulf_init::@1
|
||||
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2
|
||||
[230] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] )
|
||||
[230] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] )
|
||||
[230] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] )
|
||||
[230] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] )
|
||||
[230] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] )
|
||||
[231] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] )
|
||||
[232] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] )
|
||||
[233] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] )
|
||||
to:mulf_init::@5
|
||||
mulf_init::@5: scope:[mulf_init] from mulf_init::@1
|
||||
[234] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 ] )
|
||||
[235] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 mulf_init::sqr#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 mulf_init::sqr#2 ] )
|
||||
to:mulf_init::@2
|
||||
mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5
|
||||
[236] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] )
|
||||
[236] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] )
|
||||
[237] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] )
|
||||
[238] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] )
|
||||
[239] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] )
|
||||
[240] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] )
|
||||
[241] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 mulf_init::sqr#3 ] )
|
||||
[242] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] )
|
||||
[243] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] )
|
||||
[244] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] )
|
||||
to:mulf_init::@3
|
||||
mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4
|
||||
[245] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] )
|
||||
[245] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] )
|
||||
[245] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] )
|
||||
[245] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] )
|
||||
[246] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] )
|
||||
[247] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] )
|
||||
[248] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::sqr2_hi#1 ] )
|
||||
[249] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] )
|
||||
[250] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] )
|
||||
to:mulf_init::@4
|
||||
mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3
|
||||
[251] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ mulf_init::sqr2_lo#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] )
|
||||
[252] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] )
|
||||
[253] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] )
|
||||
to:mulf_init::@8
|
||||
mulf_init::@8: scope:[mulf_init] from mulf_init::@4
|
||||
[254] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] )
|
||||
[255] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] )
|
||||
to:mulf_init::@return
|
||||
mulf_init::@return: scope:[mulf_init] from mulf_init::@8
|
||||
[256] return [ ] ( main:2::mulf_init:7 [ ] )
|
||||
to:@return
|
||||
init_multiply::@12: scope:[init_multiply] from init_multiply::@3
|
||||
[257] phi() [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] ( main:2::init_multiply:7 [ init_multiply::sqr2_lo#2 init_multiply::dir#2 init_multiply::x_255#1 init_multiply::sqr2_hi#1 ] )
|
||||
to:init_multiply::@4
|
||||
mulf_init::@12: scope:[mulf_init] from mulf_init::@3
|
||||
[257] phi() [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] )
|
||||
to:mulf_init::@4
|
||||
print_cls: scope:[print_cls] from main
|
||||
[258] phi() [ ] ( main:2::print_cls:5 [ ] )
|
||||
to:print_cls::@1
|
||||
|
File diff suppressed because one or more lines are too long
@ -5,14 +5,6 @@
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte[512]) asm_mul_sqr1_hi
|
||||
(const byte[512]) asm_mul_sqr1_hi#0 asm_mul_sqr1_hi = { fill( 512, 0) }
|
||||
(byte[512]) asm_mul_sqr1_lo
|
||||
(const byte[512]) asm_mul_sqr1_lo#0 asm_mul_sqr1_lo = { fill( 512, 0) }
|
||||
(byte[512]) asm_mul_sqr2_hi
|
||||
(const byte[512]) asm_mul_sqr2_hi#0 asm_mul_sqr2_hi = { fill( 512, 0) }
|
||||
(byte[512]) asm_mul_sqr2_lo
|
||||
(const byte[512]) asm_mul_sqr2_lo#0 asm_mul_sqr2_lo = { fill( 512, 0) }
|
||||
(byte*) char_cursor
|
||||
(byte*) char_cursor#1 char_cursor zp ZP_WORD:10 11.0
|
||||
(byte*) char_cursor#122 char_cursor zp ZP_WORD:10 1.6944444444444446
|
||||
@ -28,52 +20,6 @@
|
||||
(byte*~) char_cursor#201 char_cursor zp ZP_WORD:10 4.0
|
||||
(byte*) char_cursor#30 char_cursor zp ZP_WORD:10 0.27586206896551724
|
||||
(byte*) char_cursor#78 char_cursor zp ZP_WORD:10 6.0
|
||||
(void()) init_multiply()
|
||||
(byte~) init_multiply::$2 reg byte a 22.0
|
||||
(byte~) init_multiply::$5 reg byte a 22.0
|
||||
(byte~) init_multiply::$6 reg byte a 22.0
|
||||
(label) init_multiply::@1
|
||||
(label) init_multiply::@12
|
||||
(label) init_multiply::@2
|
||||
(label) init_multiply::@3
|
||||
(label) init_multiply::@4
|
||||
(label) init_multiply::@5
|
||||
(label) init_multiply::@8
|
||||
(label) init_multiply::@return
|
||||
(byte) init_multiply::c
|
||||
(byte) init_multiply::c#1 reg byte x 2.357142857142857
|
||||
(byte) init_multiply::c#2 reg byte x 22.0
|
||||
(byte) init_multiply::dir
|
||||
(byte) init_multiply::dir#2 dir zp ZP_BYTE:2 4.714285714285714
|
||||
(byte) init_multiply::dir#3 dir zp ZP_BYTE:2 7.333333333333333
|
||||
(word) init_multiply::sqr
|
||||
(word) init_multiply::sqr#1 sqr zp ZP_WORD:8 7.333333333333333
|
||||
(word) init_multiply::sqr#2 sqr zp ZP_WORD:8 22.0
|
||||
(word) init_multiply::sqr#3 sqr zp ZP_WORD:8 9.166666666666666
|
||||
(word) init_multiply::sqr#4 sqr zp ZP_WORD:8 6.6000000000000005
|
||||
(byte*) init_multiply::sqr1_hi
|
||||
(byte*) init_multiply::sqr1_hi#1 sqr1_hi zp ZP_WORD:6 5.5
|
||||
(byte*) init_multiply::sqr1_hi#2 sqr1_hi zp ZP_WORD:6 3.0
|
||||
(byte*) init_multiply::sqr1_lo
|
||||
(byte*) init_multiply::sqr1_lo#1 sqr1_lo zp ZP_WORD:4 16.5
|
||||
(byte*) init_multiply::sqr1_lo#2 sqr1_lo zp ZP_WORD:4 2.5384615384615383
|
||||
(byte*) init_multiply::sqr2_hi
|
||||
(byte*) init_multiply::sqr2_hi#1 sqr2_hi zp ZP_WORD:6 3.142857142857143
|
||||
(byte*) init_multiply::sqr2_hi#2 sqr2_hi zp ZP_WORD:6 11.0
|
||||
(byte*) init_multiply::sqr2_lo
|
||||
(byte*) init_multiply::sqr2_lo#1 sqr2_lo zp ZP_WORD:4 16.5
|
||||
(byte*) init_multiply::sqr2_lo#2 sqr2_lo zp ZP_WORD:4 4.125
|
||||
(byte) init_multiply::x_2
|
||||
(byte) init_multiply::x_2#1 x_2 zp ZP_BYTE:2 11.0
|
||||
(byte) init_multiply::x_2#2 x_2 zp ZP_BYTE:2 4.888888888888889
|
||||
(byte) init_multiply::x_2#3 x_2 zp ZP_BYTE:2 8.25
|
||||
(byte) init_multiply::x_255
|
||||
(byte) init_multiply::x_255#1 reg byte x 5.5
|
||||
(byte) init_multiply::x_255#2 reg byte x 11.0
|
||||
(void()) init_multiply_asm()
|
||||
(label) init_multiply_asm::@return
|
||||
(byte*) init_multiply_asm::mem
|
||||
(const byte*) init_multiply_asm::mem#0 mem = ((byte*))(byte/word/signed word/dword/signed dword) 255
|
||||
(byte*) line_cursor
|
||||
(byte*) line_cursor#1 line_cursor zp ZP_WORD:4 0.8181818181818181
|
||||
(byte*) line_cursor#10 line_cursor zp ZP_WORD:4 0.1276595744680851
|
||||
@ -86,32 +32,150 @@
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@return
|
||||
(byte[512]) mul_sqr1_hi
|
||||
(const byte[512]) mul_sqr1_hi#0 mul_sqr1_hi = { fill( 512, 0) }
|
||||
(byte[512]) mul_sqr1_lo
|
||||
(const byte[512]) mul_sqr1_lo#0 mul_sqr1_lo = { fill( 512, 0) }
|
||||
(byte[512]) mul_sqr2_hi
|
||||
(const byte[512]) mul_sqr2_hi#0 mul_sqr2_hi = { fill( 512, 0) }
|
||||
(byte[512]) mul_sqr2_lo
|
||||
(const byte[512]) mul_sqr2_lo#0 mul_sqr2_lo = { fill( 512, 0) }
|
||||
(word()) multiply((byte) multiply::a , (byte) multiply::b)
|
||||
(label) multiply::@return
|
||||
(byte) multiply::a
|
||||
(byte) multiply::a#1 reg byte a 101.0
|
||||
(byte) multiply::a#2 reg byte a 105.0
|
||||
(byte~) multiply::a#4 reg byte a 2.0
|
||||
(byte) multiply::b
|
||||
(byte) multiply::b#1 reg byte x 202.0
|
||||
(byte) multiply::b#2 reg byte x 52.5
|
||||
(byte~) multiply::b#4 reg byte x 4.0
|
||||
(byte*) multiply::memA
|
||||
(const byte*) multiply::memA#0 memA = ((byte*))(byte/word/signed word/dword/signed dword) 254
|
||||
(byte*) multiply::memB
|
||||
(const byte*) multiply::memB#0 memB = ((byte*))(byte/word/signed word/dword/signed dword) 255
|
||||
(word) multiply::return
|
||||
(word) multiply::return#0 return zp ZP_WORD:12 26.25
|
||||
(word) multiply::return#2 return zp ZP_WORD:12 4.0
|
||||
(word) multiply::return#3 return zp ZP_WORD:12 202.0
|
||||
(byte[512]) mula_sqr1_hi
|
||||
(const byte[512]) mula_sqr1_hi#0 mula_sqr1_hi = { fill( 512, 0) }
|
||||
(byte[512]) mula_sqr1_lo
|
||||
(const byte[512]) mula_sqr1_lo#0 mula_sqr1_lo = { fill( 512, 0) }
|
||||
(byte[512]) mula_sqr2_hi
|
||||
(const byte[512]) mula_sqr2_hi#0 mula_sqr2_hi = { fill( 512, 0) }
|
||||
(byte[512]) mula_sqr2_lo
|
||||
(const byte[512]) mula_sqr2_lo#0 mula_sqr2_lo = { fill( 512, 0) }
|
||||
(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b)
|
||||
(byte~) mulf8s::$12 reg byte a 4.0
|
||||
(byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 reg byte a 4.0
|
||||
(byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 reg byte a 4.0
|
||||
(byte~) mulf8s::$6 reg byte a 4.0
|
||||
(label) mulf8s::@1
|
||||
(label) mulf8s::@2
|
||||
(label) mulf8s::@3
|
||||
(label) mulf8s::@4
|
||||
(label) mulf8s::@6
|
||||
(label) mulf8s::@return
|
||||
(signed byte) mulf8s::a
|
||||
(signed byte) mulf8s::a#0 reg byte y 7.357142857142858
|
||||
(signed byte) mulf8s::b
|
||||
(signed byte) mulf8s::b#0 b zp ZP_BYTE:3 9.363636363636363
|
||||
(word) mulf8s::m
|
||||
(word) mulf8s::m#0 m zp ZP_WORD:12 2.0
|
||||
(word) mulf8s::m#1 m zp ZP_WORD:12 4.0
|
||||
(word) mulf8s::m#2 m zp ZP_WORD:12 4.0
|
||||
(word) mulf8s::m#4 m zp ZP_WORD:12 1.3333333333333333
|
||||
(word) mulf8s::m#5 m zp ZP_WORD:12 2.5
|
||||
(signed word) mulf8s::return
|
||||
(signed word) mulf8s::return#2 return zp ZP_WORD:12 202.0
|
||||
(word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b)
|
||||
(label) mulf8u::@return
|
||||
(byte) mulf8u::a
|
||||
(byte) mulf8u::a#1 reg byte a 101.0
|
||||
(byte) mulf8u::a#2 reg byte a 105.0
|
||||
(byte~) mulf8u::a#3 reg byte a 2.0
|
||||
(byte) mulf8u::b
|
||||
(byte) mulf8u::b#1 reg byte x 202.0
|
||||
(byte) mulf8u::b#2 reg byte x 52.5
|
||||
(byte~) mulf8u::b#3 reg byte x 4.0
|
||||
(byte*) mulf8u::memA
|
||||
(const byte*) mulf8u::memA#0 memA = ((byte*))(byte/word/signed word/dword/signed dword) 254
|
||||
(byte*) mulf8u::memB
|
||||
(const byte*) mulf8u::memB#0 memB = ((byte*))(byte/word/signed word/dword/signed dword) 255
|
||||
(word) mulf8u::return
|
||||
(word) mulf8u::return#0 return zp ZP_WORD:12 26.25
|
||||
(word) mulf8u::return#2 return zp ZP_WORD:12 4.0
|
||||
(word) mulf8u::return#3 return zp ZP_WORD:12 202.0
|
||||
(void()) mulf_init()
|
||||
(byte~) mulf_init::$2 reg byte a 22.0
|
||||
(byte~) mulf_init::$5 reg byte a 22.0
|
||||
(byte~) mulf_init::$6 reg byte a 22.0
|
||||
(label) mulf_init::@1
|
||||
(label) mulf_init::@12
|
||||
(label) mulf_init::@2
|
||||
(label) mulf_init::@3
|
||||
(label) mulf_init::@4
|
||||
(label) mulf_init::@5
|
||||
(label) mulf_init::@8
|
||||
(label) mulf_init::@return
|
||||
(byte) mulf_init::c
|
||||
(byte) mulf_init::c#1 reg byte x 2.357142857142857
|
||||
(byte) mulf_init::c#2 reg byte x 22.0
|
||||
(byte) mulf_init::dir
|
||||
(byte) mulf_init::dir#2 dir zp ZP_BYTE:2 4.714285714285714
|
||||
(byte) mulf_init::dir#3 dir zp ZP_BYTE:2 7.333333333333333
|
||||
(word) mulf_init::sqr
|
||||
(word) mulf_init::sqr#1 sqr zp ZP_WORD:8 7.333333333333333
|
||||
(word) mulf_init::sqr#2 sqr zp ZP_WORD:8 22.0
|
||||
(word) mulf_init::sqr#3 sqr zp ZP_WORD:8 9.166666666666666
|
||||
(word) mulf_init::sqr#4 sqr zp ZP_WORD:8 6.6000000000000005
|
||||
(byte*) mulf_init::sqr1_hi
|
||||
(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp ZP_WORD:6 5.5
|
||||
(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp ZP_WORD:6 3.0
|
||||
(byte*) mulf_init::sqr1_lo
|
||||
(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp ZP_WORD:4 16.5
|
||||
(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp ZP_WORD:4 2.5384615384615383
|
||||
(byte*) mulf_init::sqr2_hi
|
||||
(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp ZP_WORD:6 3.142857142857143
|
||||
(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp ZP_WORD:6 11.0
|
||||
(byte*) mulf_init::sqr2_lo
|
||||
(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp ZP_WORD:4 16.5
|
||||
(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp ZP_WORD:4 4.125
|
||||
(byte) mulf_init::x_2
|
||||
(byte) mulf_init::x_2#1 x_2 zp ZP_BYTE:2 11.0
|
||||
(byte) mulf_init::x_2#2 x_2 zp ZP_BYTE:2 4.888888888888889
|
||||
(byte) mulf_init::x_2#3 x_2 zp ZP_BYTE:2 8.25
|
||||
(byte) mulf_init::x_255
|
||||
(byte) mulf_init::x_255#1 reg byte x 5.5
|
||||
(byte) mulf_init::x_255#2 reg byte x 11.0
|
||||
(void()) mulf_init_asm()
|
||||
(label) mulf_init_asm::@return
|
||||
(byte*) mulf_init_asm::mem
|
||||
(const byte*) mulf_init_asm::mem#0 mem = ((byte*))(byte/word/signed word/dword/signed dword) 255
|
||||
(byte[512]) mulf_sqr1_hi
|
||||
(const byte[512]) mulf_sqr1_hi#0 mulf_sqr1_hi = { fill( 512, 0) }
|
||||
(byte[512]) mulf_sqr1_lo
|
||||
(const byte[512]) mulf_sqr1_lo#0 mulf_sqr1_lo = { fill( 512, 0) }
|
||||
(byte[512]) mulf_sqr2_hi
|
||||
(const byte[512]) mulf_sqr2_hi#0 mulf_sqr2_hi = { fill( 512, 0) }
|
||||
(byte[512]) mulf_sqr2_lo
|
||||
(const byte[512]) mulf_sqr2_lo#0 mulf_sqr2_lo = { fill( 512, 0) }
|
||||
(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b)
|
||||
(label) muls8s::@1
|
||||
(label) muls8s::@2
|
||||
(label) muls8s::@3
|
||||
(label) muls8s::@5
|
||||
(label) muls8s::@return
|
||||
(signed byte) muls8s::a
|
||||
(signed byte) muls8s::a#0 a zp ZP_BYTE:2 175.58333333333334
|
||||
(signed byte) muls8s::b
|
||||
(signed byte) muls8s::b#0 reg byte x 191.1818181818182
|
||||
(signed byte) muls8s::i
|
||||
(signed byte) muls8s::i#1 reg byte y 1501.5
|
||||
(signed byte) muls8s::i#2 reg byte y 1001.0
|
||||
(signed byte) muls8s::j
|
||||
(signed byte) muls8s::j#1 reg byte y 1501.5
|
||||
(signed byte) muls8s::j#2 reg byte y 1001.0
|
||||
(signed word) muls8s::m
|
||||
(signed word) muls8s::m#1 m zp ZP_WORD:8 1001.0
|
||||
(signed word) muls8s::m#2 m zp ZP_WORD:8 1001.0
|
||||
(signed word) muls8s::m#3 m zp ZP_WORD:8 2002.0
|
||||
(signed word) muls8s::m#5 m zp ZP_WORD:8 2002.0
|
||||
(signed word) muls8s::return
|
||||
(signed word) muls8s::return#0 return zp ZP_WORD:8 701.0
|
||||
(signed word) muls8s::return#2 return zp ZP_WORD:8 202.0
|
||||
(word()) muls8u((byte) muls8u::a , (byte) muls8u::b)
|
||||
(label) muls8u::@1
|
||||
(label) muls8u::@2
|
||||
(label) muls8u::@return
|
||||
(byte) muls8u::a
|
||||
(byte) muls8u::a#0 a zp ZP_BYTE:2 157.71428571428572
|
||||
(byte) muls8u::b
|
||||
(byte) muls8u::b#0 reg byte x 183.66666666666669
|
||||
(byte) muls8u::i
|
||||
(byte) muls8u::i#1 reg byte y 1501.5
|
||||
(byte) muls8u::i#2 reg byte y 1001.0
|
||||
(word) muls8u::m
|
||||
(word) muls8u::m#1 m zp ZP_WORD:8 1001.0
|
||||
(word) muls8u::m#3 m zp ZP_WORD:8 2002.0
|
||||
(word) muls8u::return
|
||||
(word) muls8u::return#0 return zp ZP_WORD:8 367.33333333333337
|
||||
(word) muls8u::return#2 return zp ZP_WORD:8 202.0
|
||||
(void()) multiply_error((byte) multiply_error::a , (byte) multiply_error::b , (word) multiply_error::ms , (word) multiply_error::ma)
|
||||
(label) multiply_error::@1
|
||||
(label) multiply_error::@2
|
||||
@ -244,29 +308,6 @@
|
||||
(word) print_word::w#4 w zp ZP_WORD:8 4.0
|
||||
(word) print_word::w#5 w zp ZP_WORD:8 4.666666666666666
|
||||
(word~) print_word::w#9 w zp ZP_WORD:8 4.0
|
||||
(signed word()) signed_multiply((signed byte) signed_multiply::a , (signed byte) signed_multiply::b)
|
||||
(byte~) signed_multiply::$12 reg byte a 4.0
|
||||
(byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$16 reg byte a 4.0
|
||||
(byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$17 reg byte a 4.0
|
||||
(byte~) signed_multiply::$6 reg byte a 4.0
|
||||
(label) signed_multiply::@1
|
||||
(label) signed_multiply::@2
|
||||
(label) signed_multiply::@3
|
||||
(label) signed_multiply::@4
|
||||
(label) signed_multiply::@6
|
||||
(label) signed_multiply::@return
|
||||
(signed byte) signed_multiply::a
|
||||
(signed byte) signed_multiply::a#0 reg byte y 7.357142857142858
|
||||
(signed byte) signed_multiply::b
|
||||
(signed byte) signed_multiply::b#0 b zp ZP_BYTE:3 9.363636363636363
|
||||
(word) signed_multiply::m
|
||||
(word) signed_multiply::m#0 m zp ZP_WORD:12 2.0
|
||||
(word) signed_multiply::m#1 m zp ZP_WORD:12 4.0
|
||||
(word) signed_multiply::m#2 m zp ZP_WORD:12 4.0
|
||||
(word) signed_multiply::m#4 m zp ZP_WORD:12 1.3333333333333333
|
||||
(word) signed_multiply::m#5 m zp ZP_WORD:12 2.5
|
||||
(signed word) signed_multiply::return
|
||||
(signed word) signed_multiply::return#2 return zp ZP_WORD:12 202.0
|
||||
(void()) signed_multiply_error((signed byte) signed_multiply_error::a , (signed byte) signed_multiply_error::b , (signed word) signed_multiply_error::ms , (signed word) signed_multiply_error::ma)
|
||||
(label) signed_multiply_error::@1
|
||||
(label) signed_multiply_error::@2
|
||||
@ -311,76 +352,35 @@
|
||||
(signed word) signed_multiply_results_compare::ms
|
||||
(signed word) signed_multiply_results_compare::ms#0 ms zp ZP_WORD:8 20.4
|
||||
(const string) signed_multiply_results_compare::str str = (string) "signed multiply results match!@"
|
||||
(word()) slow_multiply((byte) slow_multiply::a , (byte) slow_multiply::b)
|
||||
(label) slow_multiply::@1
|
||||
(label) slow_multiply::@2
|
||||
(label) slow_multiply::@return
|
||||
(byte) slow_multiply::a
|
||||
(byte) slow_multiply::a#0 a zp ZP_BYTE:2 157.71428571428572
|
||||
(byte) slow_multiply::b
|
||||
(byte) slow_multiply::b#0 reg byte x 183.66666666666669
|
||||
(byte) slow_multiply::i
|
||||
(byte) slow_multiply::i#1 reg byte y 1501.5
|
||||
(byte) slow_multiply::i#2 reg byte y 1001.0
|
||||
(word) slow_multiply::m
|
||||
(word) slow_multiply::m#1 m zp ZP_WORD:8 1001.0
|
||||
(word) slow_multiply::m#3 m zp ZP_WORD:8 2002.0
|
||||
(word) slow_multiply::return
|
||||
(word) slow_multiply::return#0 return zp ZP_WORD:8 367.33333333333337
|
||||
(word) slow_multiply::return#2 return zp ZP_WORD:8 202.0
|
||||
(signed word()) slow_signed_multiply((signed byte) slow_signed_multiply::a , (signed byte) slow_signed_multiply::b)
|
||||
(label) slow_signed_multiply::@1
|
||||
(label) slow_signed_multiply::@2
|
||||
(label) slow_signed_multiply::@3
|
||||
(label) slow_signed_multiply::@5
|
||||
(label) slow_signed_multiply::@return
|
||||
(signed byte) slow_signed_multiply::a
|
||||
(signed byte) slow_signed_multiply::a#0 a zp ZP_BYTE:2 175.58333333333334
|
||||
(signed byte) slow_signed_multiply::b
|
||||
(signed byte) slow_signed_multiply::b#0 reg byte x 191.1818181818182
|
||||
(signed byte) slow_signed_multiply::i
|
||||
(signed byte) slow_signed_multiply::i#1 reg byte y 1501.5
|
||||
(signed byte) slow_signed_multiply::i#2 reg byte y 1001.0
|
||||
(signed byte) slow_signed_multiply::j
|
||||
(signed byte) slow_signed_multiply::j#1 reg byte y 1501.5
|
||||
(signed byte) slow_signed_multiply::j#2 reg byte y 1001.0
|
||||
(signed word) slow_signed_multiply::m
|
||||
(signed word) slow_signed_multiply::m#1 m zp ZP_WORD:8 1001.0
|
||||
(signed word) slow_signed_multiply::m#2 m zp ZP_WORD:8 1001.0
|
||||
(signed word) slow_signed_multiply::m#3 m zp ZP_WORD:8 2002.0
|
||||
(signed word) slow_signed_multiply::m#5 m zp ZP_WORD:8 2002.0
|
||||
(signed word) slow_signed_multiply::return
|
||||
(signed word) slow_signed_multiply::return#0 return zp ZP_WORD:8 701.0
|
||||
(signed word) slow_signed_multiply::return#2 return zp ZP_WORD:8 202.0
|
||||
|
||||
zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 slow_signed_multiply::a#0 multiply_results_compare::a#6 multiply_results_compare::a#1 slow_multiply::a#0 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 ]
|
||||
zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 signed_multiply::b#0 signed_multiply_error::b#0 multiply_results_compare::b#2 multiply_results_compare::b#1 multiply_error::b#0 ]
|
||||
zp ZP_WORD:4 [ line_cursor#23 line_cursor#45 line_cursor#10 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ]
|
||||
zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ]
|
||||
zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 slow_signed_multiply::return#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 multiply_error::ms#0 multiply_results_compare::ms#0 slow_multiply::return#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ]
|
||||
zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 muls8s::a#0 multiply_results_compare::a#6 multiply_results_compare::a#1 muls8u::a#0 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ]
|
||||
zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 mulf8s::b#0 signed_multiply_error::b#0 multiply_results_compare::b#2 multiply_results_compare::b#1 multiply_error::b#0 ]
|
||||
zp ZP_WORD:4 [ line_cursor#23 line_cursor#45 line_cursor#10 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ]
|
||||
zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
|
||||
zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 muls8s::return#2 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 multiply_error::ms#0 multiply_results_compare::ms#0 muls8u::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
|
||||
reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ]
|
||||
reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
|
||||
zp ZP_WORD:10 [ char_cursor#78 char_cursor#129 char_cursor#128 char_cursor#124 char_cursor#141 char_cursor#30 char_cursor#123 char_cursor#17 char_cursor#122 char_cursor#176 char_cursor#180 char_cursor#1 char_cursor#126 char_cursor#201 ]
|
||||
reg byte x [ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ]
|
||||
zp ZP_WORD:12 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 multiply::return#2 multiply::return#0 multiply::return#3 multiply_results_compare::ma#0 multiply_error::ma#0 ]
|
||||
reg byte a [ multiply::a#2 multiply::a#1 multiply::a#4 ]
|
||||
reg byte x [ multiply::b#2 multiply::b#1 multiply::b#4 ]
|
||||
reg byte y [ slow_signed_multiply::i#2 slow_signed_multiply::i#1 ]
|
||||
reg byte y [ slow_signed_multiply::j#2 slow_signed_multiply::j#1 ]
|
||||
reg byte y [ slow_multiply::i#2 slow_multiply::i#1 ]
|
||||
reg byte x [ init_multiply::c#2 init_multiply::c#1 ]
|
||||
reg byte x [ init_multiply::x_255#2 init_multiply::x_255#1 ]
|
||||
reg byte x [ slow_signed_multiply::b#0 ]
|
||||
reg byte y [ signed_multiply::a#0 ]
|
||||
zp ZP_WORD:12 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 mulf8s::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 mulf8u::return#2 mulf8u::return#0 mulf8u::return#3 multiply_results_compare::ma#0 multiply_error::ma#0 ]
|
||||
reg byte a [ mulf8u::a#2 mulf8u::a#3 mulf8u::a#1 ]
|
||||
reg byte x [ mulf8u::b#2 mulf8u::b#3 mulf8u::b#1 ]
|
||||
reg byte y [ muls8s::i#2 muls8s::i#1 ]
|
||||
reg byte y [ muls8s::j#2 muls8s::j#1 ]
|
||||
reg byte y [ muls8u::i#2 muls8u::i#1 ]
|
||||
reg byte x [ mulf_init::c#2 mulf_init::c#1 ]
|
||||
reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ]
|
||||
reg byte x [ muls8s::b#0 ]
|
||||
reg byte y [ mulf8s::a#0 ]
|
||||
reg byte x [ signed_multiply_error::a#0 ]
|
||||
reg byte a [ print_byte::$0 ]
|
||||
reg byte a [ print_byte::$2 ]
|
||||
reg byte a [ signed_multiply::$6 ]
|
||||
reg byte a [ signed_multiply::$16 ]
|
||||
reg byte a [ signed_multiply::$12 ]
|
||||
reg byte a [ signed_multiply::$17 ]
|
||||
reg byte x [ slow_multiply::b#0 ]
|
||||
reg byte a [ mulf8s::$6 ]
|
||||
reg byte a [ mulf8s::$16 ]
|
||||
reg byte a [ mulf8s::$12 ]
|
||||
reg byte a [ mulf8s::$17 ]
|
||||
reg byte x [ muls8u::b#0 ]
|
||||
reg byte x [ multiply_error::a#0 ]
|
||||
reg byte a [ init_multiply::$2 ]
|
||||
reg byte a [ init_multiply::$5 ]
|
||||
reg byte a [ init_multiply::$6 ]
|
||||
reg byte a [ mulf_init::$2 ]
|
||||
reg byte a [ mulf_init::$5 ]
|
||||
reg byte a [ mulf_init::$6 ]
|
||||
|
Loading…
x
Reference in New Issue
Block a user