mirror of
https://github.com/irmen/prog8.git
synced 2024-06-10 20:29:33 +00:00
Merge branch 'master' into multi-assign
# Conflicts: # docs/source/todo.rst # examples/test.p8
This commit is contained in:
commit
56c1035581
|
@ -96,9 +96,9 @@ val BuiltinFunctions: Map<String, FSignature> = mapOf(
|
|||
"sqrt__ubyte" to FSignature(true, listOf(FParam("value", arrayOf(DataType.UBYTE))), DataType.UBYTE),
|
||||
"sqrt__uword" to FSignature(true, listOf(FParam("value", arrayOf(DataType.UWORD))), DataType.UBYTE),
|
||||
"sqrt__float" to FSignature(true, listOf(FParam("value", arrayOf(DataType.FLOAT))), DataType.FLOAT),
|
||||
"divmod" to FSignature(false, listOf(FParam("number", arrayOf(DataType.UBYTE, DataType.UWORD)), FParam("divident", arrayOf(DataType.UBYTE, DataType.UWORD)), FParam("division", arrayOf(DataType.UBYTE, DataType.UWORD)), FParam("remainder", arrayOf(DataType.UBYTE, DataType.UWORD))), null),
|
||||
"divmod__ubyte" to FSignature(false, listOf(FParam("number", arrayOf(DataType.UBYTE)), FParam("divident", arrayOf(DataType.UBYTE)), FParam("division", arrayOf(DataType.UBYTE)), FParam("remainder", arrayOf(DataType.UBYTE))), null),
|
||||
"divmod__uword" to FSignature(false, listOf(FParam("number", arrayOf(DataType.UWORD)), FParam("divident", arrayOf(DataType.UWORD)), FParam("division", arrayOf(DataType.UWORD)), FParam("remainder", arrayOf(DataType.UWORD))), null),
|
||||
"divmod" to FSignature(false, listOf(FParam("dividend", arrayOf(DataType.UBYTE, DataType.UWORD)), FParam("divisor", arrayOf(DataType.UBYTE, DataType.UWORD)), FParam("quotient", arrayOf(DataType.UBYTE, DataType.UWORD)), FParam("remainder", arrayOf(DataType.UBYTE, DataType.UWORD))), null),
|
||||
"divmod__ubyte" to FSignature(false, listOf(FParam("dividend", arrayOf(DataType.UBYTE)), FParam("divisor", arrayOf(DataType.UBYTE)), FParam("quotient", arrayOf(DataType.UBYTE)), FParam("remainder", arrayOf(DataType.UBYTE))), null),
|
||||
"divmod__uword" to FSignature(false, listOf(FParam("dividend", arrayOf(DataType.UWORD)), FParam("divisor", arrayOf(DataType.UWORD)), FParam("quotient", arrayOf(DataType.UWORD)), FParam("remainder", arrayOf(DataType.UWORD))), null),
|
||||
"any" to FSignature(true, listOf(FParam("values", ArrayDatatypes)), DataType.BOOL),
|
||||
"all" to FSignature(true, listOf(FParam("values", ArrayDatatypes)), DataType.BOOL),
|
||||
"lsb" to FSignature(true, listOf(FParam("value", arrayOf(DataType.UWORD, DataType.WORD))), DataType.UBYTE),
|
||||
|
@ -133,4 +133,9 @@ val BuiltinFunctions: Map<String, FSignature> = mapOf(
|
|||
"call" to FSignature(false, listOf(FParam("address", arrayOf(DataType.UWORD))), DataType.UWORD),
|
||||
)
|
||||
|
||||
val InplaceModifyingBuiltinFunctions = setOf("setlsb", "setmsb", "rol", "ror", "rol2", "ror2", "sort", "reverse")
|
||||
val InplaceModifyingBuiltinFunctions = setOf(
|
||||
"setlsb", "setmsb",
|
||||
"rol", "ror", "rol2", "ror2",
|
||||
"sort", "reverse",
|
||||
"divmod", "divmod__ubyte", "divmod__uword"
|
||||
)
|
||||
|
|
|
@ -75,7 +75,7 @@ class VarConstantValueTypeAdjuster(
|
|||
val declValue = decl.value?.constValue(program)
|
||||
if (declValue != null) {
|
||||
// variable is never written to, so it can be replaced with a constant, IF the value is a constant
|
||||
errors.info("variable is never written to and was replaced by a constant", decl.position)
|
||||
errors.info("variable '${decl.name}' is never written to and was replaced by a constant", decl.position)
|
||||
val const = VarDecl(VarDeclType.CONST, decl.origin, decl.datatype, decl.zeropage, decl.arraysize, decl.name, decl.names, declValue, decl.sharedWithAsm, decl.splitArray, decl.position)
|
||||
return listOf(
|
||||
IAstModification.ReplaceNode(decl, const, parent),
|
||||
|
@ -94,7 +94,7 @@ class VarConstantValueTypeAdjuster(
|
|||
)
|
||||
}
|
||||
// variable only has a single write and it is the initialization value, so it can be replaced with a constant, IF the value is a constant
|
||||
errors.info("variable is never written to and was replaced by a constant", decl.position)
|
||||
errors.info("variable '${decl.name}' is never written to and was replaced by a constant", decl.position)
|
||||
val const = VarDecl(VarDeclType.CONST, decl.origin, decl.datatype, decl.zeropage, decl.arraysize, decl.name, decl.names, singleAssignment.value, decl.sharedWithAsm, decl.splitArray, decl.position)
|
||||
return listOf(
|
||||
IAstModification.ReplaceNode(decl, const, parent),
|
||||
|
@ -103,15 +103,15 @@ class VarConstantValueTypeAdjuster(
|
|||
}
|
||||
}
|
||||
/*
|
||||
TODO: need to check if there are no variable usages between the declaration and the assignment (because these rely on the original initialization value)
|
||||
if(writes.size==2) {
|
||||
val firstAssignment = writes[0].parent as? Assignment
|
||||
val secondAssignment = writes[1].parent as? Assignment
|
||||
if(firstAssignment?.origin==AssignmentOrigin.VARINIT && secondAssignment?.value?.constValue(program)!=null) {
|
||||
errors.warn("variable is only assigned once here, consider using this as the initialization value in the declaration instead", secondAssignment.position)
|
||||
TODO: need to check if there are no variable usages between the declaration and the assignment (because these rely on the original initialization value)
|
||||
if(writes.size==2) {
|
||||
val firstAssignment = writes[0].parent as? Assignment
|
||||
val secondAssignment = writes[1].parent as? Assignment
|
||||
if(firstAssignment?.origin==AssignmentOrigin.VARINIT && secondAssignment?.value?.constValue(program)!=null) {
|
||||
errors.warn("variable is only assigned once here, consider using this as the initialization value in the declaration instead", secondAssignment.position)
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
*/
|
||||
}
|
||||
|
||||
return noModifications
|
||||
|
|
|
@ -170,6 +170,7 @@ save_end:
|
|||
sub set_bpp(ubyte bpp) {
|
||||
ubyte[8] depths = [0,1,1,2,2,2,2,3]
|
||||
vera_colordepth = depths[bpp-1]
|
||||
bitsperpixel = bpp
|
||||
}
|
||||
|
||||
sub set_vera_colordepth(ubyte depth) {
|
||||
|
|
|
@ -1294,7 +1294,14 @@ internal class AstChecker(private val program: Program,
|
|||
if(funcName[0]=="setlsb" || funcName[0]=="setmsb") {
|
||||
val firstArg = functionCallStatement.args[0]
|
||||
if(firstArg !is IdentifierReference && firstArg !is ArrayIndexedExpression)
|
||||
errors.err("invalid argument to a in-place modifying function", functionCallStatement.args.first().position)
|
||||
errors.err("invalid argument to a in-place modifying function", firstArg.position)
|
||||
} else if(funcName[0]=="divmod" || funcName[0].startsWith("divmod__")) {
|
||||
val thirdArg = functionCallStatement.args[2]
|
||||
val fourthArg = functionCallStatement.args[3]
|
||||
if(thirdArg !is IdentifierReference && thirdArg !is ArrayIndexedExpression)
|
||||
errors.err("invalid argument to a in-place modifying function", thirdArg.position)
|
||||
if(fourthArg !is IdentifierReference && fourthArg !is ArrayIndexedExpression)
|
||||
errors.err("invalid argument to a in-place modifying function", fourthArg.position)
|
||||
} else {
|
||||
if(functionCallStatement.args.any { it !is IdentifierReference && it !is ArrayIndexedExpression && it !is DirectMemoryRead })
|
||||
errors.err("invalid argument to a in-place modifying function", functionCallStatement.args.first().position)
|
||||
|
|
|
@ -2,6 +2,7 @@ package prog8tests
|
|||
|
||||
import io.kotest.core.spec.style.FunSpec
|
||||
import io.kotest.matchers.shouldBe
|
||||
import io.kotest.matchers.shouldNotBe
|
||||
import prog8.ast.expressions.NumericLiteral
|
||||
import prog8.ast.statements.Assignment
|
||||
import prog8.ast.statements.FunctionCallStatement
|
||||
|
@ -98,5 +99,19 @@ main {
|
|||
(a4.value as NumericLiteral).number shouldBe 200*256+100
|
||||
(a5.args[0] as NumericLiteral).number shouldBe 6.0
|
||||
}
|
||||
|
||||
test("divmod target args should be treated as variables that are written") {
|
||||
val src="""
|
||||
main {
|
||||
ubyte c
|
||||
ubyte l
|
||||
|
||||
sub start() {
|
||||
divmod(99, 10, c, l)
|
||||
}
|
||||
}"""
|
||||
|
||||
compileText(Cx16Target(), true, src, writeAssembly = true) shouldNotBe null
|
||||
}
|
||||
})
|
||||
|
||||
|
|
6776
compiler/test/arithmetic/aggregates.asm
Normal file
6776
compiler/test/arithmetic/aggregates.asm
Normal file
File diff suppressed because it is too large
Load Diff
8201
compiler/test/arithmetic/bitshift.asm
Normal file
8201
compiler/test/arithmetic/bitshift.asm
Normal file
File diff suppressed because it is too large
Load Diff
2886
compiler/test/arithmetic/bitshift.p8ir
Normal file
2886
compiler/test/arithmetic/bitshift.p8ir
Normal file
File diff suppressed because it is too large
Load Diff
8278
compiler/test/arithmetic/bitshift2.asm
Normal file
8278
compiler/test/arithmetic/bitshift2.asm
Normal file
File diff suppressed because it is too large
Load Diff
7753
compiler/test/arithmetic/builtins.asm
Normal file
7753
compiler/test/arithmetic/builtins.asm
Normal file
File diff suppressed because it is too large
Load Diff
6527
compiler/test/arithmetic/div.asm
Normal file
6527
compiler/test/arithmetic/div.asm
Normal file
File diff suppressed because it is too large
Load Diff
6644
compiler/test/arithmetic/minus.asm
Normal file
6644
compiler/test/arithmetic/minus.asm
Normal file
File diff suppressed because it is too large
Load Diff
6541
compiler/test/arithmetic/mult.asm
Normal file
6541
compiler/test/arithmetic/mult.asm
Normal file
File diff suppressed because it is too large
Load Diff
6593
compiler/test/arithmetic/plus.asm
Normal file
6593
compiler/test/arithmetic/plus.asm
Normal file
File diff suppressed because it is too large
Load Diff
6591
compiler/test/arithmetic/postincrdecr.asm
Normal file
6591
compiler/test/arithmetic/postincrdecr.asm
Normal file
File diff suppressed because it is too large
Load Diff
5344
compiler/test/arithmetic/remainder.asm
Normal file
5344
compiler/test/arithmetic/remainder.asm
Normal file
File diff suppressed because it is too large
Load Diff
6600
compiler/test/arithmetic/sgn.asm
Normal file
6600
compiler/test/arithmetic/sgn.asm
Normal file
File diff suppressed because it is too large
Load Diff
10713
compiler/test/arithmetic/testforloops.asm
Normal file
10713
compiler/test/arithmetic/testforloops.asm
Normal file
File diff suppressed because it is too large
Load Diff
5299
compiler/test/arithmetic/testrepeat.asm
Normal file
5299
compiler/test/arithmetic/testrepeat.asm
Normal file
File diff suppressed because it is too large
Load Diff
6308
compiler/test/arithmetic/wordbyte.asm
Normal file
6308
compiler/test/arithmetic/wordbyte.asm
Normal file
File diff suppressed because it is too large
Load Diff
12134
compiler/test/comparisons/ifelse.asm
Normal file
12134
compiler/test/comparisons/ifelse.asm
Normal file
File diff suppressed because it is too large
Load Diff
12686
compiler/test/comparisons/more_compares.asm
Normal file
12686
compiler/test/comparisons/more_compares.asm
Normal file
File diff suppressed because it is too large
Load Diff
7101
compiler/test/comparisons/optimized_compares.asm
Normal file
7101
compiler/test/comparisons/optimized_compares.asm
Normal file
File diff suppressed because it is too large
Load Diff
11535
compiler/test/comparisons/test_byte_equalities.asm
Normal file
11535
compiler/test/comparisons/test_byte_equalities.asm
Normal file
File diff suppressed because it is too large
Load Diff
1691
compiler/test/comparisons/test_byte_equalities.p8
Normal file
1691
compiler/test/comparisons/test_byte_equalities.p8
Normal file
File diff suppressed because it is too large
Load Diff
9320
compiler/test/comparisons/test_byte_gt.asm
Normal file
9320
compiler/test/comparisons/test_byte_gt.asm
Normal file
File diff suppressed because it is too large
Load Diff
956
compiler/test/comparisons/test_byte_gt.p8
Normal file
956
compiler/test/comparisons/test_byte_gt.p8
Normal file
|
@ -0,0 +1,956 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
ubyte success = 0
|
||||
str datatype = "byte"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\ngreater-than tests for: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("\n>number: ")
|
||||
test_cmp_number()
|
||||
txt.print("\n>var: ")
|
||||
test_cmp_var()
|
||||
txt.print("\n>array[]: ")
|
||||
test_cmp_array()
|
||||
txt.print("\n>expr: ")
|
||||
test_cmp_expr()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(ubyte expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_ub(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_ub(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_byte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_ubyte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_word(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_float(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
sub test_cmp_number() {
|
||||
byte @shared x
|
||||
success = 0
|
||||
x=-1
|
||||
; direct jump
|
||||
if x>-1
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_byte(1)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>-1
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_byte(2)
|
||||
skip1b:
|
||||
; no else
|
||||
if x>-1
|
||||
fail_byte(3)
|
||||
|
||||
; with else
|
||||
if x>-1
|
||||
fail_byte(4)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>0
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_byte(5)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>0
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_byte(6)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>0
|
||||
fail_byte(7)
|
||||
|
||||
; with else
|
||||
if x>0
|
||||
fail_byte(8)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>1
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_byte(9)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>1
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_byte(10)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>1
|
||||
fail_byte(11)
|
||||
|
||||
; with else
|
||||
if x>1
|
||||
fail_byte(12)
|
||||
else
|
||||
success++
|
||||
|
||||
x=0
|
||||
; direct jump
|
||||
if x>-1
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>-1
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>-1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>-1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>0
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_byte(13)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>0
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_byte(14)
|
||||
skip5b:
|
||||
; no else
|
||||
if x>0
|
||||
fail_byte(15)
|
||||
|
||||
; with else
|
||||
if x>0
|
||||
fail_byte(16)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>1
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_byte(17)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>1
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_byte(18)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>1
|
||||
fail_byte(19)
|
||||
|
||||
; with else
|
||||
if x>1
|
||||
fail_byte(20)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
; direct jump
|
||||
if x>-1
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>-1
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x>-1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>-1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>0
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>0
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x>0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>1
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_byte(21)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>1
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_byte(22)
|
||||
skip9b:
|
||||
; no else
|
||||
if x>1
|
||||
fail_byte(23)
|
||||
|
||||
; with else
|
||||
if x>1
|
||||
fail_byte(24)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(18)
|
||||
}
|
||||
sub test_cmp_var() {
|
||||
byte @shared x, value
|
||||
success = 0
|
||||
x=-1
|
||||
value=-1
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_byte(25)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_byte(26)
|
||||
skip1b:
|
||||
; no else
|
||||
if x>value
|
||||
fail_byte(27)
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
fail_byte(28)
|
||||
else
|
||||
success++
|
||||
|
||||
value=0
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_byte(29)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_byte(30)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>value
|
||||
fail_byte(31)
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
fail_byte(32)
|
||||
else
|
||||
success++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_byte(33)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_byte(34)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>value
|
||||
fail_byte(35)
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
fail_byte(36)
|
||||
else
|
||||
success++
|
||||
|
||||
x=0
|
||||
value=-1
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=0
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_byte(37)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_byte(38)
|
||||
skip5b:
|
||||
; no else
|
||||
if x>value
|
||||
fail_byte(39)
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
fail_byte(40)
|
||||
else
|
||||
success++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_byte(41)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_byte(42)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>value
|
||||
fail_byte(43)
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
fail_byte(44)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
value=-1
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x>value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=0
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x>value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_byte(45)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_byte(46)
|
||||
skip9b:
|
||||
; no else
|
||||
if x>value
|
||||
fail_byte(47)
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
fail_byte(48)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(18)
|
||||
}
|
||||
sub test_cmp_array() {
|
||||
byte @shared x
|
||||
byte[] values = [0, 0]
|
||||
success = 0
|
||||
x=-1
|
||||
values[1]=-1
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_byte(49)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_byte(50)
|
||||
skip1b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_byte(51)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_byte(52)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_byte(53)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_byte(54)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_byte(55)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_byte(56)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_byte(57)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_byte(58)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_byte(59)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_byte(60)
|
||||
else
|
||||
success++
|
||||
|
||||
x=0
|
||||
values[1]=-1
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_byte(61)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_byte(62)
|
||||
skip5b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_byte(63)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_byte(64)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_byte(65)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_byte(66)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_byte(67)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_byte(68)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
values[1]=-1
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_byte(69)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_byte(70)
|
||||
skip9b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_byte(71)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_byte(72)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(18)
|
||||
}
|
||||
sub test_cmp_expr() {
|
||||
byte @shared x
|
||||
cx16.r4 = 1
|
||||
cx16.r5 = 1
|
||||
float @shared f4 = 1.0
|
||||
float @shared f5 = 1.0
|
||||
success = 0
|
||||
x=-1
|
||||
; direct jump
|
||||
if x>cx16.r4sL+-1-cx16.r5sL
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_byte(73)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>cx16.r4sL+-1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_byte(74)
|
||||
skip1b:
|
||||
; no else
|
||||
if x>cx16.r4sL+-1-cx16.r5sL
|
||||
fail_byte(75)
|
||||
|
||||
; with else
|
||||
if x>cx16.r4sL+-1-cx16.r5sL
|
||||
fail_byte(76)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>cx16.r4sL+0-cx16.r5sL
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_byte(77)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>cx16.r4sL+0-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_byte(78)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>cx16.r4sL+0-cx16.r5sL
|
||||
fail_byte(79)
|
||||
|
||||
; with else
|
||||
if x>cx16.r4sL+0-cx16.r5sL
|
||||
fail_byte(80)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>cx16.r4sL+1-cx16.r5sL
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_byte(81)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>cx16.r4sL+1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_byte(82)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>cx16.r4sL+1-cx16.r5sL
|
||||
fail_byte(83)
|
||||
|
||||
; with else
|
||||
if x>cx16.r4sL+1-cx16.r5sL
|
||||
fail_byte(84)
|
||||
else
|
||||
success++
|
||||
|
||||
x=0
|
||||
; direct jump
|
||||
if x>cx16.r4sL+-1-cx16.r5sL
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>cx16.r4sL+-1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>cx16.r4sL+-1-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>cx16.r4sL+-1-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>cx16.r4sL+0-cx16.r5sL
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_byte(85)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>cx16.r4sL+0-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_byte(86)
|
||||
skip5b:
|
||||
; no else
|
||||
if x>cx16.r4sL+0-cx16.r5sL
|
||||
fail_byte(87)
|
||||
|
||||
; with else
|
||||
if x>cx16.r4sL+0-cx16.r5sL
|
||||
fail_byte(88)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>cx16.r4sL+1-cx16.r5sL
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_byte(89)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>cx16.r4sL+1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_byte(90)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>cx16.r4sL+1-cx16.r5sL
|
||||
fail_byte(91)
|
||||
|
||||
; with else
|
||||
if x>cx16.r4sL+1-cx16.r5sL
|
||||
fail_byte(92)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
; direct jump
|
||||
if x>cx16.r4sL+-1-cx16.r5sL
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>cx16.r4sL+-1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x>cx16.r4sL+-1-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>cx16.r4sL+-1-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>cx16.r4sL+0-cx16.r5sL
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>cx16.r4sL+0-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x>cx16.r4sL+0-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>cx16.r4sL+0-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>cx16.r4sL+1-cx16.r5sL
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_byte(93)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>cx16.r4sL+1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_byte(94)
|
||||
skip9b:
|
||||
; no else
|
||||
if x>cx16.r4sL+1-cx16.r5sL
|
||||
fail_byte(95)
|
||||
|
||||
; with else
|
||||
if x>cx16.r4sL+1-cx16.r5sL
|
||||
fail_byte(96)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(18)
|
||||
}
|
||||
|
||||
}
|
||||
|
9304
compiler/test/comparisons/test_byte_gte.asm
Normal file
9304
compiler/test/comparisons/test_byte_gte.asm
Normal file
File diff suppressed because it is too large
Load Diff
956
compiler/test/comparisons/test_byte_gte.p8
Normal file
956
compiler/test/comparisons/test_byte_gte.p8
Normal file
|
@ -0,0 +1,956 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
ubyte success = 0
|
||||
str datatype = "byte"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\ngreater-equal tests for: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("\n>=number: ")
|
||||
test_cmp_number()
|
||||
txt.print("\n>=var: ")
|
||||
test_cmp_var()
|
||||
txt.print("\n>=array[]: ")
|
||||
test_cmp_array()
|
||||
txt.print("\n>=expr: ")
|
||||
test_cmp_expr()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(ubyte expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_ub(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_ub(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_byte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_ubyte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_word(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_float(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
sub test_cmp_number() {
|
||||
byte @shared x
|
||||
success = 0
|
||||
x=-1
|
||||
; direct jump
|
||||
if x>=-1
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>=-1
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x>=-1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=-1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=0
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_byte(1)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>=0
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_byte(2)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>=0
|
||||
fail_byte(3)
|
||||
|
||||
; with else
|
||||
if x>=0
|
||||
fail_byte(4)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>=1
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_byte(5)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>=1
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_byte(6)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>=1
|
||||
fail_byte(7)
|
||||
|
||||
; with else
|
||||
if x>=1
|
||||
fail_byte(8)
|
||||
else
|
||||
success++
|
||||
|
||||
x=0
|
||||
; direct jump
|
||||
if x>=-1
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>=-1
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>=-1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=-1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=0
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>=0
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x>=0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=1
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_byte(9)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>=1
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_byte(10)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>=1
|
||||
fail_byte(11)
|
||||
|
||||
; with else
|
||||
if x>=1
|
||||
fail_byte(12)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
; direct jump
|
||||
if x>=-1
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>=-1
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x>=-1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=-1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=0
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>=0
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x>=0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=1
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>=1
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x>=1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(27)
|
||||
}
|
||||
sub test_cmp_var() {
|
||||
byte @shared x, value
|
||||
success = 0
|
||||
x=-1
|
||||
value=-1
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x>=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=0
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_byte(13)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_byte(14)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>=value
|
||||
fail_byte(15)
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
fail_byte(16)
|
||||
else
|
||||
success++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_byte(17)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_byte(18)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>=value
|
||||
fail_byte(19)
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
fail_byte(20)
|
||||
else
|
||||
success++
|
||||
|
||||
x=0
|
||||
value=-1
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=0
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x>=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_byte(21)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_byte(22)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>=value
|
||||
fail_byte(23)
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
fail_byte(24)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
value=-1
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x>=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=0
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x>=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x>=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(27)
|
||||
}
|
||||
sub test_cmp_array() {
|
||||
byte @shared x
|
||||
byte[] values = [0, 0]
|
||||
success = 0
|
||||
x=-1
|
||||
values[1]=-1
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_byte(25)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_byte(26)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
fail_byte(27)
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
fail_byte(28)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_byte(29)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_byte(30)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
fail_byte(31)
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
fail_byte(32)
|
||||
else
|
||||
success++
|
||||
|
||||
x=0
|
||||
values[1]=-1
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_byte(33)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_byte(34)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
fail_byte(35)
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
fail_byte(36)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
values[1]=-1
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(27)
|
||||
}
|
||||
sub test_cmp_expr() {
|
||||
byte @shared x
|
||||
cx16.r4 = 1
|
||||
cx16.r5 = 1
|
||||
float @shared f4 = 1.0
|
||||
float @shared f5 = 1.0
|
||||
success = 0
|
||||
x=-1
|
||||
; direct jump
|
||||
if x>=cx16.r4sL+-1-cx16.r5sL
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>=cx16.r4sL+-1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x>=cx16.r4sL+-1-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4sL+-1-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=cx16.r4sL+0-cx16.r5sL
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_byte(37)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>=cx16.r4sL+0-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_byte(38)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>=cx16.r4sL+0-cx16.r5sL
|
||||
fail_byte(39)
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4sL+0-cx16.r5sL
|
||||
fail_byte(40)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>=cx16.r4sL+1-cx16.r5sL
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_byte(41)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>=cx16.r4sL+1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_byte(42)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>=cx16.r4sL+1-cx16.r5sL
|
||||
fail_byte(43)
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4sL+1-cx16.r5sL
|
||||
fail_byte(44)
|
||||
else
|
||||
success++
|
||||
|
||||
x=0
|
||||
; direct jump
|
||||
if x>=cx16.r4sL+-1-cx16.r5sL
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>=cx16.r4sL+-1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>=cx16.r4sL+-1-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4sL+-1-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=cx16.r4sL+0-cx16.r5sL
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>=cx16.r4sL+0-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x>=cx16.r4sL+0-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4sL+0-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=cx16.r4sL+1-cx16.r5sL
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_byte(45)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>=cx16.r4sL+1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_byte(46)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>=cx16.r4sL+1-cx16.r5sL
|
||||
fail_byte(47)
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4sL+1-cx16.r5sL
|
||||
fail_byte(48)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
; direct jump
|
||||
if x>=cx16.r4sL+-1-cx16.r5sL
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>=cx16.r4sL+-1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x>=cx16.r4sL+-1-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4sL+-1-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=cx16.r4sL+0-cx16.r5sL
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>=cx16.r4sL+0-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x>=cx16.r4sL+0-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4sL+0-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=cx16.r4sL+1-cx16.r5sL
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>=cx16.r4sL+1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x>=cx16.r4sL+1-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4sL+1-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(27)
|
||||
}
|
||||
|
||||
}
|
||||
|
9403
compiler/test/comparisons/test_byte_lt.asm
Normal file
9403
compiler/test/comparisons/test_byte_lt.asm
Normal file
File diff suppressed because it is too large
Load Diff
956
compiler/test/comparisons/test_byte_lt.p8
Normal file
956
compiler/test/comparisons/test_byte_lt.p8
Normal file
|
@ -0,0 +1,956 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
ubyte success = 0
|
||||
str datatype = "byte"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\nless-than tests for: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("\n<number: ")
|
||||
test_cmp_number()
|
||||
txt.print("\n<var: ")
|
||||
test_cmp_var()
|
||||
txt.print("\n<array[]: ")
|
||||
test_cmp_array()
|
||||
txt.print("\n<expr: ")
|
||||
test_cmp_expr()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(ubyte expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_ub(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_ub(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_byte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_ubyte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_word(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_float(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
sub test_cmp_number() {
|
||||
byte @shared x
|
||||
success = 0
|
||||
x=-1
|
||||
; direct jump
|
||||
if x<-1
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_byte(1)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<-1
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_byte(2)
|
||||
skip1b:
|
||||
; no else
|
||||
if x<-1
|
||||
fail_byte(3)
|
||||
|
||||
; with else
|
||||
if x<-1
|
||||
fail_byte(4)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<0
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<0
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<1
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<1
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=0
|
||||
; direct jump
|
||||
if x<-1
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_byte(5)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<-1
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_byte(6)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<-1
|
||||
fail_byte(7)
|
||||
|
||||
; with else
|
||||
if x<-1
|
||||
fail_byte(8)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<0
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_byte(9)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<0
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_byte(10)
|
||||
skip5b:
|
||||
; no else
|
||||
if x<0
|
||||
fail_byte(11)
|
||||
|
||||
; with else
|
||||
if x<0
|
||||
fail_byte(12)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<1
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<1
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
; direct jump
|
||||
if x<-1
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_byte(13)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<-1
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_byte(14)
|
||||
skip7b:
|
||||
; no else
|
||||
if x<-1
|
||||
fail_byte(15)
|
||||
|
||||
; with else
|
||||
if x<-1
|
||||
fail_byte(16)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<0
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_byte(17)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<0
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_byte(18)
|
||||
skip8b:
|
||||
; no else
|
||||
if x<0
|
||||
fail_byte(19)
|
||||
|
||||
; with else
|
||||
if x<0
|
||||
fail_byte(20)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<1
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_byte(21)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<1
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_byte(22)
|
||||
skip9b:
|
||||
; no else
|
||||
if x<1
|
||||
fail_byte(23)
|
||||
|
||||
; with else
|
||||
if x<1
|
||||
fail_byte(24)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(18)
|
||||
}
|
||||
sub test_cmp_var() {
|
||||
byte @shared x, value
|
||||
success = 0
|
||||
x=-1
|
||||
value=-1
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_byte(25)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_byte(26)
|
||||
skip1b:
|
||||
; no else
|
||||
if x<value
|
||||
fail_byte(27)
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
fail_byte(28)
|
||||
else
|
||||
success++
|
||||
|
||||
value=0
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=0
|
||||
value=-1
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_byte(29)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_byte(30)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<value
|
||||
fail_byte(31)
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
fail_byte(32)
|
||||
else
|
||||
success++
|
||||
|
||||
value=0
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_byte(33)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_byte(34)
|
||||
skip5b:
|
||||
; no else
|
||||
if x<value
|
||||
fail_byte(35)
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
fail_byte(36)
|
||||
else
|
||||
success++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
value=-1
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_byte(37)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_byte(38)
|
||||
skip7b:
|
||||
; no else
|
||||
if x<value
|
||||
fail_byte(39)
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
fail_byte(40)
|
||||
else
|
||||
success++
|
||||
|
||||
value=0
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_byte(41)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_byte(42)
|
||||
skip8b:
|
||||
; no else
|
||||
if x<value
|
||||
fail_byte(43)
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
fail_byte(44)
|
||||
else
|
||||
success++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_byte(45)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_byte(46)
|
||||
skip9b:
|
||||
; no else
|
||||
if x<value
|
||||
fail_byte(47)
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
fail_byte(48)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(18)
|
||||
}
|
||||
sub test_cmp_array() {
|
||||
byte @shared x
|
||||
byte[] values = [0, 0]
|
||||
success = 0
|
||||
x=-1
|
||||
values[1]=-1
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_byte(49)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_byte(50)
|
||||
skip1b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_byte(51)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_byte(52)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=0
|
||||
values[1]=-1
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_byte(53)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_byte(54)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_byte(55)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_byte(56)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_byte(57)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_byte(58)
|
||||
skip5b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_byte(59)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_byte(60)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
values[1]=-1
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_byte(61)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_byte(62)
|
||||
skip7b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_byte(63)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_byte(64)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_byte(65)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_byte(66)
|
||||
skip8b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_byte(67)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_byte(68)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_byte(69)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_byte(70)
|
||||
skip9b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_byte(71)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_byte(72)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(18)
|
||||
}
|
||||
sub test_cmp_expr() {
|
||||
byte @shared x
|
||||
cx16.r4 = 1
|
||||
cx16.r5 = 1
|
||||
float @shared f4 = 1.0
|
||||
float @shared f5 = 1.0
|
||||
success = 0
|
||||
x=-1
|
||||
; direct jump
|
||||
if x<cx16.r4sL+-1-cx16.r5sL
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_byte(73)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<cx16.r4sL+-1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_byte(74)
|
||||
skip1b:
|
||||
; no else
|
||||
if x<cx16.r4sL+-1-cx16.r5sL
|
||||
fail_byte(75)
|
||||
|
||||
; with else
|
||||
if x<cx16.r4sL+-1-cx16.r5sL
|
||||
fail_byte(76)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<cx16.r4sL+0-cx16.r5sL
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<cx16.r4sL+0-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<cx16.r4sL+0-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<cx16.r4sL+0-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<cx16.r4sL+1-cx16.r5sL
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<cx16.r4sL+1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<cx16.r4sL+1-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<cx16.r4sL+1-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=0
|
||||
; direct jump
|
||||
if x<cx16.r4sL+-1-cx16.r5sL
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_byte(77)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<cx16.r4sL+-1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_byte(78)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<cx16.r4sL+-1-cx16.r5sL
|
||||
fail_byte(79)
|
||||
|
||||
; with else
|
||||
if x<cx16.r4sL+-1-cx16.r5sL
|
||||
fail_byte(80)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<cx16.r4sL+0-cx16.r5sL
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_byte(81)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<cx16.r4sL+0-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_byte(82)
|
||||
skip5b:
|
||||
; no else
|
||||
if x<cx16.r4sL+0-cx16.r5sL
|
||||
fail_byte(83)
|
||||
|
||||
; with else
|
||||
if x<cx16.r4sL+0-cx16.r5sL
|
||||
fail_byte(84)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<cx16.r4sL+1-cx16.r5sL
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<cx16.r4sL+1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<cx16.r4sL+1-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<cx16.r4sL+1-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
; direct jump
|
||||
if x<cx16.r4sL+-1-cx16.r5sL
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_byte(85)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<cx16.r4sL+-1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_byte(86)
|
||||
skip7b:
|
||||
; no else
|
||||
if x<cx16.r4sL+-1-cx16.r5sL
|
||||
fail_byte(87)
|
||||
|
||||
; with else
|
||||
if x<cx16.r4sL+-1-cx16.r5sL
|
||||
fail_byte(88)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<cx16.r4sL+0-cx16.r5sL
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_byte(89)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<cx16.r4sL+0-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_byte(90)
|
||||
skip8b:
|
||||
; no else
|
||||
if x<cx16.r4sL+0-cx16.r5sL
|
||||
fail_byte(91)
|
||||
|
||||
; with else
|
||||
if x<cx16.r4sL+0-cx16.r5sL
|
||||
fail_byte(92)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<cx16.r4sL+1-cx16.r5sL
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_byte(93)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<cx16.r4sL+1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_byte(94)
|
||||
skip9b:
|
||||
; no else
|
||||
if x<cx16.r4sL+1-cx16.r5sL
|
||||
fail_byte(95)
|
||||
|
||||
; with else
|
||||
if x<cx16.r4sL+1-cx16.r5sL
|
||||
fail_byte(96)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(18)
|
||||
}
|
||||
|
||||
}
|
||||
|
9119
compiler/test/comparisons/test_byte_lte.asm
Normal file
9119
compiler/test/comparisons/test_byte_lte.asm
Normal file
File diff suppressed because it is too large
Load Diff
956
compiler/test/comparisons/test_byte_lte.p8
Normal file
956
compiler/test/comparisons/test_byte_lte.p8
Normal file
|
@ -0,0 +1,956 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
ubyte success = 0
|
||||
str datatype = "byte"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\nless-equal tests for: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("\n<=number: ")
|
||||
test_cmp_number()
|
||||
txt.print("\n<=var: ")
|
||||
test_cmp_var()
|
||||
txt.print("\n<=array[]: ")
|
||||
test_cmp_array()
|
||||
txt.print("\n<=expr: ")
|
||||
test_cmp_expr()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(ubyte expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_ub(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_ub(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_byte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_ubyte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_word(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_float(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
sub test_cmp_number() {
|
||||
byte @shared x
|
||||
success = 0
|
||||
x=-1
|
||||
; direct jump
|
||||
if x<=-1
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<=-1
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x<=-1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=-1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<=0
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<=0
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<=0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<=1
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<=1
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<=1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=0
|
||||
; direct jump
|
||||
if x<=-1
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_byte(1)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<=-1
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_byte(2)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<=-1
|
||||
fail_byte(3)
|
||||
|
||||
; with else
|
||||
if x<=-1
|
||||
fail_byte(4)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<=0
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<=0
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x<=0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<=1
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<=1
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<=1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
; direct jump
|
||||
if x<=-1
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_byte(5)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<=-1
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_byte(6)
|
||||
skip7b:
|
||||
; no else
|
||||
if x<=-1
|
||||
fail_byte(7)
|
||||
|
||||
; with else
|
||||
if x<=-1
|
||||
fail_byte(8)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<=0
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_byte(9)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<=0
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_byte(10)
|
||||
skip8b:
|
||||
; no else
|
||||
if x<=0
|
||||
fail_byte(11)
|
||||
|
||||
; with else
|
||||
if x<=0
|
||||
fail_byte(12)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<=1
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<=1
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x<=1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(27)
|
||||
}
|
||||
sub test_cmp_var() {
|
||||
byte @shared x, value
|
||||
success = 0
|
||||
x=-1
|
||||
value=-1
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x<=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=0
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=0
|
||||
value=-1
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_byte(13)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_byte(14)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<=value
|
||||
fail_byte(15)
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
fail_byte(16)
|
||||
else
|
||||
success++
|
||||
|
||||
value=0
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x<=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
value=-1
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_byte(17)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_byte(18)
|
||||
skip7b:
|
||||
; no else
|
||||
if x<=value
|
||||
fail_byte(19)
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
fail_byte(20)
|
||||
else
|
||||
success++
|
||||
|
||||
value=0
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_byte(21)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_byte(22)
|
||||
skip8b:
|
||||
; no else
|
||||
if x<=value
|
||||
fail_byte(23)
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
fail_byte(24)
|
||||
else
|
||||
success++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x<=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(27)
|
||||
}
|
||||
sub test_cmp_array() {
|
||||
byte @shared x
|
||||
byte[] values = [0, 0]
|
||||
success = 0
|
||||
x=-1
|
||||
values[1]=-1
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=0
|
||||
values[1]=-1
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_byte(25)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_byte(26)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
fail_byte(27)
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
fail_byte(28)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
values[1]=-1
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_byte(29)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_byte(30)
|
||||
skip7b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
fail_byte(31)
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
fail_byte(32)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_byte(33)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_byte(34)
|
||||
skip8b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
fail_byte(35)
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
fail_byte(36)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(27)
|
||||
}
|
||||
sub test_cmp_expr() {
|
||||
byte @shared x
|
||||
cx16.r4 = 1
|
||||
cx16.r5 = 1
|
||||
float @shared f4 = 1.0
|
||||
float @shared f5 = 1.0
|
||||
success = 0
|
||||
x=-1
|
||||
; direct jump
|
||||
if x<=cx16.r4sL+-1-cx16.r5sL
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<=cx16.r4sL+-1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x<=cx16.r4sL+-1-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4sL+-1-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<=cx16.r4sL+0-cx16.r5sL
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<=cx16.r4sL+0-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<=cx16.r4sL+0-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4sL+0-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<=cx16.r4sL+1-cx16.r5sL
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<=cx16.r4sL+1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<=cx16.r4sL+1-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4sL+1-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=0
|
||||
; direct jump
|
||||
if x<=cx16.r4sL+-1-cx16.r5sL
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_byte(37)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<=cx16.r4sL+-1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_byte(38)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<=cx16.r4sL+-1-cx16.r5sL
|
||||
fail_byte(39)
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4sL+-1-cx16.r5sL
|
||||
fail_byte(40)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<=cx16.r4sL+0-cx16.r5sL
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<=cx16.r4sL+0-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x<=cx16.r4sL+0-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4sL+0-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<=cx16.r4sL+1-cx16.r5sL
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<=cx16.r4sL+1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<=cx16.r4sL+1-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4sL+1-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
; direct jump
|
||||
if x<=cx16.r4sL+-1-cx16.r5sL
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_byte(41)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<=cx16.r4sL+-1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_byte(42)
|
||||
skip7b:
|
||||
; no else
|
||||
if x<=cx16.r4sL+-1-cx16.r5sL
|
||||
fail_byte(43)
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4sL+-1-cx16.r5sL
|
||||
fail_byte(44)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<=cx16.r4sL+0-cx16.r5sL
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_byte(45)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<=cx16.r4sL+0-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_byte(46)
|
||||
skip8b:
|
||||
; no else
|
||||
if x<=cx16.r4sL+0-cx16.r5sL
|
||||
fail_byte(47)
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4sL+0-cx16.r5sL
|
||||
fail_byte(48)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<=cx16.r4sL+1-cx16.r5sL
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<=cx16.r4sL+1-cx16.r5sL
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x<=cx16.r4sL+1-cx16.r5sL
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4sL+1-cx16.r5sL
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(27)
|
||||
}
|
||||
|
||||
}
|
||||
|
9992
compiler/test/comparisons/test_float_equalities.asm
Normal file
9992
compiler/test/comparisons/test_float_equalities.asm
Normal file
File diff suppressed because it is too large
Load Diff
745
compiler/test/comparisons/test_float_equalities.p8
Normal file
745
compiler/test/comparisons/test_float_equalities.p8
Normal file
|
@ -0,0 +1,745 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
ubyte success = 0
|
||||
str datatype = "float"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\n(in)equality tests for datatype: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("==0: ")
|
||||
test_is_zero()
|
||||
txt.print("\n!=0: ")
|
||||
test_not_zero()
|
||||
txt.print("\n==number: ")
|
||||
test_is_number()
|
||||
txt.print("\n!=number: ")
|
||||
test_not_number()
|
||||
txt.print("\n==var: ")
|
||||
test_is_var()
|
||||
txt.print("\n!=var: ")
|
||||
test_not_var()
|
||||
txt.print("\n==array[]: ")
|
||||
test_is_array()
|
||||
txt.print("\n!=array[]: ")
|
||||
test_not_array()
|
||||
txt.print("\n==expr: ")
|
||||
test_is_expr()
|
||||
txt.print("\n!=expr: ")
|
||||
test_not_expr()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(ubyte expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_ub(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_ub(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_byte(uword idx, byte v1) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.chrout(':')
|
||||
txt.print_b(v1)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_ubyte(uword idx, ubyte v1) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.chrout(':')
|
||||
txt.print_ub(v1)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_word(uword idx, word v1) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.chrout(':')
|
||||
txt.print_w(v1)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx, uword v1) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.chrout(':')
|
||||
txt.print_uw(v1)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_float(uword idx, float v1) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.chrout(':')
|
||||
floats.print(v1)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
|
||||
sub test_is_zero() {
|
||||
float @shared x
|
||||
success = 0
|
||||
|
||||
x=0.0
|
||||
; direct jump
|
||||
if x==0
|
||||
goto lbl1
|
||||
goto skip1
|
||||
lbl1: success++
|
||||
skip1:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2
|
||||
if x==0
|
||||
goto cx16.r3
|
||||
goto skip2
|
||||
lbl2: success++
|
||||
skip2:
|
||||
; no else
|
||||
if x==0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x==0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x = 1234.56
|
||||
; direct jump
|
||||
if x==0
|
||||
goto skip3
|
||||
success++
|
||||
skip3:
|
||||
; indirect jump
|
||||
cx16.r3 = &skip4
|
||||
if x==0
|
||||
goto cx16.r3
|
||||
success++
|
||||
skip4:
|
||||
; no else
|
||||
success++
|
||||
if x==0
|
||||
success--
|
||||
|
||||
; with else
|
||||
if x==0
|
||||
cx16.r0L++
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(8)
|
||||
}
|
||||
|
||||
|
||||
sub test_not_zero() {
|
||||
float @shared x
|
||||
success = 0
|
||||
|
||||
x=1234.56
|
||||
; direct jump
|
||||
if x!=0
|
||||
goto lbl1
|
||||
goto skip1
|
||||
lbl1: success++
|
||||
skip1:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2
|
||||
if x!=0
|
||||
goto cx16.r3
|
||||
goto skip2
|
||||
lbl2: success++
|
||||
skip2:
|
||||
; no else
|
||||
if x!=0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x!=0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x = 0.0
|
||||
; direct jump
|
||||
if x!=0
|
||||
goto skip3
|
||||
success++
|
||||
skip3:
|
||||
; indirect jump
|
||||
cx16.r3 = &skip4
|
||||
if x!=0
|
||||
goto cx16.r3
|
||||
success++
|
||||
skip4:
|
||||
; no else
|
||||
success++
|
||||
if x!=0
|
||||
success--
|
||||
|
||||
; with else
|
||||
if x!=0
|
||||
cx16.r0L++
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(8)
|
||||
}
|
||||
|
||||
sub test_is_number() {
|
||||
float @shared x
|
||||
success = 0
|
||||
x=0.0
|
||||
; direct jump
|
||||
if x==1234.56
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_float(1,0.0)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x==1234.56
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_float(2,0.0)
|
||||
skip1b:
|
||||
; no else
|
||||
if x==1234.56
|
||||
fail_float(3,0.0)
|
||||
|
||||
; with else
|
||||
if x==1234.56
|
||||
fail_float(4,0.0)
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1234.56
|
||||
; direct jump
|
||||
if x==1234.56
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x==1234.56
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x==1234.56
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x==1234.56
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(4)
|
||||
}
|
||||
sub test_not_number() {
|
||||
float @shared x
|
||||
success = 0
|
||||
x=0.0
|
||||
; direct jump
|
||||
if x!=1234.56
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x!=1234.56
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x!=1234.56
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x!=1234.56
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1234.56
|
||||
; direct jump
|
||||
if x!=1234.56
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_float(5,1234.56)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x!=1234.56
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_float(6,1234.56)
|
||||
skip2b:
|
||||
; no else
|
||||
if x!=1234.56
|
||||
fail_float(7,1234.56)
|
||||
|
||||
; with else
|
||||
if x!=1234.56
|
||||
fail_float(8,1234.56)
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(4)
|
||||
}
|
||||
sub test_is_var() {
|
||||
float @shared x, value
|
||||
success = 0
|
||||
x=0.0
|
||||
value=1234.56
|
||||
; direct jump
|
||||
if x==value
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_float(9,0.0)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x==value
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_float(10,0.0)
|
||||
skip1b:
|
||||
; no else
|
||||
if x==value
|
||||
fail_float(11,0.0)
|
||||
|
||||
; with else
|
||||
if x==value
|
||||
fail_float(12,0.0)
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1234.56
|
||||
value=1234.56
|
||||
; direct jump
|
||||
if x==value
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x==value
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x==value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x==value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(4)
|
||||
}
|
||||
sub test_not_var() {
|
||||
float @shared x, value
|
||||
success = 0
|
||||
x=0.0
|
||||
value=1234.56
|
||||
; direct jump
|
||||
if x!=value
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x!=value
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x!=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x!=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1234.56
|
||||
value=1234.56
|
||||
; direct jump
|
||||
if x!=value
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_float(13,1234.56)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x!=value
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_float(14,1234.56)
|
||||
skip2b:
|
||||
; no else
|
||||
if x!=value
|
||||
fail_float(15,1234.56)
|
||||
|
||||
; with else
|
||||
if x!=value
|
||||
fail_float(16,1234.56)
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(4)
|
||||
}
|
||||
sub test_is_expr() {
|
||||
float @shared x
|
||||
cx16.r4 = 1
|
||||
cx16.r5 = 1
|
||||
float @shared f4 = 1.0
|
||||
float @shared f5 = 1.0
|
||||
success = 0
|
||||
x=0.0
|
||||
; direct jump
|
||||
if x==f4+1234.56-f5
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_float(17,0.0)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x==f4+1234.56-f5
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_float(18,0.0)
|
||||
skip1b:
|
||||
; no else
|
||||
if x==f4+1234.56-f5
|
||||
fail_float(19,0.0)
|
||||
|
||||
; with else
|
||||
if x==f4+1234.56-f5
|
||||
fail_float(20,0.0)
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1234.56
|
||||
; direct jump
|
||||
if x==f4+1234.56-f5
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x==f4+1234.56-f5
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x==f4+1234.56-f5
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x==f4+1234.56-f5
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(4)
|
||||
}
|
||||
sub test_not_expr() {
|
||||
float @shared x
|
||||
cx16.r4 = 1
|
||||
cx16.r5 = 1
|
||||
float @shared f4 = 1.0
|
||||
float @shared f5 = 1.0
|
||||
success = 0
|
||||
x=0.0
|
||||
; direct jump
|
||||
if x!=f4+1234.56-f5
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x!=f4+1234.56-f5
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x!=f4+1234.56-f5
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x!=f4+1234.56-f5
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1234.56
|
||||
; direct jump
|
||||
if x!=f4+1234.56-f5
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_float(21,1234.56)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x!=f4+1234.56-f5
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_float(22,1234.56)
|
||||
skip2b:
|
||||
; no else
|
||||
if x!=f4+1234.56-f5
|
||||
fail_float(23,1234.56)
|
||||
|
||||
; with else
|
||||
if x!=f4+1234.56-f5
|
||||
fail_float(24,1234.56)
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(4)
|
||||
}
|
||||
sub test_is_array() {
|
||||
float @shared x
|
||||
float[] values = [0, 0]
|
||||
float[] sources = [0, 0]
|
||||
success = 0
|
||||
x=0.0
|
||||
sources[1]=0.0
|
||||
values[1]=1234.56
|
||||
; direct jump
|
||||
if x==values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_float(25,0.0)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x==values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_float(26,0.0)
|
||||
skip1b:
|
||||
; no else
|
||||
if x==values[1]
|
||||
fail_float(27,0.0)
|
||||
|
||||
; with else
|
||||
if x==values[1]
|
||||
fail_float(28,0.0)
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]==values[1]
|
||||
goto lbl1c
|
||||
goto skip1c
|
||||
lbl1c: fail_float(29,0.0)
|
||||
skip1c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1d
|
||||
if sources[1]==values[1]
|
||||
goto cx16.r3
|
||||
goto skip1d
|
||||
lbl1d: fail_float(30,0.0)
|
||||
skip1d:
|
||||
; no else
|
||||
if sources[1]==values[1]
|
||||
fail_float(31,0.0)
|
||||
|
||||
; with else
|
||||
if sources[1]==values[1]
|
||||
fail_float(32,0.0)
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1234.56
|
||||
sources[1]=1234.56
|
||||
values[1]=1234.56
|
||||
; direct jump
|
||||
if x==values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x==values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x==values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x==values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]==values[1]
|
||||
goto lbl2c
|
||||
goto skip2c
|
||||
lbl2c: success++
|
||||
skip2c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2d
|
||||
if sources[1]==values[1]
|
||||
goto cx16.r3
|
||||
goto skip2d
|
||||
lbl2d: success++
|
||||
skip2d:
|
||||
; no else
|
||||
if sources[1]==values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]==values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(8)
|
||||
}
|
||||
sub test_not_array() {
|
||||
float @shared x
|
||||
float[] values = [0, 0]
|
||||
float[] sources = [0, 0]
|
||||
success = 0
|
||||
x=0.0
|
||||
sources[1]=0.0
|
||||
values[1]=1234.56
|
||||
; direct jump
|
||||
if x!=values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x!=values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x!=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x!=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]!=values[1]
|
||||
goto lbl1c
|
||||
goto skip1c
|
||||
lbl1c: success++
|
||||
skip1c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1d
|
||||
if sources[1]!=values[1]
|
||||
goto cx16.r3
|
||||
goto skip1d
|
||||
lbl1d: success++
|
||||
skip1d:
|
||||
; no else
|
||||
if sources[1]!=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]!=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1234.56
|
||||
sources[1]=1234.56
|
||||
values[1]=1234.56
|
||||
; direct jump
|
||||
if x!=values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_float(33,1234.56)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x!=values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_float(34,1234.56)
|
||||
skip2b:
|
||||
; no else
|
||||
if x!=values[1]
|
||||
fail_float(35,1234.56)
|
||||
|
||||
; with else
|
||||
if x!=values[1]
|
||||
fail_float(36,1234.56)
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]!=values[1]
|
||||
goto lbl2c
|
||||
goto skip2c
|
||||
lbl2c: fail_float(37,1234.56)
|
||||
skip2c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2d
|
||||
if sources[1]!=values[1]
|
||||
goto cx16.r3
|
||||
goto skip2d
|
||||
lbl2d: fail_float(38,1234.56)
|
||||
skip2d:
|
||||
; no else
|
||||
if sources[1]!=values[1]
|
||||
fail_float(39,1234.56)
|
||||
|
||||
; with else
|
||||
if sources[1]!=values[1]
|
||||
fail_float(40,1234.56)
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(8)
|
||||
}
|
||||
|
||||
}
|
||||
|
8831
compiler/test/comparisons/test_float_gt.asm
Normal file
8831
compiler/test/comparisons/test_float_gt.asm
Normal file
File diff suppressed because it is too large
Load Diff
482
compiler/test/comparisons/test_float_gt.p8
Normal file
482
compiler/test/comparisons/test_float_gt.p8
Normal file
|
@ -0,0 +1,482 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
ubyte success = 0
|
||||
str datatype = "float"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\ngreater-than tests for: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("\n>number: ")
|
||||
test_cmp_number()
|
||||
txt.print("\n>var: ")
|
||||
test_cmp_var()
|
||||
txt.print("\n>array[]: ")
|
||||
test_cmp_array()
|
||||
txt.print("\n>expr: ")
|
||||
test_cmp_expr()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(ubyte expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_ub(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_ub(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_byte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_ubyte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_word(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_float(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
sub test_cmp_number() {
|
||||
float @shared x
|
||||
success = 0
|
||||
x=0.0
|
||||
; direct jump
|
||||
if x>0.0
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_float(1)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>0.0
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_float(2)
|
||||
skip1b:
|
||||
; no else
|
||||
if x>0.0
|
||||
fail_float(3)
|
||||
|
||||
; with else
|
||||
if x>0.0
|
||||
fail_float(4)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>1234.56
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_float(5)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>1234.56
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_float(6)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>1234.56
|
||||
fail_float(7)
|
||||
|
||||
; with else
|
||||
if x>1234.56
|
||||
fail_float(8)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1234.56
|
||||
; direct jump
|
||||
if x>0.0
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>0.0
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x>0.0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>0.0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>1234.56
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_float(9)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>1234.56
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_float(10)
|
||||
skip4b:
|
||||
; no else
|
||||
if x>1234.56
|
||||
fail_float(11)
|
||||
|
||||
; with else
|
||||
if x>1234.56
|
||||
fail_float(12)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(7)
|
||||
}
|
||||
sub test_cmp_var() {
|
||||
float @shared x, value
|
||||
success = 0
|
||||
x=0.0
|
||||
value=0.0
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_float(13)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_float(14)
|
||||
skip1b:
|
||||
; no else
|
||||
if x>value
|
||||
fail_float(15)
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
fail_float(16)
|
||||
else
|
||||
success++
|
||||
|
||||
value=1234.56
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_float(17)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_float(18)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>value
|
||||
fail_float(19)
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
fail_float(20)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1234.56
|
||||
value=0.0
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x>value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=1234.56
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_float(21)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_float(22)
|
||||
skip4b:
|
||||
; no else
|
||||
if x>value
|
||||
fail_float(23)
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
fail_float(24)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(7)
|
||||
}
|
||||
sub test_cmp_array() {
|
||||
float @shared x
|
||||
float[] values = [0, 0]
|
||||
success = 0
|
||||
x=0.0
|
||||
values[1]=0.0
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_float(25)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_float(26)
|
||||
skip1b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_float(27)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_float(28)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1234.56
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_float(29)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_float(30)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_float(31)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_float(32)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1234.56
|
||||
values[1]=0.0
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1234.56
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_float(33)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_float(34)
|
||||
skip4b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_float(35)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_float(36)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(7)
|
||||
}
|
||||
sub test_cmp_expr() {
|
||||
float @shared x
|
||||
cx16.r4 = 1
|
||||
cx16.r5 = 1
|
||||
float @shared f4 = 1.0
|
||||
float @shared f5 = 1.0
|
||||
success = 0
|
||||
x=0.0
|
||||
; direct jump
|
||||
if x>f4+0.0-f5
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_float(37)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>f4+0.0-f5
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_float(38)
|
||||
skip1b:
|
||||
; no else
|
||||
if x>f4+0.0-f5
|
||||
fail_float(39)
|
||||
|
||||
; with else
|
||||
if x>f4+0.0-f5
|
||||
fail_float(40)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>f4+1234.56-f5
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_float(41)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>f4+1234.56-f5
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_float(42)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>f4+1234.56-f5
|
||||
fail_float(43)
|
||||
|
||||
; with else
|
||||
if x>f4+1234.56-f5
|
||||
fail_float(44)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1234.56
|
||||
; direct jump
|
||||
if x>f4+0.0-f5
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>f4+0.0-f5
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x>f4+0.0-f5
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>f4+0.0-f5
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>f4+1234.56-f5
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_float(45)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>f4+1234.56-f5
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_float(46)
|
||||
skip4b:
|
||||
; no else
|
||||
if x>f4+1234.56-f5
|
||||
fail_float(47)
|
||||
|
||||
; with else
|
||||
if x>f4+1234.56-f5
|
||||
fail_float(48)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(7)
|
||||
}
|
||||
|
||||
}
|
||||
|
8767
compiler/test/comparisons/test_float_gte.asm
Normal file
8767
compiler/test/comparisons/test_float_gte.asm
Normal file
File diff suppressed because it is too large
Load Diff
482
compiler/test/comparisons/test_float_gte.p8
Normal file
482
compiler/test/comparisons/test_float_gte.p8
Normal file
|
@ -0,0 +1,482 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
ubyte success = 0
|
||||
str datatype = "float"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\ngreater-equal tests for: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("\n>=number: ")
|
||||
test_cmp_number()
|
||||
txt.print("\n>=var: ")
|
||||
test_cmp_var()
|
||||
txt.print("\n>=array[]: ")
|
||||
test_cmp_array()
|
||||
txt.print("\n>=expr: ")
|
||||
test_cmp_expr()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(ubyte expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_ub(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_ub(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_byte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_ubyte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_word(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_float(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
sub test_cmp_number() {
|
||||
float @shared x
|
||||
success = 0
|
||||
x=0.0
|
||||
; direct jump
|
||||
if x>=0.0
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>=0.0
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x>=0.0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=0.0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=1234.56
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_float(1)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>=1234.56
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_float(2)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>=1234.56
|
||||
fail_float(3)
|
||||
|
||||
; with else
|
||||
if x>=1234.56
|
||||
fail_float(4)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1234.56
|
||||
; direct jump
|
||||
if x>=0.0
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>=0.0
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x>=0.0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=0.0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=1234.56
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>=1234.56
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>=1234.56
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=1234.56
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(13)
|
||||
}
|
||||
sub test_cmp_var() {
|
||||
float @shared x, value
|
||||
success = 0
|
||||
x=0.0
|
||||
value=0.0
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x>=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=1234.56
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_float(5)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_float(6)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>=value
|
||||
fail_float(7)
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
fail_float(8)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1234.56
|
||||
value=0.0
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x>=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=1234.56
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(13)
|
||||
}
|
||||
sub test_cmp_array() {
|
||||
float @shared x
|
||||
float[] values = [0, 0]
|
||||
success = 0
|
||||
x=0.0
|
||||
values[1]=0.0
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1234.56
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_float(9)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_float(10)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
fail_float(11)
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
fail_float(12)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1234.56
|
||||
values[1]=0.0
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1234.56
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(13)
|
||||
}
|
||||
sub test_cmp_expr() {
|
||||
float @shared x
|
||||
cx16.r4 = 1
|
||||
cx16.r5 = 1
|
||||
float @shared f4 = 1.0
|
||||
float @shared f5 = 1.0
|
||||
success = 0
|
||||
x=0.0
|
||||
; direct jump
|
||||
if x>=f4+0.0-f5
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>=f4+0.0-f5
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x>=f4+0.0-f5
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=f4+0.0-f5
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=f4+1234.56-f5
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_float(13)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>=f4+1234.56-f5
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_float(14)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>=f4+1234.56-f5
|
||||
fail_float(15)
|
||||
|
||||
; with else
|
||||
if x>=f4+1234.56-f5
|
||||
fail_float(16)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1234.56
|
||||
; direct jump
|
||||
if x>=f4+0.0-f5
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>=f4+0.0-f5
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x>=f4+0.0-f5
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=f4+0.0-f5
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=f4+1234.56-f5
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>=f4+1234.56-f5
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>=f4+1234.56-f5
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=f4+1234.56-f5
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(13)
|
||||
}
|
||||
|
||||
}
|
||||
|
8831
compiler/test/comparisons/test_float_lt.asm
Normal file
8831
compiler/test/comparisons/test_float_lt.asm
Normal file
File diff suppressed because it is too large
Load Diff
482
compiler/test/comparisons/test_float_lt.p8
Normal file
482
compiler/test/comparisons/test_float_lt.p8
Normal file
|
@ -0,0 +1,482 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
ubyte success = 0
|
||||
str datatype = "float"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\nless-than tests for: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("\n<number: ")
|
||||
test_cmp_number()
|
||||
txt.print("\n<var: ")
|
||||
test_cmp_var()
|
||||
txt.print("\n<array[]: ")
|
||||
test_cmp_array()
|
||||
txt.print("\n<expr: ")
|
||||
test_cmp_expr()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(ubyte expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_ub(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_ub(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_byte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_ubyte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_word(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_float(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
sub test_cmp_number() {
|
||||
float @shared x
|
||||
success = 0
|
||||
x=0.0
|
||||
; direct jump
|
||||
if x<0.0
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_float(1)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<0.0
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_float(2)
|
||||
skip1b:
|
||||
; no else
|
||||
if x<0.0
|
||||
fail_float(3)
|
||||
|
||||
; with else
|
||||
if x<0.0
|
||||
fail_float(4)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<1234.56
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<1234.56
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<1234.56
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<1234.56
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1234.56
|
||||
; direct jump
|
||||
if x<0.0
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_float(5)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<0.0
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_float(6)
|
||||
skip3b:
|
||||
; no else
|
||||
if x<0.0
|
||||
fail_float(7)
|
||||
|
||||
; with else
|
||||
if x<0.0
|
||||
fail_float(8)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<1234.56
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_float(9)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<1234.56
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_float(10)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<1234.56
|
||||
fail_float(11)
|
||||
|
||||
; with else
|
||||
if x<1234.56
|
||||
fail_float(12)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(7)
|
||||
}
|
||||
sub test_cmp_var() {
|
||||
float @shared x, value
|
||||
success = 0
|
||||
x=0.0
|
||||
value=0.0
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_float(13)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_float(14)
|
||||
skip1b:
|
||||
; no else
|
||||
if x<value
|
||||
fail_float(15)
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
fail_float(16)
|
||||
else
|
||||
success++
|
||||
|
||||
value=1234.56
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1234.56
|
||||
value=0.0
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_float(17)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_float(18)
|
||||
skip3b:
|
||||
; no else
|
||||
if x<value
|
||||
fail_float(19)
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
fail_float(20)
|
||||
else
|
||||
success++
|
||||
|
||||
value=1234.56
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_float(21)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_float(22)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<value
|
||||
fail_float(23)
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
fail_float(24)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(7)
|
||||
}
|
||||
sub test_cmp_array() {
|
||||
float @shared x
|
||||
float[] values = [0, 0]
|
||||
success = 0
|
||||
x=0.0
|
||||
values[1]=0.0
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_float(25)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_float(26)
|
||||
skip1b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_float(27)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_float(28)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1234.56
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1234.56
|
||||
values[1]=0.0
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_float(29)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_float(30)
|
||||
skip3b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_float(31)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_float(32)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1234.56
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_float(33)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_float(34)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_float(35)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_float(36)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(7)
|
||||
}
|
||||
sub test_cmp_expr() {
|
||||
float @shared x
|
||||
cx16.r4 = 1
|
||||
cx16.r5 = 1
|
||||
float @shared f4 = 1.0
|
||||
float @shared f5 = 1.0
|
||||
success = 0
|
||||
x=0.0
|
||||
; direct jump
|
||||
if x<f4+0.0-f5
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_float(37)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<f4+0.0-f5
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_float(38)
|
||||
skip1b:
|
||||
; no else
|
||||
if x<f4+0.0-f5
|
||||
fail_float(39)
|
||||
|
||||
; with else
|
||||
if x<f4+0.0-f5
|
||||
fail_float(40)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<f4+1234.56-f5
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<f4+1234.56-f5
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<f4+1234.56-f5
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<f4+1234.56-f5
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1234.56
|
||||
; direct jump
|
||||
if x<f4+0.0-f5
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_float(41)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<f4+0.0-f5
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_float(42)
|
||||
skip3b:
|
||||
; no else
|
||||
if x<f4+0.0-f5
|
||||
fail_float(43)
|
||||
|
||||
; with else
|
||||
if x<f4+0.0-f5
|
||||
fail_float(44)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<f4+1234.56-f5
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_float(45)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<f4+1234.56-f5
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_float(46)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<f4+1234.56-f5
|
||||
fail_float(47)
|
||||
|
||||
; with else
|
||||
if x<f4+1234.56-f5
|
||||
fail_float(48)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(7)
|
||||
}
|
||||
|
||||
}
|
||||
|
8767
compiler/test/comparisons/test_float_lte.asm
Normal file
8767
compiler/test/comparisons/test_float_lte.asm
Normal file
File diff suppressed because it is too large
Load Diff
482
compiler/test/comparisons/test_float_lte.p8
Normal file
482
compiler/test/comparisons/test_float_lte.p8
Normal file
|
@ -0,0 +1,482 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
ubyte success = 0
|
||||
str datatype = "float"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\nless-equal tests for: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("\n<=number: ")
|
||||
test_cmp_number()
|
||||
txt.print("\n<=var: ")
|
||||
test_cmp_var()
|
||||
txt.print("\n<=array[]: ")
|
||||
test_cmp_array()
|
||||
txt.print("\n<=expr: ")
|
||||
test_cmp_expr()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(ubyte expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_ub(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_ub(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_byte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_ubyte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_word(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_float(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
sub test_cmp_number() {
|
||||
float @shared x
|
||||
success = 0
|
||||
x=0.0
|
||||
; direct jump
|
||||
if x<=0.0
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<=0.0
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x<=0.0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=0.0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<=1234.56
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<=1234.56
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<=1234.56
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=1234.56
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1234.56
|
||||
; direct jump
|
||||
if x<=0.0
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_float(1)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<=0.0
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_float(2)
|
||||
skip3b:
|
||||
; no else
|
||||
if x<=0.0
|
||||
fail_float(3)
|
||||
|
||||
; with else
|
||||
if x<=0.0
|
||||
fail_float(4)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<=1234.56
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<=1234.56
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x<=1234.56
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=1234.56
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(13)
|
||||
}
|
||||
sub test_cmp_var() {
|
||||
float @shared x, value
|
||||
success = 0
|
||||
x=0.0
|
||||
value=0.0
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x<=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=1234.56
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1234.56
|
||||
value=0.0
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_float(5)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_float(6)
|
||||
skip3b:
|
||||
; no else
|
||||
if x<=value
|
||||
fail_float(7)
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
fail_float(8)
|
||||
else
|
||||
success++
|
||||
|
||||
value=1234.56
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x<=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(13)
|
||||
}
|
||||
sub test_cmp_array() {
|
||||
float @shared x
|
||||
float[] values = [0, 0]
|
||||
success = 0
|
||||
x=0.0
|
||||
values[1]=0.0
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1234.56
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1234.56
|
||||
values[1]=0.0
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_float(9)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_float(10)
|
||||
skip3b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
fail_float(11)
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
fail_float(12)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1234.56
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(13)
|
||||
}
|
||||
sub test_cmp_expr() {
|
||||
float @shared x
|
||||
cx16.r4 = 1
|
||||
cx16.r5 = 1
|
||||
float @shared f4 = 1.0
|
||||
float @shared f5 = 1.0
|
||||
success = 0
|
||||
x=0.0
|
||||
; direct jump
|
||||
if x<=f4+0.0-f5
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<=f4+0.0-f5
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x<=f4+0.0-f5
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=f4+0.0-f5
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<=f4+1234.56-f5
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<=f4+1234.56-f5
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<=f4+1234.56-f5
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=f4+1234.56-f5
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1234.56
|
||||
; direct jump
|
||||
if x<=f4+0.0-f5
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_float(13)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<=f4+0.0-f5
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_float(14)
|
||||
skip3b:
|
||||
; no else
|
||||
if x<=f4+0.0-f5
|
||||
fail_float(15)
|
||||
|
||||
; with else
|
||||
if x<=f4+0.0-f5
|
||||
fail_float(16)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<=f4+1234.56-f5
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<=f4+1234.56-f5
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x<=f4+1234.56-f5
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=f4+1234.56-f5
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(13)
|
||||
}
|
||||
|
||||
}
|
||||
|
11535
compiler/test/comparisons/test_ubyte_equalities.asm
Normal file
11535
compiler/test/comparisons/test_ubyte_equalities.asm
Normal file
File diff suppressed because it is too large
Load Diff
1691
compiler/test/comparisons/test_ubyte_equalities.p8
Normal file
1691
compiler/test/comparisons/test_ubyte_equalities.p8
Normal file
File diff suppressed because it is too large
Load Diff
9511
compiler/test/comparisons/test_ubyte_gt.asm
Normal file
9511
compiler/test/comparisons/test_ubyte_gt.asm
Normal file
File diff suppressed because it is too large
Load Diff
956
compiler/test/comparisons/test_ubyte_gt.p8
Normal file
956
compiler/test/comparisons/test_ubyte_gt.p8
Normal file
|
@ -0,0 +1,956 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
ubyte success = 0
|
||||
str datatype = "ubyte"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\ngreater-than tests for: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("\n>number: ")
|
||||
test_cmp_number()
|
||||
txt.print("\n>var: ")
|
||||
test_cmp_var()
|
||||
txt.print("\n>array[]: ")
|
||||
test_cmp_array()
|
||||
txt.print("\n>expr: ")
|
||||
test_cmp_expr()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(ubyte expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_ub(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_ub(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_byte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_ubyte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_word(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_float(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
sub test_cmp_number() {
|
||||
ubyte @shared x
|
||||
success = 0
|
||||
x=0
|
||||
; direct jump
|
||||
if x>0
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_ubyte(1)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>0
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_ubyte(2)
|
||||
skip1b:
|
||||
; no else
|
||||
if x>0
|
||||
fail_ubyte(3)
|
||||
|
||||
; with else
|
||||
if x>0
|
||||
fail_ubyte(4)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>1
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_ubyte(5)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>1
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_ubyte(6)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>1
|
||||
fail_ubyte(7)
|
||||
|
||||
; with else
|
||||
if x>1
|
||||
fail_ubyte(8)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>255
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_ubyte(9)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>255
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_ubyte(10)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>255
|
||||
fail_ubyte(11)
|
||||
|
||||
; with else
|
||||
if x>255
|
||||
fail_ubyte(12)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
; direct jump
|
||||
if x>0
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>0
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>1
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_ubyte(13)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>1
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_ubyte(14)
|
||||
skip5b:
|
||||
; no else
|
||||
if x>1
|
||||
fail_ubyte(15)
|
||||
|
||||
; with else
|
||||
if x>1
|
||||
fail_ubyte(16)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>255
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_ubyte(17)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>255
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_ubyte(18)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>255
|
||||
fail_ubyte(19)
|
||||
|
||||
; with else
|
||||
if x>255
|
||||
fail_ubyte(20)
|
||||
else
|
||||
success++
|
||||
|
||||
x=255
|
||||
; direct jump
|
||||
if x>0
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>0
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x>0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>1
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>1
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x>1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>255
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_ubyte(21)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>255
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_ubyte(22)
|
||||
skip9b:
|
||||
; no else
|
||||
if x>255
|
||||
fail_ubyte(23)
|
||||
|
||||
; with else
|
||||
if x>255
|
||||
fail_ubyte(24)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(18)
|
||||
}
|
||||
sub test_cmp_var() {
|
||||
ubyte @shared x, value
|
||||
success = 0
|
||||
x=0
|
||||
value=0
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_ubyte(25)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_ubyte(26)
|
||||
skip1b:
|
||||
; no else
|
||||
if x>value
|
||||
fail_ubyte(27)
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
fail_ubyte(28)
|
||||
else
|
||||
success++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_ubyte(29)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_ubyte(30)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>value
|
||||
fail_ubyte(31)
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
fail_ubyte(32)
|
||||
else
|
||||
success++
|
||||
|
||||
value=255
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_ubyte(33)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_ubyte(34)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>value
|
||||
fail_ubyte(35)
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
fail_ubyte(36)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
value=0
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_ubyte(37)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_ubyte(38)
|
||||
skip5b:
|
||||
; no else
|
||||
if x>value
|
||||
fail_ubyte(39)
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
fail_ubyte(40)
|
||||
else
|
||||
success++
|
||||
|
||||
value=255
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_ubyte(41)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_ubyte(42)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>value
|
||||
fail_ubyte(43)
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
fail_ubyte(44)
|
||||
else
|
||||
success++
|
||||
|
||||
x=255
|
||||
value=0
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x>value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x>value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=255
|
||||
; direct jump
|
||||
if x>value
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_ubyte(45)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>value
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_ubyte(46)
|
||||
skip9b:
|
||||
; no else
|
||||
if x>value
|
||||
fail_ubyte(47)
|
||||
|
||||
; with else
|
||||
if x>value
|
||||
fail_ubyte(48)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(18)
|
||||
}
|
||||
sub test_cmp_array() {
|
||||
ubyte @shared x
|
||||
ubyte[] values = [0, 0]
|
||||
success = 0
|
||||
x=0
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_ubyte(49)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_ubyte(50)
|
||||
skip1b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_ubyte(51)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_ubyte(52)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_ubyte(53)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_ubyte(54)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_ubyte(55)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_ubyte(56)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=255
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_ubyte(57)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_ubyte(58)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_ubyte(59)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_ubyte(60)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_ubyte(61)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_ubyte(62)
|
||||
skip5b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_ubyte(63)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_ubyte(64)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=255
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_ubyte(65)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_ubyte(66)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_ubyte(67)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_ubyte(68)
|
||||
else
|
||||
success++
|
||||
|
||||
x=255
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=255
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_ubyte(69)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_ubyte(70)
|
||||
skip9b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_ubyte(71)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_ubyte(72)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(18)
|
||||
}
|
||||
sub test_cmp_expr() {
|
||||
ubyte @shared x
|
||||
cx16.r4 = 1
|
||||
cx16.r5 = 1
|
||||
float @shared f4 = 1.0
|
||||
float @shared f5 = 1.0
|
||||
success = 0
|
||||
x=0
|
||||
; direct jump
|
||||
if x>cx16.r4L+0-cx16.r5L
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_ubyte(73)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>cx16.r4L+0-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_ubyte(74)
|
||||
skip1b:
|
||||
; no else
|
||||
if x>cx16.r4L+0-cx16.r5L
|
||||
fail_ubyte(75)
|
||||
|
||||
; with else
|
||||
if x>cx16.r4L+0-cx16.r5L
|
||||
fail_ubyte(76)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>cx16.r4L+1-cx16.r5L
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_ubyte(77)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>cx16.r4L+1-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_ubyte(78)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>cx16.r4L+1-cx16.r5L
|
||||
fail_ubyte(79)
|
||||
|
||||
; with else
|
||||
if x>cx16.r4L+1-cx16.r5L
|
||||
fail_ubyte(80)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>cx16.r4L+255-cx16.r5L
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_ubyte(81)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>cx16.r4L+255-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_ubyte(82)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>cx16.r4L+255-cx16.r5L
|
||||
fail_ubyte(83)
|
||||
|
||||
; with else
|
||||
if x>cx16.r4L+255-cx16.r5L
|
||||
fail_ubyte(84)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
; direct jump
|
||||
if x>cx16.r4L+0-cx16.r5L
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>cx16.r4L+0-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>cx16.r4L+0-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>cx16.r4L+0-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>cx16.r4L+1-cx16.r5L
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_ubyte(85)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>cx16.r4L+1-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_ubyte(86)
|
||||
skip5b:
|
||||
; no else
|
||||
if x>cx16.r4L+1-cx16.r5L
|
||||
fail_ubyte(87)
|
||||
|
||||
; with else
|
||||
if x>cx16.r4L+1-cx16.r5L
|
||||
fail_ubyte(88)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>cx16.r4L+255-cx16.r5L
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_ubyte(89)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>cx16.r4L+255-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_ubyte(90)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>cx16.r4L+255-cx16.r5L
|
||||
fail_ubyte(91)
|
||||
|
||||
; with else
|
||||
if x>cx16.r4L+255-cx16.r5L
|
||||
fail_ubyte(92)
|
||||
else
|
||||
success++
|
||||
|
||||
x=255
|
||||
; direct jump
|
||||
if x>cx16.r4L+0-cx16.r5L
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>cx16.r4L+0-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x>cx16.r4L+0-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>cx16.r4L+0-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>cx16.r4L+1-cx16.r5L
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>cx16.r4L+1-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x>cx16.r4L+1-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>cx16.r4L+1-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>cx16.r4L+255-cx16.r5L
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_ubyte(93)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>cx16.r4L+255-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_ubyte(94)
|
||||
skip9b:
|
||||
; no else
|
||||
if x>cx16.r4L+255-cx16.r5L
|
||||
fail_ubyte(95)
|
||||
|
||||
; with else
|
||||
if x>cx16.r4L+255-cx16.r5L
|
||||
fail_ubyte(96)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(18)
|
||||
}
|
||||
|
||||
}
|
||||
|
9243
compiler/test/comparisons/test_ubyte_gte.asm
Normal file
9243
compiler/test/comparisons/test_ubyte_gte.asm
Normal file
File diff suppressed because it is too large
Load Diff
956
compiler/test/comparisons/test_ubyte_gte.p8
Normal file
956
compiler/test/comparisons/test_ubyte_gte.p8
Normal file
|
@ -0,0 +1,956 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
ubyte success = 0
|
||||
str datatype = "ubyte"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\ngreater-equal tests for: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("\n>=number: ")
|
||||
test_cmp_number()
|
||||
txt.print("\n>=var: ")
|
||||
test_cmp_var()
|
||||
txt.print("\n>=array[]: ")
|
||||
test_cmp_array()
|
||||
txt.print("\n>=expr: ")
|
||||
test_cmp_expr()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(ubyte expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_ub(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_ub(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_byte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_ubyte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_word(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_float(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
sub test_cmp_number() {
|
||||
ubyte @shared x
|
||||
success = 0
|
||||
x=0
|
||||
; direct jump
|
||||
if x>=0
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>=0
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x>=0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=1
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_ubyte(1)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>=1
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_ubyte(2)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>=1
|
||||
fail_ubyte(3)
|
||||
|
||||
; with else
|
||||
if x>=1
|
||||
fail_ubyte(4)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>=255
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_ubyte(5)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>=255
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_ubyte(6)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>=255
|
||||
fail_ubyte(7)
|
||||
|
||||
; with else
|
||||
if x>=255
|
||||
fail_ubyte(8)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
; direct jump
|
||||
if x>=0
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>=0
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>=0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=1
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>=1
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x>=1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=255
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_ubyte(9)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>=255
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_ubyte(10)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>=255
|
||||
fail_ubyte(11)
|
||||
|
||||
; with else
|
||||
if x>=255
|
||||
fail_ubyte(12)
|
||||
else
|
||||
success++
|
||||
|
||||
x=255
|
||||
; direct jump
|
||||
if x>=0
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>=0
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x>=0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=1
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>=1
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x>=1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=255
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>=255
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x>=255
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=255
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(27)
|
||||
}
|
||||
sub test_cmp_var() {
|
||||
ubyte @shared x, value
|
||||
success = 0
|
||||
x=0
|
||||
value=0
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x>=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_ubyte(13)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_ubyte(14)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>=value
|
||||
fail_ubyte(15)
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
fail_ubyte(16)
|
||||
else
|
||||
success++
|
||||
|
||||
value=255
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_ubyte(17)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_ubyte(18)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>=value
|
||||
fail_ubyte(19)
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
fail_ubyte(20)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
value=0
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x>=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=255
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_ubyte(21)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_ubyte(22)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>=value
|
||||
fail_ubyte(23)
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
fail_ubyte(24)
|
||||
else
|
||||
success++
|
||||
|
||||
x=255
|
||||
value=0
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x>=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x>=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=255
|
||||
; direct jump
|
||||
if x>=value
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>=value
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x>=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(27)
|
||||
}
|
||||
sub test_cmp_array() {
|
||||
ubyte @shared x
|
||||
ubyte[] values = [0, 0]
|
||||
success = 0
|
||||
x=0
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_ubyte(25)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_ubyte(26)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
fail_ubyte(27)
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
fail_ubyte(28)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=255
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_ubyte(29)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_ubyte(30)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
fail_ubyte(31)
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
fail_ubyte(32)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=255
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_ubyte(33)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_ubyte(34)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
fail_ubyte(35)
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
fail_ubyte(36)
|
||||
else
|
||||
success++
|
||||
|
||||
x=255
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=255
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(27)
|
||||
}
|
||||
sub test_cmp_expr() {
|
||||
ubyte @shared x
|
||||
cx16.r4 = 1
|
||||
cx16.r5 = 1
|
||||
float @shared f4 = 1.0
|
||||
float @shared f5 = 1.0
|
||||
success = 0
|
||||
x=0
|
||||
; direct jump
|
||||
if x>=cx16.r4L+0-cx16.r5L
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>=cx16.r4L+0-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x>=cx16.r4L+0-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4L+0-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=cx16.r4L+1-cx16.r5L
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_ubyte(37)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>=cx16.r4L+1-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_ubyte(38)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>=cx16.r4L+1-cx16.r5L
|
||||
fail_ubyte(39)
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4L+1-cx16.r5L
|
||||
fail_ubyte(40)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x>=cx16.r4L+255-cx16.r5L
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_ubyte(41)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>=cx16.r4L+255-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_ubyte(42)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>=cx16.r4L+255-cx16.r5L
|
||||
fail_ubyte(43)
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4L+255-cx16.r5L
|
||||
fail_ubyte(44)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
; direct jump
|
||||
if x>=cx16.r4L+0-cx16.r5L
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>=cx16.r4L+0-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x>=cx16.r4L+0-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4L+0-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=cx16.r4L+1-cx16.r5L
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>=cx16.r4L+1-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x>=cx16.r4L+1-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4L+1-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=cx16.r4L+255-cx16.r5L
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_ubyte(45)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>=cx16.r4L+255-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_ubyte(46)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>=cx16.r4L+255-cx16.r5L
|
||||
fail_ubyte(47)
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4L+255-cx16.r5L
|
||||
fail_ubyte(48)
|
||||
else
|
||||
success++
|
||||
|
||||
x=255
|
||||
; direct jump
|
||||
if x>=cx16.r4L+0-cx16.r5L
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>=cx16.r4L+0-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x>=cx16.r4L+0-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4L+0-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=cx16.r4L+1-cx16.r5L
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>=cx16.r4L+1-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x>=cx16.r4L+1-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4L+1-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x>=cx16.r4L+255-cx16.r5L
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>=cx16.r4L+255-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x>=cx16.r4L+255-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=cx16.r4L+255-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(27)
|
||||
}
|
||||
|
||||
}
|
||||
|
9309
compiler/test/comparisons/test_ubyte_lt.asm
Normal file
9309
compiler/test/comparisons/test_ubyte_lt.asm
Normal file
File diff suppressed because it is too large
Load Diff
956
compiler/test/comparisons/test_ubyte_lt.p8
Normal file
956
compiler/test/comparisons/test_ubyte_lt.p8
Normal file
|
@ -0,0 +1,956 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
ubyte success = 0
|
||||
str datatype = "ubyte"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\nless-than tests for: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("\n<number: ")
|
||||
test_cmp_number()
|
||||
txt.print("\n<var: ")
|
||||
test_cmp_var()
|
||||
txt.print("\n<array[]: ")
|
||||
test_cmp_array()
|
||||
txt.print("\n<expr: ")
|
||||
test_cmp_expr()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(ubyte expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_ub(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_ub(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_byte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_ubyte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_word(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_float(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
sub test_cmp_number() {
|
||||
ubyte @shared x
|
||||
success = 0
|
||||
x=0
|
||||
; direct jump
|
||||
if x<0
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_ubyte(1)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<0
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_ubyte(2)
|
||||
skip1b:
|
||||
; no else
|
||||
if x<0
|
||||
fail_ubyte(3)
|
||||
|
||||
; with else
|
||||
if x<0
|
||||
fail_ubyte(4)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<1
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<1
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<255
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<255
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<255
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<255
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
; direct jump
|
||||
if x<0
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_ubyte(5)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<0
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_ubyte(6)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<0
|
||||
fail_ubyte(7)
|
||||
|
||||
; with else
|
||||
if x<0
|
||||
fail_ubyte(8)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<1
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_ubyte(9)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<1
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_ubyte(10)
|
||||
skip5b:
|
||||
; no else
|
||||
if x<1
|
||||
fail_ubyte(11)
|
||||
|
||||
; with else
|
||||
if x<1
|
||||
fail_ubyte(12)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<255
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<255
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<255
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<255
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=255
|
||||
; direct jump
|
||||
if x<0
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_ubyte(13)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<0
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_ubyte(14)
|
||||
skip7b:
|
||||
; no else
|
||||
if x<0
|
||||
fail_ubyte(15)
|
||||
|
||||
; with else
|
||||
if x<0
|
||||
fail_ubyte(16)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<1
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_ubyte(17)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<1
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_ubyte(18)
|
||||
skip8b:
|
||||
; no else
|
||||
if x<1
|
||||
fail_ubyte(19)
|
||||
|
||||
; with else
|
||||
if x<1
|
||||
fail_ubyte(20)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<255
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_ubyte(21)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<255
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_ubyte(22)
|
||||
skip9b:
|
||||
; no else
|
||||
if x<255
|
||||
fail_ubyte(23)
|
||||
|
||||
; with else
|
||||
if x<255
|
||||
fail_ubyte(24)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(18)
|
||||
}
|
||||
sub test_cmp_var() {
|
||||
ubyte @shared x, value
|
||||
success = 0
|
||||
x=0
|
||||
value=0
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_ubyte(25)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_ubyte(26)
|
||||
skip1b:
|
||||
; no else
|
||||
if x<value
|
||||
fail_ubyte(27)
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
fail_ubyte(28)
|
||||
else
|
||||
success++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=255
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
value=0
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_ubyte(29)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_ubyte(30)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<value
|
||||
fail_ubyte(31)
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
fail_ubyte(32)
|
||||
else
|
||||
success++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_ubyte(33)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_ubyte(34)
|
||||
skip5b:
|
||||
; no else
|
||||
if x<value
|
||||
fail_ubyte(35)
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
fail_ubyte(36)
|
||||
else
|
||||
success++
|
||||
|
||||
value=255
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=255
|
||||
value=0
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_ubyte(37)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_ubyte(38)
|
||||
skip7b:
|
||||
; no else
|
||||
if x<value
|
||||
fail_ubyte(39)
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
fail_ubyte(40)
|
||||
else
|
||||
success++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_ubyte(41)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_ubyte(42)
|
||||
skip8b:
|
||||
; no else
|
||||
if x<value
|
||||
fail_ubyte(43)
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
fail_ubyte(44)
|
||||
else
|
||||
success++
|
||||
|
||||
value=255
|
||||
; direct jump
|
||||
if x<value
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_ubyte(45)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<value
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_ubyte(46)
|
||||
skip9b:
|
||||
; no else
|
||||
if x<value
|
||||
fail_ubyte(47)
|
||||
|
||||
; with else
|
||||
if x<value
|
||||
fail_ubyte(48)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(18)
|
||||
}
|
||||
sub test_cmp_array() {
|
||||
ubyte @shared x
|
||||
ubyte[] values = [0, 0]
|
||||
success = 0
|
||||
x=0
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_ubyte(49)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_ubyte(50)
|
||||
skip1b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_ubyte(51)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_ubyte(52)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=255
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_ubyte(53)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_ubyte(54)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_ubyte(55)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_ubyte(56)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_ubyte(57)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_ubyte(58)
|
||||
skip5b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_ubyte(59)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_ubyte(60)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=255
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=255
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_ubyte(61)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_ubyte(62)
|
||||
skip7b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_ubyte(63)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_ubyte(64)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_ubyte(65)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_ubyte(66)
|
||||
skip8b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_ubyte(67)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_ubyte(68)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=255
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_ubyte(69)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_ubyte(70)
|
||||
skip9b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_ubyte(71)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_ubyte(72)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(18)
|
||||
}
|
||||
sub test_cmp_expr() {
|
||||
ubyte @shared x
|
||||
cx16.r4 = 1
|
||||
cx16.r5 = 1
|
||||
float @shared f4 = 1.0
|
||||
float @shared f5 = 1.0
|
||||
success = 0
|
||||
x=0
|
||||
; direct jump
|
||||
if x<cx16.r4L+0-cx16.r5L
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_ubyte(73)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<cx16.r4L+0-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_ubyte(74)
|
||||
skip1b:
|
||||
; no else
|
||||
if x<cx16.r4L+0-cx16.r5L
|
||||
fail_ubyte(75)
|
||||
|
||||
; with else
|
||||
if x<cx16.r4L+0-cx16.r5L
|
||||
fail_ubyte(76)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<cx16.r4L+1-cx16.r5L
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<cx16.r4L+1-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<cx16.r4L+1-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<cx16.r4L+1-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<cx16.r4L+255-cx16.r5L
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<cx16.r4L+255-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<cx16.r4L+255-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<cx16.r4L+255-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
; direct jump
|
||||
if x<cx16.r4L+0-cx16.r5L
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_ubyte(77)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<cx16.r4L+0-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_ubyte(78)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<cx16.r4L+0-cx16.r5L
|
||||
fail_ubyte(79)
|
||||
|
||||
; with else
|
||||
if x<cx16.r4L+0-cx16.r5L
|
||||
fail_ubyte(80)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<cx16.r4L+1-cx16.r5L
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_ubyte(81)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<cx16.r4L+1-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_ubyte(82)
|
||||
skip5b:
|
||||
; no else
|
||||
if x<cx16.r4L+1-cx16.r5L
|
||||
fail_ubyte(83)
|
||||
|
||||
; with else
|
||||
if x<cx16.r4L+1-cx16.r5L
|
||||
fail_ubyte(84)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<cx16.r4L+255-cx16.r5L
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<cx16.r4L+255-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<cx16.r4L+255-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<cx16.r4L+255-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=255
|
||||
; direct jump
|
||||
if x<cx16.r4L+0-cx16.r5L
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_ubyte(85)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<cx16.r4L+0-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_ubyte(86)
|
||||
skip7b:
|
||||
; no else
|
||||
if x<cx16.r4L+0-cx16.r5L
|
||||
fail_ubyte(87)
|
||||
|
||||
; with else
|
||||
if x<cx16.r4L+0-cx16.r5L
|
||||
fail_ubyte(88)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<cx16.r4L+1-cx16.r5L
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_ubyte(89)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<cx16.r4L+1-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_ubyte(90)
|
||||
skip8b:
|
||||
; no else
|
||||
if x<cx16.r4L+1-cx16.r5L
|
||||
fail_ubyte(91)
|
||||
|
||||
; with else
|
||||
if x<cx16.r4L+1-cx16.r5L
|
||||
fail_ubyte(92)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<cx16.r4L+255-cx16.r5L
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_ubyte(93)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<cx16.r4L+255-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_ubyte(94)
|
||||
skip9b:
|
||||
; no else
|
||||
if x<cx16.r4L+255-cx16.r5L
|
||||
fail_ubyte(95)
|
||||
|
||||
; with else
|
||||
if x<cx16.r4L+255-cx16.r5L
|
||||
fail_ubyte(96)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(18)
|
||||
}
|
||||
|
||||
}
|
||||
|
9115
compiler/test/comparisons/test_ubyte_lte.asm
Normal file
9115
compiler/test/comparisons/test_ubyte_lte.asm
Normal file
File diff suppressed because it is too large
Load Diff
956
compiler/test/comparisons/test_ubyte_lte.p8
Normal file
956
compiler/test/comparisons/test_ubyte_lte.p8
Normal file
|
@ -0,0 +1,956 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
ubyte success = 0
|
||||
str datatype = "ubyte"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\nless-equal tests for: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("\n<=number: ")
|
||||
test_cmp_number()
|
||||
txt.print("\n<=var: ")
|
||||
test_cmp_var()
|
||||
txt.print("\n<=array[]: ")
|
||||
test_cmp_array()
|
||||
txt.print("\n<=expr: ")
|
||||
test_cmp_expr()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(ubyte expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_ub(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_ub(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_byte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_ubyte(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_word(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_float(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
sub test_cmp_number() {
|
||||
ubyte @shared x
|
||||
success = 0
|
||||
x=0
|
||||
; direct jump
|
||||
if x<=0
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<=0
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x<=0
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=0
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<=1
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<=1
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<=1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<=255
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<=255
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<=255
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=255
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
; direct jump
|
||||
if x<=0
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_ubyte(1)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<=0
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_ubyte(2)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<=0
|
||||
fail_ubyte(3)
|
||||
|
||||
; with else
|
||||
if x<=0
|
||||
fail_ubyte(4)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<=1
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<=1
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x<=1
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=1
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<=255
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<=255
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<=255
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=255
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=255
|
||||
; direct jump
|
||||
if x<=0
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_ubyte(5)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<=0
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_ubyte(6)
|
||||
skip7b:
|
||||
; no else
|
||||
if x<=0
|
||||
fail_ubyte(7)
|
||||
|
||||
; with else
|
||||
if x<=0
|
||||
fail_ubyte(8)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<=1
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_ubyte(9)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<=1
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_ubyte(10)
|
||||
skip8b:
|
||||
; no else
|
||||
if x<=1
|
||||
fail_ubyte(11)
|
||||
|
||||
; with else
|
||||
if x<=1
|
||||
fail_ubyte(12)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<=255
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<=255
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x<=255
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=255
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(27)
|
||||
}
|
||||
sub test_cmp_var() {
|
||||
ubyte @shared x, value
|
||||
success = 0
|
||||
x=0
|
||||
value=0
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x<=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=255
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
value=0
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_ubyte(13)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_ubyte(14)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<=value
|
||||
fail_ubyte(15)
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
fail_ubyte(16)
|
||||
else
|
||||
success++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x<=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
value=255
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=255
|
||||
value=0
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_ubyte(17)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_ubyte(18)
|
||||
skip7b:
|
||||
; no else
|
||||
if x<=value
|
||||
fail_ubyte(19)
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
fail_ubyte(20)
|
||||
else
|
||||
success++
|
||||
|
||||
value=1
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_ubyte(21)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_ubyte(22)
|
||||
skip8b:
|
||||
; no else
|
||||
if x<=value
|
||||
fail_ubyte(23)
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
fail_ubyte(24)
|
||||
else
|
||||
success++
|
||||
|
||||
value=255
|
||||
; direct jump
|
||||
if x<=value
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<=value
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x<=value
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=value
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(27)
|
||||
}
|
||||
sub test_cmp_array() {
|
||||
ubyte @shared x
|
||||
ubyte[] values = [0, 0]
|
||||
success = 0
|
||||
x=0
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=255
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_ubyte(25)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_ubyte(26)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
fail_ubyte(27)
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
fail_ubyte(28)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=255
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=255
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_ubyte(29)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_ubyte(30)
|
||||
skip7b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
fail_ubyte(31)
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
fail_ubyte(32)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_ubyte(33)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_ubyte(34)
|
||||
skip8b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
fail_ubyte(35)
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
fail_ubyte(36)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=255
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(27)
|
||||
}
|
||||
sub test_cmp_expr() {
|
||||
ubyte @shared x
|
||||
cx16.r4 = 1
|
||||
cx16.r5 = 1
|
||||
float @shared f4 = 1.0
|
||||
float @shared f5 = 1.0
|
||||
success = 0
|
||||
x=0
|
||||
; direct jump
|
||||
if x<=cx16.r4L+0-cx16.r5L
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<=cx16.r4L+0-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x<=cx16.r4L+0-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4L+0-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<=cx16.r4L+1-cx16.r5L
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<=cx16.r4L+1-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<=cx16.r4L+1-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4L+1-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<=cx16.r4L+255-cx16.r5L
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<=cx16.r4L+255-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<=cx16.r4L+255-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4L+255-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
; direct jump
|
||||
if x<=cx16.r4L+0-cx16.r5L
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_ubyte(37)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<=cx16.r4L+0-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_ubyte(38)
|
||||
skip4b:
|
||||
; no else
|
||||
if x<=cx16.r4L+0-cx16.r5L
|
||||
fail_ubyte(39)
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4L+0-cx16.r5L
|
||||
fail_ubyte(40)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<=cx16.r4L+1-cx16.r5L
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<=cx16.r4L+1-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x<=cx16.r4L+1-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4L+1-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if x<=cx16.r4L+255-cx16.r5L
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<=cx16.r4L+255-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<=cx16.r4L+255-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4L+255-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=255
|
||||
; direct jump
|
||||
if x<=cx16.r4L+0-cx16.r5L
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_ubyte(41)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<=cx16.r4L+0-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_ubyte(42)
|
||||
skip7b:
|
||||
; no else
|
||||
if x<=cx16.r4L+0-cx16.r5L
|
||||
fail_ubyte(43)
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4L+0-cx16.r5L
|
||||
fail_ubyte(44)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<=cx16.r4L+1-cx16.r5L
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_ubyte(45)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<=cx16.r4L+1-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_ubyte(46)
|
||||
skip8b:
|
||||
; no else
|
||||
if x<=cx16.r4L+1-cx16.r5L
|
||||
fail_ubyte(47)
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4L+1-cx16.r5L
|
||||
fail_ubyte(48)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if x<=cx16.r4L+255-cx16.r5L
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<=cx16.r4L+255-cx16.r5L
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x<=cx16.r4L+255-cx16.r5L
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=cx16.r4L+255-cx16.r5L
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(27)
|
||||
}
|
||||
|
||||
}
|
||||
|
18832
compiler/test/comparisons/test_uword_equalities.asm
Normal file
18832
compiler/test/comparisons/test_uword_equalities.asm
Normal file
File diff suppressed because it is too large
Load Diff
3105
compiler/test/comparisons/test_uword_equalities.p8
Normal file
3105
compiler/test/comparisons/test_uword_equalities.p8
Normal file
File diff suppressed because it is too large
Load Diff
12403
compiler/test/comparisons/test_uword_gt.asm
Normal file
12403
compiler/test/comparisons/test_uword_gt.asm
Normal file
File diff suppressed because it is too large
Load Diff
1618
compiler/test/comparisons/test_uword_gt.p8
Normal file
1618
compiler/test/comparisons/test_uword_gt.p8
Normal file
File diff suppressed because it is too large
Load Diff
12498
compiler/test/comparisons/test_uword_gte.asm
Normal file
12498
compiler/test/comparisons/test_uword_gte.asm
Normal file
File diff suppressed because it is too large
Load Diff
1618
compiler/test/comparisons/test_uword_gte.p8
Normal file
1618
compiler/test/comparisons/test_uword_gte.p8
Normal file
File diff suppressed because it is too large
Load Diff
12754
compiler/test/comparisons/test_uword_lt.asm
Normal file
12754
compiler/test/comparisons/test_uword_lt.asm
Normal file
File diff suppressed because it is too large
Load Diff
1618
compiler/test/comparisons/test_uword_lt.p8
Normal file
1618
compiler/test/comparisons/test_uword_lt.p8
Normal file
File diff suppressed because it is too large
Load Diff
12095
compiler/test/comparisons/test_uword_lte.asm
Normal file
12095
compiler/test/comparisons/test_uword_lte.asm
Normal file
File diff suppressed because it is too large
Load Diff
1618
compiler/test/comparisons/test_uword_lte.p8
Normal file
1618
compiler/test/comparisons/test_uword_lte.p8
Normal file
File diff suppressed because it is too large
Load Diff
19583
compiler/test/comparisons/test_uword_splitw_equalities.asm
Normal file
19583
compiler/test/comparisons/test_uword_splitw_equalities.asm
Normal file
File diff suppressed because it is too large
Load Diff
3079
compiler/test/comparisons/test_uword_splitw_equalities.p8
Normal file
3079
compiler/test/comparisons/test_uword_splitw_equalities.p8
Normal file
File diff suppressed because it is too large
Load Diff
9786
compiler/test/comparisons/test_uword_splitw_gt.asm
Normal file
9786
compiler/test/comparisons/test_uword_splitw_gt.asm
Normal file
File diff suppressed because it is too large
Load Diff
816
compiler/test/comparisons/test_uword_splitw_gt.p8
Normal file
816
compiler/test/comparisons/test_uword_splitw_gt.p8
Normal file
|
@ -0,0 +1,816 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
uword success = 0
|
||||
str datatype = "uword"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\ngreater-than split words array tests for: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("\n>array[]: ")
|
||||
test_cmp_array()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(uword expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_uw(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_uw(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_word(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
sub test_cmp_array() {
|
||||
uword @shared x
|
||||
uword[] @split values = [0, 0]
|
||||
uword[] @split sources = [0, 0]
|
||||
success = 0
|
||||
x=0
|
||||
sources[1]=0
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_uword(1)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_uword(2)
|
||||
skip1b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_uword(3)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_uword(4)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>values[1]
|
||||
goto lbl1c
|
||||
goto skip1c
|
||||
lbl1c: fail_uword(5)
|
||||
skip1c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1d
|
||||
if sources[1]>values[1]
|
||||
goto cx16.r3
|
||||
goto skip1d
|
||||
lbl1d: fail_uword(6)
|
||||
skip1d:
|
||||
; no else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(7)
|
||||
|
||||
; with else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(8)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_uword(9)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_uword(10)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_uword(11)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_uword(12)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>values[1]
|
||||
goto lbl2c
|
||||
goto skip2c
|
||||
lbl2c: fail_uword(13)
|
||||
skip2c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2d
|
||||
if sources[1]>values[1]
|
||||
goto cx16.r3
|
||||
goto skip2d
|
||||
lbl2d: fail_uword(14)
|
||||
skip2d:
|
||||
; no else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(15)
|
||||
|
||||
; with else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(16)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=30464
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_uword(17)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_uword(18)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_uword(19)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_uword(20)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>values[1]
|
||||
goto lbl3c
|
||||
goto skip3c
|
||||
lbl3c: fail_uword(21)
|
||||
skip3c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3d
|
||||
if sources[1]>values[1]
|
||||
goto cx16.r3
|
||||
goto skip3d
|
||||
lbl3d: fail_uword(22)
|
||||
skip3d:
|
||||
; no else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(23)
|
||||
|
||||
; with else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(24)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=65535
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_uword(25)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_uword(26)
|
||||
skip4b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_uword(27)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_uword(28)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>values[1]
|
||||
goto lbl4c
|
||||
goto skip4c
|
||||
lbl4c: fail_uword(29)
|
||||
skip4c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4d
|
||||
if sources[1]>values[1]
|
||||
goto cx16.r3
|
||||
goto skip4d
|
||||
lbl4d: fail_uword(30)
|
||||
skip4d:
|
||||
; no else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(31)
|
||||
|
||||
; with else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(32)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
sources[1]=1
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>values[1]
|
||||
goto lbl5c
|
||||
goto skip5c
|
||||
lbl5c: success++
|
||||
skip5c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5d
|
||||
if sources[1]>values[1]
|
||||
goto cx16.r3
|
||||
goto skip5d
|
||||
lbl5d: success++
|
||||
skip5d:
|
||||
; no else
|
||||
if sources[1]>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_uword(33)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_uword(34)
|
||||
skip6b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_uword(35)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_uword(36)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>values[1]
|
||||
goto lbl6c
|
||||
goto skip6c
|
||||
lbl6c: fail_uword(37)
|
||||
skip6c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6d
|
||||
if sources[1]>values[1]
|
||||
goto cx16.r3
|
||||
goto skip6d
|
||||
lbl6d: fail_uword(38)
|
||||
skip6d:
|
||||
; no else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(39)
|
||||
|
||||
; with else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(40)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=30464
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_uword(41)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_uword(42)
|
||||
skip7b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_uword(43)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_uword(44)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>values[1]
|
||||
goto lbl7c
|
||||
goto skip7c
|
||||
lbl7c: fail_uword(45)
|
||||
skip7c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7d
|
||||
if sources[1]>values[1]
|
||||
goto cx16.r3
|
||||
goto skip7d
|
||||
lbl7d: fail_uword(46)
|
||||
skip7d:
|
||||
; no else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(47)
|
||||
|
||||
; with else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(48)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=65535
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_uword(49)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_uword(50)
|
||||
skip8b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_uword(51)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_uword(52)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>values[1]
|
||||
goto lbl8c
|
||||
goto skip8c
|
||||
lbl8c: fail_uword(53)
|
||||
skip8c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8d
|
||||
if sources[1]>values[1]
|
||||
goto cx16.r3
|
||||
goto skip8d
|
||||
lbl8d: fail_uword(54)
|
||||
skip8d:
|
||||
; no else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(55)
|
||||
|
||||
; with else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(56)
|
||||
else
|
||||
success++
|
||||
|
||||
x=30464
|
||||
sources[1]=30464
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>values[1]
|
||||
goto lbl9c
|
||||
goto skip9c
|
||||
lbl9c: success++
|
||||
skip9c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9d
|
||||
if sources[1]>values[1]
|
||||
goto cx16.r3
|
||||
goto skip9d
|
||||
lbl9d: success++
|
||||
skip9d:
|
||||
; no else
|
||||
if sources[1]>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl10a
|
||||
goto skip10a
|
||||
lbl10a: success++
|
||||
skip10a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl10b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip10b
|
||||
lbl10b: success++
|
||||
skip10b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>values[1]
|
||||
goto lbl10c
|
||||
goto skip10c
|
||||
lbl10c: success++
|
||||
skip10c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl10d
|
||||
if sources[1]>values[1]
|
||||
goto cx16.r3
|
||||
goto skip10d
|
||||
lbl10d: success++
|
||||
skip10d:
|
||||
; no else
|
||||
if sources[1]>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=30464
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl11a
|
||||
goto skip11a
|
||||
lbl11a: fail_uword(57)
|
||||
skip11a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl11b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip11b
|
||||
lbl11b: fail_uword(58)
|
||||
skip11b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_uword(59)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_uword(60)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>values[1]
|
||||
goto lbl11c
|
||||
goto skip11c
|
||||
lbl11c: fail_uword(61)
|
||||
skip11c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl11d
|
||||
if sources[1]>values[1]
|
||||
goto cx16.r3
|
||||
goto skip11d
|
||||
lbl11d: fail_uword(62)
|
||||
skip11d:
|
||||
; no else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(63)
|
||||
|
||||
; with else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(64)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=65535
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl12a
|
||||
goto skip12a
|
||||
lbl12a: fail_uword(65)
|
||||
skip12a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl12b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip12b
|
||||
lbl12b: fail_uword(66)
|
||||
skip12b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_uword(67)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_uword(68)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>values[1]
|
||||
goto lbl12c
|
||||
goto skip12c
|
||||
lbl12c: fail_uword(69)
|
||||
skip12c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl12d
|
||||
if sources[1]>values[1]
|
||||
goto cx16.r3
|
||||
goto skip12d
|
||||
lbl12d: fail_uword(70)
|
||||
skip12d:
|
||||
; no else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(71)
|
||||
|
||||
; with else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(72)
|
||||
else
|
||||
success++
|
||||
|
||||
x=65535
|
||||
sources[1]=65535
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl13a
|
||||
goto skip13a
|
||||
lbl13a: success++
|
||||
skip13a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl13b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip13b
|
||||
lbl13b: success++
|
||||
skip13b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>values[1]
|
||||
goto lbl13c
|
||||
goto skip13c
|
||||
lbl13c: success++
|
||||
skip13c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl13d
|
||||
if sources[1]>values[1]
|
||||
goto cx16.r3
|
||||
goto skip13d
|
||||
lbl13d: success++
|
||||
skip13d:
|
||||
; no else
|
||||
if sources[1]>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl14a
|
||||
goto skip14a
|
||||
lbl14a: success++
|
||||
skip14a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl14b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip14b
|
||||
lbl14b: success++
|
||||
skip14b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>values[1]
|
||||
goto lbl14c
|
||||
goto skip14c
|
||||
lbl14c: success++
|
||||
skip14c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl14d
|
||||
if sources[1]>values[1]
|
||||
goto cx16.r3
|
||||
goto skip14d
|
||||
lbl14d: success++
|
||||
skip14d:
|
||||
; no else
|
||||
if sources[1]>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=30464
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl15a
|
||||
goto skip15a
|
||||
lbl15a: success++
|
||||
skip15a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl15b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip15b
|
||||
lbl15b: success++
|
||||
skip15b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>values[1]
|
||||
goto lbl15c
|
||||
goto skip15c
|
||||
lbl15c: success++
|
||||
skip15c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl15d
|
||||
if sources[1]>values[1]
|
||||
goto cx16.r3
|
||||
goto skip15d
|
||||
lbl15d: success++
|
||||
skip15d:
|
||||
; no else
|
||||
if sources[1]>values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]>values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=65535
|
||||
; direct jump
|
||||
if x>values[1]
|
||||
goto lbl16a
|
||||
goto skip16a
|
||||
lbl16a: fail_uword(73)
|
||||
skip16a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl16b
|
||||
if x>values[1]
|
||||
goto cx16.r3
|
||||
goto skip16b
|
||||
lbl16b: fail_uword(74)
|
||||
skip16b:
|
||||
; no else
|
||||
if x>values[1]
|
||||
fail_uword(75)
|
||||
|
||||
; with else
|
||||
if x>values[1]
|
||||
fail_uword(76)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>values[1]
|
||||
goto lbl16c
|
||||
goto skip16c
|
||||
lbl16c: fail_uword(77)
|
||||
skip16c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl16d
|
||||
if sources[1]>values[1]
|
||||
goto cx16.r3
|
||||
goto skip16d
|
||||
lbl16d: fail_uword(78)
|
||||
skip16d:
|
||||
; no else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(79)
|
||||
|
||||
; with else
|
||||
if sources[1]>values[1]
|
||||
fail_uword(80)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(68)
|
||||
}
|
||||
|
||||
}
|
||||
|
9954
compiler/test/comparisons/test_uword_splitw_gte.asm
Normal file
9954
compiler/test/comparisons/test_uword_splitw_gte.asm
Normal file
File diff suppressed because it is too large
Load Diff
816
compiler/test/comparisons/test_uword_splitw_gte.p8
Normal file
816
compiler/test/comparisons/test_uword_splitw_gte.p8
Normal file
|
@ -0,0 +1,816 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
uword success = 0
|
||||
str datatype = "uword"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\ngreater-equal split words array tests for: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("\n>=array[]: ")
|
||||
test_cmp_array()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(uword expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_uw(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_uw(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_word(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
sub test_cmp_array() {
|
||||
uword @shared x
|
||||
uword[] @split values = [0, 0]
|
||||
uword[] @split sources = [0, 0]
|
||||
success = 0
|
||||
x=0
|
||||
sources[1]=0
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>=values[1]
|
||||
goto lbl1c
|
||||
goto skip1c
|
||||
lbl1c: success++
|
||||
skip1c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1d
|
||||
if sources[1]>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip1d
|
||||
lbl1d: success++
|
||||
skip1d:
|
||||
; no else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: fail_uword(1)
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: fail_uword(2)
|
||||
skip2b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
fail_uword(3)
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
fail_uword(4)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>=values[1]
|
||||
goto lbl2c
|
||||
goto skip2c
|
||||
lbl2c: fail_uword(5)
|
||||
skip2c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2d
|
||||
if sources[1]>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip2d
|
||||
lbl2d: fail_uword(6)
|
||||
skip2d:
|
||||
; no else
|
||||
if sources[1]>=values[1]
|
||||
fail_uword(7)
|
||||
|
||||
; with else
|
||||
if sources[1]>=values[1]
|
||||
fail_uword(8)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=30464
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: fail_uword(9)
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: fail_uword(10)
|
||||
skip3b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
fail_uword(11)
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
fail_uword(12)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>=values[1]
|
||||
goto lbl3c
|
||||
goto skip3c
|
||||
lbl3c: fail_uword(13)
|
||||
skip3c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3d
|
||||
if sources[1]>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip3d
|
||||
lbl3d: fail_uword(14)
|
||||
skip3d:
|
||||
; no else
|
||||
if sources[1]>=values[1]
|
||||
fail_uword(15)
|
||||
|
||||
; with else
|
||||
if sources[1]>=values[1]
|
||||
fail_uword(16)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=65535
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: fail_uword(17)
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: fail_uword(18)
|
||||
skip4b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
fail_uword(19)
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
fail_uword(20)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>=values[1]
|
||||
goto lbl4c
|
||||
goto skip4c
|
||||
lbl4c: fail_uword(21)
|
||||
skip4c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4d
|
||||
if sources[1]>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip4d
|
||||
lbl4d: fail_uword(22)
|
||||
skip4d:
|
||||
; no else
|
||||
if sources[1]>=values[1]
|
||||
fail_uword(23)
|
||||
|
||||
; with else
|
||||
if sources[1]>=values[1]
|
||||
fail_uword(24)
|
||||
else
|
||||
success++
|
||||
|
||||
x=1
|
||||
sources[1]=1
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: success++
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: success++
|
||||
skip5b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>=values[1]
|
||||
goto lbl5c
|
||||
goto skip5c
|
||||
lbl5c: success++
|
||||
skip5c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5d
|
||||
if sources[1]>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip5d
|
||||
lbl5d: success++
|
||||
skip5d:
|
||||
; no else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>=values[1]
|
||||
goto lbl6c
|
||||
goto skip6c
|
||||
lbl6c: success++
|
||||
skip6c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6d
|
||||
if sources[1]>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip6d
|
||||
lbl6d: success++
|
||||
skip6d:
|
||||
; no else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=30464
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: fail_uword(25)
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: fail_uword(26)
|
||||
skip7b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
fail_uword(27)
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
fail_uword(28)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>=values[1]
|
||||
goto lbl7c
|
||||
goto skip7c
|
||||
lbl7c: fail_uword(29)
|
||||
skip7c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7d
|
||||
if sources[1]>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip7d
|
||||
lbl7d: fail_uword(30)
|
||||
skip7d:
|
||||
; no else
|
||||
if sources[1]>=values[1]
|
||||
fail_uword(31)
|
||||
|
||||
; with else
|
||||
if sources[1]>=values[1]
|
||||
fail_uword(32)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=65535
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: fail_uword(33)
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: fail_uword(34)
|
||||
skip8b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
fail_uword(35)
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
fail_uword(36)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>=values[1]
|
||||
goto lbl8c
|
||||
goto skip8c
|
||||
lbl8c: fail_uword(37)
|
||||
skip8c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8d
|
||||
if sources[1]>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip8d
|
||||
lbl8d: fail_uword(38)
|
||||
skip8d:
|
||||
; no else
|
||||
if sources[1]>=values[1]
|
||||
fail_uword(39)
|
||||
|
||||
; with else
|
||||
if sources[1]>=values[1]
|
||||
fail_uword(40)
|
||||
else
|
||||
success++
|
||||
|
||||
x=30464
|
||||
sources[1]=30464
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: success++
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: success++
|
||||
skip9b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>=values[1]
|
||||
goto lbl9c
|
||||
goto skip9c
|
||||
lbl9c: success++
|
||||
skip9c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9d
|
||||
if sources[1]>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip9d
|
||||
lbl9d: success++
|
||||
skip9d:
|
||||
; no else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl10a
|
||||
goto skip10a
|
||||
lbl10a: success++
|
||||
skip10a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl10b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip10b
|
||||
lbl10b: success++
|
||||
skip10b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>=values[1]
|
||||
goto lbl10c
|
||||
goto skip10c
|
||||
lbl10c: success++
|
||||
skip10c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl10d
|
||||
if sources[1]>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip10d
|
||||
lbl10d: success++
|
||||
skip10d:
|
||||
; no else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=30464
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl11a
|
||||
goto skip11a
|
||||
lbl11a: success++
|
||||
skip11a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl11b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip11b
|
||||
lbl11b: success++
|
||||
skip11b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>=values[1]
|
||||
goto lbl11c
|
||||
goto skip11c
|
||||
lbl11c: success++
|
||||
skip11c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl11d
|
||||
if sources[1]>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip11d
|
||||
lbl11d: success++
|
||||
skip11d:
|
||||
; no else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=65535
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl12a
|
||||
goto skip12a
|
||||
lbl12a: fail_uword(41)
|
||||
skip12a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl12b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip12b
|
||||
lbl12b: fail_uword(42)
|
||||
skip12b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
fail_uword(43)
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
fail_uword(44)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>=values[1]
|
||||
goto lbl12c
|
||||
goto skip12c
|
||||
lbl12c: fail_uword(45)
|
||||
skip12c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl12d
|
||||
if sources[1]>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip12d
|
||||
lbl12d: fail_uword(46)
|
||||
skip12d:
|
||||
; no else
|
||||
if sources[1]>=values[1]
|
||||
fail_uword(47)
|
||||
|
||||
; with else
|
||||
if sources[1]>=values[1]
|
||||
fail_uword(48)
|
||||
else
|
||||
success++
|
||||
|
||||
x=65535
|
||||
sources[1]=65535
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl13a
|
||||
goto skip13a
|
||||
lbl13a: success++
|
||||
skip13a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl13b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip13b
|
||||
lbl13b: success++
|
||||
skip13b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>=values[1]
|
||||
goto lbl13c
|
||||
goto skip13c
|
||||
lbl13c: success++
|
||||
skip13c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl13d
|
||||
if sources[1]>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip13d
|
||||
lbl13d: success++
|
||||
skip13d:
|
||||
; no else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl14a
|
||||
goto skip14a
|
||||
lbl14a: success++
|
||||
skip14a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl14b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip14b
|
||||
lbl14b: success++
|
||||
skip14b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>=values[1]
|
||||
goto lbl14c
|
||||
goto skip14c
|
||||
lbl14c: success++
|
||||
skip14c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl14d
|
||||
if sources[1]>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip14d
|
||||
lbl14d: success++
|
||||
skip14d:
|
||||
; no else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=30464
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl15a
|
||||
goto skip15a
|
||||
lbl15a: success++
|
||||
skip15a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl15b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip15b
|
||||
lbl15b: success++
|
||||
skip15b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>=values[1]
|
||||
goto lbl15c
|
||||
goto skip15c
|
||||
lbl15c: success++
|
||||
skip15c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl15d
|
||||
if sources[1]>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip15d
|
||||
lbl15d: success++
|
||||
skip15d:
|
||||
; no else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=65535
|
||||
; direct jump
|
||||
if x>=values[1]
|
||||
goto lbl16a
|
||||
goto skip16a
|
||||
lbl16a: success++
|
||||
skip16a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl16b
|
||||
if x>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip16b
|
||||
lbl16b: success++
|
||||
skip16b:
|
||||
; no else
|
||||
if x>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]>=values[1]
|
||||
goto lbl16c
|
||||
goto skip16c
|
||||
lbl16c: success++
|
||||
skip16c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl16d
|
||||
if sources[1]>=values[1]
|
||||
goto cx16.r3
|
||||
goto skip16d
|
||||
lbl16d: success++
|
||||
skip16d:
|
||||
; no else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]>=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(92)
|
||||
}
|
||||
|
||||
}
|
||||
|
10042
compiler/test/comparisons/test_uword_splitw_lt.asm
Normal file
10042
compiler/test/comparisons/test_uword_splitw_lt.asm
Normal file
File diff suppressed because it is too large
Load Diff
816
compiler/test/comparisons/test_uword_splitw_lt.p8
Normal file
816
compiler/test/comparisons/test_uword_splitw_lt.p8
Normal file
|
@ -0,0 +1,816 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
uword success = 0
|
||||
str datatype = "uword"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\nless-than split words array tests for: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("\n<array[]: ")
|
||||
test_cmp_array()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(uword expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_uw(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_uw(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_word(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
sub test_cmp_array() {
|
||||
uword @shared x
|
||||
uword[] @split values = [0, 0]
|
||||
uword[] @split sources = [0, 0]
|
||||
success = 0
|
||||
x=0
|
||||
sources[1]=0
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: fail_uword(1)
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: fail_uword(2)
|
||||
skip1b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_uword(3)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_uword(4)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<values[1]
|
||||
goto lbl1c
|
||||
goto skip1c
|
||||
lbl1c: fail_uword(5)
|
||||
skip1c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1d
|
||||
if sources[1]<values[1]
|
||||
goto cx16.r3
|
||||
goto skip1d
|
||||
lbl1d: fail_uword(6)
|
||||
skip1d:
|
||||
; no else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(7)
|
||||
|
||||
; with else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(8)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<values[1]
|
||||
goto lbl2c
|
||||
goto skip2c
|
||||
lbl2c: success++
|
||||
skip2c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2d
|
||||
if sources[1]<values[1]
|
||||
goto cx16.r3
|
||||
goto skip2d
|
||||
lbl2d: success++
|
||||
skip2d:
|
||||
; no else
|
||||
if sources[1]<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=30464
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<values[1]
|
||||
goto lbl3c
|
||||
goto skip3c
|
||||
lbl3c: success++
|
||||
skip3c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3d
|
||||
if sources[1]<values[1]
|
||||
goto cx16.r3
|
||||
goto skip3d
|
||||
lbl3d: success++
|
||||
skip3d:
|
||||
; no else
|
||||
if sources[1]<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=65535
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<values[1]
|
||||
goto lbl4c
|
||||
goto skip4c
|
||||
lbl4c: success++
|
||||
skip4c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4d
|
||||
if sources[1]<values[1]
|
||||
goto cx16.r3
|
||||
goto skip4d
|
||||
lbl4d: success++
|
||||
skip4d:
|
||||
; no else
|
||||
if sources[1]<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
sources[1]=1
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_uword(9)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_uword(10)
|
||||
skip5b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_uword(11)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_uword(12)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<values[1]
|
||||
goto lbl5c
|
||||
goto skip5c
|
||||
lbl5c: fail_uword(13)
|
||||
skip5c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5d
|
||||
if sources[1]<values[1]
|
||||
goto cx16.r3
|
||||
goto skip5d
|
||||
lbl5d: fail_uword(14)
|
||||
skip5d:
|
||||
; no else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(15)
|
||||
|
||||
; with else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(16)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: fail_uword(17)
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: fail_uword(18)
|
||||
skip6b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_uword(19)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_uword(20)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<values[1]
|
||||
goto lbl6c
|
||||
goto skip6c
|
||||
lbl6c: fail_uword(21)
|
||||
skip6c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6d
|
||||
if sources[1]<values[1]
|
||||
goto cx16.r3
|
||||
goto skip6d
|
||||
lbl6d: fail_uword(22)
|
||||
skip6d:
|
||||
; no else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(23)
|
||||
|
||||
; with else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(24)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=30464
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<values[1]
|
||||
goto lbl7c
|
||||
goto skip7c
|
||||
lbl7c: success++
|
||||
skip7c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7d
|
||||
if sources[1]<values[1]
|
||||
goto cx16.r3
|
||||
goto skip7d
|
||||
lbl7d: success++
|
||||
skip7d:
|
||||
; no else
|
||||
if sources[1]<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=65535
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<values[1]
|
||||
goto lbl8c
|
||||
goto skip8c
|
||||
lbl8c: success++
|
||||
skip8c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8d
|
||||
if sources[1]<values[1]
|
||||
goto cx16.r3
|
||||
goto skip8d
|
||||
lbl8d: success++
|
||||
skip8d:
|
||||
; no else
|
||||
if sources[1]<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=30464
|
||||
sources[1]=30464
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_uword(25)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_uword(26)
|
||||
skip9b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_uword(27)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_uword(28)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<values[1]
|
||||
goto lbl9c
|
||||
goto skip9c
|
||||
lbl9c: fail_uword(29)
|
||||
skip9c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9d
|
||||
if sources[1]<values[1]
|
||||
goto cx16.r3
|
||||
goto skip9d
|
||||
lbl9d: fail_uword(30)
|
||||
skip9d:
|
||||
; no else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(31)
|
||||
|
||||
; with else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(32)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl10a
|
||||
goto skip10a
|
||||
lbl10a: fail_uword(33)
|
||||
skip10a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl10b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip10b
|
||||
lbl10b: fail_uword(34)
|
||||
skip10b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_uword(35)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_uword(36)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<values[1]
|
||||
goto lbl10c
|
||||
goto skip10c
|
||||
lbl10c: fail_uword(37)
|
||||
skip10c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl10d
|
||||
if sources[1]<values[1]
|
||||
goto cx16.r3
|
||||
goto skip10d
|
||||
lbl10d: fail_uword(38)
|
||||
skip10d:
|
||||
; no else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(39)
|
||||
|
||||
; with else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(40)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=30464
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl11a
|
||||
goto skip11a
|
||||
lbl11a: fail_uword(41)
|
||||
skip11a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl11b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip11b
|
||||
lbl11b: fail_uword(42)
|
||||
skip11b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_uword(43)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_uword(44)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<values[1]
|
||||
goto lbl11c
|
||||
goto skip11c
|
||||
lbl11c: fail_uword(45)
|
||||
skip11c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl11d
|
||||
if sources[1]<values[1]
|
||||
goto cx16.r3
|
||||
goto skip11d
|
||||
lbl11d: fail_uword(46)
|
||||
skip11d:
|
||||
; no else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(47)
|
||||
|
||||
; with else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(48)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=65535
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl12a
|
||||
goto skip12a
|
||||
lbl12a: success++
|
||||
skip12a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl12b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip12b
|
||||
lbl12b: success++
|
||||
skip12b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<values[1]
|
||||
goto lbl12c
|
||||
goto skip12c
|
||||
lbl12c: success++
|
||||
skip12c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl12d
|
||||
if sources[1]<values[1]
|
||||
goto cx16.r3
|
||||
goto skip12d
|
||||
lbl12d: success++
|
||||
skip12d:
|
||||
; no else
|
||||
if sources[1]<values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]<values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=65535
|
||||
sources[1]=65535
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl13a
|
||||
goto skip13a
|
||||
lbl13a: fail_uword(49)
|
||||
skip13a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl13b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip13b
|
||||
lbl13b: fail_uword(50)
|
||||
skip13b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_uword(51)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_uword(52)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<values[1]
|
||||
goto lbl13c
|
||||
goto skip13c
|
||||
lbl13c: fail_uword(53)
|
||||
skip13c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl13d
|
||||
if sources[1]<values[1]
|
||||
goto cx16.r3
|
||||
goto skip13d
|
||||
lbl13d: fail_uword(54)
|
||||
skip13d:
|
||||
; no else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(55)
|
||||
|
||||
; with else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(56)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl14a
|
||||
goto skip14a
|
||||
lbl14a: fail_uword(57)
|
||||
skip14a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl14b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip14b
|
||||
lbl14b: fail_uword(58)
|
||||
skip14b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_uword(59)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_uword(60)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<values[1]
|
||||
goto lbl14c
|
||||
goto skip14c
|
||||
lbl14c: fail_uword(61)
|
||||
skip14c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl14d
|
||||
if sources[1]<values[1]
|
||||
goto cx16.r3
|
||||
goto skip14d
|
||||
lbl14d: fail_uword(62)
|
||||
skip14d:
|
||||
; no else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(63)
|
||||
|
||||
; with else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(64)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=30464
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl15a
|
||||
goto skip15a
|
||||
lbl15a: fail_uword(65)
|
||||
skip15a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl15b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip15b
|
||||
lbl15b: fail_uword(66)
|
||||
skip15b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_uword(67)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_uword(68)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<values[1]
|
||||
goto lbl15c
|
||||
goto skip15c
|
||||
lbl15c: fail_uword(69)
|
||||
skip15c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl15d
|
||||
if sources[1]<values[1]
|
||||
goto cx16.r3
|
||||
goto skip15d
|
||||
lbl15d: fail_uword(70)
|
||||
skip15d:
|
||||
; no else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(71)
|
||||
|
||||
; with else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(72)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=65535
|
||||
; direct jump
|
||||
if x<values[1]
|
||||
goto lbl16a
|
||||
goto skip16a
|
||||
lbl16a: fail_uword(73)
|
||||
skip16a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl16b
|
||||
if x<values[1]
|
||||
goto cx16.r3
|
||||
goto skip16b
|
||||
lbl16b: fail_uword(74)
|
||||
skip16b:
|
||||
; no else
|
||||
if x<values[1]
|
||||
fail_uword(75)
|
||||
|
||||
; with else
|
||||
if x<values[1]
|
||||
fail_uword(76)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<values[1]
|
||||
goto lbl16c
|
||||
goto skip16c
|
||||
lbl16c: fail_uword(77)
|
||||
skip16c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl16d
|
||||
if sources[1]<values[1]
|
||||
goto cx16.r3
|
||||
goto skip16d
|
||||
lbl16d: fail_uword(78)
|
||||
skip16d:
|
||||
; no else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(79)
|
||||
|
||||
; with else
|
||||
if sources[1]<values[1]
|
||||
fail_uword(80)
|
||||
else
|
||||
success++
|
||||
|
||||
verify_success(68)
|
||||
}
|
||||
|
||||
}
|
||||
|
9698
compiler/test/comparisons/test_uword_splitw_lte.asm
Normal file
9698
compiler/test/comparisons/test_uword_splitw_lte.asm
Normal file
File diff suppressed because it is too large
Load Diff
816
compiler/test/comparisons/test_uword_splitw_lte.p8
Normal file
816
compiler/test/comparisons/test_uword_splitw_lte.p8
Normal file
|
@ -0,0 +1,816 @@
|
|||
|
||||
%import textio
|
||||
%import floats
|
||||
%import test_stack
|
||||
%zeropage dontuse
|
||||
%option no_sysinit
|
||||
|
||||
main {
|
||||
uword success = 0
|
||||
str datatype = "uword"
|
||||
uword @shared comparison
|
||||
|
||||
sub start() {
|
||||
txt.print("\nless-equal split words array tests for: ")
|
||||
txt.print(datatype)
|
||||
txt.nl()
|
||||
test_stack.test()
|
||||
txt.print("\n<=array[]: ")
|
||||
test_cmp_array()
|
||||
test_stack.test()
|
||||
}
|
||||
|
||||
sub verify_success(uword expected) {
|
||||
if success==expected {
|
||||
txt.print("ok")
|
||||
} else {
|
||||
txt.print(" **failed** ")
|
||||
txt.print_uw(success)
|
||||
txt.print(" success, expected ")
|
||||
txt.print_uw(expected)
|
||||
}
|
||||
}
|
||||
|
||||
sub fail_word(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
sub fail_uword(uword idx) {
|
||||
txt.print(" **fail#")
|
||||
txt.print_uw(idx)
|
||||
txt.print(" **")
|
||||
}
|
||||
|
||||
|
||||
sub test_cmp_array() {
|
||||
uword @shared x
|
||||
uword[] @split values = [0, 0]
|
||||
uword[] @split sources = [0, 0]
|
||||
success = 0
|
||||
x=0
|
||||
sources[1]=0
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl1a
|
||||
goto skip1a
|
||||
lbl1a: success++
|
||||
skip1a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip1b
|
||||
lbl1b: success++
|
||||
skip1b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<=values[1]
|
||||
goto lbl1c
|
||||
goto skip1c
|
||||
lbl1c: success++
|
||||
skip1c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl1d
|
||||
if sources[1]<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip1d
|
||||
lbl1d: success++
|
||||
skip1d:
|
||||
; no else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl2a
|
||||
goto skip2a
|
||||
lbl2a: success++
|
||||
skip2a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip2b
|
||||
lbl2b: success++
|
||||
skip2b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<=values[1]
|
||||
goto lbl2c
|
||||
goto skip2c
|
||||
lbl2c: success++
|
||||
skip2c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl2d
|
||||
if sources[1]<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip2d
|
||||
lbl2d: success++
|
||||
skip2d:
|
||||
; no else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=30464
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl3a
|
||||
goto skip3a
|
||||
lbl3a: success++
|
||||
skip3a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip3b
|
||||
lbl3b: success++
|
||||
skip3b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<=values[1]
|
||||
goto lbl3c
|
||||
goto skip3c
|
||||
lbl3c: success++
|
||||
skip3c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl3d
|
||||
if sources[1]<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip3d
|
||||
lbl3d: success++
|
||||
skip3d:
|
||||
; no else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=65535
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl4a
|
||||
goto skip4a
|
||||
lbl4a: success++
|
||||
skip4a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip4b
|
||||
lbl4b: success++
|
||||
skip4b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<=values[1]
|
||||
goto lbl4c
|
||||
goto skip4c
|
||||
lbl4c: success++
|
||||
skip4c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl4d
|
||||
if sources[1]<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip4d
|
||||
lbl4d: success++
|
||||
skip4d:
|
||||
; no else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=1
|
||||
sources[1]=1
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl5a
|
||||
goto skip5a
|
||||
lbl5a: fail_uword(1)
|
||||
skip5a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip5b
|
||||
lbl5b: fail_uword(2)
|
||||
skip5b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
fail_uword(3)
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
fail_uword(4)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<=values[1]
|
||||
goto lbl5c
|
||||
goto skip5c
|
||||
lbl5c: fail_uword(5)
|
||||
skip5c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl5d
|
||||
if sources[1]<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip5d
|
||||
lbl5d: fail_uword(6)
|
||||
skip5d:
|
||||
; no else
|
||||
if sources[1]<=values[1]
|
||||
fail_uword(7)
|
||||
|
||||
; with else
|
||||
if sources[1]<=values[1]
|
||||
fail_uword(8)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl6a
|
||||
goto skip6a
|
||||
lbl6a: success++
|
||||
skip6a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip6b
|
||||
lbl6b: success++
|
||||
skip6b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<=values[1]
|
||||
goto lbl6c
|
||||
goto skip6c
|
||||
lbl6c: success++
|
||||
skip6c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl6d
|
||||
if sources[1]<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip6d
|
||||
lbl6d: success++
|
||||
skip6d:
|
||||
; no else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=30464
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl7a
|
||||
goto skip7a
|
||||
lbl7a: success++
|
||||
skip7a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip7b
|
||||
lbl7b: success++
|
||||
skip7b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<=values[1]
|
||||
goto lbl7c
|
||||
goto skip7c
|
||||
lbl7c: success++
|
||||
skip7c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl7d
|
||||
if sources[1]<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip7d
|
||||
lbl7d: success++
|
||||
skip7d:
|
||||
; no else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=65535
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl8a
|
||||
goto skip8a
|
||||
lbl8a: success++
|
||||
skip8a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip8b
|
||||
lbl8b: success++
|
||||
skip8b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<=values[1]
|
||||
goto lbl8c
|
||||
goto skip8c
|
||||
lbl8c: success++
|
||||
skip8c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl8d
|
||||
if sources[1]<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip8d
|
||||
lbl8d: success++
|
||||
skip8d:
|
||||
; no else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=30464
|
||||
sources[1]=30464
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl9a
|
||||
goto skip9a
|
||||
lbl9a: fail_uword(9)
|
||||
skip9a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip9b
|
||||
lbl9b: fail_uword(10)
|
||||
skip9b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
fail_uword(11)
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
fail_uword(12)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<=values[1]
|
||||
goto lbl9c
|
||||
goto skip9c
|
||||
lbl9c: fail_uword(13)
|
||||
skip9c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl9d
|
||||
if sources[1]<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip9d
|
||||
lbl9d: fail_uword(14)
|
||||
skip9d:
|
||||
; no else
|
||||
if sources[1]<=values[1]
|
||||
fail_uword(15)
|
||||
|
||||
; with else
|
||||
if sources[1]<=values[1]
|
||||
fail_uword(16)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl10a
|
||||
goto skip10a
|
||||
lbl10a: fail_uword(17)
|
||||
skip10a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl10b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip10b
|
||||
lbl10b: fail_uword(18)
|
||||
skip10b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
fail_uword(19)
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
fail_uword(20)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<=values[1]
|
||||
goto lbl10c
|
||||
goto skip10c
|
||||
lbl10c: fail_uword(21)
|
||||
skip10c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl10d
|
||||
if sources[1]<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip10d
|
||||
lbl10d: fail_uword(22)
|
||||
skip10d:
|
||||
; no else
|
||||
if sources[1]<=values[1]
|
||||
fail_uword(23)
|
||||
|
||||
; with else
|
||||
if sources[1]<=values[1]
|
||||
fail_uword(24)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=30464
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl11a
|
||||
goto skip11a
|
||||
lbl11a: success++
|
||||
skip11a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl11b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip11b
|
||||
lbl11b: success++
|
||||
skip11b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<=values[1]
|
||||
goto lbl11c
|
||||
goto skip11c
|
||||
lbl11c: success++
|
||||
skip11c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl11d
|
||||
if sources[1]<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip11d
|
||||
lbl11d: success++
|
||||
skip11d:
|
||||
; no else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
values[1]=65535
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl12a
|
||||
goto skip12a
|
||||
lbl12a: success++
|
||||
skip12a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl12b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip12b
|
||||
lbl12b: success++
|
||||
skip12b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<=values[1]
|
||||
goto lbl12c
|
||||
goto skip12c
|
||||
lbl12c: success++
|
||||
skip12c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl12d
|
||||
if sources[1]<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip12d
|
||||
lbl12d: success++
|
||||
skip12d:
|
||||
; no else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
x=65535
|
||||
sources[1]=65535
|
||||
values[1]=0
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl13a
|
||||
goto skip13a
|
||||
lbl13a: fail_uword(25)
|
||||
skip13a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl13b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip13b
|
||||
lbl13b: fail_uword(26)
|
||||
skip13b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
fail_uword(27)
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
fail_uword(28)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<=values[1]
|
||||
goto lbl13c
|
||||
goto skip13c
|
||||
lbl13c: fail_uword(29)
|
||||
skip13c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl13d
|
||||
if sources[1]<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip13d
|
||||
lbl13d: fail_uword(30)
|
||||
skip13d:
|
||||
; no else
|
||||
if sources[1]<=values[1]
|
||||
fail_uword(31)
|
||||
|
||||
; with else
|
||||
if sources[1]<=values[1]
|
||||
fail_uword(32)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=1
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl14a
|
||||
goto skip14a
|
||||
lbl14a: fail_uword(33)
|
||||
skip14a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl14b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip14b
|
||||
lbl14b: fail_uword(34)
|
||||
skip14b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
fail_uword(35)
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
fail_uword(36)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<=values[1]
|
||||
goto lbl14c
|
||||
goto skip14c
|
||||
lbl14c: fail_uword(37)
|
||||
skip14c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl14d
|
||||
if sources[1]<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip14d
|
||||
lbl14d: fail_uword(38)
|
||||
skip14d:
|
||||
; no else
|
||||
if sources[1]<=values[1]
|
||||
fail_uword(39)
|
||||
|
||||
; with else
|
||||
if sources[1]<=values[1]
|
||||
fail_uword(40)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=30464
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl15a
|
||||
goto skip15a
|
||||
lbl15a: fail_uword(41)
|
||||
skip15a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl15b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip15b
|
||||
lbl15b: fail_uword(42)
|
||||
skip15b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
fail_uword(43)
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
fail_uword(44)
|
||||
else
|
||||
success++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<=values[1]
|
||||
goto lbl15c
|
||||
goto skip15c
|
||||
lbl15c: fail_uword(45)
|
||||
skip15c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl15d
|
||||
if sources[1]<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip15d
|
||||
lbl15d: fail_uword(46)
|
||||
skip15d:
|
||||
; no else
|
||||
if sources[1]<=values[1]
|
||||
fail_uword(47)
|
||||
|
||||
; with else
|
||||
if sources[1]<=values[1]
|
||||
fail_uword(48)
|
||||
else
|
||||
success++
|
||||
|
||||
values[1]=65535
|
||||
; direct jump
|
||||
if x<=values[1]
|
||||
goto lbl16a
|
||||
goto skip16a
|
||||
lbl16a: success++
|
||||
skip16a:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl16b
|
||||
if x<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip16b
|
||||
lbl16b: success++
|
||||
skip16b:
|
||||
; no else
|
||||
if x<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if x<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
; direct jump
|
||||
if sources[1]<=values[1]
|
||||
goto lbl16c
|
||||
goto skip16c
|
||||
lbl16c: success++
|
||||
skip16c:
|
||||
; indirect jump
|
||||
cx16.r3 = &lbl16d
|
||||
if sources[1]<=values[1]
|
||||
goto cx16.r3
|
||||
goto skip16d
|
||||
lbl16d: success++
|
||||
skip16d:
|
||||
; no else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
|
||||
; with else
|
||||
if sources[1]<=values[1]
|
||||
success++
|
||||
else
|
||||
cx16.r0L++
|
||||
|
||||
verify_success(92)
|
||||
}
|
||||
|
||||
}
|
||||
|
26435
compiler/test/comparisons/test_word_equalities.asm
Normal file
26435
compiler/test/comparisons/test_word_equalities.asm
Normal file
File diff suppressed because it is too large
Load Diff
4987
compiler/test/comparisons/test_word_equalities.p8
Normal file
4987
compiler/test/comparisons/test_word_equalities.p8
Normal file
File diff suppressed because it is too large
Load Diff
24133
compiler/test/comparisons/test_word_gt.asm
Normal file
24133
compiler/test/comparisons/test_word_gt.asm
Normal file
File diff suppressed because it is too large
Load Diff
4732
compiler/test/comparisons/test_word_gt.p8
Normal file
4732
compiler/test/comparisons/test_word_gt.p8
Normal file
File diff suppressed because it is too large
Load Diff
25549
compiler/test/comparisons/test_word_gte.asm
Normal file
25549
compiler/test/comparisons/test_word_gte.asm
Normal file
File diff suppressed because it is too large
Load Diff
4732
compiler/test/comparisons/test_word_gte.p8
Normal file
4732
compiler/test/comparisons/test_word_gte.p8
Normal file
File diff suppressed because it is too large
Load Diff
25773
compiler/test/comparisons/test_word_lt.asm
Normal file
25773
compiler/test/comparisons/test_word_lt.asm
Normal file
File diff suppressed because it is too large
Load Diff
4732
compiler/test/comparisons/test_word_lt.p8
Normal file
4732
compiler/test/comparisons/test_word_lt.p8
Normal file
File diff suppressed because it is too large
Load Diff
23909
compiler/test/comparisons/test_word_lte.asm
Normal file
23909
compiler/test/comparisons/test_word_lte.asm
Normal file
File diff suppressed because it is too large
Load Diff
4732
compiler/test/comparisons/test_word_lte.p8
Normal file
4732
compiler/test/comparisons/test_word_lte.p8
Normal file
File diff suppressed because it is too large
Load Diff
27682
compiler/test/comparisons/test_word_splitw_equalities.asm
Normal file
27682
compiler/test/comparisons/test_word_splitw_equalities.asm
Normal file
File diff suppressed because it is too large
Load Diff
4961
compiler/test/comparisons/test_word_splitw_equalities.p8
Normal file
4961
compiler/test/comparisons/test_word_splitw_equalities.p8
Normal file
File diff suppressed because it is too large
Load Diff
15884
compiler/test/comparisons/test_word_splitw_gt.asm
Normal file
15884
compiler/test/comparisons/test_word_splitw_gt.asm
Normal file
File diff suppressed because it is too large
Load Diff
2373
compiler/test/comparisons/test_word_splitw_gt.p8
Normal file
2373
compiler/test/comparisons/test_word_splitw_gt.p8
Normal file
File diff suppressed because it is too large
Load Diff
16682
compiler/test/comparisons/test_word_splitw_gte.asm
Normal file
16682
compiler/test/comparisons/test_word_splitw_gte.asm
Normal file
File diff suppressed because it is too large
Load Diff
2373
compiler/test/comparisons/test_word_splitw_gte.p8
Normal file
2373
compiler/test/comparisons/test_word_splitw_gte.p8
Normal file
File diff suppressed because it is too large
Load Diff
16668
compiler/test/comparisons/test_word_splitw_lt.asm
Normal file
16668
compiler/test/comparisons/test_word_splitw_lt.asm
Normal file
File diff suppressed because it is too large
Load Diff
2373
compiler/test/comparisons/test_word_splitw_lt.p8
Normal file
2373
compiler/test/comparisons/test_word_splitw_lt.p8
Normal file
File diff suppressed because it is too large
Load Diff
15898
compiler/test/comparisons/test_word_splitw_lte.asm
Normal file
15898
compiler/test/comparisons/test_word_splitw_lte.asm
Normal file
File diff suppressed because it is too large
Load Diff
2373
compiler/test/comparisons/test_word_splitw_lte.p8
Normal file
2373
compiler/test/comparisons/test_word_splitw_lte.p8
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -828,10 +828,11 @@ sqrt (w)
|
|||
Supports unsigned integer (result is ubyte) and floating point numbers.
|
||||
To do the reverse - squaring a number - just write ``x*x``.
|
||||
|
||||
divmod (number, divident, division, remainder)
|
||||
Performs division and remainder calculation in a single call. This is faster than using separate '/' and '%' calculations.
|
||||
divmod (dividend, divisor, quotient, remainder)
|
||||
Performs division only once and returns both quotient and remainder in a single call, where using '/' and '%' separately
|
||||
would perform the division operation twice.
|
||||
All values are ubytes or all are uwords.
|
||||
The last two arguments must be ubyte variables to receive the division and remainder results, respectively.
|
||||
The last two arguments must be variables to receive the quotient and remainder results, respectively.
|
||||
|
||||
|
||||
Array operations
|
||||
|
|
|
@ -4,6 +4,7 @@ TODO
|
|||
add docs for multi-assigns.
|
||||
|
||||
add IR peephole optimizer for : loadm.X rX,$address | storem.X rX,$address. (get rid of the store)
|
||||
(you can generate this code by assigning a asmsub's R0 return value to R0 for instance).
|
||||
|
||||
...
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user