mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-09-08 17:54:40 +00:00
Added a sinus plotter to test the sinus curves against macro-generated sinus.
This commit is contained in:
parent
ad0512cc9d
commit
cda0a9b498
@ -108,7 +108,7 @@ public class AsmFormat {
|
||||
} else {
|
||||
return getAsmConstant(program, new ConstantBinary(new ConstantInteger((long)0xff), Operators.BOOL_AND, operand), outerPrecedence, codeScope);
|
||||
}
|
||||
} else if(Operators.CAST_WORD.equals(operator) || Operators.CAST_SWORD.equals(operator) || Operators.CAST_PTRBY.equals(operator)|| Operators.CAST_PTRBO.equals(operator)) {
|
||||
} else if(Operators.CAST_WORD.equals(operator) || Operators.CAST_SWORD.equals(operator) || Operators.CAST_PTRBY.equals(operator)|| Operators.CAST_PTRSBY.equals(operator)|| Operators.CAST_PTRWO.equals(operator)|| Operators.CAST_PTRSWO.equals(operator)|| Operators.CAST_PTRDWO.equals(operator)|| Operators.CAST_PTRSDWO.equals(operator)|| Operators.CAST_PTRBO.equals(operator)) {
|
||||
SymbolType operandType = SymbolTypeInference.inferType(program.getScope(), operand);
|
||||
if(SymbolType.isWord(operandType) || SymbolType.isSWord(operandType) || SymbolType.isByte(operandType) || SymbolType.isSByte(operandType) || operandType instanceof SymbolTypePointer) {
|
||||
// No cast needed
|
||||
|
@ -0,0 +1,8 @@
|
||||
lda {z1}
|
||||
cmp #{c1}
|
||||
lda {z1}+1
|
||||
sbc #0
|
||||
bvc !+
|
||||
eor #$80
|
||||
!:
|
||||
bpl {la1}
|
@ -0,0 +1,30 @@
|
||||
package dk.camelot64.kickc.model.operators;
|
||||
|
||||
import dk.camelot64.kickc.model.CompileError;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypePointer;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypeSimple;
|
||||
import dk.camelot64.kickc.model.values.ConstantInteger;
|
||||
import dk.camelot64.kickc.model.values.ConstantLiteral;
|
||||
import dk.camelot64.kickc.model.values.ConstantPointer;
|
||||
|
||||
/** Unary Cast to double word pointer operator ( (word*) x ) */
|
||||
public class OperatorCastPtrDWord extends OperatorUnary {
|
||||
|
||||
public OperatorCastPtrDWord(int precedence) {
|
||||
super("((dword*))", "_ptrdwo_", precedence);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConstantLiteral calculateLiteral(ConstantLiteral value) {
|
||||
if(value instanceof ConstantInteger) {
|
||||
return new ConstantPointer(((ConstantInteger) value).getInteger(), SymbolType.DWORD);
|
||||
}
|
||||
throw new CompileError("Calculation not implemented " + getOperator() + " " + value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public SymbolType inferType(SymbolTypeSimple operandType) {
|
||||
return new SymbolTypePointer(SymbolType.DWORD);
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package dk.camelot64.kickc.model.operators;
|
||||
|
||||
import dk.camelot64.kickc.model.CompileError;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypePointer;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypeSimple;
|
||||
import dk.camelot64.kickc.model.values.ConstantInteger;
|
||||
import dk.camelot64.kickc.model.values.ConstantLiteral;
|
||||
import dk.camelot64.kickc.model.values.ConstantPointer;
|
||||
|
||||
/** Unary Cast to signed byte pointer operator ( (signed byte*) x ) */
|
||||
public class OperatorCastPtrSignedByte extends OperatorUnary {
|
||||
|
||||
public OperatorCastPtrSignedByte(int precedence) {
|
||||
super("((signed byte*))", "_ptrsby_", precedence);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConstantLiteral calculateLiteral(ConstantLiteral value) {
|
||||
if(value instanceof ConstantInteger) {
|
||||
return new ConstantPointer(((ConstantInteger) value).getInteger(), SymbolType.SBYTE);
|
||||
}
|
||||
throw new CompileError("Calculation not implemented " + getOperator() + " " + value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public SymbolType inferType(SymbolTypeSimple operandType) {
|
||||
return new SymbolTypePointer(SymbolType.SBYTE);
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package dk.camelot64.kickc.model.operators;
|
||||
|
||||
import dk.camelot64.kickc.model.CompileError;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypePointer;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypeSimple;
|
||||
import dk.camelot64.kickc.model.values.ConstantInteger;
|
||||
import dk.camelot64.kickc.model.values.ConstantLiteral;
|
||||
import dk.camelot64.kickc.model.values.ConstantPointer;
|
||||
|
||||
/** Unary Cast to signed double word pointer operator ( (signed word*) x ) */
|
||||
public class OperatorCastPtrSignedDWord extends OperatorUnary {
|
||||
|
||||
public OperatorCastPtrSignedDWord(int precedence) {
|
||||
super("((signed dword*))", "_ptrsdwo_", precedence);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConstantLiteral calculateLiteral(ConstantLiteral value) {
|
||||
if(value instanceof ConstantInteger) {
|
||||
return new ConstantPointer(((ConstantInteger) value).getInteger(), SymbolType.SDWORD);
|
||||
}
|
||||
throw new CompileError("Calculation not implemented " + getOperator() + " " + value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public SymbolType inferType(SymbolTypeSimple operandType) {
|
||||
return new SymbolTypePointer(SymbolType.SDWORD);
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package dk.camelot64.kickc.model.operators;
|
||||
|
||||
import dk.camelot64.kickc.model.CompileError;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypePointer;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypeSimple;
|
||||
import dk.camelot64.kickc.model.values.ConstantInteger;
|
||||
import dk.camelot64.kickc.model.values.ConstantLiteral;
|
||||
import dk.camelot64.kickc.model.values.ConstantPointer;
|
||||
|
||||
/** Unary Cast to signed word pointer operator ( (signed word*) x ) */
|
||||
public class OperatorCastPtrSignedWord extends OperatorUnary {
|
||||
|
||||
public OperatorCastPtrSignedWord(int precedence) {
|
||||
super("((signed word*))", "_ptrswo_", precedence);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConstantLiteral calculateLiteral(ConstantLiteral value) {
|
||||
if(value instanceof ConstantInteger) {
|
||||
return new ConstantPointer(((ConstantInteger) value).getInteger(), SymbolType.SWORD);
|
||||
}
|
||||
throw new CompileError("Calculation not implemented " + getOperator() + " " + value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public SymbolType inferType(SymbolTypeSimple operandType) {
|
||||
return new SymbolTypePointer(SymbolType.SWORD);
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package dk.camelot64.kickc.model.operators;
|
||||
|
||||
import dk.camelot64.kickc.model.CompileError;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypePointer;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypeSimple;
|
||||
import dk.camelot64.kickc.model.values.ConstantInteger;
|
||||
import dk.camelot64.kickc.model.values.ConstantLiteral;
|
||||
import dk.camelot64.kickc.model.values.ConstantPointer;
|
||||
|
||||
/** Unary Cast to word pointer operator ( (word*) x ) */
|
||||
public class OperatorCastPtrWord extends OperatorUnary {
|
||||
|
||||
public OperatorCastPtrWord(int precedence) {
|
||||
super("((word*))", "_ptrwo_", precedence);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConstantLiteral calculateLiteral(ConstantLiteral value) {
|
||||
if(value instanceof ConstantInteger) {
|
||||
return new ConstantPointer(((ConstantInteger) value).getInteger(), SymbolType.WORD);
|
||||
}
|
||||
throw new CompileError("Calculation not implemented " + getOperator() + " " + value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public SymbolType inferType(SymbolTypeSimple operandType) {
|
||||
return new SymbolTypePointer(SymbolType.WORD);
|
||||
}
|
||||
}
|
@ -26,6 +26,11 @@ public class Operators {
|
||||
public static final OperatorUnary CAST_DWORD = new OperatorCastDWord(2);
|
||||
public static final OperatorUnary CAST_SDWORD = new OperatorCastSDWord(2);
|
||||
public static final OperatorUnary CAST_PTRBY = new OperatorCastPtrByte(2);
|
||||
public static final OperatorUnary CAST_PTRSBY = new OperatorCastPtrSignedByte(2);
|
||||
public static final OperatorUnary CAST_PTRWO = new OperatorCastPtrWord(2);
|
||||
public static final OperatorUnary CAST_PTRSWO = new OperatorCastPtrSignedWord(2);
|
||||
public static final OperatorUnary CAST_PTRDWO = new OperatorCastPtrDWord(2);
|
||||
public static final OperatorUnary CAST_PTRSDWO = new OperatorCastPtrSignedDWord(2);
|
||||
public static final OperatorUnary CAST_PTRBO = new OperatorCastPtrBool(2);
|
||||
public static final OperatorUnary CAST_BOOL= new OperatorCastBool(2);
|
||||
public static final OperatorBinary MULTIPLY = new OperatorMultiply(3);
|
||||
@ -152,6 +157,16 @@ public class Operators {
|
||||
return CAST_BOOL;
|
||||
} else if(castType instanceof SymbolTypePointer && SymbolType.BYTE.equals(((SymbolTypePointer) castType).getElementType())) {
|
||||
return CAST_PTRBY;
|
||||
} else if(castType instanceof SymbolTypePointer && SymbolType.SBYTE.equals(((SymbolTypePointer) castType).getElementType())) {
|
||||
return CAST_PTRSBY;
|
||||
} else if(castType instanceof SymbolTypePointer && SymbolType.WORD.equals(((SymbolTypePointer) castType).getElementType())) {
|
||||
return CAST_PTRWO;
|
||||
} else if(castType instanceof SymbolTypePointer && SymbolType.SWORD.equals(((SymbolTypePointer) castType).getElementType())) {
|
||||
return CAST_PTRSWO;
|
||||
} else if(castType instanceof SymbolTypePointer && SymbolType.DWORD.equals(((SymbolTypePointer) castType).getElementType())) {
|
||||
return CAST_PTRDWO;
|
||||
} else if(castType instanceof SymbolTypePointer && SymbolType.SDWORD.equals(((SymbolTypePointer) castType).getElementType())) {
|
||||
return CAST_PTRSDWO;
|
||||
} else if(castType instanceof SymbolTypePointer && SymbolType.BOOLEAN.equals(((SymbolTypePointer) castType).getElementType())) {
|
||||
return CAST_PTRBO;
|
||||
} else {
|
||||
|
@ -243,6 +243,11 @@ public class Pass2ConstantIdentification extends Pass2SsaOptimization {
|
||||
case "((dword))":
|
||||
case "((signed dword))":
|
||||
case "((byte*))":
|
||||
case "((signed byte*))":
|
||||
case "((word*))":
|
||||
case "((signed word*))":
|
||||
case "((dword*))":
|
||||
case "((signed dword*))":
|
||||
case "((boolean*))":
|
||||
case "!":
|
||||
return new ConstantUnary(operator, c);
|
||||
|
@ -54,6 +54,21 @@ public class Pass2NopCastElimination extends Pass2SsaOptimization {
|
||||
} else if(SymbolType.isWord(rValType) && Operators.CAST_PTRBY.equals(assignment.getOperator())) {
|
||||
isNopCast = true;
|
||||
toType = new SymbolTypePointer(SymbolType.BYTE);
|
||||
} else if(SymbolType.isWord(rValType) && Operators.CAST_PTRSBY.equals(assignment.getOperator())) {
|
||||
isNopCast = true;
|
||||
toType = new SymbolTypePointer(SymbolType.SBYTE);
|
||||
} else if(SymbolType.isWord(rValType) && Operators.CAST_PTRWO.equals(assignment.getOperator())) {
|
||||
isNopCast = true;
|
||||
toType = new SymbolTypePointer(SymbolType.WORD);
|
||||
} else if(SymbolType.isWord(rValType) && Operators.CAST_PTRSWO.equals(assignment.getOperator())) {
|
||||
isNopCast = true;
|
||||
toType = new SymbolTypePointer(SymbolType.SWORD);
|
||||
} else if(SymbolType.isWord(rValType) && Operators.CAST_PTRDWO.equals(assignment.getOperator())) {
|
||||
isNopCast = true;
|
||||
toType = new SymbolTypePointer(SymbolType.DWORD);
|
||||
} else if(SymbolType.isWord(rValType) && Operators.CAST_PTRSDWO.equals(assignment.getOperator())) {
|
||||
isNopCast = true;
|
||||
toType = new SymbolTypePointer(SymbolType.SDWORD);
|
||||
} else if(rValType instanceof SymbolTypePointer && Operators.CAST_WORD.equals(assignment.getOperator())) {
|
||||
isNopCast = true;
|
||||
toType = SymbolType.WORD;
|
||||
|
@ -46,6 +46,11 @@ public class TestPrograms {
|
||||
AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSinePlotter() throws IOException, URISyntaxException {
|
||||
compileAndCompare("sine-plotter");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScrollLogo() throws IOException, URISyntaxException {
|
||||
compileAndCompare("scrolllogo");
|
||||
|
50
src/test/java/dk/camelot64/kickc/test/kc/bitmap2.kc
Normal file
50
src/test/java/dk/camelot64/kickc/test/kc/bitmap2.kc
Normal file
@ -0,0 +1,50 @@
|
||||
// Fill the screen with a specific char
|
||||
void screen_fill(byte* screen, byte ch) {
|
||||
for( byte y: 0..24) {
|
||||
for(byte x:0..39) {
|
||||
*screen++ = ch;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Tables for the plotter - initialized by calling bitmap_init();
|
||||
const byte[256] bitmap_plot_ylo;
|
||||
const byte[256] bitmap_plot_yhi;
|
||||
const byte[256] bitmap_plot_bit;
|
||||
|
||||
// Initialize bitmap plotting tables
|
||||
void bitmap_init(byte* bitmap) {
|
||||
byte bits = $80;
|
||||
for(byte x : 0..255) {
|
||||
bitmap_plot_bit[x] = bits;
|
||||
bits >>= 1;
|
||||
if(bits==0) {
|
||||
bits = $80;
|
||||
}
|
||||
}
|
||||
byte* yoffs = bitmap;
|
||||
for(byte y : 0..255) {
|
||||
bitmap_plot_ylo[y] = y&$7 | <yoffs;
|
||||
bitmap_plot_yhi[y] = >yoffs;
|
||||
if((y&$7)==7) {
|
||||
yoffs = yoffs + 40*8;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Clear all graphics on the bitmap
|
||||
void bitmap_clear() {
|
||||
byte* bitmap = (byte*) { bitmap_plot_yhi[0], bitmap_plot_ylo[0] };
|
||||
for( byte y: 0..39 ) {
|
||||
for( byte x: 0..199 ) {
|
||||
*bitmap++ = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Plot a single dot in the bitmap
|
||||
void bitmap_plot(word x, byte y) {
|
||||
byte* plotter = (byte*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] };
|
||||
plotter += ( x & $fff8 );
|
||||
*plotter |= bitmap_plot_bit[<x];
|
||||
}
|
9
src/test/java/dk/camelot64/kickc/test/kc/memory.kc
Normal file
9
src/test/java/dk/camelot64/kickc/test/kc/memory.kc
Normal file
@ -0,0 +1,9 @@
|
||||
// Simple outines for working with memory
|
||||
|
||||
// Fill some memory with a value
|
||||
void fill(byte* start, word size, byte val) {
|
||||
byte* end = start + size;
|
||||
for(byte* addr = start; addr!=end; addr++) {
|
||||
*addr = val;
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
import "c64.kc"
|
||||
import "sinus.kc"
|
||||
import "memory.kc"
|
||||
|
||||
byte* SCREEN = $400;
|
||||
byte* LOGO = $2000;
|
||||
@ -98,14 +99,6 @@ void render_logo(signed word xpos) {
|
||||
}
|
||||
|
||||
|
||||
// Fill some memory with a value
|
||||
void fill(byte* start, word size, byte val) {
|
||||
byte* end = start + size;
|
||||
for(byte* addr = start; addr!=end; addr++) {
|
||||
*addr = val;
|
||||
}
|
||||
}
|
||||
|
||||
kickasm(resources "logo.png" ) {{
|
||||
.label pc_restore = *
|
||||
.pc = $2000
|
||||
|
72
src/test/java/dk/camelot64/kickc/test/kc/sine-plotter.kc
Normal file
72
src/test/java/dk/camelot64/kickc/test/kc/sine-plotter.kc
Normal file
@ -0,0 +1,72 @@
|
||||
// Generate a big sinus and plot it on a bitmap
|
||||
|
||||
import "c64.kc"
|
||||
import "sinus.kc"
|
||||
import "memory.kc"
|
||||
import "bitmap2.kc"
|
||||
|
||||
byte* SCREEN = $400;
|
||||
byte* BITMAP = $2000;
|
||||
|
||||
const word SIN_SIZE = 512;
|
||||
|
||||
signed word[512] align($100) sin;
|
||||
|
||||
signed word* sin2 = $1400;
|
||||
|
||||
kickasm {{
|
||||
.label pc_restore = *
|
||||
.pc = $1400
|
||||
.for(var i=0; i<512; i++) {
|
||||
.word sin(toRadians([i*360]/512))*320
|
||||
}
|
||||
.pc = pc_restore
|
||||
}}
|
||||
|
||||
void main() {
|
||||
asm { sei } // Disable normal interrupt
|
||||
// Disable kernal & basic
|
||||
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
|
||||
*PROCPORT = PROCPORT_RAM_IO;
|
||||
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3;
|
||||
vicSelectGfxBank(SCREEN);
|
||||
*D016 = VIC_CSEL;
|
||||
*D018 = toD018(SCREEN, BITMAP);
|
||||
|
||||
fill(SCREEN, 1000, WHITE);
|
||||
bitmap_init(BITMAP);
|
||||
bitmap_clear();
|
||||
sin16s_gen2(sin, SIN_SIZE, -320, 320);
|
||||
render_sine();
|
||||
while(true) {
|
||||
(*BGCOL)++;
|
||||
}
|
||||
}
|
||||
|
||||
void render_sine() {
|
||||
word xpos = 0;
|
||||
for(word sin_idx=0; sin_idx<SIN_SIZE; sin_idx++) {
|
||||
signed word sin_val = *(sin+sin_idx<<1);
|
||||
byte ypos = wrap_y(sin_val);
|
||||
bitmap_plot(xpos,ypos);
|
||||
|
||||
signed word sin2_val = *(sin2+sin_idx<<1);
|
||||
byte ypos2 = wrap_y(sin2_val+10);
|
||||
bitmap_plot(xpos,ypos2);
|
||||
|
||||
xpos++;
|
||||
if(xpos==320) {
|
||||
xpos = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
byte wrap_y(signed word y) {
|
||||
while(y>=200) {
|
||||
y -= 200;
|
||||
}
|
||||
while(y<0) {
|
||||
y += 200;
|
||||
}
|
||||
return (byte)y;
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
PARSING src/test/java/dk/camelot64/kickc/test/kc/scrolllogo.kc
|
||||
import "c64.kc"
|
||||
import "sinus.kc"
|
||||
import "memory.kc"
|
||||
|
||||
byte* SCREEN = $400;
|
||||
byte* LOGO = $2000;
|
||||
@ -99,14 +100,6 @@ void render_logo(signed word xpos) {
|
||||
}
|
||||
|
||||
|
||||
// Fill some memory with a value
|
||||
void fill(byte* start, word size, byte val) {
|
||||
byte* end = start + size;
|
||||
for(byte* addr = start; addr!=end; addr++) {
|
||||
*addr = val;
|
||||
}
|
||||
}
|
||||
|
||||
kickasm(resources "logo.png" ) {{
|
||||
.label pc_restore = *
|
||||
.pc = $2000
|
||||
@ -616,6 +609,19 @@ Adding pre/post-modifier (word) sin16s_gen2::i ← ++ (word) sin16s_gen2::i
|
||||
Adding pre/post-modifier (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab
|
||||
Adding pre/post-modifier (word) sin8s_gen::i ← ++ (word) sin8s_gen::i
|
||||
Adding pre/post-modifier (byte) sin8s::usinx ← -- (byte) sin8s::usinx
|
||||
Importing memory.kc
|
||||
PARSING src/test/java/dk/camelot64/kickc/test/kc/memory.kc
|
||||
// Simple outines for working with memory
|
||||
|
||||
// Fill some memory with a value
|
||||
void fill(byte* start, word size, byte val) {
|
||||
byte* end = start + size;
|
||||
for(byte* addr = start; addr!=end; addr++) {
|
||||
*addr = val;
|
||||
}
|
||||
}
|
||||
|
||||
Adding pre/post-modifier (byte*) fill::addr ← ++ (byte*) fill::addr
|
||||
Adding pre/post-modifier *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL)
|
||||
Adding pre/post-modifier *((byte*) BORDERCOL) ← -- *((byte*) BORDERCOL)
|
||||
Adding pre/post-modifier (byte) render_logo::screen_idx ← ++ (byte) render_logo::screen_idx
|
||||
@ -624,7 +630,6 @@ Adding pre/post-modifier (byte) render_logo::logo_idx ← ++ (byte) render_logo:
|
||||
Adding pre/post-modifier (byte) render_logo::screen_idx ← ++ (byte) render_logo::screen_idx
|
||||
Adding pre/post-modifier (byte) render_logo::logo_idx ← ++ (byte) render_logo::logo_idx
|
||||
Adding pre/post-modifier (byte) render_logo::screen_idx ← ++ (byte) render_logo::screen_idx
|
||||
Adding pre/post-modifier (byte*) fill::addr ← ++ (byte*) fill::addr
|
||||
Added resource src/test/java/dk/camelot64/kickc/test/kc/logo.png
|
||||
SYMBOLS
|
||||
(label) @1
|
||||
@ -2276,11 +2281,29 @@ mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel mulu8_sel::@1
|
||||
mulu8_sel::@1: scope:[mulu8_sel] from
|
||||
to:mulu8_sel::@return
|
||||
@23: scope:[] from @22
|
||||
to:@24
|
||||
fill: scope:[fill] from
|
||||
(byte*~) fill::$0 ← (byte*) fill::start + (word) fill::size
|
||||
(byte*) fill::end ← (byte*~) fill::$0
|
||||
(byte*) fill::addr ← (byte*) fill::start
|
||||
to:fill::@1
|
||||
fill::@1: scope:[fill] from fill fill::@1
|
||||
*((byte*) fill::addr) ← (byte) fill::val
|
||||
(byte*) fill::addr ← ++ (byte*) fill::addr
|
||||
(bool~) fill::$1 ← (byte*) fill::addr != (byte*) fill::end
|
||||
if((bool~) fill::$1) goto fill::@1
|
||||
to:fill::@2
|
||||
fill::@2: scope:[fill] from fill::@1
|
||||
to:fill::@return
|
||||
fill::@return: scope:[fill] from fill::@2
|
||||
return
|
||||
to:@return
|
||||
@24: scope:[] from @23
|
||||
(byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) LOGO ← ((byte*)) (word/signed word/dword/signed dword) 8192
|
||||
(word) XSIN_SIZE ← (word/signed word/dword/signed dword) 512
|
||||
(signed word[512]) xsin ← { fill( 512, 0) }
|
||||
to:@24
|
||||
to:@25
|
||||
main: scope:[main] from
|
||||
asm { sei }
|
||||
*((byte*) BORDERCOL) ← (byte) WHITE
|
||||
@ -2309,9 +2332,9 @@ main::@2: scope:[main] from main::@1
|
||||
main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
@24: scope:[] from @23
|
||||
@25: scope:[] from @24
|
||||
(word) xsin_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@25
|
||||
to:@26
|
||||
loop: scope:[loop] from
|
||||
to:loop::@1
|
||||
loop::@1: scope:[loop] from loop loop::@7
|
||||
@ -2359,8 +2382,8 @@ loop::@14: scope:[loop] from
|
||||
loop::@return: scope:[loop] from loop::@3
|
||||
return
|
||||
to:@return
|
||||
@25: scope:[] from @24
|
||||
to:@26
|
||||
@26: scope:[] from @25
|
||||
to:@27
|
||||
render_logo: scope:[render_logo] from
|
||||
(byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos
|
||||
(byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
@ -2537,24 +2560,6 @@ render_logo::@28: scope:[render_logo] from
|
||||
render_logo::@return: scope:[render_logo] from render_logo::@8
|
||||
return
|
||||
to:@return
|
||||
@26: scope:[] from @25
|
||||
to:@27
|
||||
fill: scope:[fill] from
|
||||
(byte*~) fill::$0 ← (byte*) fill::start + (word) fill::size
|
||||
(byte*) fill::end ← (byte*~) fill::$0
|
||||
(byte*) fill::addr ← (byte*) fill::start
|
||||
to:fill::@1
|
||||
fill::@1: scope:[fill] from fill fill::@1
|
||||
*((byte*) fill::addr) ← (byte) fill::val
|
||||
(byte*) fill::addr ← ++ (byte*) fill::addr
|
||||
(bool~) fill::$1 ← (byte*) fill::addr != (byte*) fill::end
|
||||
if((bool~) fill::$1) goto fill::@1
|
||||
to:fill::@2
|
||||
fill::@2: scope:[fill] from fill::@1
|
||||
to:fill::@return
|
||||
fill::@return: scope:[fill] from fill::@2
|
||||
return
|
||||
to:@return
|
||||
@27: scope:[] from @26
|
||||
kickasm {{ .label pc_restore = *
|
||||
.pc = $2000
|
||||
@ -2684,6 +2689,8 @@ Removing empty block @20
|
||||
Removing empty block @21
|
||||
Removing empty block mulu16_sel::@1
|
||||
Removing empty block @22
|
||||
Removing empty block @23
|
||||
Removing empty block fill::@2
|
||||
Removing empty block main::toD0181_@1
|
||||
Removing empty block loop::@8
|
||||
Removing empty block loop::@3
|
||||
@ -2692,7 +2699,7 @@ Removing empty block loop::@10
|
||||
Removing empty block loop::@11
|
||||
Removing empty block loop::@12
|
||||
Removing empty block loop::@14
|
||||
Removing empty block @25
|
||||
Removing empty block @26
|
||||
Removing empty block render_logo::@16
|
||||
Removing empty block render_logo::@17
|
||||
Removing empty block render_logo::@18
|
||||
@ -2710,8 +2717,6 @@ Removing empty block render_logo::@26
|
||||
Removing empty block render_logo::@14
|
||||
Removing empty block render_logo::@27
|
||||
Removing empty block render_logo::@28
|
||||
Removing empty block @26
|
||||
Removing empty block fill::@2
|
||||
PROCEDURE MODIFY VARIABLE ANALYSIS
|
||||
divr16u modifies rem16u
|
||||
div32u16u modifies rem16u
|
||||
@ -2979,7 +2984,7 @@ mul16s::@return: scope:[mul16s] from mul16s::@2
|
||||
(dword) PI2_u4f28#0 ← (dword/signed dword) 1686629713
|
||||
(dword) PI_u4f28#0 ← (dword/signed dword) 843314857
|
||||
(dword) PI_HALF_u4f28#0 ← (dword/signed dword) 421657428
|
||||
to:@23
|
||||
to:@24
|
||||
sin16s_gen2: scope:[sin16s_gen2] from main::@2
|
||||
(signed word*) sin16s_gen2::sintab#6 ← phi( main::@2/(signed word*) sin16s_gen2::sintab#1 )
|
||||
(word) rem16u#21 ← phi( main::@2/(word) rem16u#23 )
|
||||
@ -3210,13 +3215,33 @@ mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2
|
||||
(word) mulu16_sel::return#6 ← (word) mulu16_sel::return#12
|
||||
return
|
||||
to:@return
|
||||
@23: scope:[] from @16
|
||||
fill: scope:[fill] from main::@3 main::@4
|
||||
(byte) fill::val#3 ← phi( main::@3/(byte) fill::val#0 main::@4/(byte) fill::val#1 )
|
||||
(word) fill::size#2 ← phi( main::@3/(word) fill::size#0 main::@4/(word) fill::size#1 )
|
||||
(byte*) fill::start#2 ← phi( main::@3/(byte*) fill::start#0 main::@4/(byte*) fill::start#1 )
|
||||
(byte*~) fill::$0 ← (byte*) fill::start#2 + (word) fill::size#2
|
||||
(byte*) fill::end#0 ← (byte*~) fill::$0
|
||||
(byte*) fill::addr#0 ← (byte*) fill::start#2
|
||||
to:fill::@1
|
||||
fill::@1: scope:[fill] from fill fill::@1
|
||||
(byte*) fill::end#1 ← phi( fill/(byte*) fill::end#0 fill::@1/(byte*) fill::end#1 )
|
||||
(byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 )
|
||||
(byte) fill::val#2 ← phi( fill/(byte) fill::val#3 fill::@1/(byte) fill::val#2 )
|
||||
*((byte*) fill::addr#2) ← (byte) fill::val#2
|
||||
(byte*) fill::addr#1 ← ++ (byte*) fill::addr#2
|
||||
(bool~) fill::$1 ← (byte*) fill::addr#1 != (byte*) fill::end#1
|
||||
if((bool~) fill::$1) goto fill::@1
|
||||
to:fill::@return
|
||||
fill::@return: scope:[fill] from fill::@1
|
||||
return
|
||||
to:@return
|
||||
@24: scope:[] from @16
|
||||
(word) rem16u#31 ← phi( @16/(word) rem16u#32 )
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) LOGO#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192
|
||||
(word) XSIN_SIZE#0 ← (word/signed word/dword/signed dword) 512
|
||||
(signed word[512]) xsin#0 ← { fill( 512, 0) }
|
||||
to:@24
|
||||
to:@25
|
||||
main: scope:[main] from @27
|
||||
(word) xsin_idx#28 ← phi( @27/(word) xsin_idx#16 )
|
||||
(word) rem16u#37 ← phi( @27/(word) rem16u#25 )
|
||||
@ -3323,10 +3348,10 @@ main::@return: scope:[main] from main::@7
|
||||
(word) xsin_idx#1 ← (word) xsin_idx#8
|
||||
return
|
||||
to:@return
|
||||
@24: scope:[] from @23
|
||||
(word) rem16u#28 ← phi( @23/(word) rem16u#31 )
|
||||
(byte*) LOGO#3 ← phi( @23/(byte*) LOGO#0 )
|
||||
(byte*) SCREEN#20 ← phi( @23/(byte*) SCREEN#0 )
|
||||
@25: scope:[] from @24
|
||||
(word) rem16u#28 ← phi( @24/(word) rem16u#31 )
|
||||
(byte*) LOGO#3 ← phi( @24/(byte*) LOGO#0 )
|
||||
(byte*) SCREEN#20 ← phi( @24/(byte*) SCREEN#0 )
|
||||
(word) xsin_idx#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@27
|
||||
loop: scope:[loop] from main::@6
|
||||
@ -3556,31 +3581,11 @@ render_logo::@13: scope:[render_logo] from render_logo::@12
|
||||
render_logo::@return: scope:[render_logo] from render_logo::@12 render_logo::@5
|
||||
return
|
||||
to:@return
|
||||
fill: scope:[fill] from main::@3 main::@4
|
||||
(byte) fill::val#3 ← phi( main::@3/(byte) fill::val#0 main::@4/(byte) fill::val#1 )
|
||||
(word) fill::size#2 ← phi( main::@3/(word) fill::size#0 main::@4/(word) fill::size#1 )
|
||||
(byte*) fill::start#2 ← phi( main::@3/(byte*) fill::start#0 main::@4/(byte*) fill::start#1 )
|
||||
(byte*~) fill::$0 ← (byte*) fill::start#2 + (word) fill::size#2
|
||||
(byte*) fill::end#0 ← (byte*~) fill::$0
|
||||
(byte*) fill::addr#0 ← (byte*) fill::start#2
|
||||
to:fill::@1
|
||||
fill::@1: scope:[fill] from fill fill::@1
|
||||
(byte*) fill::end#1 ← phi( fill/(byte*) fill::end#0 fill::@1/(byte*) fill::end#1 )
|
||||
(byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 )
|
||||
(byte) fill::val#2 ← phi( fill/(byte) fill::val#3 fill::@1/(byte) fill::val#2 )
|
||||
*((byte*) fill::addr#2) ← (byte) fill::val#2
|
||||
(byte*) fill::addr#1 ← ++ (byte*) fill::addr#2
|
||||
(bool~) fill::$1 ← (byte*) fill::addr#1 != (byte*) fill::end#1
|
||||
if((bool~) fill::$1) goto fill::@1
|
||||
to:fill::@return
|
||||
fill::@return: scope:[fill] from fill::@1
|
||||
return
|
||||
to:@return
|
||||
@27: scope:[] from @24
|
||||
(word) xsin_idx#16 ← phi( @24/(word) xsin_idx#2 )
|
||||
(word) rem16u#25 ← phi( @24/(word) rem16u#28 )
|
||||
(byte*) LOGO#2 ← phi( @24/(byte*) LOGO#3 )
|
||||
(byte*) SCREEN#8 ← phi( @24/(byte*) SCREEN#20 )
|
||||
@27: scope:[] from @25
|
||||
(word) xsin_idx#16 ← phi( @25/(word) xsin_idx#2 )
|
||||
(word) rem16u#25 ← phi( @25/(word) rem16u#28 )
|
||||
(byte*) LOGO#2 ← phi( @25/(byte*) LOGO#3 )
|
||||
(byte*) SCREEN#8 ← phi( @25/(byte*) SCREEN#20 )
|
||||
kickasm {{ .label pc_restore = *
|
||||
.pc = $2000
|
||||
logo:
|
||||
@ -3603,8 +3608,8 @@ fill::@return: scope:[fill] from fill::@1
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @16
|
||||
(label) @23
|
||||
(label) @24
|
||||
(label) @25
|
||||
(label) @27
|
||||
(label) @28
|
||||
(label) @5
|
||||
@ -4448,6 +4453,9 @@ Not aliassing across scopes: mul16u::a#2 mulu16_sel::v1#5
|
||||
Not aliassing across scopes: mul16u::b#1 mulu16_sel::v2#5
|
||||
Not aliassing across scopes: mul16u::return#3 mul16u::return#1
|
||||
Not aliassing across scopes: mulu16_sel::$0 mul16u::return#6
|
||||
Not aliassing across scopes: fill::start#2 fill::start#0
|
||||
Not aliassing across scopes: fill::size#2 fill::size#0
|
||||
Not aliassing across scopes: fill::val#3 fill::val#0
|
||||
Not aliassing across scopes: SCREEN#1 SCREEN#8
|
||||
Not aliassing across scopes: LOGO#1 LOGO#2
|
||||
Not aliassing across scopes: rem16u#37 rem16u#25
|
||||
@ -4469,9 +4477,6 @@ Not aliassing across scopes: SCREEN#27 SCREEN#29
|
||||
Not aliassing across scopes: render_logo::xpos#0 loop::xpos#0
|
||||
Not aliassing across scopes: render_logo::xpos#1 render_logo::xpos#0
|
||||
Not aliassing across scopes: SCREEN#21 SCREEN#22
|
||||
Not aliassing across scopes: fill::start#2 fill::start#0
|
||||
Not aliassing across scopes: fill::size#2 fill::size#0
|
||||
Not aliassing across scopes: fill::val#3 fill::val#0
|
||||
Not aliassing across scopes: rem16u#19 rem16u#9
|
||||
Not aliassing across scopes: xsin_idx#12 xsin_idx#1
|
||||
Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#7
|
||||
@ -4565,6 +4570,8 @@ Alias (signed word) sin16s::sinx#1 = (signed word~) sin16s::$21
|
||||
Alias (dword) mul16u::return#3 = (dword) mul16u::return#6
|
||||
Alias (byte) mulu16_sel::select#5 = (byte) mulu16_sel::select#6
|
||||
Alias (word) mulu16_sel::return#12 = (word) mulu16_sel::return#5 (word~) mulu16_sel::$2 (word) mulu16_sel::return#6
|
||||
Alias (byte*) fill::end#0 = (byte*~) fill::$0
|
||||
Alias (byte*) fill::addr#0 = (byte*) fill::start#2
|
||||
Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1
|
||||
Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1
|
||||
Alias (byte*) SCREEN#1 = (byte*) SCREEN#15 (byte*) SCREEN#9 (byte*) SCREEN#2 (byte*) SCREEN#16 (byte*) SCREEN#10
|
||||
@ -4599,8 +4606,6 @@ Alias (byte*) SCREEN#13 = (byte*) SCREEN#6
|
||||
Alias (byte) render_logo::screen_idx#10 = (byte) render_logo::screen_idx#14
|
||||
Alias (byte*) SCREEN#14 = (byte*) SCREEN#7
|
||||
Alias (byte) render_logo::screen_idx#11 = (byte) render_logo::screen_idx#12
|
||||
Alias (byte*) fill::end#0 = (byte*~) fill::$0
|
||||
Alias (byte*) fill::addr#0 = (byte*) fill::start#2
|
||||
Alias (word) xsin_idx#16 = (word) xsin_idx#2
|
||||
Alias (word) rem16u#10 = (word) rem16u#19
|
||||
Alias (word) xsin_idx#12 = (word) xsin_idx#6
|
||||
@ -4670,6 +4675,9 @@ Not aliassing across scopes: mul16u::a#2 mulu16_sel::v1#5
|
||||
Not aliassing across scopes: mul16u::b#1 mulu16_sel::v2#5
|
||||
Not aliassing across scopes: mul16u::return#3 mul16u::res#2
|
||||
Not aliassing across scopes: mulu16_sel::$0 mul16u::return#3
|
||||
Not aliassing across scopes: fill::addr#0 fill::start#0
|
||||
Not aliassing across scopes: fill::size#2 fill::size#0
|
||||
Not aliassing across scopes: fill::val#3 fill::val#0
|
||||
Not aliassing across scopes: SCREEN#1 SCREEN#0
|
||||
Not aliassing across scopes: LOGO#1 LOGO#0
|
||||
Not aliassing across scopes: rem16u#30 rem16u#0
|
||||
@ -4692,9 +4700,6 @@ Not aliassing across scopes: render_logo::xpos#0 loop::xpos#0
|
||||
Not aliassing across scopes: render_logo::xpos#1 render_logo::xpos#0
|
||||
Not aliassing across scopes: SCREEN#17 SCREEN#22
|
||||
Not aliassing identity: SCREEN#14 SCREEN#14
|
||||
Not aliassing across scopes: fill::addr#0 fill::start#0
|
||||
Not aliassing across scopes: fill::size#2 fill::size#0
|
||||
Not aliassing across scopes: fill::val#3 fill::val#0
|
||||
Not aliassing across scopes: rem16u#10 rem16u#17
|
||||
Not aliassing across scopes: xsin_idx#12 xsin_idx#0
|
||||
Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#4
|
||||
@ -4774,6 +4779,9 @@ Not aliassing across scopes: mul16u::a#2 mulu16_sel::v1#5
|
||||
Not aliassing across scopes: mul16u::b#1 mulu16_sel::v2#5
|
||||
Not aliassing across scopes: mul16u::return#3 mul16u::res#2
|
||||
Not aliassing across scopes: mulu16_sel::$0 mul16u::return#3
|
||||
Not aliassing across scopes: fill::addr#0 fill::start#0
|
||||
Not aliassing across scopes: fill::size#2 fill::size#0
|
||||
Not aliassing across scopes: fill::val#3 fill::val#0
|
||||
Not aliassing across scopes: SCREEN#1 SCREEN#0
|
||||
Not aliassing across scopes: LOGO#1 LOGO#0
|
||||
Not aliassing across scopes: rem16u#30 rem16u#0
|
||||
@ -4796,9 +4804,6 @@ Not aliassing across scopes: render_logo::xpos#0 loop::xpos#0
|
||||
Not aliassing across scopes: render_logo::xpos#1 render_logo::xpos#0
|
||||
Not aliassing across scopes: SCREEN#17 SCREEN#22
|
||||
Not aliassing identity: SCREEN#14 SCREEN#14
|
||||
Not aliassing across scopes: fill::addr#0 fill::start#0
|
||||
Not aliassing across scopes: fill::size#2 fill::size#0
|
||||
Not aliassing across scopes: fill::val#3 fill::val#0
|
||||
Not aliassing across scopes: rem16u#10 rem16u#17
|
||||
Not aliassing across scopes: xsin_idx#12 xsin_idx#0
|
||||
Self Phi Eliminated (word) divr16u::divisor#2
|
||||
@ -4807,6 +4812,8 @@ Self Phi Eliminated (signed word) sin16s_gen2::offs#1
|
||||
Self Phi Eliminated (dword) sin16s_gen2::step#1
|
||||
Self Phi Eliminated (word) sin16s_gen2::wavelength#2
|
||||
Self Phi Eliminated (word) rem16u#16
|
||||
Self Phi Eliminated (byte) fill::val#2
|
||||
Self Phi Eliminated (byte*) fill::end#1
|
||||
Self Phi Eliminated (byte*) SCREEN#29
|
||||
Self Phi Eliminated (word) rem16u#23
|
||||
Self Phi Eliminated (word) xsin_idx#13
|
||||
@ -4817,8 +4824,6 @@ Self Phi Eliminated (byte*) SCREEN#11
|
||||
Self Phi Eliminated (byte*) SCREEN#12
|
||||
Self Phi Eliminated (byte*) SCREEN#13
|
||||
Self Phi Eliminated (byte*) SCREEN#14
|
||||
Self Phi Eliminated (byte) fill::val#2
|
||||
Self Phi Eliminated (byte*) fill::end#1
|
||||
Succesful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (word) divr16u::divisor#2 (word) divr16u::divisor#6
|
||||
Redundant Phi (dword) div32u16u::dividend#1 (dword) div32u16u::dividend#0
|
||||
@ -4840,6 +4845,8 @@ Redundant Phi (dword) sin16s_gen2::step#1 (dword) sin16s_gen2::step#0
|
||||
Redundant Phi (word) sin16s_gen2::wavelength#2 (word) sin16s_gen2::wavelength#1
|
||||
Redundant Phi (word) rem16u#16 (word) rem16u#15
|
||||
Redundant Phi (dword) sin16s::x#3 (dword) sin16s::x#0
|
||||
Redundant Phi (byte) fill::val#2 (byte) fill::val#3
|
||||
Redundant Phi (byte*) fill::end#1 (byte*) fill::end#0
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) LOGO#1 (byte*) LOGO#0
|
||||
Redundant Phi (word) rem16u#30 (word) rem16u#0
|
||||
@ -4860,8 +4867,6 @@ Redundant Phi (byte*) SCREEN#11 (byte*) SCREEN#17
|
||||
Redundant Phi (byte*) SCREEN#12 (byte*) SCREEN#11
|
||||
Redundant Phi (byte*) SCREEN#13 (byte*) SCREEN#17
|
||||
Redundant Phi (byte*) SCREEN#14 (byte*) SCREEN#13
|
||||
Redundant Phi (byte) fill::val#2 (byte) fill::val#3
|
||||
Redundant Phi (byte*) fill::end#1 (byte*) fill::end#0
|
||||
Redundant Phi (word) rem16u#10 (word) rem16u#17
|
||||
Redundant Phi (word) xsin_idx#12 (word) xsin_idx#0
|
||||
Succesful SSA optimization Pass2RedundantPhiElimination
|
||||
@ -4876,6 +4881,7 @@ Simple Condition (bool~) sin16s_gen2::$11 if((word) sin16s_gen2::i#1<(word) sin1
|
||||
Simple Condition (bool~) sin16s::$1 if((dword) sin16s::x#0<(dword) PI_u4f28#0) goto sin16s::@1
|
||||
Simple Condition (bool~) sin16s::$4 if((dword) sin16s::x#4<(dword) PI_HALF_u4f28#0) goto sin16s::@2
|
||||
Simple Condition (bool~) sin16s::$19 if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@3
|
||||
Simple Condition (bool~) fill::$1 if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1
|
||||
Simple Condition (bool~) main::$4 if((byte) main::ch#1!=(byte/word/signed word/dword/signed dword) 240) goto main::@1
|
||||
Simple Condition (bool~) loop::$0 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@5
|
||||
Simple Condition (bool~) loop::$5 if((word) xsin_idx#3!=(word/signed dword/dword~) loop::$3) goto loop::@7
|
||||
@ -4884,7 +4890,6 @@ Simple Condition (bool~) render_logo::$7 if((byte) render_logo::screen_idx#13!=(
|
||||
Simple Condition (bool~) render_logo::$18 if((byte) render_logo::screen_idx#8!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@6
|
||||
Simple Condition (bool~) render_logo::$41 if((byte) render_logo::logo_idx#5!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@10
|
||||
Simple Condition (bool~) render_logo::$62 if((byte) render_logo::screen_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@13
|
||||
Simple Condition (bool~) fill::$1 if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1
|
||||
Succesful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) RASTER#0 = ((byte*))53266
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))53280
|
||||
@ -5022,11 +5027,11 @@ Succesful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) mul16u::@3
|
||||
Culled Empty Block (label) @16
|
||||
Culled Empty Block (label) @23
|
||||
Culled Empty Block (label) @24
|
||||
Culled Empty Block (label) main::toD0181_@return
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) @24
|
||||
Culled Empty Block (label) @25
|
||||
Culled Empty Block (label) loop::@2
|
||||
Culled Empty Block (label) loop::@5
|
||||
Not culling empty block because it shares successor with its predecessor. (label) loop::@13
|
||||
@ -5251,33 +5256,33 @@ Inlining constant with different constant siblings (const byte) mulu16_sel::sele
|
||||
Inlining constant with var siblings (const byte) mulu16_sel::select#4
|
||||
Inlining constant with different constant siblings (const byte) mulu16_sel::select#4
|
||||
Inlining constant with different constant siblings (const byte) mulu16_sel::select#4
|
||||
Inlining constant with var siblings (const byte) main::ch#0
|
||||
Inlining constant with var siblings (const byte) main::ch#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::logo_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::logo_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::logo_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::logo_idx#1
|
||||
Inlining constant with var siblings (const word) fill::size#0
|
||||
Inlining constant with var siblings (const word) fill::size#1
|
||||
Inlining constant with var siblings (const byte) fill::val#0
|
||||
Inlining constant with different constant siblings (const byte) fill::val#0
|
||||
Inlining constant with var siblings (const byte) fill::val#1
|
||||
Inlining constant with var siblings (const byte) main::ch#0
|
||||
Inlining constant with var siblings (const byte) main::ch#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#0
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::screen_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::logo_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::logo_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::logo_idx#1
|
||||
Inlining constant with var siblings (const byte) render_logo::logo_idx#1
|
||||
Inlining constant with var siblings (const word) xsin_idx#16
|
||||
Inlining constant with var siblings (const word) xsin_idx#16
|
||||
Inlining constant with var siblings (const word) xsin_idx#16
|
||||
|
784
src/test/java/dk/camelot64/kickc/test/ref/sine-plotter.asm
Normal file
784
src/test/java/dk/camelot64/kickc/test/ref/sine-plotter.asm
Normal file
@ -0,0 +1,784 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label PROCPORT_DDR = 0
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
.label PROCPORT = 1
|
||||
.const PROCPORT_RAM_IO = $35
|
||||
.label BGCOL = $d021
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D016 = $d016
|
||||
.const VIC_CSEL = 8
|
||||
.label D018 = $d018
|
||||
.label CIA2_PORT_A = $dd00
|
||||
.label CIA2_PORT_A_DDR = $dd02
|
||||
.const WHITE = 1
|
||||
.const PI2_u4f28 = $6487ed51
|
||||
.const PI_u4f28 = $3243f6a9
|
||||
.const PI_HALF_u4f28 = $1921fb54
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
.const SIN_SIZE = $200
|
||||
.label sin2 = $1400
|
||||
.label rem16u = 2
|
||||
.label pc_restore = *
|
||||
.pc = $1400
|
||||
.for(var i=0; i<512; i++) {
|
||||
.word sin(toRadians([i*360]/512))*320
|
||||
}
|
||||
.pc = pc_restore
|
||||
|
||||
jsr main
|
||||
main: {
|
||||
.const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6
|
||||
.const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f
|
||||
sei
|
||||
lda #PROCPORT_DDR_MEMORY_MASK
|
||||
sta PROCPORT_DDR
|
||||
lda #PROCPORT_RAM_IO
|
||||
sta PROCPORT
|
||||
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
|
||||
sta D011
|
||||
lda #3
|
||||
sta CIA2_PORT_A_DDR
|
||||
lda #vicSelectGfxBank1_toDd001_return
|
||||
sta CIA2_PORT_A
|
||||
lda #VIC_CSEL
|
||||
sta D016
|
||||
lda #toD0181_return
|
||||
sta D018
|
||||
jsr fill
|
||||
jsr bitmap_init
|
||||
jsr bitmap_clear
|
||||
jsr sin16s_gen2
|
||||
jsr render_sine
|
||||
b2:
|
||||
inc BGCOL
|
||||
jmp b2
|
||||
}
|
||||
render_sine: {
|
||||
.label _0 = 6
|
||||
.label _1 = 6
|
||||
.label _4 = 6
|
||||
.label _5 = 6
|
||||
.label sin_val = 6
|
||||
.label sin2_val = 6
|
||||
.label xpos = 4
|
||||
.label sin_idx = 2
|
||||
lda #<0
|
||||
sta xpos
|
||||
sta xpos+1
|
||||
sta sin_idx
|
||||
sta sin_idx+1
|
||||
b1:
|
||||
lda sin_idx
|
||||
asl
|
||||
sta _0
|
||||
lda sin_idx+1
|
||||
rol
|
||||
sta _0+1
|
||||
clc
|
||||
lda _1
|
||||
adc #<sin
|
||||
sta _1
|
||||
lda _1+1
|
||||
adc #>sin
|
||||
sta _1+1
|
||||
ldy #0
|
||||
lda (sin_val),y
|
||||
tax
|
||||
iny
|
||||
lda (sin_val),y
|
||||
stx sin_val
|
||||
sta sin_val+1
|
||||
jsr wrap_y
|
||||
tax
|
||||
jsr bitmap_plot
|
||||
lda sin_idx
|
||||
asl
|
||||
sta _4
|
||||
lda sin_idx+1
|
||||
rol
|
||||
sta _4+1
|
||||
clc
|
||||
lda _5
|
||||
adc #<sin2
|
||||
sta _5
|
||||
lda _5+1
|
||||
adc #>sin2
|
||||
sta _5+1
|
||||
ldy #0
|
||||
lda (sin2_val),y
|
||||
tax
|
||||
iny
|
||||
lda (sin2_val),y
|
||||
stx sin2_val
|
||||
sta sin2_val+1
|
||||
clc
|
||||
lda wrap_y.y
|
||||
adc #<$a
|
||||
sta wrap_y.y
|
||||
lda wrap_y.y+1
|
||||
adc #>$a
|
||||
sta wrap_y.y+1
|
||||
jsr wrap_y
|
||||
tax
|
||||
jsr bitmap_plot
|
||||
inc xpos
|
||||
bne !+
|
||||
inc xpos+1
|
||||
!:
|
||||
lda xpos+1
|
||||
cmp #>$140
|
||||
bne b2
|
||||
lda xpos
|
||||
cmp #<$140
|
||||
bne b2
|
||||
lda #<0
|
||||
sta xpos
|
||||
sta xpos+1
|
||||
b2:
|
||||
inc sin_idx
|
||||
bne !+
|
||||
inc sin_idx+1
|
||||
!:
|
||||
lda sin_idx+1
|
||||
cmp #>SIN_SIZE
|
||||
bcs !b1+
|
||||
jmp b1
|
||||
!b1:
|
||||
bne !+
|
||||
lda sin_idx
|
||||
cmp #<SIN_SIZE
|
||||
bcs !b1+
|
||||
jmp b1
|
||||
!b1:
|
||||
!:
|
||||
rts
|
||||
}
|
||||
bitmap_plot: {
|
||||
.label _1 = $10
|
||||
.label plotter = 6
|
||||
.label x = 4
|
||||
.label _3 = 6
|
||||
lda bitmap_plot_yhi,x
|
||||
sta _3+1
|
||||
lda bitmap_plot_ylo,x
|
||||
sta _3
|
||||
lda x
|
||||
and #<$fff8
|
||||
sta _1
|
||||
lda x+1
|
||||
and #>$fff8
|
||||
sta _1+1
|
||||
lda plotter
|
||||
clc
|
||||
adc _1
|
||||
sta plotter
|
||||
lda plotter+1
|
||||
adc _1+1
|
||||
sta plotter+1
|
||||
lda x
|
||||
tay
|
||||
lda bitmap_plot_bit,y
|
||||
ldy #0
|
||||
ora (plotter),y
|
||||
sta (plotter),y
|
||||
rts
|
||||
}
|
||||
wrap_y: {
|
||||
.label y = 6
|
||||
b1:
|
||||
lda y
|
||||
cmp #$c8
|
||||
lda y+1
|
||||
sbc #0
|
||||
bvc !+
|
||||
eor #$80
|
||||
!:
|
||||
bpl b2
|
||||
b4:
|
||||
lda y+1
|
||||
bmi b5
|
||||
lda y
|
||||
rts
|
||||
b5:
|
||||
clc
|
||||
lda y
|
||||
adc #<$c8
|
||||
sta y
|
||||
lda y+1
|
||||
adc #>$c8
|
||||
sta y+1
|
||||
jmp b4
|
||||
b2:
|
||||
lda y
|
||||
sec
|
||||
sbc #<$c8
|
||||
sta y
|
||||
lda y+1
|
||||
sbc #>$c8
|
||||
sta y+1
|
||||
jmp b1
|
||||
}
|
||||
sin16s_gen2: {
|
||||
.const min = -$140
|
||||
.const max = $140
|
||||
.label ampl = max-min
|
||||
.const offs = min+(ampl>>1)
|
||||
.label _5 = $c
|
||||
.label _6 = 6
|
||||
.label _8 = 6
|
||||
.label step = $1b
|
||||
.label sintab = 2
|
||||
.label x = 8
|
||||
.label i = 4
|
||||
jsr div32u16u
|
||||
lda #<0
|
||||
sta i
|
||||
sta i+1
|
||||
lda #<sin
|
||||
sta sintab
|
||||
lda #>sin
|
||||
sta sintab+1
|
||||
lda #0
|
||||
sta x
|
||||
sta x+1
|
||||
sta x+2
|
||||
sta x+3
|
||||
b1:
|
||||
lda x
|
||||
sta sin16s.x
|
||||
lda x+1
|
||||
sta sin16s.x+1
|
||||
lda x+2
|
||||
sta sin16s.x+2
|
||||
lda x+3
|
||||
sta sin16s.x+3
|
||||
jsr sin16s
|
||||
jsr mul16s
|
||||
lda _5+2
|
||||
sta _6
|
||||
lda _5+3
|
||||
sta _6+1
|
||||
clc
|
||||
lda _8
|
||||
adc #<offs
|
||||
sta _8
|
||||
lda _8+1
|
||||
adc #>offs
|
||||
sta _8+1
|
||||
ldy #0
|
||||
lda _8
|
||||
sta (sintab),y
|
||||
iny
|
||||
lda _8+1
|
||||
sta (sintab),y
|
||||
lda sintab
|
||||
clc
|
||||
adc #2
|
||||
sta sintab
|
||||
bcc !+
|
||||
inc sintab+1
|
||||
!:
|
||||
lda x
|
||||
clc
|
||||
adc step
|
||||
sta x
|
||||
lda x+1
|
||||
adc step+1
|
||||
sta x+1
|
||||
lda x+2
|
||||
adc step+2
|
||||
sta x+2
|
||||
lda x+3
|
||||
adc step+3
|
||||
sta x+3
|
||||
inc i
|
||||
bne !+
|
||||
inc i+1
|
||||
!:
|
||||
lda i+1
|
||||
cmp #>SIN_SIZE
|
||||
bcc b1
|
||||
bne !+
|
||||
lda i
|
||||
cmp #<SIN_SIZE
|
||||
bcc b1
|
||||
!:
|
||||
rts
|
||||
}
|
||||
mul16s: {
|
||||
.label _6 = 6
|
||||
.label _16 = 6
|
||||
.label m = $c
|
||||
.label return = $c
|
||||
.label a = $17
|
||||
lda a
|
||||
sta mul16u.a
|
||||
lda a+1
|
||||
sta mul16u.a+1
|
||||
lda #<sin16s_gen2.ampl
|
||||
sta mul16u.b
|
||||
lda #>sin16s_gen2.ampl
|
||||
sta mul16u.b+1
|
||||
jsr mul16u
|
||||
lda a+1
|
||||
bpl b2
|
||||
lda m+2
|
||||
sta _6
|
||||
lda m+3
|
||||
sta _6+1
|
||||
lda _16
|
||||
sec
|
||||
sbc #<sin16s_gen2.ampl
|
||||
sta _16
|
||||
lda _16+1
|
||||
sbc #>sin16s_gen2.ampl
|
||||
sta _16+1
|
||||
lda _16
|
||||
sta m+2
|
||||
lda _16+1
|
||||
sta m+3
|
||||
b2:
|
||||
rts
|
||||
}
|
||||
mul16u: {
|
||||
.label mb = $12
|
||||
.label a = $10
|
||||
.label res = $c
|
||||
.label return = $c
|
||||
.label b = 6
|
||||
lda b
|
||||
sta mb
|
||||
lda b+1
|
||||
sta mb+1
|
||||
lda #0
|
||||
sta mb+2
|
||||
sta mb+3
|
||||
sta res
|
||||
sta res+1
|
||||
sta res+2
|
||||
sta res+3
|
||||
b1:
|
||||
lda a
|
||||
bne b2
|
||||
lda a+1
|
||||
bne b2
|
||||
rts
|
||||
b2:
|
||||
lda a
|
||||
and #1
|
||||
cmp #0
|
||||
beq b4
|
||||
lda res
|
||||
clc
|
||||
adc mb
|
||||
sta res
|
||||
lda res+1
|
||||
adc mb+1
|
||||
sta res+1
|
||||
lda res+2
|
||||
adc mb+2
|
||||
sta res+2
|
||||
lda res+3
|
||||
adc mb+3
|
||||
sta res+3
|
||||
b4:
|
||||
clc
|
||||
ror a+1
|
||||
ror a
|
||||
asl mb
|
||||
rol mb+1
|
||||
rol mb+2
|
||||
rol mb+3
|
||||
jmp b1
|
||||
}
|
||||
sin16s: {
|
||||
.label _6 = $c
|
||||
.label x = $c
|
||||
.label return = $17
|
||||
.label x1 = $1f
|
||||
.label x2 = $19
|
||||
.label x3 = $19
|
||||
.label x3_6 = 6
|
||||
.label usinx = $17
|
||||
.label x4 = $19
|
||||
.label x5 = 6
|
||||
.label x5_128 = 6
|
||||
.label sinx = $17
|
||||
.label isUpper = $16
|
||||
lda x+3
|
||||
cmp #>PI_u4f28>>$10
|
||||
bcc b4
|
||||
bne !+
|
||||
lda x+2
|
||||
cmp #<PI_u4f28>>$10
|
||||
bcc b4
|
||||
bne !+
|
||||
lda x+1
|
||||
cmp #>PI_u4f28
|
||||
bcc b4
|
||||
bne !+
|
||||
lda x
|
||||
cmp #<PI_u4f28
|
||||
bcc b4
|
||||
!:
|
||||
lda x
|
||||
sec
|
||||
sbc #<PI_u4f28
|
||||
sta x
|
||||
lda x+1
|
||||
sbc #>PI_u4f28
|
||||
sta x+1
|
||||
lda x+2
|
||||
sbc #<PI_u4f28>>$10
|
||||
sta x+2
|
||||
lda x+3
|
||||
sbc #>PI_u4f28>>$10
|
||||
sta x+3
|
||||
lda #1
|
||||
sta isUpper
|
||||
jmp b1
|
||||
b4:
|
||||
lda #0
|
||||
sta isUpper
|
||||
b1:
|
||||
lda x+3
|
||||
cmp #>PI_HALF_u4f28>>$10
|
||||
bcc b2
|
||||
bne !+
|
||||
lda x+2
|
||||
cmp #<PI_HALF_u4f28>>$10
|
||||
bcc b2
|
||||
bne !+
|
||||
lda x+1
|
||||
cmp #>PI_HALF_u4f28
|
||||
bcc b2
|
||||
bne !+
|
||||
lda x
|
||||
cmp #<PI_HALF_u4f28
|
||||
bcc b2
|
||||
!:
|
||||
lda #<PI_u4f28
|
||||
sec
|
||||
sbc x
|
||||
sta x
|
||||
lda #>PI_u4f28
|
||||
sbc x+1
|
||||
sta x+1
|
||||
lda #<PI_u4f28>>$10
|
||||
sbc x+2
|
||||
sta x+2
|
||||
lda #>PI_u4f28>>$10
|
||||
sbc x+3
|
||||
sta x+3
|
||||
b2:
|
||||
ldy #3
|
||||
!:
|
||||
asl _6
|
||||
rol _6+1
|
||||
rol _6+2
|
||||
rol _6+3
|
||||
dey
|
||||
bne !-
|
||||
lda _6+2
|
||||
sta x1
|
||||
lda _6+3
|
||||
sta x1+1
|
||||
lda x1
|
||||
sta mulu16_sel.v1
|
||||
lda x1+1
|
||||
sta mulu16_sel.v1+1
|
||||
lda x1
|
||||
sta mulu16_sel.v2
|
||||
lda x1+1
|
||||
sta mulu16_sel.v2+1
|
||||
ldx #0
|
||||
jsr mulu16_sel
|
||||
lda mulu16_sel.return
|
||||
sta x2
|
||||
lda mulu16_sel.return+1
|
||||
sta x2+1
|
||||
lda x1
|
||||
sta mulu16_sel.v2
|
||||
lda x1+1
|
||||
sta mulu16_sel.v2+1
|
||||
ldx #1
|
||||
jsr mulu16_sel
|
||||
lda mulu16_sel.return
|
||||
sta mulu16_sel.return_1
|
||||
lda mulu16_sel.return+1
|
||||
sta mulu16_sel.return_1+1
|
||||
ldx #1
|
||||
lda #<$10000/6
|
||||
sta mulu16_sel.v2
|
||||
lda #>$10000/6
|
||||
sta mulu16_sel.v2+1
|
||||
jsr mulu16_sel
|
||||
lda x1
|
||||
sec
|
||||
sbc x3_6
|
||||
sta usinx
|
||||
lda x1+1
|
||||
sbc x3_6+1
|
||||
sta usinx+1
|
||||
lda x1
|
||||
sta mulu16_sel.v2
|
||||
lda x1+1
|
||||
sta mulu16_sel.v2+1
|
||||
ldx #0
|
||||
jsr mulu16_sel
|
||||
lda mulu16_sel.return
|
||||
sta mulu16_sel.return_10
|
||||
lda mulu16_sel.return+1
|
||||
sta mulu16_sel.return_10+1
|
||||
lda x1
|
||||
sta mulu16_sel.v2
|
||||
lda x1+1
|
||||
sta mulu16_sel.v2+1
|
||||
ldx #0
|
||||
jsr mulu16_sel
|
||||
ldy #4
|
||||
!:
|
||||
lsr x5_128+1
|
||||
ror x5_128
|
||||
dey
|
||||
bne !-
|
||||
lda usinx
|
||||
clc
|
||||
adc x5_128
|
||||
sta usinx
|
||||
lda usinx+1
|
||||
adc x5_128+1
|
||||
sta usinx+1
|
||||
lda isUpper
|
||||
beq b3
|
||||
sec
|
||||
lda sinx
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta sinx
|
||||
lda sinx+1
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta sinx+1
|
||||
b3:
|
||||
rts
|
||||
}
|
||||
mulu16_sel: {
|
||||
.label _0 = $c
|
||||
.label _1 = $c
|
||||
.label v1 = $19
|
||||
.label v2 = 6
|
||||
.label return = 6
|
||||
.label return_1 = $19
|
||||
.label return_10 = $19
|
||||
lda v1
|
||||
sta mul16u.a
|
||||
lda v1+1
|
||||
sta mul16u.a+1
|
||||
jsr mul16u
|
||||
cpx #0
|
||||
beq !e+
|
||||
!:
|
||||
asl _1
|
||||
rol _1+1
|
||||
rol _1+2
|
||||
rol _1+3
|
||||
dex
|
||||
bne !-
|
||||
!e:
|
||||
lda _1+2
|
||||
sta return
|
||||
lda _1+3
|
||||
sta return+1
|
||||
rts
|
||||
}
|
||||
div32u16u: {
|
||||
.label quotient_hi = $10
|
||||
.label quotient_lo = 6
|
||||
.label return = $1b
|
||||
lda #<PI2_u4f28>>$10
|
||||
sta divr16u.dividend
|
||||
lda #>PI2_u4f28>>$10
|
||||
sta divr16u.dividend+1
|
||||
lda #<0
|
||||
sta divr16u.rem
|
||||
sta divr16u.rem+1
|
||||
jsr divr16u
|
||||
lda divr16u.return
|
||||
sta quotient_hi
|
||||
lda divr16u.return+1
|
||||
sta quotient_hi+1
|
||||
lda #<PI2_u4f28&$ffff
|
||||
sta divr16u.dividend
|
||||
lda #>PI2_u4f28&$ffff
|
||||
sta divr16u.dividend+1
|
||||
jsr divr16u
|
||||
lda quotient_hi
|
||||
sta return+2
|
||||
lda quotient_hi+1
|
||||
sta return+3
|
||||
lda quotient_lo
|
||||
sta return
|
||||
lda quotient_lo+1
|
||||
sta return+1
|
||||
rts
|
||||
}
|
||||
divr16u: {
|
||||
.label rem = 2
|
||||
.label dividend = 4
|
||||
.label quotient = 6
|
||||
.label return = 6
|
||||
ldx #0
|
||||
txa
|
||||
sta quotient
|
||||
sta quotient+1
|
||||
b1:
|
||||
asl rem
|
||||
rol rem+1
|
||||
lda dividend+1
|
||||
and #$80
|
||||
cmp #0
|
||||
beq b2
|
||||
lda #1
|
||||
ora rem
|
||||
sta rem
|
||||
b2:
|
||||
asl dividend
|
||||
rol dividend+1
|
||||
asl quotient
|
||||
rol quotient+1
|
||||
lda rem+1
|
||||
cmp #>SIN_SIZE
|
||||
bcc b3
|
||||
bne !+
|
||||
lda rem
|
||||
cmp #<SIN_SIZE
|
||||
bcc b3
|
||||
!:
|
||||
inc quotient
|
||||
bne !+
|
||||
inc quotient+1
|
||||
!:
|
||||
lda rem
|
||||
sec
|
||||
sbc #<SIN_SIZE
|
||||
sta rem
|
||||
lda rem+1
|
||||
sbc #>SIN_SIZE
|
||||
sta rem+1
|
||||
b3:
|
||||
inx
|
||||
cpx #$10
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
bitmap_clear: {
|
||||
.label bitmap = 2
|
||||
.label y = $16
|
||||
.label _3 = 2
|
||||
lda bitmap_plot_ylo+0
|
||||
sta _3
|
||||
lda bitmap_plot_yhi+0
|
||||
sta _3+1
|
||||
lda #0
|
||||
sta y
|
||||
b1:
|
||||
ldx #0
|
||||
b2:
|
||||
lda #0
|
||||
tay
|
||||
sta (bitmap),y
|
||||
inc bitmap
|
||||
bne !+
|
||||
inc bitmap+1
|
||||
!:
|
||||
inx
|
||||
cpx #$c8
|
||||
bne b2
|
||||
inc y
|
||||
lda y
|
||||
cmp #$28
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
bitmap_init: {
|
||||
.label _3 = $16
|
||||
.label yoffs = 2
|
||||
ldx #0
|
||||
lda #$80
|
||||
b1:
|
||||
sta bitmap_plot_bit,x
|
||||
lsr
|
||||
cmp #0
|
||||
bne b2
|
||||
lda #$80
|
||||
b2:
|
||||
inx
|
||||
cpx #0
|
||||
bne b1
|
||||
lda #<BITMAP
|
||||
sta yoffs
|
||||
lda #>BITMAP
|
||||
sta yoffs+1
|
||||
ldx #0
|
||||
b3:
|
||||
txa
|
||||
and #7
|
||||
sta _3
|
||||
lda yoffs
|
||||
ora _3
|
||||
sta bitmap_plot_ylo,x
|
||||
lda yoffs+1
|
||||
sta bitmap_plot_yhi,x
|
||||
txa
|
||||
and #7
|
||||
cmp #7
|
||||
bne b4
|
||||
clc
|
||||
lda yoffs
|
||||
adc #<$28*8
|
||||
sta yoffs
|
||||
lda yoffs+1
|
||||
adc #>$28*8
|
||||
sta yoffs+1
|
||||
b4:
|
||||
inx
|
||||
cpx #0
|
||||
bne b3
|
||||
rts
|
||||
}
|
||||
fill: {
|
||||
.const size = $3e8
|
||||
.label end = SCREEN+size
|
||||
.label addr = 2
|
||||
lda #<SCREEN
|
||||
sta addr
|
||||
lda #>SCREEN
|
||||
sta addr+1
|
||||
b1:
|
||||
lda #WHITE
|
||||
ldy #0
|
||||
sta (addr),y
|
||||
inc addr
|
||||
bne !+
|
||||
inc addr+1
|
||||
!:
|
||||
lda addr+1
|
||||
cmp #>end
|
||||
bne b1
|
||||
lda addr
|
||||
cmp #<end
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
bitmap_plot_ylo: .fill $100, 0
|
||||
bitmap_plot_yhi: .fill $100, 0
|
||||
bitmap_plot_bit: .fill $100, 0
|
||||
.align $100
|
||||
sin: .fill $400, 0
|
447
src/test/java/dk/camelot64/kickc/test/ref/sine-plotter.cfg
Normal file
447
src/test/java/dk/camelot64/kickc/test/ref/sine-plotter.cfg
Normal file
@ -0,0 +1,447 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@28
|
||||
@28: scope:[] from @begin
|
||||
kickasm {{ .label pc_restore = *
|
||||
.pc = $1400
|
||||
.for(var i=0; i<512; i++) {
|
||||
.word sin(toRadians([i*360]/512))*320
|
||||
}
|
||||
.pc = pc_restore
|
||||
}}
|
||||
to:@31
|
||||
@31: scope:[] from @28
|
||||
[2] phi() [ ] ( )
|
||||
[3] call main [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @31
|
||||
[4] phi() [ ] ( )
|
||||
main: scope:[main] from @31
|
||||
asm { sei }
|
||||
[6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:3 [ ] )
|
||||
[7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:3 [ ] )
|
||||
[8] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:3 [ ] )
|
||||
to:main::vicSelectGfxBank1
|
||||
main::vicSelectGfxBank1: scope:[main] from main
|
||||
[9] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:3 [ ] )
|
||||
to:main::vicSelectGfxBank1_toDd001
|
||||
main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1
|
||||
[10] phi() [ ] ( main:3 [ ] )
|
||||
to:main::vicSelectGfxBank1_@1
|
||||
main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001
|
||||
[11] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:3 [ ] )
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::vicSelectGfxBank1_@1
|
||||
[12] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 [ ] ( main:3 [ ] )
|
||||
to:main::toD0181
|
||||
main::toD0181: scope:[main] from main::@7
|
||||
[13] phi() [ ] ( main:3 [ ] )
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::toD0181
|
||||
[14] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:3 [ ] )
|
||||
[15] call fill [ ] ( main:3 [ ] )
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@8
|
||||
[16] phi() [ ] ( main:3 [ ] )
|
||||
[17] call bitmap_init [ ] ( main:3 [ ] )
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@9
|
||||
[18] phi() [ ] ( main:3 [ ] )
|
||||
[19] call bitmap_clear [ ] ( main:3 [ ] )
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@10
|
||||
[20] phi() [ ] ( main:3 [ ] )
|
||||
[21] call sin16s_gen2 [ ] ( main:3 [ ] )
|
||||
to:main::@12
|
||||
main::@12: scope:[main] from main::@11
|
||||
[22] phi() [ ] ( main:3 [ ] )
|
||||
[23] call render_sine [ ] ( main:3 [ ] )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@12 main::@2
|
||||
[24] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] ( main:3 [ ] )
|
||||
to:main::@2
|
||||
render_sine: scope:[render_sine] from main::@12
|
||||
[25] phi() [ ] ( main:3::render_sine:23 [ ] )
|
||||
to:render_sine::@1
|
||||
render_sine::@1: scope:[render_sine] from render_sine render_sine::@2
|
||||
[26] (word) render_sine::xpos#3 ← phi( render_sine/(byte/signed byte/word/signed word/dword/signed dword) 0 render_sine::@2/(word) render_sine::xpos#8 ) [ render_sine::sin_idx#2 render_sine::xpos#3 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 ] )
|
||||
[26] (word) render_sine::sin_idx#2 ← phi( render_sine/(byte/signed byte/word/signed word/dword/signed dword) 0 render_sine::@2/(word) render_sine::sin_idx#1 ) [ render_sine::sin_idx#2 render_sine::xpos#3 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 ] )
|
||||
[27] (word~) render_sine::$0 ← (word) render_sine::sin_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$0 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$0 ] )
|
||||
[28] (signed word*~) render_sine::$1 ← (const signed word[512]) sin#0 + (word~) render_sine::$0 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$1 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$1 ] )
|
||||
[29] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] )
|
||||
[30] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] )
|
||||
[31] call wrap_y [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] )
|
||||
[32] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#0 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#0 ] )
|
||||
to:render_sine::@5
|
||||
render_sine::@5: scope:[render_sine] from render_sine::@1
|
||||
[33] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 ] )
|
||||
[34] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] )
|
||||
[35] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#0 bitmap_plot::y#0 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#0 bitmap_plot::y#0 ] )
|
||||
[36] call bitmap_plot [ render_sine::sin_idx#2 render_sine::xpos#3 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 ] )
|
||||
to:render_sine::@6
|
||||
render_sine::@6: scope:[render_sine] from render_sine::@5
|
||||
[37] (word~) render_sine::$4 ← (word) render_sine::sin_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$4 ] )
|
||||
[38] (signed word*~) render_sine::$5 ← (const signed word*) sin2#0 + (word~) render_sine::$4 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$5 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$5 ] )
|
||||
[39] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$5) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] )
|
||||
[40] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (byte/signed byte/word/signed word/dword/signed dword) 10 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] )
|
||||
[41] call wrap_y [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] )
|
||||
[42] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#1 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#1 ] )
|
||||
to:render_sine::@7
|
||||
render_sine::@7: scope:[render_sine] from render_sine::@6
|
||||
[43] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 ] )
|
||||
[44] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] )
|
||||
[45] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#1 bitmap_plot::y#1 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#1 bitmap_plot::y#1 ] )
|
||||
[46] call bitmap_plot [ render_sine::sin_idx#2 render_sine::xpos#3 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#3 ] )
|
||||
to:render_sine::@8
|
||||
render_sine::@8: scope:[render_sine] from render_sine::@7
|
||||
[47] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#1 ] )
|
||||
[48] if((word) render_sine::xpos#1!=(word/signed word/dword/signed dword) 320) goto render_sine::@10 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#1 ] )
|
||||
to:render_sine::@2
|
||||
render_sine::@2: scope:[render_sine] from render_sine::@10 render_sine::@8
|
||||
[49] (word) render_sine::xpos#8 ← phi( render_sine::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 render_sine::@10/(word) render_sine::xpos#1 ) [ render_sine::sin_idx#2 render_sine::xpos#8 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#8 ] )
|
||||
[50] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 [ render_sine::sin_idx#1 render_sine::xpos#8 ] ( main:3::render_sine:23 [ render_sine::sin_idx#1 render_sine::xpos#8 ] )
|
||||
[51] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 [ render_sine::sin_idx#1 render_sine::xpos#8 ] ( main:3::render_sine:23 [ render_sine::sin_idx#1 render_sine::xpos#8 ] )
|
||||
to:render_sine::@return
|
||||
render_sine::@return: scope:[render_sine] from render_sine::@2
|
||||
[52] return [ ] ( main:3::render_sine:23 [ ] )
|
||||
to:@return
|
||||
render_sine::@10: scope:[render_sine] from render_sine::@8
|
||||
[53] phi() [ render_sine::sin_idx#2 render_sine::xpos#1 ] ( main:3::render_sine:23 [ render_sine::sin_idx#2 render_sine::xpos#1 ] )
|
||||
to:render_sine::@2
|
||||
bitmap_plot: scope:[bitmap_plot] from render_sine::@5 render_sine::@7
|
||||
[54] (word) bitmap_plot::x#2 ← phi( render_sine::@5/(word) bitmap_plot::x#0 render_sine::@7/(word) bitmap_plot::x#1 ) [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:3::render_sine:23::bitmap_plot:36 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::y#2 bitmap_plot::x#2 ] main:3::render_sine:23::bitmap_plot:46 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::y#2 bitmap_plot::x#2 ] )
|
||||
[54] (byte) bitmap_plot::y#2 ← phi( render_sine::@5/(byte) bitmap_plot::y#0 render_sine::@7/(byte) bitmap_plot::y#1 ) [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:3::render_sine:23::bitmap_plot:36 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::y#2 bitmap_plot::x#2 ] main:3::render_sine:23::bitmap_plot:46 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::y#2 bitmap_plot::x#2 ] )
|
||||
[55] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) [ bitmap_plot::x#2 bitmap_plot::$3 ] ( main:3::render_sine:23::bitmap_plot:36 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::$3 ] main:3::render_sine:23::bitmap_plot:46 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::$3 ] )
|
||||
[56] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word/dword/signed dword) 65528 [ bitmap_plot::x#2 bitmap_plot::$3 bitmap_plot::$1 ] ( main:3::render_sine:23::bitmap_plot:36 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::$3 bitmap_plot::$1 ] main:3::render_sine:23::bitmap_plot:46 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::$3 bitmap_plot::$1 ] )
|
||||
[57] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#2 bitmap_plot::plotter#1 ] ( main:3::render_sine:23::bitmap_plot:36 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] main:3::render_sine:23::bitmap_plot:46 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] )
|
||||
[58] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:3::render_sine:23::bitmap_plot:36 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:3::render_sine:23::bitmap_plot:46 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] )
|
||||
[59] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:3::render_sine:23::bitmap_plot:36 [ render_sine::sin_idx#2 render_sine::xpos#3 ] main:3::render_sine:23::bitmap_plot:46 [ render_sine::sin_idx#2 render_sine::xpos#3 ] )
|
||||
to:bitmap_plot::@return
|
||||
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
||||
[60] return [ ] ( main:3::render_sine:23::bitmap_plot:36 [ render_sine::sin_idx#2 render_sine::xpos#3 ] main:3::render_sine:23::bitmap_plot:46 [ render_sine::sin_idx#2 render_sine::xpos#3 ] )
|
||||
to:@return
|
||||
wrap_y: scope:[wrap_y] from render_sine::@1 render_sine::@6
|
||||
[61] (signed word) wrap_y::y#9 ← phi( render_sine::@1/(signed word) wrap_y::y#0 render_sine::@6/(signed word) wrap_y::y#1 ) [ wrap_y::y#9 ] ( main:3::render_sine:23::wrap_y:31 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#9 ] main:3::render_sine:23::wrap_y:41 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#9 ] )
|
||||
to:wrap_y::@1
|
||||
wrap_y::@1: scope:[wrap_y] from wrap_y wrap_y::@2
|
||||
[62] (signed word) wrap_y::y#4 ← phi( wrap_y/(signed word) wrap_y::y#9 wrap_y::@2/(signed word) wrap_y::y#2 ) [ wrap_y::y#4 ] ( main:3::render_sine:23::wrap_y:31 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] main:3::render_sine:23::wrap_y:41 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] )
|
||||
[63] if((signed word) wrap_y::y#4>=(byte/word/signed word/dword/signed dword) 200) goto wrap_y::@2 [ wrap_y::y#4 ] ( main:3::render_sine:23::wrap_y:31 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] main:3::render_sine:23::wrap_y:41 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] )
|
||||
to:wrap_y::@4
|
||||
wrap_y::@4: scope:[wrap_y] from wrap_y::@1 wrap_y::@5
|
||||
[64] (signed word) wrap_y::y#6 ← phi( wrap_y::@1/(signed word) wrap_y::y#4 wrap_y::@5/(signed word) wrap_y::y#3 ) [ wrap_y::y#6 ] ( main:3::render_sine:23::wrap_y:31 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] main:3::render_sine:23::wrap_y:41 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] )
|
||||
[65] if((signed word) wrap_y::y#6<(byte/signed byte/word/signed word/dword/signed dword) 0) goto wrap_y::@5 [ wrap_y::y#6 ] ( main:3::render_sine:23::wrap_y:31 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] main:3::render_sine:23::wrap_y:41 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] )
|
||||
to:wrap_y::@6
|
||||
wrap_y::@6: scope:[wrap_y] from wrap_y::@4
|
||||
[66] (byte) wrap_y::return#2 ← ((byte)) (signed word) wrap_y::y#6 [ wrap_y::return#2 ] ( main:3::render_sine:23::wrap_y:31 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] main:3::render_sine:23::wrap_y:41 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] )
|
||||
to:wrap_y::@return
|
||||
wrap_y::@return: scope:[wrap_y] from wrap_y::@6
|
||||
[67] return [ wrap_y::return#2 ] ( main:3::render_sine:23::wrap_y:31 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] main:3::render_sine:23::wrap_y:41 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] )
|
||||
to:@return
|
||||
wrap_y::@5: scope:[wrap_y] from wrap_y::@4
|
||||
[68] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (byte/word/signed word/dword/signed dword) 200 [ wrap_y::y#3 ] ( main:3::render_sine:23::wrap_y:31 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] main:3::render_sine:23::wrap_y:41 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] )
|
||||
to:wrap_y::@4
|
||||
wrap_y::@2: scope:[wrap_y] from wrap_y::@1
|
||||
[69] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (byte/word/signed word/dword/signed dword) 200 [ wrap_y::y#2 ] ( main:3::render_sine:23::wrap_y:31 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] main:3::render_sine:23::wrap_y:41 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] )
|
||||
to:wrap_y::@1
|
||||
sin16s_gen2: scope:[sin16s_gen2] from main::@11
|
||||
[70] phi() [ ] ( main:3::sin16s_gen2:21 [ ] )
|
||||
[71] call div32u16u [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21 [ div32u16u::return#0 ] )
|
||||
[72] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:21 [ div32u16u::return#2 ] )
|
||||
to:sin16s_gen2::@3
|
||||
sin16s_gen2::@3: scope:[sin16s_gen2] from sin16s_gen2
|
||||
[73] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 ] )
|
||||
to:sin16s_gen2::@1
|
||||
sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2::@3 sin16s_gen2::@5
|
||||
[74] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen2::@5/(word) sin16s_gen2::i#1 ) [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] )
|
||||
[74] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@3/(const signed word[512]) sin#0 sin16s_gen2::@5/(signed word*) sin16s_gen2::sintab#0 ) [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] )
|
||||
[74] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen2::@5/(dword) sin16s_gen2::x#1 ) [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] )
|
||||
[75] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] )
|
||||
[76] call sin16s [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#1 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#1 ] )
|
||||
[77] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] )
|
||||
to:sin16s_gen2::@4
|
||||
sin16s_gen2::@4: scope:[sin16s_gen2] from sin16s_gen2::@1
|
||||
[78] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] )
|
||||
[79] call mul16s [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] )
|
||||
[80] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] )
|
||||
to:sin16s_gen2::@5
|
||||
sin16s_gen2::@5: scope:[sin16s_gen2] from sin16s_gen2::@4
|
||||
[81] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] )
|
||||
[82] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$6 ] )
|
||||
[83] (signed word~) sin16s_gen2::$8 ← (const signed word) sin16s_gen2::offs#0 + (signed word)(word~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] )
|
||||
[84] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] )
|
||||
[85] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] )
|
||||
[86] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] )
|
||||
[87] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] )
|
||||
[88] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] )
|
||||
to:sin16s_gen2::@return
|
||||
sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@5
|
||||
[89] return [ ] ( main:3::sin16s_gen2:21 [ ] )
|
||||
to:@return
|
||||
mul16s: scope:[mul16s] from sin16s_gen2::@4
|
||||
[90] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#8 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#8 ] )
|
||||
[91] call mul16u [ mul16s::a#0 mul16u::res#2 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 ] )
|
||||
[92] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::return#2 ] )
|
||||
to:mul16s::@6
|
||||
mul16s::@6: scope:[mul16s] from mul16s
|
||||
[93] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16s::m#0 ] )
|
||||
[94] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] )
|
||||
to:mul16s::@3
|
||||
mul16s::@3: scope:[mul16s] from mul16s::@6
|
||||
[95] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] )
|
||||
[96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] )
|
||||
[97] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] )
|
||||
to:mul16s::@1
|
||||
mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6
|
||||
[98] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) [ mul16s::m#4 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#4 ] )
|
||||
to:mul16s::@2
|
||||
mul16s::@2: scope:[mul16s] from mul16s::@1
|
||||
[99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] )
|
||||
to:mul16s::@return
|
||||
mul16s::@return: scope:[mul16s] from mul16s::@2
|
||||
[100] return [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] )
|
||||
to:@return
|
||||
mul16u: scope:[mul16u] from mul16s mulu16_sel
|
||||
[101] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) [ mul16u::b#2 mul16u::a#6 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::b#2 mul16u::a#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] )
|
||||
[101] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) [ mul16u::b#2 mul16u::a#6 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::b#2 mul16u::a#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] )
|
||||
[102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] )
|
||||
to:mul16u::@1
|
||||
mul16u::@1: scope:[mul16u] from mul16u mul16u::@4
|
||||
[103] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] )
|
||||
[103] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] )
|
||||
[103] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] )
|
||||
[104] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] )
|
||||
to:mul16u::@return
|
||||
mul16u::@return: scope:[mul16u] from mul16u::@1
|
||||
[105] return [ mul16u::res#2 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] )
|
||||
to:@return
|
||||
mul16u::@2: scope:[mul16u] from mul16u::@1
|
||||
[106] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] )
|
||||
[107] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] )
|
||||
to:mul16u::@7
|
||||
mul16u::@7: scope:[mul16u] from mul16u::@2
|
||||
[108] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] )
|
||||
to:mul16u::@4
|
||||
mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7
|
||||
[109] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) [ mul16u::a#3 mul16u::mb#2 mul16u::res#6 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#6 ] )
|
||||
[110] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] )
|
||||
[111] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] )
|
||||
to:mul16u::@1
|
||||
sin16s: scope:[sin16s] from sin16s_gen2::@1
|
||||
[112] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] )
|
||||
to:sin16s::@4
|
||||
sin16s::@4: scope:[sin16s] from sin16s
|
||||
[113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] )
|
||||
to:sin16s::@1
|
||||
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
|
||||
[114] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] )
|
||||
[114] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] )
|
||||
[115] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] )
|
||||
to:sin16s::@5
|
||||
sin16s::@5: scope:[sin16s] from sin16s::@1
|
||||
[116] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] )
|
||||
to:sin16s::@2
|
||||
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
|
||||
[117] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) [ sin16s::isUpper#2 sin16s::x#6 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#6 ] )
|
||||
[118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] )
|
||||
[119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] )
|
||||
[120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] )
|
||||
[121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] )
|
||||
[122] call mulu16_sel [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] )
|
||||
[123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] )
|
||||
to:sin16s::@8
|
||||
sin16s::@8: scope:[sin16s] from sin16s::@2
|
||||
[124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] )
|
||||
[125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] )
|
||||
[126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] )
|
||||
[127] call mulu16_sel [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] )
|
||||
[128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] )
|
||||
to:sin16s::@9
|
||||
sin16s::@9: scope:[sin16s] from sin16s::@8
|
||||
[129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] )
|
||||
[130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] )
|
||||
[131] call mulu16_sel [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::x3#0 ] )
|
||||
[132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] )
|
||||
to:sin16s::@10
|
||||
sin16s::@10: scope:[sin16s] from sin16s::@9
|
||||
[133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] )
|
||||
[134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] )
|
||||
[135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] )
|
||||
[136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] )
|
||||
[137] call mulu16_sel [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::usinx#0 ] )
|
||||
[138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] )
|
||||
to:sin16s::@11
|
||||
sin16s::@11: scope:[sin16s] from sin16s::@10
|
||||
[139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] )
|
||||
[140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] )
|
||||
[141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] )
|
||||
[142] call mulu16_sel [ sin16s::isUpper#2 mulu16_sel::return#12 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 mulu16_sel::return#12 sin16s::usinx#0 ] )
|
||||
[143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] )
|
||||
to:sin16s::@12
|
||||
sin16s::@12: scope:[sin16s] from sin16s::@11
|
||||
[144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] )
|
||||
[145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] )
|
||||
[146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] )
|
||||
[147] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 [ sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::usinx#1 ] )
|
||||
to:sin16s::@6
|
||||
sin16s::@6: scope:[sin16s] from sin16s::@12
|
||||
[148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] )
|
||||
to:sin16s::@3
|
||||
sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6
|
||||
[149] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) [ sin16s::return#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#1 ] )
|
||||
to:sin16s::@return
|
||||
sin16s::@return: scope:[sin16s] from sin16s::@3
|
||||
[150] return [ sin16s::return#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#1 ] )
|
||||
to:@return
|
||||
sin16s::@15: scope:[sin16s] from sin16s::@12
|
||||
[151] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] )
|
||||
to:sin16s::@3
|
||||
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9
|
||||
[152] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] )
|
||||
[152] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) [ mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] )
|
||||
[152] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) [ mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] )
|
||||
[153] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] )
|
||||
[154] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] )
|
||||
[155] call mul16u [ mul16u::res#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::res#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::res#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::res#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::res#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::res#2 mulu16_sel::select#5 ] )
|
||||
[156] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] )
|
||||
to:mulu16_sel::@2
|
||||
mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel
|
||||
[157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] )
|
||||
[158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] )
|
||||
[159] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] )
|
||||
to:mulu16_sel::@return
|
||||
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2
|
||||
[160] return [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] )
|
||||
to:@return
|
||||
div32u16u: scope:[div32u16u] from sin16s_gen2
|
||||
[161] phi() [ ] ( main:3::sin16s_gen2:21::div32u16u:71 [ ] )
|
||||
[162] call divr16u [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ divr16u::return#0 rem16u#1 ] )
|
||||
[163] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ divr16u::return#2 rem16u#1 ] )
|
||||
to:div32u16u::@2
|
||||
div32u16u::@2: scope:[div32u16u] from div32u16u
|
||||
[164] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 rem16u#1 ] )
|
||||
[165] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] )
|
||||
[166] call divr16u [ divr16u::return#0 div32u16u::quotient_hi#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ divr16u::return#0 div32u16u::quotient_hi#0 ] )
|
||||
[167] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::return#3 ] )
|
||||
to:div32u16u::@3
|
||||
div32u16u::@3: scope:[div32u16u] from div32u16u::@2
|
||||
[168] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] )
|
||||
[169] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::return#0 ] )
|
||||
to:div32u16u::@return
|
||||
div32u16u::@return: scope:[div32u16u] from div32u16u::@3
|
||||
[170] return [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::return#0 ] )
|
||||
to:@return
|
||||
divr16u: scope:[divr16u] from div32u16u div32u16u::@2
|
||||
[171] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) [ divr16u::rem#10 divr16u::dividend#5 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::rem#10 divr16u::dividend#5 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 ] )
|
||||
[171] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::rem#10 divr16u::dividend#5 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 ] )
|
||||
to:divr16u::@1
|
||||
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
||||
[172] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
|
||||
[172] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
|
||||
[172] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
|
||||
[172] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
|
||||
[173] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
|
||||
[174] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] )
|
||||
[175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] )
|
||||
[176] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
|
||||
to:divr16u::@4
|
||||
divr16u::@4: scope:[divr16u] from divr16u::@1
|
||||
[177] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] )
|
||||
to:divr16u::@2
|
||||
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
||||
[178] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] )
|
||||
[179] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] )
|
||||
[180] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
|
||||
[181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
|
||||
to:divr16u::@5
|
||||
divr16u::@5: scope:[divr16u] from divr16u::@2
|
||||
[182] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] )
|
||||
[183] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] )
|
||||
to:divr16u::@3
|
||||
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
||||
[184] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] )
|
||||
[184] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] )
|
||||
[185] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] )
|
||||
[186] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] )
|
||||
to:divr16u::@6
|
||||
divr16u::@6: scope:[divr16u] from divr16u::@3
|
||||
[187] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] )
|
||||
to:divr16u::@return
|
||||
divr16u::@return: scope:[divr16u] from divr16u::@6
|
||||
[188] return [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] )
|
||||
to:@return
|
||||
bitmap_clear: scope:[bitmap_clear] from main::@10
|
||||
[189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0+(byte/signed byte/word/signed word/dword/signed dword) 0) w= *((const byte[256]) bitmap_plot_ylo#0+(byte/signed byte/word/signed word/dword/signed dword) 0) [ bitmap_clear::$3 ] ( main:3::bitmap_clear:19 [ bitmap_clear::$3 ] )
|
||||
[190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:3::bitmap_clear:19 [ bitmap_clear::bitmap#5 ] )
|
||||
to:bitmap_clear::@1
|
||||
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3
|
||||
[191] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] ( main:3::bitmap_clear:19 [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] )
|
||||
[191] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] ( main:3::bitmap_clear:19 [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] )
|
||||
to:bitmap_clear::@2
|
||||
bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2
|
||||
[192] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:3::bitmap_clear:19 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] )
|
||||
[192] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:3::bitmap_clear:19 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] )
|
||||
[193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:3::bitmap_clear:19 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] )
|
||||
[194] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#2 ] ( main:3::bitmap_clear:19 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#2 ] )
|
||||
[195] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ( main:3::bitmap_clear:19 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] )
|
||||
[196] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ( main:3::bitmap_clear:19 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] )
|
||||
to:bitmap_clear::@3
|
||||
bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2
|
||||
[197] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ( main:3::bitmap_clear:19 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] )
|
||||
[198] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ( main:3::bitmap_clear:19 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] )
|
||||
to:bitmap_clear::@return
|
||||
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3
|
||||
[199] return [ ] ( main:3::bitmap_clear:19 [ ] )
|
||||
to:@return
|
||||
bitmap_init: scope:[bitmap_init] from main::@9
|
||||
[200] phi() [ ] ( main:3::bitmap_init:17 [ ] )
|
||||
to:bitmap_init::@1
|
||||
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
|
||||
[201] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:3::bitmap_init:17 [ bitmap_init::bits#3 bitmap_init::x#2 ] )
|
||||
[201] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:3::bitmap_init:17 [ bitmap_init::bits#3 bitmap_init::x#2 ] )
|
||||
[202] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:3::bitmap_init:17 [ bitmap_init::bits#3 bitmap_init::x#2 ] )
|
||||
[203] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:3::bitmap_init:17 [ bitmap_init::x#2 bitmap_init::bits#1 ] )
|
||||
[204] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:3::bitmap_init:17 [ bitmap_init::x#2 bitmap_init::bits#1 ] )
|
||||
to:bitmap_init::@2
|
||||
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@10
|
||||
[205] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) [ bitmap_init::x#2 bitmap_init::bits#4 ] ( main:3::bitmap_init:17 [ bitmap_init::x#2 bitmap_init::bits#4 ] )
|
||||
[206] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 [ bitmap_init::bits#4 bitmap_init::x#1 ] ( main:3::bitmap_init:17 [ bitmap_init::bits#4 bitmap_init::x#1 ] )
|
||||
[207] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 [ bitmap_init::bits#4 bitmap_init::x#1 ] ( main:3::bitmap_init:17 [ bitmap_init::bits#4 bitmap_init::x#1 ] )
|
||||
to:bitmap_init::@3
|
||||
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4
|
||||
[208] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] )
|
||||
[208] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] )
|
||||
[209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] )
|
||||
[210] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 bitmap_init::$4 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 bitmap_init::$4 ] )
|
||||
[211] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$5 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$5 ] )
|
||||
[212] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] )
|
||||
[213] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] )
|
||||
[214] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] )
|
||||
[215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] )
|
||||
[216] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] )
|
||||
to:bitmap_init::@7
|
||||
bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3
|
||||
[217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] )
|
||||
to:bitmap_init::@4
|
||||
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7
|
||||
[218] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) [ bitmap_init::y#2 bitmap_init::yoffs#4 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#4 ] )
|
||||
[219] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ( main:3::bitmap_init:17 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] )
|
||||
[220] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ( main:3::bitmap_init:17 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] )
|
||||
to:bitmap_init::@return
|
||||
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
|
||||
[221] return [ ] ( main:3::bitmap_init:17 [ ] )
|
||||
to:@return
|
||||
bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1
|
||||
[222] phi() [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:3::bitmap_init:17 [ bitmap_init::x#2 bitmap_init::bits#1 ] )
|
||||
to:bitmap_init::@2
|
||||
fill: scope:[fill] from main::@8
|
||||
[223] phi() [ ] ( main:3::fill:15 [ ] )
|
||||
to:fill::@1
|
||||
fill::@1: scope:[fill] from fill fill::@1
|
||||
[224] (byte*) fill::addr#2 ← phi( fill/(const byte*) SCREEN#0 fill::@1/(byte*) fill::addr#1 ) [ fill::addr#2 ] ( main:3::fill:15 [ fill::addr#2 ] )
|
||||
[225] *((byte*) fill::addr#2) ← (const byte) WHITE#0 [ fill::addr#2 ] ( main:3::fill:15 [ fill::addr#2 ] )
|
||||
[226] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 [ fill::addr#1 ] ( main:3::fill:15 [ fill::addr#1 ] )
|
||||
[227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:3::fill:15 [ fill::addr#1 ] )
|
||||
to:fill::@return
|
||||
fill::@return: scope:[fill] from fill::@1
|
||||
[228] return [ ] ( main:3::fill:15 [ ] )
|
||||
to:@return
|
12429
src/test/java/dk/camelot64/kickc/test/ref/sine-plotter.log
Normal file
12429
src/test/java/dk/camelot64/kickc/test/ref/sine-plotter.log
Normal file
File diff suppressed because it is too large
Load Diff
440
src/test/java/dk/camelot64/kickc/test/ref/sine-plotter.sym
Normal file
440
src/test/java/dk/camelot64/kickc/test/ref/sine-plotter.sym
Normal file
@ -0,0 +1,440 @@
|
||||
(label) @28
|
||||
(label) @31
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte*) BITMAP
|
||||
(const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word/dword/signed dword) 8192
|
||||
(byte*) CIA2_PORT_A
|
||||
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578
|
||||
(byte*) D011
|
||||
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265
|
||||
(byte*) D016
|
||||
(const byte*) D016#0 D016 = ((byte*))(word/dword/signed dword) 53270
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
|
||||
(dword) PI2_u4f28
|
||||
(const dword) PI2_u4f28#0 PI2_u4f28 = (dword/signed dword) 1686629713
|
||||
(dword) PI_HALF_u4f28
|
||||
(const dword) PI_HALF_u4f28#0 PI_HALF_u4f28 = (dword/signed dword) 421657428
|
||||
(dword) PI_u4f28
|
||||
(const dword) PI_u4f28#0 PI_u4f28 = (dword/signed dword) 843314857
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) PROCPORT_DDR
|
||||
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(word) SIN_SIZE
|
||||
(const word) SIN_SIZE#0 SIN_SIZE = (word/signed word/dword/signed dword) 512
|
||||
(byte) VIC_BMM
|
||||
(const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte) VIC_CSEL
|
||||
(const byte) VIC_CSEL#0 VIC_CSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_DEN
|
||||
(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(void()) bitmap_clear()
|
||||
(word~) bitmap_clear::$3 $3 zp ZP_WORD:2 2.0
|
||||
(label) bitmap_clear::@1
|
||||
(label) bitmap_clear::@2
|
||||
(label) bitmap_clear::@3
|
||||
(label) bitmap_clear::@return
|
||||
(byte*) bitmap_clear::bitmap
|
||||
(byte*) bitmap_clear::bitmap#1 bitmap zp ZP_WORD:2 42.599999999999994
|
||||
(byte*) bitmap_clear::bitmap#2 bitmap zp ZP_WORD:2 157.0
|
||||
(byte*) bitmap_clear::bitmap#3 bitmap zp ZP_WORD:2 24.0
|
||||
(byte*~) bitmap_clear::bitmap#5 bitmap zp ZP_WORD:2 4.0
|
||||
(byte) bitmap_clear::x
|
||||
(byte) bitmap_clear::x#1 reg byte x 151.5
|
||||
(byte) bitmap_clear::x#2 reg byte x 67.33333333333333
|
||||
(byte) bitmap_clear::y
|
||||
(byte) bitmap_clear::y#1 y zp ZP_BYTE:22 16.5
|
||||
(byte) bitmap_clear::y#4 y zp ZP_BYTE:22 3.6666666666666665
|
||||
(void()) bitmap_init((byte*) bitmap_init::bitmap)
|
||||
(byte~) bitmap_init::$3 $3 zp ZP_BYTE:22 11.0
|
||||
(byte~) bitmap_init::$4 reg byte a 22.0
|
||||
(byte~) bitmap_init::$5 reg byte a 22.0
|
||||
(byte~) bitmap_init::$6 reg byte a 22.0
|
||||
(byte~) bitmap_init::$7 reg byte a 22.0
|
||||
(label) bitmap_init::@1
|
||||
(label) bitmap_init::@10
|
||||
(label) bitmap_init::@2
|
||||
(label) bitmap_init::@3
|
||||
(label) bitmap_init::@4
|
||||
(label) bitmap_init::@7
|
||||
(label) bitmap_init::@return
|
||||
(byte*) bitmap_init::bitmap
|
||||
(byte) bitmap_init::bits
|
||||
(byte) bitmap_init::bits#1 reg byte a 11.0
|
||||
(byte) bitmap_init::bits#3 reg byte a 16.5
|
||||
(byte) bitmap_init::bits#4 reg byte a 7.333333333333333
|
||||
(byte) bitmap_init::x
|
||||
(byte) bitmap_init::x#1 reg byte x 16.5
|
||||
(byte) bitmap_init::x#2 reg byte x 5.5
|
||||
(byte) bitmap_init::y
|
||||
(byte) bitmap_init::y#1 reg byte x 16.5
|
||||
(byte) bitmap_init::y#2 reg byte x 6.0
|
||||
(byte*) bitmap_init::yoffs
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:2 22.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:2 6.111111111111112
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:2 11.0
|
||||
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
||||
(word~) bitmap_plot::$1 $1 zp ZP_WORD:16 4.0
|
||||
(byte~) bitmap_plot::$2 reg byte a 4.0
|
||||
(word~) bitmap_plot::$3 $3 zp ZP_WORD:6 1.0
|
||||
(label) bitmap_plot::@return
|
||||
(byte*) bitmap_plot::plotter
|
||||
(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:6 3.0
|
||||
(word) bitmap_plot::x
|
||||
(word) bitmap_plot::x#0 x zp ZP_WORD:4 11.0
|
||||
(word) bitmap_plot::x#1 x zp ZP_WORD:4 11.0
|
||||
(word) bitmap_plot::x#2 x zp ZP_WORD:4 6.5
|
||||
(byte) bitmap_plot::y
|
||||
(byte) bitmap_plot::y#0 reg byte x 22.0
|
||||
(byte) bitmap_plot::y#1 reg byte x 22.0
|
||||
(byte) bitmap_plot::y#2 reg byte x 26.0
|
||||
(byte[256]) bitmap_plot_bit
|
||||
(const byte[256]) bitmap_plot_bit#0 bitmap_plot_bit = { fill( 256, 0) }
|
||||
(byte[256]) bitmap_plot_yhi
|
||||
(const byte[256]) bitmap_plot_yhi#0 bitmap_plot_yhi = { fill( 256, 0) }
|
||||
(byte[256]) bitmap_plot_ylo
|
||||
(const byte[256]) bitmap_plot_ylo#0 bitmap_plot_ylo = { fill( 256, 0) }
|
||||
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
|
||||
(label) div32u16u::@2
|
||||
(label) div32u16u::@3
|
||||
(label) div32u16u::@return
|
||||
(dword) div32u16u::dividend
|
||||
(word) div32u16u::divisor
|
||||
(dword) div32u16u::quotient
|
||||
(word) div32u16u::quotient_hi
|
||||
(word) div32u16u::quotient_hi#0 quotient_hi zp ZP_WORD:16 0.8
|
||||
(word) div32u16u::quotient_lo
|
||||
(word) div32u16u::quotient_lo#0 quotient_lo zp ZP_WORD:6 4.0
|
||||
(dword) div32u16u::return
|
||||
(dword) div32u16u::return#0 return zp ZP_DWORD:27 1.3333333333333333
|
||||
(dword) div32u16u::return#2 return zp ZP_DWORD:27 4.0
|
||||
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
||||
(byte~) divr16u::$1 reg byte a 22.0
|
||||
(byte~) divr16u::$2 reg byte a 22.0
|
||||
(label) divr16u::@1
|
||||
(label) divr16u::@2
|
||||
(label) divr16u::@3
|
||||
(label) divr16u::@4
|
||||
(label) divr16u::@5
|
||||
(label) divr16u::@6
|
||||
(label) divr16u::@return
|
||||
(word) divr16u::dividend
|
||||
(word) divr16u::dividend#0 dividend zp ZP_WORD:4 2.75
|
||||
(word) divr16u::dividend#3 dividend zp ZP_WORD:4 5.0
|
||||
(word) divr16u::dividend#5 dividend zp ZP_WORD:4 2.0
|
||||
(word) divr16u::divisor
|
||||
(byte) divr16u::i
|
||||
(byte) divr16u::i#1 reg byte x 16.5
|
||||
(byte) divr16u::i#2 reg byte x 1.6923076923076923
|
||||
(word) divr16u::quotient
|
||||
(word) divr16u::quotient#1 quotient zp ZP_WORD:6 16.5
|
||||
(word) divr16u::quotient#2 quotient zp ZP_WORD:6 11.0
|
||||
(word) divr16u::quotient#3 quotient zp ZP_WORD:6 2.75
|
||||
(word) divr16u::rem
|
||||
(word) divr16u::rem#0 rem zp ZP_WORD:2 8.25
|
||||
(word) divr16u::rem#1 rem zp ZP_WORD:2 22.0
|
||||
(word) divr16u::rem#10 rem zp ZP_WORD:2 4.0
|
||||
(word) divr16u::rem#11 rem zp ZP_WORD:2 11.666666666666666
|
||||
(word) divr16u::rem#2 rem zp ZP_WORD:2 22.0
|
||||
(word) divr16u::rem#4 rem zp ZP_WORD:2 4.0
|
||||
(word) divr16u::rem#5 rem zp ZP_WORD:2 24.0
|
||||
(word) divr16u::rem#6 rem zp ZP_WORD:2 11.0
|
||||
(word) divr16u::return
|
||||
(word) divr16u::return#0 return zp ZP_WORD:6 5.285714285714286
|
||||
(word) divr16u::return#2 return zp ZP_WORD:6 4.0
|
||||
(word) divr16u::return#3 return zp ZP_WORD:6 4.0
|
||||
(void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val)
|
||||
(label) fill::@1
|
||||
(label) fill::@return
|
||||
(byte*) fill::addr
|
||||
(byte*) fill::addr#1 addr zp ZP_WORD:2 16.5
|
||||
(byte*) fill::addr#2 addr zp ZP_WORD:2 16.5
|
||||
(byte*) fill::end
|
||||
(const byte*) fill::end#0 end = (const byte*) SCREEN#0+(const word) fill::size#0
|
||||
(word) fill::size
|
||||
(const word) fill::size#0 size = (word/signed word/dword/signed dword) 1000
|
||||
(byte*) fill::start
|
||||
(byte) fill::val
|
||||
(void()) main()
|
||||
(label) main::@10
|
||||
(label) main::@11
|
||||
(label) main::@12
|
||||
(label) main::@2
|
||||
(label) main::@7
|
||||
(label) main::@8
|
||||
(label) main::@9
|
||||
(label) main::toD0181
|
||||
(word~) main::toD0181_$0
|
||||
(word~) main::toD0181_$1
|
||||
(word~) main::toD0181_$2
|
||||
(byte~) main::toD0181_$3
|
||||
(word~) main::toD0181_$4
|
||||
(byte~) main::toD0181_$5
|
||||
(byte~) main::toD0181_$6
|
||||
(byte~) main::toD0181_$7
|
||||
(byte~) main::toD0181_$8
|
||||
(byte*) main::toD0181_gfx
|
||||
(byte) main::toD0181_return
|
||||
(const byte) main::toD0181_return#0 toD0181_return = >((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2|>((word))(const byte*) BITMAP#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
(byte*) main::toD0181_screen
|
||||
(label) main::vicSelectGfxBank1
|
||||
(byte~) main::vicSelectGfxBank1_$0
|
||||
(label) main::vicSelectGfxBank1_@1
|
||||
(byte*) main::vicSelectGfxBank1_gfx
|
||||
(label) main::vicSelectGfxBank1_toDd001
|
||||
(word~) main::vicSelectGfxBank1_toDd001_$0
|
||||
(byte~) main::vicSelectGfxBank1_toDd001_$1
|
||||
(byte~) main::vicSelectGfxBank1_toDd001_$2
|
||||
(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3
|
||||
(byte*) main::vicSelectGfxBank1_toDd001_gfx
|
||||
(byte) main::vicSelectGfxBank1_toDd001_return
|
||||
(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
||||
(word~) mul16s::$16 $16 zp ZP_WORD:6 4.0
|
||||
(word~) mul16s::$6 $6 zp ZP_WORD:6 4.0
|
||||
(label) mul16s::@1
|
||||
(label) mul16s::@2
|
||||
(label) mul16s::@3
|
||||
(label) mul16s::@6
|
||||
(label) mul16s::@return
|
||||
(signed word) mul16s::a
|
||||
(signed word) mul16s::a#0 a zp ZP_WORD:23 2.6
|
||||
(signed word) mul16s::b
|
||||
(dword) mul16s::m
|
||||
(dword) mul16s::m#0 m zp ZP_DWORD:12 2.0
|
||||
(dword) mul16s::m#1 m zp ZP_DWORD:12 4.0
|
||||
(dword) mul16s::m#4 m zp ZP_DWORD:12 6.0
|
||||
(signed dword) mul16s::return
|
||||
(signed dword) mul16s::return#0 return zp ZP_DWORD:12 4.333333333333333
|
||||
(signed dword) mul16s::return#2 return zp ZP_DWORD:12 22.0
|
||||
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
|
||||
(byte/word~) mul16u::$1 reg byte a 202.0
|
||||
(label) mul16u::@1
|
||||
(label) mul16u::@2
|
||||
(label) mul16u::@4
|
||||
(label) mul16u::@7
|
||||
(label) mul16u::@return
|
||||
(word) mul16u::a
|
||||
(word) mul16u::a#0 a zp ZP_WORD:16 101.0
|
||||
(word) mul16u::a#2 a zp ZP_WORD:16 2.0
|
||||
(word) mul16u::a#3 a zp ZP_WORD:16 67.66666666666666
|
||||
(word) mul16u::a#6 a zp ZP_WORD:16 3.0
|
||||
(word~) mul16u::a#8 a zp ZP_WORD:16 4.0
|
||||
(word) mul16u::b
|
||||
(word) mul16u::b#1 b zp ZP_WORD:6 4.0
|
||||
(word) mul16u::b#2 b zp ZP_WORD:6 4.0
|
||||
(dword) mul16u::mb
|
||||
(dword) mul16u::mb#0 mb zp ZP_DWORD:18 4.0
|
||||
(dword) mul16u::mb#1 mb zp ZP_DWORD:18 202.0
|
||||
(dword) mul16u::mb#2 mb zp ZP_DWORD:18 43.57142857142858
|
||||
(dword) mul16u::res
|
||||
(dword) mul16u::res#1 res zp ZP_DWORD:12 202.0
|
||||
(dword) mul16u::res#2 res zp ZP_DWORD:12 43.85714285714286
|
||||
(dword) mul16u::res#6 res zp ZP_DWORD:12 101.0
|
||||
(dword) mul16u::return
|
||||
(dword) mul16u::return#2 return zp ZP_DWORD:12 4.0
|
||||
(dword) mul16u::return#3 return zp ZP_DWORD:12 4.0
|
||||
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
|
||||
(dword~) mulu16_sel::$0 $0 zp ZP_DWORD:12 4.0
|
||||
(dword~) mulu16_sel::$1 $1 zp ZP_DWORD:12 4.0
|
||||
(label) mulu16_sel::@2
|
||||
(label) mulu16_sel::@return
|
||||
(word) mulu16_sel::return
|
||||
(word) mulu16_sel::return#0 return zp ZP_WORD:6 4.0
|
||||
(word) mulu16_sel::return#1 return#1 zp ZP_WORD:25 4.0
|
||||
(word) mulu16_sel::return#10 return#10 zp ZP_WORD:25 4.0
|
||||
(word) mulu16_sel::return#11 return zp ZP_WORD:6 4.0
|
||||
(word) mulu16_sel::return#12 return zp ZP_WORD:6 1.714285714285714
|
||||
(word) mulu16_sel::return#2 return zp ZP_WORD:6 4.0
|
||||
(byte) mulu16_sel::select
|
||||
(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333
|
||||
(word) mulu16_sel::v1
|
||||
(word) mulu16_sel::v1#0 v1 zp ZP_WORD:25 2.0
|
||||
(word) mulu16_sel::v1#1 v1 zp ZP_WORD:25 2.0
|
||||
(word) mulu16_sel::v1#2 v1 zp ZP_WORD:25 4.0
|
||||
(word) mulu16_sel::v1#3 v1 zp ZP_WORD:25 2.0
|
||||
(word) mulu16_sel::v1#4 v1 zp ZP_WORD:25 2.0
|
||||
(word) mulu16_sel::v1#5 v1 zp ZP_WORD:25 12.0
|
||||
(word) mulu16_sel::v2
|
||||
(word) mulu16_sel::v2#0 v2 zp ZP_WORD:6 4.0
|
||||
(word) mulu16_sel::v2#1 v2 zp ZP_WORD:6 4.0
|
||||
(word) mulu16_sel::v2#3 v2 zp ZP_WORD:6 4.0
|
||||
(word) mulu16_sel::v2#4 v2 zp ZP_WORD:6 4.0
|
||||
(word) mulu16_sel::v2#5 v2 zp ZP_WORD:6 5.0
|
||||
(word) rem16u
|
||||
(word) rem16u#1 rem16u zp ZP_WORD:2 0.8
|
||||
(void()) render_sine()
|
||||
(word~) render_sine::$0 $0 zp ZP_WORD:6 22.0
|
||||
(signed word*~) render_sine::$1 $1 zp ZP_WORD:6 22.0
|
||||
(word~) render_sine::$4 $4 zp ZP_WORD:6 22.0
|
||||
(signed word*~) render_sine::$5 $5 zp ZP_WORD:6 22.0
|
||||
(label) render_sine::@1
|
||||
(label) render_sine::@10
|
||||
(label) render_sine::@2
|
||||
(label) render_sine::@5
|
||||
(label) render_sine::@6
|
||||
(label) render_sine::@7
|
||||
(label) render_sine::@8
|
||||
(label) render_sine::@return
|
||||
(signed word) render_sine::sin2_val
|
||||
(signed word) render_sine::sin2_val#0 sin2_val zp ZP_WORD:6 22.0
|
||||
(word) render_sine::sin_idx
|
||||
(word) render_sine::sin_idx#1 sin_idx zp ZP_WORD:2 16.5
|
||||
(word) render_sine::sin_idx#2 sin_idx zp ZP_WORD:2 1.76
|
||||
(signed word) render_sine::sin_val
|
||||
(signed word) render_sine::sin_val#0 sin_val zp ZP_WORD:6 22.0
|
||||
(word) render_sine::xpos
|
||||
(word) render_sine::xpos#1 xpos zp ZP_WORD:4 11.0
|
||||
(word) render_sine::xpos#3 xpos zp ZP_WORD:4 2.0952380952380953
|
||||
(word) render_sine::xpos#8 xpos zp ZP_WORD:4 7.333333333333333
|
||||
(byte) render_sine::ypos
|
||||
(byte) render_sine::ypos#0 reg byte x 11.0
|
||||
(byte) render_sine::ypos2
|
||||
(byte) render_sine::ypos2#0 reg byte x 11.0
|
||||
(signed word[512]) sin
|
||||
(const signed word[512]) sin#0 sin = { fill( 512, 0) }
|
||||
(signed word()) sin16s((dword) sin16s::x)
|
||||
(dword~) sin16s::$6 $6 zp ZP_DWORD:12 4.0
|
||||
(label) sin16s::@1
|
||||
(label) sin16s::@10
|
||||
(label) sin16s::@11
|
||||
(label) sin16s::@12
|
||||
(label) sin16s::@15
|
||||
(label) sin16s::@2
|
||||
(label) sin16s::@3
|
||||
(label) sin16s::@4
|
||||
(label) sin16s::@5
|
||||
(label) sin16s::@6
|
||||
(label) sin16s::@8
|
||||
(label) sin16s::@9
|
||||
(label) sin16s::@return
|
||||
(byte) sin16s::isUpper
|
||||
(byte) sin16s::isUpper#2 isUpper zp ZP_BYTE:22 0.06060606060606061
|
||||
(signed word) sin16s::return
|
||||
(signed word) sin16s::return#0 return zp ZP_WORD:23 22.0
|
||||
(signed word) sin16s::return#1 return zp ZP_WORD:23 5.0
|
||||
(signed word~) sin16s::return#5 return zp ZP_WORD:23 4.0
|
||||
(signed word) sin16s::sinx
|
||||
(signed word) sin16s::sinx#1 sinx zp ZP_WORD:23 4.0
|
||||
(word) sin16s::usinx
|
||||
(word) sin16s::usinx#0 usinx zp ZP_WORD:23 0.3333333333333333
|
||||
(word) sin16s::usinx#1 usinx zp ZP_WORD:23 1.0
|
||||
(dword) sin16s::x
|
||||
(dword) sin16s::x#0 x zp ZP_DWORD:12 8.5
|
||||
(dword) sin16s::x#1 x zp ZP_DWORD:12 4.0
|
||||
(dword) sin16s::x#2 x zp ZP_DWORD:12 4.0
|
||||
(dword) sin16s::x#4 x zp ZP_DWORD:12 5.0
|
||||
(dword) sin16s::x#6 x zp ZP_DWORD:12 6.0
|
||||
(word) sin16s::x1
|
||||
(word) sin16s::x1#0 x1 zp ZP_WORD:31 0.6363636363636365
|
||||
(word) sin16s::x2
|
||||
(word) sin16s::x2#0 x2 zp ZP_WORD:25 4.0
|
||||
(word) sin16s::x3
|
||||
(word) sin16s::x3#0 x3 zp ZP_WORD:25 1.0
|
||||
(word) sin16s::x3_6
|
||||
(word) sin16s::x3_6#0 x3_6 zp ZP_WORD:6 4.0
|
||||
(word) sin16s::x4
|
||||
(word) sin16s::x4#0 x4 zp ZP_WORD:25 4.0
|
||||
(word) sin16s::x5
|
||||
(word) sin16s::x5#0 x5 zp ZP_WORD:6 4.0
|
||||
(word) sin16s::x5_128
|
||||
(word) sin16s::x5_128#0 x5_128 zp ZP_WORD:6 4.0
|
||||
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
|
||||
(signed dword~) sin16s_gen2::$5 $5 zp ZP_DWORD:12 22.0
|
||||
(word~) sin16s_gen2::$6 $6 zp ZP_WORD:6 11.0
|
||||
(signed word~) sin16s_gen2::$8 $8 zp ZP_WORD:6 22.0
|
||||
(label) sin16s_gen2::@1
|
||||
(label) sin16s_gen2::@3
|
||||
(label) sin16s_gen2::@4
|
||||
(label) sin16s_gen2::@5
|
||||
(label) sin16s_gen2::@return
|
||||
(signed word) sin16s_gen2::ampl
|
||||
(const signed word) sin16s_gen2::ampl#0 ampl = (const signed word) sin16s_gen2::max#0-(const signed word) sin16s_gen2::min#0
|
||||
(word) sin16s_gen2::i
|
||||
(word) sin16s_gen2::i#1 i zp ZP_WORD:4 16.5
|
||||
(word) sin16s_gen2::i#2 i zp ZP_WORD:4 1.6923076923076923
|
||||
(signed word) sin16s_gen2::max
|
||||
(const signed word) sin16s_gen2::max#0 max = (word/signed word/dword/signed dword) 320
|
||||
(signed word) sin16s_gen2::min
|
||||
(const signed word) sin16s_gen2::min#0 min = -(word/signed word/dword/signed dword) 320
|
||||
(signed word) sin16s_gen2::offs
|
||||
(const signed word) sin16s_gen2::offs#0 offs = (const signed word) sin16s_gen2::min#0+(const signed word) sin16s_gen2::ampl#0>>(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(signed word*) sin16s_gen2::sintab
|
||||
(signed word*) sin16s_gen2::sintab#0 sintab zp ZP_WORD:2 5.5
|
||||
(signed word*) sin16s_gen2::sintab#2 sintab zp ZP_WORD:2 3.0
|
||||
(dword) sin16s_gen2::step
|
||||
(dword) sin16s_gen2::step#0 step zp ZP_DWORD:27 0.8125
|
||||
(word) sin16s_gen2::wavelength
|
||||
(dword) sin16s_gen2::x
|
||||
(dword) sin16s_gen2::x#1 x zp ZP_DWORD:8 7.333333333333333
|
||||
(dword) sin16s_gen2::x#2 x zp ZP_DWORD:8 2.75
|
||||
(signed word*) sin2
|
||||
(const signed word*) sin2#0 sin2 = ((signed word*))(word/signed word/dword/signed dword) 5120
|
||||
(byte()) wrap_y((signed word) wrap_y::y)
|
||||
(label) wrap_y::@1
|
||||
(label) wrap_y::@2
|
||||
(label) wrap_y::@4
|
||||
(label) wrap_y::@5
|
||||
(label) wrap_y::@6
|
||||
(label) wrap_y::@return
|
||||
(byte) wrap_y::return
|
||||
(byte) wrap_y::return#0 reg byte a 22.0
|
||||
(byte) wrap_y::return#1 reg byte a 22.0
|
||||
(byte) wrap_y::return#2 reg byte a 6.0
|
||||
(signed word) wrap_y::y
|
||||
(signed word) wrap_y::y#0 y zp ZP_WORD:6 22.0
|
||||
(signed word) wrap_y::y#1 y zp ZP_WORD:6 22.0
|
||||
(signed word) wrap_y::y#2 y zp ZP_WORD:6 202.0
|
||||
(signed word) wrap_y::y#3 y zp ZP_WORD:6 202.0
|
||||
(signed word) wrap_y::y#4 y zp ZP_WORD:6 203.0
|
||||
(signed word) wrap_y::y#6 y zp ZP_WORD:6 203.0
|
||||
(signed word) wrap_y::y#9 y zp ZP_WORD:6 24.0
|
||||
|
||||
zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 fill::addr#2 fill::addr#1 ]
|
||||
zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ]
|
||||
reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ]
|
||||
zp ZP_WORD:6 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$6 mul16s::$16 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ]
|
||||
zp ZP_DWORD:8 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
|
||||
zp ZP_DWORD:12 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$5 mulu16_sel::$0 mulu16_sel::$1 sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 ]
|
||||
zp ZP_WORD:16 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 bitmap_plot::$1 div32u16u::quotient_hi#0 ]
|
||||
zp ZP_DWORD:18 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
|
||||
zp ZP_BYTE:22 [ sin16s::isUpper#2 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_init::$3 ]
|
||||
zp ZP_WORD:23 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 ]
|
||||
zp ZP_WORD:25 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ]
|
||||
reg byte x [ mulu16_sel::select#5 ]
|
||||
reg byte x [ divr16u::i#2 divr16u::i#1 ]
|
||||
reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ]
|
||||
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
reg byte a [ wrap_y::return#0 ]
|
||||
reg byte x [ render_sine::ypos#0 ]
|
||||
reg byte a [ wrap_y::return#1 ]
|
||||
reg byte x [ render_sine::ypos2#0 ]
|
||||
reg byte a [ bitmap_plot::$2 ]
|
||||
reg byte a [ wrap_y::return#2 ]
|
||||
zp ZP_DWORD:27 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ]
|
||||
reg byte a [ mul16u::$1 ]
|
||||
zp ZP_WORD:31 [ sin16s::x1#0 ]
|
||||
reg byte a [ divr16u::$1 ]
|
||||
reg byte a [ divr16u::$2 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
reg byte a [ bitmap_init::$7 ]
|
Loading…
Reference in New Issue
Block a user