diff --git a/src/main/fragment/6502X/vbuz1=vbuaa_band_vbuxx.asm b/src/main/fragment/6502X/vbuz1=vbuaa_band_vbuxx.asm
new file mode 100644
index 000000000..124679d63
--- /dev/null
+++ b/src/main/fragment/6502X/vbuz1=vbuaa_band_vbuxx.asm
@@ -0,0 +1 @@
+sax {z1}
\ No newline at end of file
diff --git a/src/main/fragment/vbuz1=vbuaa_band_vbuxx.asm b/src/main/fragment/vbuz1=vbuaa_band_vbuxx.asm
index 124679d63..7e48cbb1f 100644
--- a/src/main/fragment/vbuz1=vbuaa_band_vbuxx.asm
+++ b/src/main/fragment/vbuz1=vbuaa_band_vbuxx.asm
@@ -1 +1,3 @@
-sax {z1}
\ No newline at end of file
+stx {z1}
+and {z1}
+sta {z1}
\ No newline at end of file
diff --git a/src/main/java/dk/camelot64/kickc/Compiler.java b/src/main/java/dk/camelot64/kickc/Compiler.java
index 00c68057c..2ca45ec93 100644
--- a/src/main/java/dk/camelot64/kickc/Compiler.java
+++ b/src/main/java/dk/camelot64/kickc/Compiler.java
@@ -75,6 +75,15 @@ public class Compiler {
program.setTargetPlatform(targetPlatform);
}
+ void setTargetCpu(TargetCpu targetCpu) {
+ program.setTargetCpu(targetCpu);
+ }
+
+ TargetCpu getTargetCpu() {
+ return program.getTargetCpu();
+ }
+
+
public void setLog(CompileLog compileLog) {
program.setLog(compileLog);
}
@@ -489,7 +498,7 @@ public class Compiler {
new Pass4CodeGeneration(program, false, warnFragmentMissing).generate();
new Pass4AssertNoCpuClobber(program).check();
getLog().append("\nINITIAL ASM");
- getLog().append("Target platform is " + program.getTargetPlatform().getName());
+ getLog().append("Target platform is " + program.getTargetPlatform().getName() + " / " +program.getTargetCpu().getName());
getLog().append(program.getAsm().toString(new AsmProgram.AsmPrintState(true), program));
// Find potential registers for each live range equivalence class - based on clobbering of fragments
diff --git a/src/main/java/dk/camelot64/kickc/KickC.java b/src/main/java/dk/camelot64/kickc/KickC.java
index 375b6ea01..8de2999b0 100644
--- a/src/main/java/dk/camelot64/kickc/KickC.java
+++ b/src/main/java/dk/camelot64/kickc/KickC.java
@@ -6,6 +6,7 @@ import dk.camelot64.kickc.fragment.AsmFragmentTemplateSynthesizer;
import dk.camelot64.kickc.fragment.AsmFragmentTemplateUsages;
import dk.camelot64.kickc.model.CompileError;
import dk.camelot64.kickc.model.Program;
+import dk.camelot64.kickc.model.TargetCpu;
import dk.camelot64.kickc.model.TargetPlatform;
import kickass.KickAssembler;
import kickass.nonasm.c64.CharToPetsciiConverter;
@@ -129,6 +130,9 @@ public class KickC implements Callable {
@CommandLine.Option(names = {"-t", "-target"}, description = "The target system. Default is C64 with BASIC upstart. ")
private String target = TargetPlatform.C64BASIC.getName();
+ @CommandLine.Option(names = {"-cpu"}, description = "The target CPU. Default is 6502 with illegal opcodes. ")
+ private String cpu = TargetCpu.MOS6502X.getName();
+
@CommandLine.Option(names = {"-T", "-link"}, description = "Link using a linker script in KickAss segment format.")
private String linkScript = null;
@@ -162,6 +166,21 @@ public class KickC implements Callable {
compiler.setTargetPlatform(targetPlatform);
}
+ if(cpu!=null) {
+ TargetCpu targetCpu = TargetCpu.getTargetCpu(cpu);
+ if(targetCpu==null) {
+ System.err.println("Unknown target CPU "+cpu);
+ StringBuffer supported = new StringBuffer();
+ supported.append("The supported target CPUs are: ");
+ for(TargetCpu value : TargetCpu.values()) {
+ supported.append(value.getName()).append(" ");
+ }
+ System.err.println(supported);
+ System.exit(COMPILE_ERROR);
+ }
+ compiler.setTargetCpu(targetCpu);
+ }
+
if(libDir != null) {
for(Path libPath : libDir) {
compiler.addImportPath(libPath.toString());
@@ -172,6 +191,8 @@ public class KickC implements Callable {
fragmentDir = new File("fragment/").toPath();
}
+ Path fragmentCpuDir = fragmentDir.resolve(compiler.getTargetCpu().getName());
+
Path fragmentCacheDir = null;
if(optimizeFragmentCache) {
if(outputDir != null) {
@@ -183,7 +204,7 @@ public class KickC implements Callable {
configVerbosity(compiler);
- AsmFragmentTemplateSynthesizer.initialize(fragmentDir, fragmentCacheDir, compiler.getLog());
+ AsmFragmentTemplateSynthesizer.initialize(fragmentDir, fragmentCpuDir, fragmentCacheDir, compiler.getLog());
if(fragment != null) {
if(verbose) {
diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesizer.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesizer.java
index 1bd0bd33f..71436c8c3 100644
--- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesizer.java
+++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesizer.java
@@ -28,8 +28,8 @@ public class AsmFragmentTemplateSynthesizer {
static AsmFragmentTemplateSynthesizer SYNTHESIZER = null;
/** Initialize the fragment template synthesizer. */
- public static void initialize(Path fragmentFolder, Path cacheFolder, CompileLog log) {
- SYNTHESIZER = new AsmFragmentTemplateSynthesizer(fragmentFolder, cacheFolder, log);
+ public static void initialize(Path fragmentFolder, Path fragmentCpuFolder, Path cacheFolder, CompileLog log) {
+ SYNTHESIZER = new AsmFragmentTemplateSynthesizer(fragmentFolder, fragmentCpuFolder, cacheFolder, log);
}
/** Finalize the fragment template synthesizer. */
@@ -38,8 +38,9 @@ public class AsmFragmentTemplateSynthesizer {
}
/** Create synthesizer. */
- private AsmFragmentTemplateSynthesizer(Path fragmentFolder, Path cacheFolder, CompileLog log) {
- this.fragmentFolder = fragmentFolder;
+ private AsmFragmentTemplateSynthesizer(Path defaultFragmentFolder, Path cpuFragmentFolder, Path cacheFolder, CompileLog log) {
+ this.defaultFragmentFolder = defaultFragmentFolder;
+ this.cpuFragmentFolder = cpuFragmentFolder;
this.cacheFolder = cacheFolder;
this.synthesisGraph = new LinkedHashMap<>();
this.bestTemplateUpdate = new ArrayDeque<>();
@@ -49,8 +50,11 @@ public class AsmFragmentTemplateSynthesizer {
}
- /** The folder containing fragment files. */
- private Path fragmentFolder;
+ /** The folder containing generic fragment files. */
+ private Path defaultFragmentFolder;
+
+ /** The folder containing CPU-specific fragment files. */
+ private Path cpuFragmentFolder;
/** The folder containing cached fragment files. */
private Path cacheFolder;
@@ -184,9 +188,9 @@ public class AsmFragmentTemplateSynthesizer {
log.append("Loaded cached fragments " + bestFragmentCache.size() + " from " + cacheFile.getPath());
return bestFragmentCache;
} catch(IOException e) {
- throw new RuntimeException("Error loading fragment cache file " + fragmentFolder, e);
+ throw new RuntimeException("Error loading fragment cache file " + defaultFragmentFolder, e);
} catch(StringIndexOutOfBoundsException e) {
- throw new RuntimeException("Problem reading fragment file " + fragmentFolder, e);
+ throw new RuntimeException("Problem reading fragment file " + defaultFragmentFolder, e);
}
}
@@ -205,7 +209,7 @@ public class AsmFragmentTemplateSynthesizer {
for(String signature : this.bestFragmentCache.keySet()) {
AsmFragmentTemplate fragmentTemplate = this.bestFragmentCache.get(signature);
fragmentFilePrint.println("//FRAGMENT " + signature);
- if(fragmentTemplate.getBody()!=null)
+ if(fragmentTemplate.getBody() != null)
fragmentFilePrint.println(fragmentTemplate.getBody());
}
fragmentFilePrint.close();
@@ -255,8 +259,8 @@ public class AsmFragmentTemplateSynthesizer {
/** Options for synthesizing the other templates from this template using a specific synthesis rule. Backward edges in the synthesis graph. */
private Set parentOptions;
- /** The template loaded from a file, if it exists. null if no file exists for the signature. */
- private AsmFragmentTemplate fileTemplate;
+ /** The templates loaded from a file. Empty if no file exists for the signature. */
+ private List fileTemplates;
/**
* Create a new synthesis
@@ -268,6 +272,7 @@ public class AsmFragmentTemplateSynthesizer {
this.bestTemplates = new LinkedHashMap<>();
this.synthesisOptions = new LinkedHashSet<>();
this.parentOptions = new LinkedHashSet<>();
+ this.fileTemplates = new ArrayList<>();
}
/**
@@ -298,12 +303,12 @@ public class AsmFragmentTemplateSynthesizer {
this.parentOptions.add(synthesisOption);
}
- public void setFileTemplate(AsmFragmentTemplate fileTemplate) {
- this.fileTemplate = fileTemplate;
+ public void addFileTemplate(AsmFragmentTemplate fileTemplate) {
+ this.fileTemplates.add(fileTemplate);
}
- public AsmFragmentTemplate getFileTemplate() {
- return fileTemplate;
+ public List getFileTemplates() {
+ return fileTemplates;
}
/**
@@ -489,11 +494,13 @@ public class AsmFragmentTemplateSynthesizer {
synthesisGraph.put(signature, synthesis);
queueUpdateBestTemplate(synthesis);
// Load the template from file - if it exists
- AsmFragmentTemplate fileTemplate = loadFragmentTemplate(signature, log);
- if(fileTemplate != null) {
- synthesis.setFileTemplate(fileTemplate);
- if(log.isVerboseFragmentLog()) {
- log.append("New fragment synthesis " + signature + " - Successfully loaded " + signature + ".asm");
+ List fileTemplates = loadFragmentTemplates(signature, log);
+ if(fileTemplates != null) {
+ for(AsmFragmentTemplate fileTemplate : fileTemplates) {
+ synthesis.addFileTemplate(fileTemplate);
+ if(log.isVerboseFragmentLog()) {
+ log.append("New fragment synthesis " + signature + " - Successfully loaded " + signature + ".asm");
+ }
}
}
// Populate with synthesis options
@@ -538,8 +545,8 @@ public class AsmFragmentTemplateSynthesizer {
AsmFragmentSynthesis synthesis = bestTemplateUpdate.pop();
boolean modified = false;
// Check if the file template is best in class
- AsmFragmentTemplate fileTemplate = synthesis.getFileTemplate();
- if(fileTemplate != null) {
+ List fileTemplates = synthesis.getFileTemplates();
+ for(AsmFragmentTemplate fileTemplate : fileTemplates) {
modified |= synthesis.bestTemplateCandidate(fileTemplate);
}
Collection synthesisOptions = synthesis.getSynthesisOptions();
@@ -586,18 +593,38 @@ public class AsmFragmentTemplateSynthesizer {
}
/**
- * Attempt to load a fragment template from disk.
+ * Attempt to load a fragment template from disk. Also searches relevant fragment sub-folders specified by CPU and other options.
*
* @param signature The signature
* @param log The compile log
* @return The fragment template from a file. null if the template is not found as a file.
*/
- private AsmFragmentTemplate loadFragmentTemplate(String signature, CompileLog log) {
- if(fragmentFolder == null) {
- return null;
+ private List loadFragmentTemplates(String signature, CompileLog log) {
+ ArrayList fileTemplates = new ArrayList<>();
+ if(defaultFragmentFolder != null) {
+ AsmFragmentTemplate fileFragment = loadFragmentTemplate(signature, defaultFragmentFolder);
+ if(fileFragment != null)
+ fileTemplates.add(fileFragment);
}
+ if(cpuFragmentFolder != null) {
+ AsmFragmentTemplate fileFragment = loadFragmentTemplate(signature, cpuFragmentFolder);
+ if(fileFragment != null)
+ fileTemplates.add(fileFragment);
+ }
+ return fileTemplates;
+ }
+
+
+ /**
+ * Attempt to load a fragment template from a folder on disk
+ *
+ * @param signature The signature to search for
+ * @param fragmentFolder The folder to look in
+ * @return any fragment with the gicen signature found in the folder. null if not found.
+ */
+ private AsmFragmentTemplate loadFragmentTemplate(String signature, Path fragmentFolder) {
try {
- File fragmentFile = this.fragmentFolder.resolve(signature + ".asm").toFile();
+ File fragmentFile = fragmentFolder.resolve(signature + ".asm").toFile();
if(!fragmentFile.exists()) {
return null;
}
@@ -635,7 +662,7 @@ public class AsmFragmentTemplateSynthesizer {
}
File[] allFragmentFiles() {
- return fragmentFolder.toFile().listFiles((dir, name) -> name.endsWith(".asm"));
+ return defaultFragmentFolder.toFile().listFiles((dir, name) -> name.endsWith(".asm"));
}
diff --git a/src/main/java/dk/camelot64/kickc/model/Program.java b/src/main/java/dk/camelot64/kickc/model/Program.java
index 060923bac..f9fbb2c13 100644
--- a/src/main/java/dk/camelot64/kickc/model/Program.java
+++ b/src/main/java/dk/camelot64/kickc/model/Program.java
@@ -27,13 +27,16 @@ public class Program {
private List importPaths;
/** Imported files. PASS 0 (STATIC) */
private List imported;
+
+ /** The target platform that the program is being build for. PASS 0-5 (STATIC) */
+ private TargetPlatform targetPlatform = TargetPlatform.DEFAULT;
+ /** The target CPU that the program is being build for. PASS 0-5 (STATIC) */
+ private TargetCpu targetCpu = TargetCpu.DEFAULT;
/** Path to any custom link script file used for linking (STATIC) */
private Path linkScriptFilePath;
/** Body to any custom link script file used for linking (STATIC) */
private String linkScriptBody;
- /** The target platform that the program is being build for. PASS 0-5 (STATIC) */
- private TargetPlatform targetPlatform = TargetPlatform.DEFAULT;
/** Absolute start address of the code. Null to start ad 0x080d. PASS 0-5 (STATIC) */
private Number programPc;
/** Reserved ZP addresses that the compiler cannot use. PASS 0-5 (STATIC) */
@@ -156,6 +159,14 @@ public class Program {
this.asm = null;
}
+ public TargetCpu getTargetCpu() {
+ return targetCpu;
+ }
+
+ public void setTargetCpu(TargetCpu targetCpu) {
+ this.targetCpu = targetCpu;
+ }
+
public TargetPlatform getTargetPlatform() {
return targetPlatform;
}
diff --git a/src/main/java/dk/camelot64/kickc/model/TargetCpu.java b/src/main/java/dk/camelot64/kickc/model/TargetCpu.java
new file mode 100644
index 000000000..ae9758453
--- /dev/null
+++ b/src/main/java/dk/camelot64/kickc/model/TargetCpu.java
@@ -0,0 +1,42 @@
+package dk.camelot64.kickc.model;
+
+/** The target CPU variation of the compile. Controls which instructions are legal. */
+public enum TargetCpu {
+ /** Vanilla MOS 6502 CPU - without illegal opcodes. */
+ MOS6502("6502"),
+ /** MOS 6502 CPU with support for illegal instructions. */
+ MOS6502X("6502X"),
+ ///** 65C02 CPU - More addressing modes and instructions, no illegal instructions. http://westerndesigncenter.com/wdc/documentation/w65c02s.pdf */
+ //WDC65C02("65C02"),
+ ///** 65CE02 CPU - Even more addressing modes and instructions. http://www.zimmers.net/anonftp/pub/cbm/documents/chipdata/65ce02.txt */
+ //MOS65CE02("65CE02"),
+ ///** 65C186 CPU - 16-bit instructions, 24-bit addressing modes and more instructions. http://www.westerndesigncenter.com/wdc/documentation/w65c816s.pdf */
+ //WDC65C186("65CE02"),
+ ;
+
+ /** The default target CPU. */
+ public static final TargetCpu DEFAULT = MOS6502X;
+
+ private String name;
+
+ TargetCpu(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ /** Get a target CPU by name. */
+ public static TargetCpu getTargetCpu(String name) {
+ for(TargetCpu value : TargetCpu.values()) {
+ if(value.getName().equalsIgnoreCase(name)) {
+ return value;
+ }
+ }
+ return null;
+ }
+
+
+
+}
diff --git a/src/main/java/dk/camelot64/kickc/model/TargetPlatform.java b/src/main/java/dk/camelot64/kickc/model/TargetPlatform.java
index 03fdca0b4..b85bdee60 100644
--- a/src/main/java/dk/camelot64/kickc/model/TargetPlatform.java
+++ b/src/main/java/dk/camelot64/kickc/model/TargetPlatform.java
@@ -6,12 +6,8 @@ package dk.camelot64.kickc.model;
public enum TargetPlatform {
/** Commodore 64 with BASIC upstart SYS-command. */
C64BASIC("c64basic"),
- /** Commodore 64 with BASIC upstart SYS-command - using Code and Data segments. */
- C64BASIC_SEGMENTS("c64basic_segments"),
/** 6502 assembler (with no upstart code.)*/
ASM6502("asm6502"),
- /** 6502 assembler (with no upstart code.)*/
- ASM6502_SEGMENTS("asm6502_segments"),
/** Custom target platform specified in a separate linker file passed using -T option or using #pragma link() */
CUSTOM("custom");
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCLexer.g4 b/src/main/java/dk/camelot64/kickc/parser/KickCLexer.g4
index c277c84ca..e9f2d6e30 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCLexer.g4
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCLexer.g4
@@ -69,6 +69,7 @@ RESERVE:'reserve' ;
PC:'pc';
TARGET:'target';
LINK:'link';
+CPU:'cpu';
CODESEG:'code_seg';
DATASEG:'data_seg';
ENCODING:'encoding';
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCLexer.java b/src/main/java/dk/camelot64/kickc/parser/KickCLexer.java
index c7553d7be..818bd5b5b 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCLexer.java
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCLexer.java
@@ -26,23 +26,23 @@ public class KickCLexer extends Lexer {
SHIFT_RIGHT=27, EQUAL=28, NOT_EQUAL=29, LESS_THAN=30, LESS_THAN_EQUAL=31,
GREATER_THAN_EQUAL=32, GREATER_THAN=33, LOGIC_AND=34, LOGIC_OR=35, ASSIGN=36,
ASSIGN_COMPOUND=37, IMPORT=38, TYPEDEF=39, PRAGMA=40, RESERVE=41, PC=42,
- TARGET=43, LINK=44, CODESEG=45, DATASEG=46, ENCODING=47, CONST=48, EXTERN=49,
- EXPORT=50, ALIGN=51, REGISTER=52, INLINE=53, VOLATILE=54, INTERRUPT=55,
- IF=56, ELSE=57, WHILE=58, DO=59, FOR=60, SWITCH=61, RETURN=62, BREAK=63,
- CONTINUE=64, ASM=65, DEFAULT=66, CASE=67, STRUCT=68, ENUM=69, SIZEOF=70,
- TYPEID=71, KICKASM=72, RESOURCE=73, USES=74, CLOBBERS=75, BYTES=76, CYCLES=77,
- LOGIC_NOT=78, SIGNEDNESS=79, SIMPLETYPE=80, BOOLEAN=81, KICKASM_BODY=82,
- STRING=83, CHAR=84, NUMBER=85, NUMFLOAT=86, BINFLOAT=87, DECFLOAT=88,
- HEXFLOAT=89, NUMINT=90, BININTEGER=91, DECINTEGER=92, HEXINTEGER=93, NAME=94,
- WS=95, COMMENT_LINE=96, COMMENT_BLOCK=97, ASM_BYTE=98, ASM_MNEMONIC=99,
- ASM_IMM=100, ASM_COLON=101, ASM_COMMA=102, ASM_PAR_BEGIN=103, ASM_PAR_END=104,
- ASM_BRACKET_BEGIN=105, ASM_BRACKET_END=106, ASM_DOT=107, ASM_SHIFT_LEFT=108,
- ASM_SHIFT_RIGHT=109, ASM_PLUS=110, ASM_MINUS=111, ASM_LESS_THAN=112, ASM_GREATER_THAN=113,
- ASM_MULTIPLY=114, ASM_DIVIDE=115, ASM_CURLY_BEGIN=116, ASM_CURLY_END=117,
- ASM_NUMBER=118, ASM_NUMFLOAT=119, ASM_BINFLOAT=120, ASM_DECFLOAT=121,
- ASM_HEXFLOAT=122, ASM_NUMINT=123, ASM_BININTEGER=124, ASM_DECINTEGER=125,
- ASM_HEXINTEGER=126, ASM_CHAR=127, ASM_MULTI_REL=128, ASM_MULTI_NAME=129,
- ASM_NAME=130, ASM_WS=131, ASM_COMMENT_LINE=132, ASM_COMMENT_BLOCK=133;
+ TARGET=43, LINK=44, CPU=45, CODESEG=46, DATASEG=47, ENCODING=48, CONST=49,
+ EXTERN=50, EXPORT=51, ALIGN=52, REGISTER=53, INLINE=54, VOLATILE=55, INTERRUPT=56,
+ IF=57, ELSE=58, WHILE=59, DO=60, FOR=61, SWITCH=62, RETURN=63, BREAK=64,
+ CONTINUE=65, ASM=66, DEFAULT=67, CASE=68, STRUCT=69, ENUM=70, SIZEOF=71,
+ TYPEID=72, KICKASM=73, RESOURCE=74, USES=75, CLOBBERS=76, BYTES=77, CYCLES=78,
+ LOGIC_NOT=79, SIGNEDNESS=80, SIMPLETYPE=81, BOOLEAN=82, KICKASM_BODY=83,
+ STRING=84, CHAR=85, NUMBER=86, NUMFLOAT=87, BINFLOAT=88, DECFLOAT=89,
+ HEXFLOAT=90, NUMINT=91, BININTEGER=92, DECINTEGER=93, HEXINTEGER=94, NAME=95,
+ WS=96, COMMENT_LINE=97, COMMENT_BLOCK=98, ASM_BYTE=99, ASM_MNEMONIC=100,
+ ASM_IMM=101, ASM_COLON=102, ASM_COMMA=103, ASM_PAR_BEGIN=104, ASM_PAR_END=105,
+ ASM_BRACKET_BEGIN=106, ASM_BRACKET_END=107, ASM_DOT=108, ASM_SHIFT_LEFT=109,
+ ASM_SHIFT_RIGHT=110, ASM_PLUS=111, ASM_MINUS=112, ASM_LESS_THAN=113, ASM_GREATER_THAN=114,
+ ASM_MULTIPLY=115, ASM_DIVIDE=116, ASM_CURLY_BEGIN=117, ASM_CURLY_END=118,
+ ASM_NUMBER=119, ASM_NUMFLOAT=120, ASM_BINFLOAT=121, ASM_DECFLOAT=122,
+ ASM_HEXFLOAT=123, ASM_NUMINT=124, ASM_BININTEGER=125, ASM_DECINTEGER=126,
+ ASM_HEXINTEGER=127, ASM_CHAR=128, ASM_MULTI_REL=129, ASM_MULTI_NAME=130,
+ ASM_NAME=131, ASM_WS=132, ASM_COMMENT_LINE=133, ASM_COMMENT_BLOCK=134;
public static final int
ASM_MODE=1;
public static String[] channelNames = {
@@ -60,16 +60,16 @@ public class KickCLexer extends Lexer {
"AND", "BIT_NOT", "BIT_XOR", "BIT_OR", "SHIFT_LEFT", "SHIFT_RIGHT", "EQUAL",
"NOT_EQUAL", "LESS_THAN", "LESS_THAN_EQUAL", "GREATER_THAN_EQUAL", "GREATER_THAN",
"LOGIC_AND", "LOGIC_OR", "ASSIGN", "ASSIGN_COMPOUND", "IMPORT", "TYPEDEF",
- "PRAGMA", "RESERVE", "PC", "TARGET", "LINK", "CODESEG", "DATASEG", "ENCODING",
- "CONST", "EXTERN", "EXPORT", "ALIGN", "REGISTER", "INLINE", "VOLATILE",
- "INTERRUPT", "IF", "ELSE", "WHILE", "DO", "FOR", "SWITCH", "RETURN", "BREAK",
- "CONTINUE", "ASM", "DEFAULT", "CASE", "STRUCT", "ENUM", "SIZEOF", "TYPEID",
- "KICKASM", "RESOURCE", "USES", "CLOBBERS", "BYTES", "CYCLES", "LOGIC_NOT",
- "SIGNEDNESS", "SIMPLETYPE", "BOOLEAN", "KICKASM_BODY", "STRING", "CHAR",
- "NUMBER", "NUMFLOAT", "BINFLOAT", "DECFLOAT", "HEXFLOAT", "NUMINT", "BININTEGER",
- "DECINTEGER", "HEXINTEGER", "BINDIGIT", "DECDIGIT", "HEXDIGIT", "NAME",
- "NAME_START", "NAME_CHAR", "WS", "COMMENT_LINE", "COMMENT_BLOCK", "ASM_BYTE",
- "ASM_MNEMONIC", "ASM_IMM", "ASM_COLON", "ASM_COMMA", "ASM_PAR_BEGIN",
+ "PRAGMA", "RESERVE", "PC", "TARGET", "LINK", "CPU", "CODESEG", "DATASEG",
+ "ENCODING", "CONST", "EXTERN", "EXPORT", "ALIGN", "REGISTER", "INLINE",
+ "VOLATILE", "INTERRUPT", "IF", "ELSE", "WHILE", "DO", "FOR", "SWITCH",
+ "RETURN", "BREAK", "CONTINUE", "ASM", "DEFAULT", "CASE", "STRUCT", "ENUM",
+ "SIZEOF", "TYPEID", "KICKASM", "RESOURCE", "USES", "CLOBBERS", "BYTES",
+ "CYCLES", "LOGIC_NOT", "SIGNEDNESS", "SIMPLETYPE", "BOOLEAN", "KICKASM_BODY",
+ "STRING", "CHAR", "NUMBER", "NUMFLOAT", "BINFLOAT", "DECFLOAT", "HEXFLOAT",
+ "NUMINT", "BININTEGER", "DECINTEGER", "HEXINTEGER", "BINDIGIT", "DECDIGIT",
+ "HEXDIGIT", "NAME", "NAME_START", "NAME_CHAR", "WS", "COMMENT_LINE", "COMMENT_BLOCK",
+ "ASM_BYTE", "ASM_MNEMONIC", "ASM_IMM", "ASM_COLON", "ASM_COMMA", "ASM_PAR_BEGIN",
"ASM_PAR_END", "ASM_BRACKET_BEGIN", "ASM_BRACKET_END", "ASM_DOT", "ASM_SHIFT_LEFT",
"ASM_SHIFT_RIGHT", "ASM_PLUS", "ASM_MINUS", "ASM_LESS_THAN", "ASM_GREATER_THAN",
"ASM_MULTIPLY", "ASM_DIVIDE", "ASM_CURLY_BEGIN", "ASM_CURLY_END", "ASM_NUMBER",
@@ -85,7 +85,7 @@ public class KickCLexer extends Lexer {
"'?'", null, "'->'", null, null, null, null, "'%'", "'++'", "'--'", "'&'",
"'~'", "'^'", "'|'", null, null, "'=='", "'!='", null, "'<='", "'>='",
null, "'&&'", "'||'", "'='", null, "'import'", "'typedef'", "'#pragma'",
- "'reserve'", "'pc'", "'target'", "'link'", "'code_seg'", "'data_seg'",
+ "'reserve'", "'pc'", "'target'", "'link'", "'cpu'", "'code_seg'", "'data_seg'",
"'encoding'", "'const'", "'extern'", "'export'", "'align'", "'register'",
"'inline'", "'volatile'", "'interrupt'", "'if'", "'else'", "'while'",
"'do'", "'for'", "'switch'", "'return'", "'break'", "'continue'", "'asm'",
@@ -101,16 +101,16 @@ public class KickCLexer extends Lexer {
"DEC", "AND", "BIT_NOT", "BIT_XOR", "BIT_OR", "SHIFT_LEFT", "SHIFT_RIGHT",
"EQUAL", "NOT_EQUAL", "LESS_THAN", "LESS_THAN_EQUAL", "GREATER_THAN_EQUAL",
"GREATER_THAN", "LOGIC_AND", "LOGIC_OR", "ASSIGN", "ASSIGN_COMPOUND",
- "IMPORT", "TYPEDEF", "PRAGMA", "RESERVE", "PC", "TARGET", "LINK", "CODESEG",
- "DATASEG", "ENCODING", "CONST", "EXTERN", "EXPORT", "ALIGN", "REGISTER",
- "INLINE", "VOLATILE", "INTERRUPT", "IF", "ELSE", "WHILE", "DO", "FOR",
- "SWITCH", "RETURN", "BREAK", "CONTINUE", "ASM", "DEFAULT", "CASE", "STRUCT",
- "ENUM", "SIZEOF", "TYPEID", "KICKASM", "RESOURCE", "USES", "CLOBBERS",
- "BYTES", "CYCLES", "LOGIC_NOT", "SIGNEDNESS", "SIMPLETYPE", "BOOLEAN",
- "KICKASM_BODY", "STRING", "CHAR", "NUMBER", "NUMFLOAT", "BINFLOAT", "DECFLOAT",
- "HEXFLOAT", "NUMINT", "BININTEGER", "DECINTEGER", "HEXINTEGER", "NAME",
- "WS", "COMMENT_LINE", "COMMENT_BLOCK", "ASM_BYTE", "ASM_MNEMONIC", "ASM_IMM",
- "ASM_COLON", "ASM_COMMA", "ASM_PAR_BEGIN", "ASM_PAR_END", "ASM_BRACKET_BEGIN",
+ "IMPORT", "TYPEDEF", "PRAGMA", "RESERVE", "PC", "TARGET", "LINK", "CPU",
+ "CODESEG", "DATASEG", "ENCODING", "CONST", "EXTERN", "EXPORT", "ALIGN",
+ "REGISTER", "INLINE", "VOLATILE", "INTERRUPT", "IF", "ELSE", "WHILE",
+ "DO", "FOR", "SWITCH", "RETURN", "BREAK", "CONTINUE", "ASM", "DEFAULT",
+ "CASE", "STRUCT", "ENUM", "SIZEOF", "TYPEID", "KICKASM", "RESOURCE", "USES",
+ "CLOBBERS", "BYTES", "CYCLES", "LOGIC_NOT", "SIGNEDNESS", "SIMPLETYPE",
+ "BOOLEAN", "KICKASM_BODY", "STRING", "CHAR", "NUMBER", "NUMFLOAT", "BINFLOAT",
+ "DECFLOAT", "HEXFLOAT", "NUMINT", "BININTEGER", "DECINTEGER", "HEXINTEGER",
+ "NAME", "WS", "COMMENT_LINE", "COMMENT_BLOCK", "ASM_BYTE", "ASM_MNEMONIC",
+ "ASM_IMM", "ASM_COLON", "ASM_COMMA", "ASM_PAR_BEGIN", "ASM_PAR_END", "ASM_BRACKET_BEGIN",
"ASM_BRACKET_END", "ASM_DOT", "ASM_SHIFT_LEFT", "ASM_SHIFT_RIGHT", "ASM_PLUS",
"ASM_MINUS", "ASM_LESS_THAN", "ASM_GREATER_THAN", "ASM_MULTIPLY", "ASM_DIVIDE",
"ASM_CURLY_BEGIN", "ASM_CURLY_END", "ASM_NUMBER", "ASM_NUMFLOAT", "ASM_BINFLOAT",
@@ -200,19 +200,19 @@ public class KickCLexer extends Lexer {
case 36:
IMPORT_action((RuleContext)_localctx, actionIndex);
break;
- case 63:
+ case 64:
ASM_action((RuleContext)_localctx, actionIndex);
break;
- case 81:
+ case 82:
STRING_action((RuleContext)_localctx, actionIndex);
break;
- case 95:
+ case 96:
NAME_action((RuleContext)_localctx, actionIndex);
break;
- case 119:
+ case 120:
ASM_CURLY_BEGIN_action((RuleContext)_localctx, actionIndex);
break;
- case 120:
+ case 121:
ASM_CURLY_END_action((RuleContext)_localctx, actionIndex);
break;
}
@@ -268,7 +268,7 @@ public class KickCLexer extends Lexer {
}
public static final String _serializedATN =
- "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\u0087\u053f\b\1\b"+
+ "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\u0088\u0545\b\1\b"+
"\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n"+
"\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21"+
"\4\22\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30"+
@@ -285,486 +285,489 @@ public class KickCLexer extends Lexer {
"\t\u0080\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084\t\u0084"+
"\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087\4\u0088\t\u0088\4\u0089"+
"\t\u0089\4\u008a\t\u008a\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d"+
- "\4\u008e\t\u008e\4\u008f\t\u008f\3\2\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3"+
- "\6\3\6\3\7\3\7\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\13\3\f\3\f\3\r\3\r"+
- "\3\16\3\16\3\16\3\17\3\17\3\20\3\20\3\21\3\21\3\22\3\22\3\23\3\23\3\24"+
- "\3\24\3\24\3\25\3\25\3\25\3\26\3\26\3\27\3\27\3\30\3\30\3\31\3\31\3\32"+
- "\3\32\3\32\3\33\3\33\3\33\3\34\3\34\3\34\3\35\3\35\3\35\3\36\3\36\3\37"+
- "\3\37\3\37\3 \3 \3 \3!\3!\3\"\3\"\3\"\3#\3#\3#\3$\3$\3%\3%\3%\3%\3%\3"+
- "%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\5%\u018a\n%\3&\3&\3"+
- "&\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3(\3(\3(\3(\3(\3("+
- "\3(\3(\3)\3)\3)\3)\3)\3)\3)\3)\3*\3*\3*\3+\3+\3+\3+\3+\3+\3+\3,\3,\3,"+
- "\3,\3,\3-\3-\3-\3-\3-\3-\3-\3-\3-\3.\3.\3.\3.\3.\3.\3.\3.\3.\3/\3/\3/"+
- "\3/\3/\3/\3/\3/\3/\3\60\3\60\3\60\3\60\3\60\3\60\3\61\3\61\3\61\3\61\3"+
- "\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63\3\63\3"+
- "\63\3\63\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\64\3\65\3\65\3\65\3"+
- "\65\3\65\3\65\3\65\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\67\3"+
- "\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\38\38\38\39\39\39\39\39\3"+
- ":\3:\3:\3:\3:\3:\3;\3;\3;\3<\3<\3<\3<\3=\3=\3=\3=\3=\3=\3=\3>\3>\3>\3"+
- ">\3>\3>\3>\3?\3?\3?\3?\3?\3?\3@\3@\3@\3@\3@\3@\3@\3@\3@\3A\3A\3A\3A\3"+
- "A\3A\3B\3B\3B\3B\3B\3B\3B\3B\3C\3C\3C\3C\3C\3D\3D\3D\3D\3D\3D\3D\3E\3"+
- "E\3E\3E\3E\3F\3F\3F\3F\3F\3F\3F\3G\3G\3G\3G\3G\3G\3G\3H\3H\3H\3H\3H\3"+
- "H\3H\3H\3I\3I\3I\3I\3I\3I\3I\3I\3I\3J\3J\3J\3J\3J\3K\3K\3K\3K\3K\3K\3"+
- "K\3K\3K\3L\3L\3L\3L\3L\3L\3M\3M\3M\3M\3M\3M\3M\3N\3N\3O\3O\3O\3O\3O\3"+
- "O\3O\3O\3O\3O\3O\3O\3O\3O\5O\u02af\nO\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3"+
- "P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3"+
- "P\3P\3P\3P\5P\u02d6\nP\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\5Q\u02e1\nQ\3R\3R\3"+
- "R\3R\7R\u02e7\nR\fR\16R\u02ea\13R\3R\3R\3R\3S\3S\3S\3S\7S\u02f3\nS\fS"+
- "\16S\u02f6\13S\3S\3S\5S\u02fa\nS\3S\3S\5S\u02fe\nS\5S\u0300\nS\3S\5S\u0303"+
- "\nS\3S\3S\3T\3T\3T\3T\5T\u030b\nT\3T\3T\3U\3U\5U\u0311\nU\3V\3V\3V\5V"+
- "\u0316\nV\3W\3W\3W\3W\3W\5W\u031d\nW\3W\7W\u0320\nW\fW\16W\u0323\13W\3"+
- "W\3W\6W\u0327\nW\rW\16W\u0328\3X\7X\u032c\nX\fX\16X\u032f\13X\3X\3X\6"+
- "X\u0333\nX\rX\16X\u0334\3Y\3Y\3Y\3Y\3Y\5Y\u033c\nY\3Y\7Y\u033f\nY\fY\16"+
- "Y\u0342\13Y\3Y\3Y\6Y\u0346\nY\rY\16Y\u0347\3Z\3Z\3Z\5Z\u034d\nZ\3Z\3Z"+
- "\3Z\5Z\u0352\nZ\3[\3[\3[\6[\u0357\n[\r[\16[\u0358\3[\3[\6[\u035d\n[\r"+
- "[\16[\u035e\5[\u0361\n[\3\\\6\\\u0364\n\\\r\\\16\\\u0365\3]\3]\3]\3]\3"+
- "]\5]\u036d\n]\3]\6]\u0370\n]\r]\16]\u0371\3^\3^\3_\3_\3`\3`\3a\3a\7a\u037c"+
- "\na\fa\16a\u037f\13a\3a\3a\3b\3b\3c\3c\3d\6d\u0388\nd\rd\16d\u0389\3d"+
- "\3d\3e\3e\3e\3e\7e\u0392\ne\fe\16e\u0395\13e\3e\3e\3f\3f\3f\3f\7f\u039d"+
- "\nf\ff\16f\u03a0\13f\3f\3f\3f\3f\3f\3g\3g\3g\3g\3g\3g\3h\3h\3h\3h\3h\3"+
- "h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3"+
- "h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3"+
- "h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3"+
- "h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3"+
- "h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3"+
- "h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3"+
- "h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3"+
- "h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3"+
- "h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3h\3"+
- "h\3h\3h\3h\3h\3h\3h\3h\3h\3h\5h\u048b\nh\3i\3i\3j\3j\3k\3k\3l\3l\3m\3"+
- "m\3n\3n\3o\3o\3p\3p\3q\3q\3q\3r\3r\3r\3s\3s\3t\3t\3u\3u\3v\3v\3w\3w\3"+
- "x\3x\3y\3y\3y\3z\3z\3z\3{\3{\5{\u04b7\n{\3|\3|\3|\5|\u04bc\n|\3}\3}\7"+
- "}\u04c0\n}\f}\16}\u04c3\13}\3}\3}\6}\u04c7\n}\r}\16}\u04c8\3~\7~\u04cc"+
- "\n~\f~\16~\u04cf\13~\3~\3~\6~\u04d3\n~\r~\16~\u04d4\3\177\3\177\7\177"+
- "\u04d9\n\177\f\177\16\177\u04dc\13\177\3\177\3\177\6\177\u04e0\n\177\r"+
- "\177\16\177\u04e1\3\u0080\3\u0080\3\u0080\5\u0080\u04e7\n\u0080\3\u0081"+
- "\3\u0081\6\u0081\u04eb\n\u0081\r\u0081\16\u0081\u04ec\3\u0082\6\u0082"+
- "\u04f0\n\u0082\r\u0082\16\u0082\u04f1\3\u0083\3\u0083\6\u0083\u04f6\n"+
- "\u0083\r\u0083\16\u0083\u04f7\3\u0084\3\u0084\3\u0085\3\u0085\3\u0086"+
- "\3\u0086\3\u0087\3\u0087\3\u0087\3\u0087\5\u0087\u0504\n\u0087\3\u0087"+
- "\3\u0087\3\u0088\3\u0088\6\u0088\u050a\n\u0088\r\u0088\16\u0088\u050b"+
- "\3\u0089\3\u0089\7\u0089\u0510\n\u0089\f\u0089\16\u0089\u0513\13\u0089"+
- "\3\u008a\3\u008a\7\u008a\u0517\n\u008a\f\u008a\16\u008a\u051a\13\u008a"+
- "\3\u008b\3\u008b\3\u008c\3\u008c\3\u008d\6\u008d\u0521\n\u008d\r\u008d"+
- "\16\u008d\u0522\3\u008d\3\u008d\3\u008e\3\u008e\3\u008e\3\u008e\7\u008e"+
- "\u052b\n\u008e\f\u008e\16\u008e\u052e\13\u008e\3\u008e\3\u008e\3\u008f"+
- "\3\u008f\3\u008f\3\u008f\7\u008f\u0536\n\u008f\f\u008f\16\u008f\u0539"+
- "\13\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\5\u02e8\u039e\u0537"+
- "\2\u0090\4\4\6\5\b\6\n\7\f\b\16\t\20\n\22\13\24\f\26\r\30\16\32\17\34"+
- "\20\36\21 \22\"\23$\24&\25(\26*\27,\30.\31\60\32\62\33\64\34\66\358\36"+
- ":\37< >!@\"B#D$F%H&J\'L(N)P*R+T,V-X.Z/\\\60^\61`\62b\63d\64f\65h\66j\67"+
- "l8n9p:r;tz?|@~A\u0080B\u0082C\u0084D\u0086E\u0088F\u008aG\u008cH"+
- "\u008eI\u0090J\u0092K\u0094L\u0096M\u0098N\u009aO\u009cP\u009eQ\u00a0"+
- "R\u00a2S\u00a4T\u00a6U\u00a8V\u00aaW\u00acX\u00aeY\u00b0Z\u00b2[\u00b4"+
- "\\\u00b6]\u00b8^\u00ba_\u00bc\2\u00be\2\u00c0\2\u00c2`\u00c4\2\u00c6\2"+
- "\u00c8a\u00cab\u00ccc\u00ced\u00d0e\u00d2f\u00d4g\u00d6h\u00d8i\u00da"+
- "j\u00dck\u00del\u00e0m\u00e2n\u00e4o\u00e6p\u00e8q\u00ear\u00ecs\u00ee"+
- "t\u00f0u\u00f2v\u00f4w\u00f6x\u00f8y\u00faz\u00fc{\u00fe|\u0100}\u0102"+
- "~\u0104\177\u0106\u0080\u0108\2\u010a\2\u010c\2\u010e\u0081\u0110\u0082"+
- "\u0112\u0083\u0114\u0084\u0116\2\u0118\2\u011a\u0085\u011c\u0086\u011e"+
- "\u0087\4\2\3\23\3\2$$\3\2||\4\2rruu\4\2ooww\7\2$$))hhpptt\3\2))\4\2uu"+
- "ww\7\2dfkknnuuyy\4\2DDdd\3\2\62\63\3\2\62;\5\2\62;CHch\5\2C\\aac|\6\2"+
- "\62;C\\aac|\6\2\13\f\17\17\"\"\u00a2\u00a2\4\2\f\f\17\17\4\2--//\2\u05c8"+
- "\2\4\3\2\2\2\2\6\3\2\2\2\2\b\3\2\2\2\2\n\3\2\2\2\2\f\3\2\2\2\2\16\3\2"+
- "\2\2\2\20\3\2\2\2\2\22\3\2\2\2\2\24\3\2\2\2\2\26\3\2\2\2\2\30\3\2\2\2"+
- "\2\32\3\2\2\2\2\34\3\2\2\2\2\36\3\2\2\2\2 \3\2\2\2\2\"\3\2\2\2\2$\3\2"+
- "\2\2\2&\3\2\2\2\2(\3\2\2\2\2*\3\2\2\2\2,\3\2\2\2\2.\3\2\2\2\2\60\3\2\2"+
- "\2\2\62\3\2\2\2\2\64\3\2\2\2\2\66\3\2\2\2\28\3\2\2\2\2:\3\2\2\2\2<\3\2"+
- "\2\2\2>\3\2\2\2\2@\3\2\2\2\2B\3\2\2\2\2D\3\2\2\2\2F\3\2\2\2\2H\3\2\2\2"+
- "\2J\3\2\2\2\2L\3\2\2\2\2N\3\2\2\2\2P\3\2\2\2\2R\3\2\2\2\2T\3\2\2\2\2V"+
- "\3\2\2\2\2X\3\2\2\2\2Z\3\2\2\2\2\\\3\2\2\2\2^\3\2\2\2\2`\3\2\2\2\2b\3"+
- "\2\2\2\2d\3\2\2\2\2f\3\2\2\2\2h\3\2\2\2\2j\3\2\2\2\2l\3\2\2\2\2n\3\2\2"+
- "\2\2p\3\2\2\2\2r\3\2\2\2\2t\3\2\2\2\2v\3\2\2\2\2x\3\2\2\2\2z\3\2\2\2\2"+
- "|\3\2\2\2\2~\3\2\2\2\2\u0080\3\2\2\2\2\u0082\3\2\2\2\2\u0084\3\2\2\2\2"+
- "\u0086\3\2\2\2\2\u0088\3\2\2\2\2\u008a\3\2\2\2\2\u008c\3\2\2\2\2\u008e"+
- "\3\2\2\2\2\u0090\3\2\2\2\2\u0092\3\2\2\2\2\u0094\3\2\2\2\2\u0096\3\2\2"+
- "\2\2\u0098\3\2\2\2\2\u009a\3\2\2\2\2\u009c\3\2\2\2\2\u009e\3\2\2\2\2\u00a0"+
- "\3\2\2\2\2\u00a2\3\2\2\2\2\u00a4\3\2\2\2\2\u00a6\3\2\2\2\2\u00a8\3\2\2"+
- "\2\2\u00aa\3\2\2\2\2\u00ac\3\2\2\2\2\u00ae\3\2\2\2\2\u00b0\3\2\2\2\2\u00b2"+
- "\3\2\2\2\2\u00b4\3\2\2\2\2\u00b6\3\2\2\2\2\u00b8\3\2\2\2\2\u00ba\3\2\2"+
- "\2\2\u00c2\3\2\2\2\2\u00c8\3\2\2\2\2\u00ca\3\2\2\2\2\u00cc\3\2\2\2\3\u00ce"+
- "\3\2\2\2\3\u00d0\3\2\2\2\3\u00d2\3\2\2\2\3\u00d4\3\2\2\2\3\u00d6\3\2\2"+
- "\2\3\u00d8\3\2\2\2\3\u00da\3\2\2\2\3\u00dc\3\2\2\2\3\u00de\3\2\2\2\3\u00e0"+
- "\3\2\2\2\3\u00e2\3\2\2\2\3\u00e4\3\2\2\2\3\u00e6\3\2\2\2\3\u00e8\3\2\2"+
- "\2\3\u00ea\3\2\2\2\3\u00ec\3\2\2\2\3\u00ee\3\2\2\2\3\u00f0\3\2\2\2\3\u00f2"+
- "\3\2\2\2\3\u00f4\3\2\2\2\3\u00f6\3\2\2\2\3\u00f8\3\2\2\2\3\u00fa\3\2\2"+
- "\2\3\u00fc\3\2\2\2\3\u00fe\3\2\2\2\3\u0100\3\2\2\2\3\u0102\3\2\2\2\3\u0104"+
- "\3\2\2\2\3\u0106\3\2\2\2\3\u010e\3\2\2\2\3\u0110\3\2\2\2\3\u0112\3\2\2"+
- "\2\3\u0114\3\2\2\2\3\u011a\3\2\2\2\3\u011c\3\2\2\2\3\u011e\3\2\2\2\4\u0120"+
- "\3\2\2\2\6\u0123\3\2\2\2\b\u0125\3\2\2\2\n\u0127\3\2\2\2\f\u0129\3\2\2"+
- "\2\16\u012b\3\2\2\2\20\u012d\3\2\2\2\22\u012f\3\2\2\2\24\u0131\3\2\2\2"+
- "\26\u0133\3\2\2\2\30\u0136\3\2\2\2\32\u0138\3\2\2\2\34\u013a\3\2\2\2\36"+
- "\u013d\3\2\2\2 \u013f\3\2\2\2\"\u0141\3\2\2\2$\u0143\3\2\2\2&\u0145\3"+
- "\2\2\2(\u0147\3\2\2\2*\u014a\3\2\2\2,\u014d\3\2\2\2.\u014f\3\2\2\2\60"+
- "\u0151\3\2\2\2\62\u0153\3\2\2\2\64\u0155\3\2\2\2\66\u0158\3\2\2\28\u015b"+
- "\3\2\2\2:\u015e\3\2\2\2<\u0161\3\2\2\2>\u0163\3\2\2\2@\u0166\3\2\2\2B"+
- "\u0169\3\2\2\2D\u016b\3\2\2\2F\u016e\3\2\2\2H\u0171\3\2\2\2J\u0189\3\2"+
- "\2\2L\u018b\3\2\2\2N\u0194\3\2\2\2P\u019c\3\2\2\2R\u01a4\3\2\2\2T\u01ac"+
- "\3\2\2\2V\u01af\3\2\2\2X\u01b6\3\2\2\2Z\u01bb\3\2\2\2\\\u01c4\3\2\2\2"+
- "^\u01cd\3\2\2\2`\u01d6\3\2\2\2b\u01dc\3\2\2\2d\u01e3\3\2\2\2f\u01ea\3"+
- "\2\2\2h\u01f0\3\2\2\2j\u01f9\3\2\2\2l\u0200\3\2\2\2n\u0209\3\2\2\2p\u0213"+
- "\3\2\2\2r\u0216\3\2\2\2t\u021b\3\2\2\2v\u0221\3\2\2\2x\u0224\3\2\2\2z"+
- "\u0228\3\2\2\2|\u022f\3\2\2\2~\u0236\3\2\2\2\u0080\u023c\3\2\2\2\u0082"+
- "\u0245\3\2\2\2\u0084\u024b\3\2\2\2\u0086\u0253\3\2\2\2\u0088\u0258\3\2"+
- "\2\2\u008a\u025f\3\2\2\2\u008c\u0264\3\2\2\2\u008e\u026b\3\2\2\2\u0090"+
- "\u0272\3\2\2\2\u0092\u027a\3\2\2\2\u0094\u0283\3\2\2\2\u0096\u0288\3\2"+
- "\2\2\u0098\u0291\3\2\2\2\u009a\u0297\3\2\2\2\u009c\u029e\3\2\2\2\u009e"+
- "\u02ae\3\2\2\2\u00a0\u02d5\3\2\2\2\u00a2\u02e0\3\2\2\2\u00a4\u02e2\3\2"+
- "\2\2\u00a6\u02ee\3\2\2\2\u00a8\u0306\3\2\2\2\u00aa\u0310\3\2\2\2\u00ac"+
- "\u0315\3\2\2\2\u00ae\u031c\3\2\2\2\u00b0\u032d\3\2\2\2\u00b2\u033b\3\2"+
- "\2\2\u00b4\u034c\3\2\2\2\u00b6\u0360\3\2\2\2\u00b8\u0363\3\2\2\2\u00ba"+
- "\u036c\3\2\2\2\u00bc\u0373\3\2\2\2\u00be\u0375\3\2\2\2\u00c0\u0377\3\2"+
- "\2\2\u00c2\u0379\3\2\2\2\u00c4\u0382\3\2\2\2\u00c6\u0384\3\2\2\2\u00c8"+
- "\u0387\3\2\2\2\u00ca\u038d\3\2\2\2\u00cc\u0398\3\2\2\2\u00ce\u03a6\3\2"+
- "\2\2\u00d0\u048a\3\2\2\2\u00d2\u048c\3\2\2\2\u00d4\u048e\3\2\2\2\u00d6"+
- "\u0490\3\2\2\2\u00d8\u0492\3\2\2\2\u00da\u0494\3\2\2\2\u00dc\u0496\3\2"+
- "\2\2\u00de\u0498\3\2\2\2\u00e0\u049a\3\2\2\2\u00e2\u049c\3\2\2\2\u00e4"+
- "\u049f\3\2\2\2\u00e6\u04a2\3\2\2\2\u00e8\u04a4\3\2\2\2\u00ea\u04a6\3\2"+
- "\2\2\u00ec\u04a8\3\2\2\2\u00ee\u04aa\3\2\2\2\u00f0\u04ac\3\2\2\2\u00f2"+
- "\u04ae\3\2\2\2\u00f4\u04b1\3\2\2\2\u00f6\u04b6\3\2\2\2\u00f8\u04bb\3\2"+
- "\2\2\u00fa\u04bd\3\2\2\2\u00fc\u04cd\3\2\2\2\u00fe\u04d6\3\2\2\2\u0100"+
- "\u04e6\3\2\2\2\u0102\u04e8\3\2\2\2\u0104\u04ef\3\2\2\2\u0106\u04f3\3\2"+
- "\2\2\u0108\u04f9\3\2\2\2\u010a\u04fb\3\2\2\2\u010c\u04fd\3\2\2\2\u010e"+
- "\u04ff\3\2\2\2\u0110\u0507\3\2\2\2\u0112\u050d\3\2\2\2\u0114\u0514\3\2"+
- "\2\2\u0116\u051b\3\2\2\2\u0118\u051d\3\2\2\2\u011a\u0520\3\2\2\2\u011c"+
- "\u0526\3\2\2\2\u011e\u0531\3\2\2\2\u0120\u0121\7}\2\2\u0121\u0122\b\2"+
- "\2\2\u0122\5\3\2\2\2\u0123\u0124\7\177\2\2\u0124\7\3\2\2\2\u0125\u0126"+
- "\7]\2\2\u0126\t\3\2\2\2\u0127\u0128\7_\2\2\u0128\13\3\2\2\2\u0129\u012a"+
- "\7*\2\2\u012a\r\3\2\2\2\u012b\u012c\7+\2\2\u012c\17\3\2\2\2\u012d\u012e"+
- "\7=\2\2\u012e\21\3\2\2\2\u012f\u0130\7<\2\2\u0130\23\3\2\2\2\u0131\u0132"+
- "\7.\2\2\u0132\25\3\2\2\2\u0133\u0134\7\60\2\2\u0134\u0135\7\60\2\2\u0135"+
- "\27\3\2\2\2\u0136\u0137\7A\2\2\u0137\31\3\2\2\2\u0138\u0139\7\60\2\2\u0139"+
- "\33\3\2\2\2\u013a\u013b\7/\2\2\u013b\u013c\7@\2\2\u013c\35\3\2\2\2\u013d"+
- "\u013e\7-\2\2\u013e\37\3\2\2\2\u013f\u0140\7/\2\2\u0140!\3\2\2\2\u0141"+
- "\u0142\7,\2\2\u0142#\3\2\2\2\u0143\u0144\7\61\2\2\u0144%\3\2\2\2\u0145"+
- "\u0146\7\'\2\2\u0146\'\3\2\2\2\u0147\u0148\7-\2\2\u0148\u0149\7-\2\2\u0149"+
- ")\3\2\2\2\u014a\u014b\7/\2\2\u014b\u014c\7/\2\2\u014c+\3\2\2\2\u014d\u014e"+
- "\7(\2\2\u014e-\3\2\2\2\u014f\u0150\7\u0080\2\2\u0150/\3\2\2\2\u0151\u0152"+
- "\7`\2\2\u0152\61\3\2\2\2\u0153\u0154\7~\2\2\u0154\63\3\2\2\2\u0155\u0156"+
- "\7>\2\2\u0156\u0157\7>\2\2\u0157\65\3\2\2\2\u0158\u0159\7@\2\2\u0159\u015a"+
- "\7@\2\2\u015a\67\3\2\2\2\u015b\u015c\7?\2\2\u015c\u015d\7?\2\2\u015d9"+
- "\3\2\2\2\u015e\u015f\7#\2\2\u015f\u0160\7?\2\2\u0160;\3\2\2\2\u0161\u0162"+
- "\7>\2\2\u0162=\3\2\2\2\u0163\u0164\7>\2\2\u0164\u0165\7?\2\2\u0165?\3"+
- "\2\2\2\u0166\u0167\7@\2\2\u0167\u0168\7?\2\2\u0168A\3\2\2\2\u0169\u016a"+
- "\7@\2\2\u016aC\3\2\2\2\u016b\u016c\7(\2\2\u016c\u016d\7(\2\2\u016dE\3"+
- "\2\2\2\u016e\u016f\7~\2\2\u016f\u0170\7~\2\2\u0170G\3\2\2\2\u0171\u0172"+
- "\7?\2\2\u0172I\3\2\2\2\u0173\u0174\7-\2\2\u0174\u018a\7?\2\2\u0175\u0176"+
- "\7/\2\2\u0176\u018a\7?\2\2\u0177\u0178\7,\2\2\u0178\u018a\7?\2\2\u0179"+
- "\u017a\7\61\2\2\u017a\u018a\7?\2\2\u017b\u017c\7\'\2\2\u017c\u018a\7?"+
- "\2\2\u017d\u017e\7>\2\2\u017e\u017f\7>\2\2\u017f\u018a\7?\2\2\u0180\u0181"+
- "\7@\2\2\u0181\u0182\7@\2\2\u0182\u018a\7?\2\2\u0183\u0184\7(\2\2\u0184"+
- "\u018a\7?\2\2\u0185\u0186\7~\2\2\u0186\u018a\7?\2\2\u0187\u0188\7`\2\2"+
- "\u0188\u018a\7?\2\2\u0189\u0173\3\2\2\2\u0189\u0175\3\2\2\2\u0189\u0177"+
- "\3\2\2\2\u0189\u0179\3\2\2\2\u0189\u017b\3\2\2\2\u0189\u017d\3\2\2\2\u0189"+
- "\u0180\3\2\2\2\u0189\u0183\3\2\2\2\u0189\u0185\3\2\2\2\u0189\u0187\3\2"+
- "\2\2\u018aK\3\2\2\2\u018b\u018c\7k\2\2\u018c\u018d\7o\2\2\u018d\u018e"+
- "\7r\2\2\u018e\u018f\7q\2\2\u018f\u0190\7t\2\2\u0190\u0191\7v\2\2\u0191"+
- "\u0192\3\2\2\2\u0192\u0193\b&\3\2\u0193M\3\2\2\2\u0194\u0195\7v\2\2\u0195"+
- "\u0196\7{\2\2\u0196\u0197\7r\2\2\u0197\u0198\7g\2\2\u0198\u0199\7f\2\2"+
- "\u0199\u019a\7g\2\2\u019a\u019b\7h\2\2\u019bO\3\2\2\2\u019c\u019d\7%\2"+
- "\2\u019d\u019e\7r\2\2\u019e\u019f\7t\2\2\u019f\u01a0\7c\2\2\u01a0\u01a1"+
- "\7i\2\2\u01a1\u01a2\7o\2\2\u01a2\u01a3\7c\2\2\u01a3Q\3\2\2\2\u01a4\u01a5"+
- "\7t\2\2\u01a5\u01a6\7g\2\2\u01a6\u01a7\7u\2\2\u01a7\u01a8\7g\2\2\u01a8"+
- "\u01a9\7t\2\2\u01a9\u01aa\7x\2\2\u01aa\u01ab\7g\2\2\u01abS\3\2\2\2\u01ac"+
- "\u01ad\7r\2\2\u01ad\u01ae\7e\2\2\u01aeU\3\2\2\2\u01af\u01b0\7v\2\2\u01b0"+
- "\u01b1\7c\2\2\u01b1\u01b2\7t\2\2\u01b2\u01b3\7i\2\2\u01b3\u01b4\7g\2\2"+
- "\u01b4\u01b5\7v\2\2\u01b5W\3\2\2\2\u01b6\u01b7\7n\2\2\u01b7\u01b8\7k\2"+
- "\2\u01b8\u01b9\7p\2\2\u01b9\u01ba\7m\2\2\u01baY\3\2\2\2\u01bb\u01bc\7"+
- "e\2\2\u01bc\u01bd\7q\2\2\u01bd\u01be\7f\2\2\u01be\u01bf\7g\2\2\u01bf\u01c0"+
- "\7a\2\2\u01c0\u01c1\7u\2\2\u01c1\u01c2\7g\2\2\u01c2\u01c3\7i\2\2\u01c3"+
- "[\3\2\2\2\u01c4\u01c5\7f\2\2\u01c5\u01c6\7c\2\2\u01c6\u01c7\7v\2\2\u01c7"+
- "\u01c8\7c\2\2\u01c8\u01c9\7a\2\2\u01c9\u01ca\7u\2\2\u01ca\u01cb\7g\2\2"+
- "\u01cb\u01cc\7i\2\2\u01cc]\3\2\2\2\u01cd\u01ce\7g\2\2\u01ce\u01cf\7p\2"+
- "\2\u01cf\u01d0\7e\2\2\u01d0\u01d1\7q\2\2\u01d1\u01d2\7f\2\2\u01d2\u01d3"+
- "\7k\2\2\u01d3\u01d4\7p\2\2\u01d4\u01d5\7i\2\2\u01d5_\3\2\2\2\u01d6\u01d7"+
- "\7e\2\2\u01d7\u01d8\7q\2\2\u01d8\u01d9\7p\2\2\u01d9\u01da\7u\2\2\u01da"+
- "\u01db\7v\2\2\u01dba\3\2\2\2\u01dc\u01dd\7g\2\2\u01dd\u01de\7z\2\2\u01de"+
- "\u01df\7v\2\2\u01df\u01e0\7g\2\2\u01e0\u01e1\7t\2\2\u01e1\u01e2\7p\2\2"+
- "\u01e2c\3\2\2\2\u01e3\u01e4\7g\2\2\u01e4\u01e5\7z\2\2\u01e5\u01e6\7r\2"+
- "\2\u01e6\u01e7\7q\2\2\u01e7\u01e8\7t\2\2\u01e8\u01e9\7v\2\2\u01e9e\3\2"+
- "\2\2\u01ea\u01eb\7c\2\2\u01eb\u01ec\7n\2\2\u01ec\u01ed\7k\2\2\u01ed\u01ee"+
- "\7i\2\2\u01ee\u01ef\7p\2\2\u01efg\3\2\2\2\u01f0\u01f1\7t\2\2\u01f1\u01f2"+
- "\7g\2\2\u01f2\u01f3\7i\2\2\u01f3\u01f4\7k\2\2\u01f4\u01f5\7u\2\2\u01f5"+
- "\u01f6\7v\2\2\u01f6\u01f7\7g\2\2\u01f7\u01f8\7t\2\2\u01f8i\3\2\2\2\u01f9"+
- "\u01fa\7k\2\2\u01fa\u01fb\7p\2\2\u01fb\u01fc\7n\2\2\u01fc\u01fd\7k\2\2"+
- "\u01fd\u01fe\7p\2\2\u01fe\u01ff\7g\2\2\u01ffk\3\2\2\2\u0200\u0201\7x\2"+
- "\2\u0201\u0202\7q\2\2\u0202\u0203\7n\2\2\u0203\u0204\7c\2\2\u0204\u0205"+
- "\7v\2\2\u0205\u0206\7k\2\2\u0206\u0207\7n\2\2\u0207\u0208\7g\2\2\u0208"+
- "m\3\2\2\2\u0209\u020a\7k\2\2\u020a\u020b\7p\2\2\u020b\u020c\7v\2\2\u020c"+
- "\u020d\7g\2\2\u020d\u020e\7t\2\2\u020e\u020f\7t\2\2\u020f\u0210\7w\2\2"+
- "\u0210\u0211\7r\2\2\u0211\u0212\7v\2\2\u0212o\3\2\2\2\u0213\u0214\7k\2"+
- "\2\u0214\u0215\7h\2\2\u0215q\3\2\2\2\u0216\u0217\7g\2\2\u0217\u0218\7"+
- "n\2\2\u0218\u0219\7u\2\2\u0219\u021a\7g\2\2\u021as\3\2\2\2\u021b\u021c"+
- "\7y\2\2\u021c\u021d\7j\2\2\u021d\u021e\7k\2\2\u021e\u021f\7n\2\2\u021f"+
- "\u0220\7g\2\2\u0220u\3\2\2\2\u0221\u0222\7f\2\2\u0222\u0223\7q\2\2\u0223"+
- "w\3\2\2\2\u0224\u0225\7h\2\2\u0225\u0226\7q\2\2\u0226\u0227\7t\2\2\u0227"+
- "y\3\2\2\2\u0228\u0229\7u\2\2\u0229\u022a\7y\2\2\u022a\u022b\7k\2\2\u022b"+
- "\u022c\7v\2\2\u022c\u022d\7e\2\2\u022d\u022e\7j\2\2\u022e{\3\2\2\2\u022f"+
- "\u0230\7t\2\2\u0230\u0231\7g\2\2\u0231\u0232\7v\2\2\u0232\u0233\7w\2\2"+
- "\u0233\u0234\7t\2\2\u0234\u0235\7p\2\2\u0235}\3\2\2\2\u0236\u0237\7d\2"+
- "\2\u0237\u0238\7t\2\2\u0238\u0239\7g\2\2\u0239\u023a\7c\2\2\u023a\u023b"+
- "\7m\2\2\u023b\177\3\2\2\2\u023c\u023d\7e\2\2\u023d\u023e\7q\2\2\u023e"+
- "\u023f\7p\2\2\u023f\u0240\7v\2\2\u0240\u0241\7k\2\2\u0241\u0242\7p\2\2"+
- "\u0242\u0243\7w\2\2\u0243\u0244\7g\2\2\u0244\u0081\3\2\2\2\u0245\u0246"+
- "\7c\2\2\u0246\u0247\7u\2\2\u0247\u0248\7o\2\2\u0248\u0249\3\2\2\2\u0249"+
- "\u024a\bA\4\2\u024a\u0083\3\2\2\2\u024b\u024c\7f\2\2\u024c\u024d\7g\2"+
- "\2\u024d\u024e\7h\2\2\u024e\u024f\7c\2\2\u024f\u0250\7w\2\2\u0250\u0251"+
- "\7n\2\2\u0251\u0252\7v\2\2\u0252\u0085\3\2\2\2\u0253\u0254\7e\2\2\u0254"+
- "\u0255\7c\2\2\u0255\u0256\7u\2\2\u0256\u0257\7g\2\2\u0257\u0087\3\2\2"+
- "\2\u0258\u0259\7u\2\2\u0259\u025a\7v\2\2\u025a\u025b\7t\2\2\u025b\u025c"+
- "\7w\2\2\u025c\u025d\7e\2\2\u025d\u025e\7v\2\2\u025e\u0089\3\2\2\2\u025f"+
- "\u0260\7g\2\2\u0260\u0261\7p\2\2\u0261\u0262\7w\2\2\u0262\u0263\7o\2\2"+
- "\u0263\u008b\3\2\2\2\u0264\u0265\7u\2\2\u0265\u0266\7k\2\2\u0266\u0267"+
- "\7|\2\2\u0267\u0268\7g\2\2\u0268\u0269\7q\2\2\u0269\u026a\7h\2\2\u026a"+
- "\u008d\3\2\2\2\u026b\u026c\7v\2\2\u026c\u026d\7{\2\2\u026d\u026e\7r\2"+
- "\2\u026e\u026f\7g\2\2\u026f\u0270\7k\2\2\u0270\u0271\7f\2\2\u0271\u008f"+
- "\3\2\2\2\u0272\u0273\7m\2\2\u0273\u0274\7k\2\2\u0274\u0275\7e\2\2\u0275"+
- "\u0276\7m\2\2\u0276\u0277\7c\2\2\u0277\u0278\7u\2\2\u0278\u0279\7o\2\2"+
- "\u0279\u0091\3\2\2\2\u027a\u027b\7t\2\2\u027b\u027c\7g\2\2\u027c\u027d"+
- "\7u\2\2\u027d\u027e\7q\2\2\u027e\u027f\7w\2\2\u027f\u0280\7t\2\2\u0280"+
- "\u0281\7e\2\2\u0281\u0282\7g\2\2\u0282\u0093\3\2\2\2\u0283\u0284\7w\2"+
- "\2\u0284\u0285\7u\2\2\u0285\u0286\7g\2\2\u0286\u0287\7u\2\2\u0287\u0095"+
- "\3\2\2\2\u0288\u0289\7e\2\2\u0289\u028a\7n\2\2\u028a\u028b\7q\2\2\u028b"+
- "\u028c\7d\2\2\u028c\u028d\7d\2\2\u028d\u028e\7g\2\2\u028e\u028f\7t\2\2"+
- "\u028f\u0290\7u\2\2\u0290\u0097\3\2\2\2\u0291\u0292\7d\2\2\u0292\u0293"+
- "\7{\2\2\u0293\u0294\7v\2\2\u0294\u0295\7g\2\2\u0295\u0296\7u\2\2\u0296"+
- "\u0099\3\2\2\2\u0297\u0298\7e\2\2\u0298\u0299\7{\2\2\u0299\u029a\7e\2"+
- "\2\u029a\u029b\7n\2\2\u029b\u029c\7g\2\2\u029c\u029d\7u\2\2\u029d\u009b"+
- "\3\2\2\2\u029e\u029f\7#\2\2\u029f\u009d\3\2\2\2\u02a0\u02a1\7u\2\2\u02a1"+
- "\u02a2\7k\2\2\u02a2\u02a3\7i\2\2\u02a3\u02a4\7p\2\2\u02a4\u02a5\7g\2\2"+
- "\u02a5\u02af\7f\2\2\u02a6\u02a7\7w\2\2\u02a7\u02a8\7p\2\2\u02a8\u02a9"+
- "\7u\2\2\u02a9\u02aa\7k\2\2\u02aa\u02ab\7i\2\2\u02ab\u02ac\7p\2\2\u02ac"+
- "\u02ad\7g\2\2\u02ad\u02af\7f\2\2\u02ae\u02a0\3\2\2\2\u02ae\u02a6\3\2\2"+
- "\2\u02af\u009f\3\2\2\2\u02b0\u02b1\7d\2\2\u02b1\u02b2\7{\2\2\u02b2\u02b3"+
- "\7v\2\2\u02b3\u02d6\7g\2\2\u02b4\u02b5\7y\2\2\u02b5\u02b6\7q\2\2\u02b6"+
- "\u02b7\7t\2\2\u02b7\u02d6\7f\2\2\u02b8\u02b9\7f\2\2\u02b9\u02ba\7y\2\2"+
- "\u02ba\u02bb\7q\2\2\u02bb\u02bc\7t\2\2\u02bc\u02d6\7f\2\2\u02bd\u02be"+
- "\7d\2\2\u02be\u02bf\7q\2\2\u02bf\u02c0\7q\2\2\u02c0\u02d6\7n\2\2\u02c1"+
- "\u02c2\7e\2\2\u02c2\u02c3\7j\2\2\u02c3\u02c4\7c\2\2\u02c4\u02d6\7t\2\2"+
- "\u02c5\u02c6\7u\2\2\u02c6\u02c7\7j\2\2\u02c7\u02c8\7q\2\2\u02c8\u02c9"+
- "\7t\2\2\u02c9\u02d6\7v\2\2\u02ca\u02cb\7k\2\2\u02cb\u02cc\7p\2\2\u02cc"+
- "\u02d6\7v\2\2\u02cd\u02ce\7n\2\2\u02ce\u02cf\7q\2\2\u02cf\u02d0\7p\2\2"+
- "\u02d0\u02d6\7i\2\2\u02d1\u02d2\7x\2\2\u02d2\u02d3\7q\2\2\u02d3\u02d4"+
- "\7k\2\2\u02d4\u02d6\7f\2\2\u02d5\u02b0\3\2\2\2\u02d5\u02b4\3\2\2\2\u02d5"+
- "\u02b8\3\2\2\2\u02d5\u02bd\3\2\2\2\u02d5\u02c1\3\2\2\2\u02d5\u02c5\3\2"+
- "\2\2\u02d5\u02ca\3\2\2\2\u02d5\u02cd\3\2\2\2\u02d5\u02d1\3\2\2\2\u02d6"+
- "\u00a1\3\2\2\2\u02d7\u02d8\7v\2\2\u02d8\u02d9\7t\2\2\u02d9\u02da\7w\2"+
- "\2\u02da\u02e1\7g\2\2\u02db\u02dc\7h\2\2\u02dc\u02dd\7c\2\2\u02dd\u02de"+
- "\7n\2\2\u02de\u02df\7u\2\2\u02df\u02e1\7g\2\2\u02e0\u02d7\3\2\2\2\u02e0"+
- "\u02db\3\2\2\2\u02e1\u00a3\3\2\2\2\u02e2\u02e3\7}\2\2\u02e3\u02e4\7}\2"+
- "\2\u02e4\u02e8\3\2\2\2\u02e5\u02e7\13\2\2\2\u02e6\u02e5\3\2\2\2\u02e7"+
- "\u02ea\3\2\2\2\u02e8\u02e9\3\2\2\2\u02e8\u02e6\3\2\2\2\u02e9\u02eb\3\2"+
- "\2\2\u02ea\u02e8\3\2\2\2\u02eb\u02ec\7\177\2\2\u02ec\u02ed\7\177\2\2\u02ed"+
- "\u00a5\3\2\2\2\u02ee\u02f4\7$\2\2\u02ef\u02f0\7^\2\2\u02f0\u02f3\7$\2"+
- "\2\u02f1\u02f3\n\2\2\2\u02f2\u02ef\3\2\2\2\u02f2\u02f1\3\2\2\2\u02f3\u02f6"+
- "\3\2\2\2\u02f4\u02f2\3\2\2\2\u02f4\u02f5\3\2\2\2\u02f5\u02f7\3\2\2\2\u02f6"+
- "\u02f4\3\2\2\2\u02f7\u02f9\7$\2\2\u02f8\u02fa\t\3\2\2\u02f9\u02f8\3\2"+
- "\2\2\u02f9\u02fa\3\2\2\2\u02fa\u02ff\3\2\2\2\u02fb\u02fd\t\4\2\2\u02fc"+
- "\u02fe\t\5\2\2\u02fd\u02fc\3\2\2\2\u02fd\u02fe\3\2\2\2\u02fe\u0300\3\2"+
- "\2\2\u02ff\u02fb\3\2\2\2\u02ff\u0300\3\2\2\2\u0300\u0302\3\2\2\2\u0301"+
- "\u0303\t\3\2\2\u0302\u0301\3\2\2\2\u0302\u0303\3\2\2\2\u0303\u0304\3\2"+
- "\2\2\u0304\u0305\bS\5\2\u0305\u00a7\3\2\2\2\u0306\u030a\7)\2\2\u0307\u0308"+
- "\7^\2\2\u0308\u030b\t\6\2\2\u0309\u030b\n\7\2\2\u030a\u0307\3\2\2\2\u030a"+
- "\u0309\3\2\2\2\u030b\u030c\3\2\2\2\u030c\u030d\7)\2\2\u030d\u00a9\3\2"+
- "\2\2\u030e\u0311\5\u00acV\2\u030f\u0311\5\u00b4Z\2\u0310\u030e\3\2\2\2"+
- "\u0310\u030f\3\2\2\2\u0311\u00ab\3\2\2\2\u0312\u0316\5\u00aeW\2\u0313"+
- "\u0316\5\u00b0X\2\u0314\u0316\5\u00b2Y\2\u0315\u0312\3\2\2\2\u0315\u0313"+
- "\3\2\2\2\u0315\u0314\3\2\2\2\u0316\u00ad\3\2\2\2\u0317\u031d\7\'\2\2\u0318"+
- "\u0319\7\62\2\2\u0319\u031d\7d\2\2\u031a\u031b\7\62\2\2\u031b\u031d\7"+
- "D\2\2\u031c\u0317\3\2\2\2\u031c\u0318\3\2\2\2\u031c\u031a\3\2\2\2\u031d"+
- "\u0321\3\2\2\2\u031e\u0320\5\u00bc^\2\u031f\u031e\3\2\2\2\u0320\u0323"+
- "\3\2\2\2\u0321\u031f\3\2\2\2\u0321\u0322\3\2\2\2\u0322\u0324\3\2\2\2\u0323"+
- "\u0321\3\2\2\2\u0324\u0326\7\60\2\2\u0325\u0327\5\u00bc^\2\u0326\u0325"+
- "\3\2\2\2\u0327\u0328\3\2\2\2\u0328\u0326\3\2\2\2\u0328\u0329\3\2\2\2\u0329"+
- "\u00af\3\2\2\2\u032a\u032c\5\u00be_\2\u032b\u032a\3\2\2\2\u032c\u032f"+
- "\3\2\2\2\u032d\u032b\3\2\2\2\u032d\u032e\3\2\2\2\u032e\u0330\3\2\2\2\u032f"+
- "\u032d\3\2\2\2\u0330\u0332\7\60\2\2\u0331\u0333\5\u00be_\2\u0332\u0331"+
- "\3\2\2\2\u0333\u0334\3\2\2\2\u0334\u0332\3\2\2\2\u0334\u0335\3\2\2\2\u0335"+
- "\u00b1\3\2\2\2\u0336\u033c\7&\2\2\u0337\u0338\7\62\2\2\u0338\u033c\7z"+
- "\2\2\u0339\u033a\7\62\2\2\u033a\u033c\7Z\2\2\u033b\u0336\3\2\2\2\u033b"+
- "\u0337\3\2\2\2\u033b\u0339\3\2\2\2\u033c\u0340\3\2\2\2\u033d\u033f\5\u00c0"+
- "`\2\u033e\u033d\3\2\2\2\u033f\u0342\3\2\2\2\u0340\u033e\3\2\2\2\u0340"+
- "\u0341\3\2\2\2\u0341\u0343\3\2\2\2\u0342\u0340\3\2\2\2\u0343\u0345\7\60"+
- "\2\2\u0344\u0346\5\u00c0`\2\u0345\u0344\3\2\2\2\u0346\u0347\3\2\2\2\u0347"+
- "\u0345\3\2\2\2\u0347\u0348\3\2\2\2\u0348\u00b3\3\2\2\2\u0349\u034d\5\u00b8"+
- "\\\2\u034a\u034d\5\u00ba]\2\u034b\u034d\5\u00b6[\2\u034c\u0349\3\2\2\2"+
- "\u034c\u034a\3\2\2\2\u034c\u034b\3\2\2\2\u034d\u0351\3\2\2\2\u034e\u034f"+
- "\t\b\2\2\u034f\u0352\t\t\2\2\u0350\u0352\7n\2\2\u0351\u034e\3\2\2\2\u0351"+
- "\u0350\3\2\2\2\u0351\u0352\3\2\2\2\u0352\u00b5\3\2\2\2\u0353\u0354\7\62"+
- "\2\2\u0354\u0356\t\n\2\2\u0355\u0357\5\u00bc^\2\u0356\u0355\3\2\2\2\u0357"+
- "\u0358\3\2\2\2\u0358\u0356\3\2\2\2\u0358\u0359\3\2\2\2\u0359\u0361\3\2"+
- "\2\2\u035a\u035c\7\'\2\2\u035b\u035d\5\u00bc^\2\u035c\u035b\3\2\2\2\u035d"+
- "\u035e\3\2\2\2\u035e\u035c\3\2\2\2\u035e\u035f\3\2\2\2\u035f\u0361\3\2"+
- "\2\2\u0360\u0353\3\2\2\2\u0360\u035a\3\2\2\2\u0361\u00b7\3\2\2\2\u0362"+
- "\u0364\5\u00be_\2\u0363\u0362\3\2\2\2\u0364\u0365\3\2\2\2\u0365\u0363"+
- "\3\2\2\2\u0365\u0366\3\2\2\2\u0366\u00b9\3\2\2\2\u0367\u036d\7&\2\2\u0368"+
- "\u0369\7\62\2\2\u0369\u036d\7z\2\2\u036a\u036b\7\62\2\2\u036b\u036d\7"+
- "Z\2\2\u036c\u0367\3\2\2\2\u036c\u0368\3\2\2\2\u036c\u036a\3\2\2\2\u036d"+
- "\u036f\3\2\2\2\u036e\u0370\5\u00c0`\2\u036f\u036e\3\2\2\2\u0370\u0371"+
- "\3\2\2\2\u0371\u036f\3\2\2\2\u0371\u0372\3\2\2\2\u0372\u00bb\3\2\2\2\u0373"+
- "\u0374\t\13\2\2\u0374\u00bd\3\2\2\2\u0375\u0376\t\f\2\2\u0376\u00bf\3"+
- "\2\2\2\u0377\u0378\t\r\2\2\u0378\u00c1\3\2\2\2\u0379\u037d\5\u00c4b\2"+
- "\u037a\u037c\5\u00c6c\2\u037b\u037a\3\2\2\2\u037c\u037f\3\2\2\2\u037d"+
- "\u037b\3\2\2\2\u037d\u037e\3\2\2\2\u037e\u0380\3\2\2\2\u037f\u037d\3\2"+
- "\2\2\u0380\u0381\ba\6\2\u0381\u00c3\3\2\2\2\u0382\u0383\t\16\2\2\u0383"+
- "\u00c5\3\2\2\2\u0384\u0385\t\17\2\2\u0385\u00c7\3\2\2\2\u0386\u0388\t"+
- "\20\2\2\u0387\u0386\3\2\2\2\u0388\u0389\3\2\2\2\u0389\u0387\3\2\2\2\u0389"+
- "\u038a\3\2\2\2\u038a\u038b\3\2\2\2\u038b\u038c\bd\7\2\u038c\u00c9\3\2"+
- "\2\2\u038d\u038e\7\61\2\2\u038e\u038f\7\61\2\2\u038f\u0393\3\2\2\2\u0390"+
- "\u0392\n\21\2\2\u0391\u0390\3\2\2\2\u0392\u0395\3\2\2\2\u0393\u0391\3"+
- "\2\2\2\u0393\u0394\3\2\2\2\u0394\u0396\3\2\2\2\u0395\u0393\3\2\2\2\u0396"+
- "\u0397\be\b\2\u0397\u00cb\3\2\2\2\u0398\u0399\7\61\2\2\u0399\u039a\7,"+
- "\2\2\u039a\u039e\3\2\2\2\u039b\u039d\13\2\2\2\u039c\u039b\3\2\2\2\u039d"+
- "\u03a0\3\2\2\2\u039e\u039f\3\2\2\2\u039e\u039c\3\2\2\2\u039f\u03a1\3\2"+
- "\2\2\u03a0\u039e\3\2\2\2\u03a1\u03a2\7,\2\2\u03a2\u03a3\7\61\2\2\u03a3"+
- "\u03a4\3\2\2\2\u03a4\u03a5\bf\b\2\u03a5\u00cd\3\2\2\2\u03a6\u03a7\7\60"+
- "\2\2\u03a7\u03a8\7d\2\2\u03a8\u03a9\7{\2\2\u03a9\u03aa\7v\2\2\u03aa\u03ab"+
- "\7g\2\2\u03ab\u00cf\3\2\2\2\u03ac\u03ad\7d\2\2\u03ad\u03ae\7t\2\2\u03ae"+
- "\u048b\7m\2\2\u03af\u03b0\7q\2\2\u03b0\u03b1\7t\2\2\u03b1\u048b\7c\2\2"+
- "\u03b2\u03b3\7m\2\2\u03b3\u03b4\7k\2\2\u03b4\u048b\7n\2\2\u03b5\u03b6"+
- "\7u\2\2\u03b6\u03b7\7n\2\2\u03b7\u048b\7q\2\2\u03b8\u03b9\7p\2\2\u03b9"+
- "\u03ba\7q\2\2\u03ba\u048b\7r\2\2\u03bb\u03bc\7c\2\2\u03bc\u03bd\7u\2\2"+
- "\u03bd\u048b\7n\2\2\u03be\u03bf\7r\2\2\u03bf\u03c0\7j\2\2\u03c0\u048b"+
- "\7r\2\2\u03c1\u03c2\7c\2\2\u03c2\u03c3\7p\2\2\u03c3\u048b\7e\2\2\u03c4"+
- "\u03c5\7d\2\2\u03c5\u03c6\7r\2\2\u03c6\u048b\7n\2\2\u03c7\u03c8\7e\2\2"+
- "\u03c8\u03c9\7n\2\2\u03c9\u048b\7e\2\2\u03ca\u03cb\7l\2\2\u03cb\u03cc"+
- "\7u\2\2\u03cc\u048b\7t\2\2\u03cd\u03ce\7c\2\2\u03ce\u03cf\7p\2\2\u03cf"+
- "\u048b\7f\2\2\u03d0\u03d1\7t\2\2\u03d1\u03d2\7n\2\2\u03d2\u048b\7c\2\2"+
- "\u03d3\u03d4\7d\2\2\u03d4\u03d5\7k\2\2\u03d5\u048b\7v\2\2\u03d6\u03d7"+
- "\7t\2\2\u03d7\u03d8\7q\2\2\u03d8\u048b\7n\2\2\u03d9\u03da\7r\2\2\u03da"+
- "\u03db\7n\2\2\u03db\u048b\7c\2\2\u03dc\u03dd\7r\2\2\u03dd\u03de\7n\2\2"+
- "\u03de\u048b\7r\2\2\u03df\u03e0\7d\2\2\u03e0\u03e1\7o\2\2\u03e1\u048b"+
- "\7k\2\2\u03e2\u03e3\7u\2\2\u03e3\u03e4\7g\2\2\u03e4\u048b\7e\2\2\u03e5"+
- "\u03e6\7t\2\2\u03e6\u03e7\7v\2\2\u03e7\u048b\7k\2\2\u03e8\u03e9\7g\2\2"+
- "\u03e9\u03ea\7q\2\2\u03ea\u048b\7t\2\2\u03eb\u03ec\7u\2\2\u03ec\u03ed"+
- "\7t\2\2\u03ed\u048b\7g\2\2\u03ee\u03ef\7n\2\2\u03ef\u03f0\7u\2\2\u03f0"+
- "\u048b\7t\2\2\u03f1\u03f2\7r\2\2\u03f2\u03f3\7j\2\2\u03f3\u048b\7c\2\2"+
- "\u03f4\u03f5\7c\2\2\u03f5\u03f6\7n\2\2\u03f6\u048b\7t\2\2\u03f7\u03f8"+
- "\7l\2\2\u03f8\u03f9\7o\2\2\u03f9\u048b\7r\2\2\u03fa\u03fb\7d\2\2\u03fb"+
- "\u03fc\7x\2\2\u03fc\u048b\7e\2\2\u03fd\u03fe\7e\2\2\u03fe\u03ff\7n\2\2"+
- "\u03ff\u048b\7k\2\2\u0400\u0401\7t\2\2\u0401\u0402\7v\2\2\u0402\u048b"+
- "\7u\2\2\u0403\u0404\7c\2\2\u0404\u0405\7f\2\2\u0405\u048b\7e\2\2\u0406"+
- "\u0407\7t\2\2\u0407\u0408\7t\2\2\u0408\u048b\7c\2\2\u0409\u040a\7d\2\2"+
- "\u040a\u040b\7x\2\2\u040b\u048b\7u\2\2\u040c\u040d\7u\2\2\u040d\u040e"+
- "\7g\2\2\u040e\u048b\7k\2\2\u040f\u0410\7u\2\2\u0410\u0411\7c\2\2\u0411"+
- "\u048b\7z\2\2\u0412\u0413\7u\2\2\u0413\u0414\7v\2\2\u0414\u048b\7{\2\2"+
- "\u0415\u0416\7u\2\2\u0416\u0417\7v\2\2\u0417\u048b\7c\2\2\u0418\u0419"+
- "\7u\2\2\u0419\u041a\7v\2\2\u041a\u048b\7z\2\2\u041b\u041c\7f\2\2\u041c"+
- "\u041d\7g\2\2\u041d\u048b\7{\2\2\u041e\u041f\7v\2\2\u041f\u0420\7z\2\2"+
- "\u0420\u048b\7c\2\2\u0421\u0422\7z\2\2\u0422\u0423\7c\2\2\u0423\u048b"+
- "\7c\2\2\u0424\u0425\7d\2\2\u0425\u0426\7e\2\2\u0426\u048b\7e\2\2\u0427"+
- "\u0428\7c\2\2\u0428\u0429\7j\2\2\u0429\u048b\7z\2\2\u042a\u042b\7v\2\2"+
- "\u042b\u042c\7{\2\2\u042c\u048b\7c\2\2\u042d\u042e\7v\2\2\u042e\u042f"+
- "\7z\2\2\u042f\u048b\7u\2\2\u0430\u0431\7v\2\2\u0431\u0432\7c\2\2\u0432"+
- "\u048b\7u\2\2\u0433\u0434\7u\2\2\u0434\u0435\7j\2\2\u0435\u048b\7{\2\2"+
- "\u0436\u0437\7u\2\2\u0437\u0438\7j\2\2\u0438\u048b\7z\2\2\u0439\u043a"+
- "\7n\2\2\u043a\u043b\7f\2\2\u043b\u048b\7{\2\2\u043c\u043d\7n\2\2\u043d"+
- "\u043e\7f\2\2\u043e\u048b\7c\2\2\u043f\u0440\7n\2\2\u0440\u0441\7f\2\2"+
- "\u0441\u048b\7z\2\2\u0442\u0443\7n\2\2\u0443\u0444\7c\2\2\u0444\u048b"+
- "\7z\2\2\u0445\u0446\7v\2\2\u0446\u0447\7c\2\2\u0447\u048b\7{\2\2\u0448"+
- "\u0449\7v\2\2\u0449\u044a\7c\2\2\u044a\u048b\7z\2\2\u044b\u044c\7d\2\2"+
- "\u044c\u044d\7e\2\2\u044d\u048b\7u\2\2\u044e\u044f\7e\2\2\u044f\u0450"+
- "\7n\2\2\u0450\u048b\7x\2\2\u0451\u0452\7v\2\2\u0452\u0453\7u\2\2\u0453"+
- "\u048b\7z\2\2\u0454\u0455\7n\2\2\u0455\u0456\7c\2\2\u0456\u048b\7u\2\2"+
- "\u0457\u0458\7e\2\2\u0458\u0459\7r\2\2\u0459\u048b\7{\2\2\u045a\u045b"+
- "\7e\2\2\u045b\u045c\7o\2\2\u045c\u048b\7r\2\2\u045d\u045e\7e\2\2\u045e"+
- "\u045f\7r\2\2\u045f\u048b\7z\2\2\u0460\u0461\7f\2\2\u0461\u0462\7e\2\2"+
- "\u0462\u048b\7r\2\2\u0463\u0464\7f\2\2\u0464\u0465\7g\2\2\u0465\u048b"+
- "\7e\2\2\u0466\u0467\7k\2\2\u0467\u0468\7p\2\2\u0468\u048b\7e\2\2\u0469"+
- "\u046a\7c\2\2\u046a\u046b\7z\2\2\u046b\u048b\7u\2\2\u046c\u046d\7d\2\2"+
- "\u046d\u046e\7p\2\2\u046e\u048b\7g\2\2\u046f\u0470\7e\2\2\u0470\u0471"+
- "\7n\2\2\u0471\u048b\7f\2\2\u0472\u0473\7u\2\2\u0473\u0474\7d\2\2\u0474"+
- "\u048b\7e\2\2\u0475\u0476\7k\2\2\u0476\u0477\7u\2\2\u0477\u048b\7e\2\2"+
- "\u0478\u0479\7k\2\2\u0479\u047a\7p\2\2\u047a\u048b\7z\2\2\u047b\u047c"+
- "\7d\2\2\u047c\u047d\7g\2\2\u047d\u048b\7s\2\2\u047e\u047f\7u\2\2\u047f"+
- "\u0480\7g\2\2\u0480\u048b\7f\2\2\u0481\u0482\7f\2\2\u0482\u0483\7g\2\2"+
- "\u0483\u048b\7z\2\2\u0484\u0485\7k\2\2\u0485\u0486\7p\2\2\u0486\u048b"+
- "\7{\2\2\u0487\u0488\7t\2\2\u0488\u0489\7q\2\2\u0489\u048b\7t\2\2\u048a"+
- "\u03ac\3\2\2\2\u048a\u03af\3\2\2\2\u048a\u03b2\3\2\2\2\u048a\u03b5\3\2"+
- "\2\2\u048a\u03b8\3\2\2\2\u048a\u03bb\3\2\2\2\u048a\u03be\3\2\2\2\u048a"+
- "\u03c1\3\2\2\2\u048a\u03c4\3\2\2\2\u048a\u03c7\3\2\2\2\u048a\u03ca\3\2"+
- "\2\2\u048a\u03cd\3\2\2\2\u048a\u03d0\3\2\2\2\u048a\u03d3\3\2\2\2\u048a"+
- "\u03d6\3\2\2\2\u048a\u03d9\3\2\2\2\u048a\u03dc\3\2\2\2\u048a\u03df\3\2"+
- "\2\2\u048a\u03e2\3\2\2\2\u048a\u03e5\3\2\2\2\u048a\u03e8\3\2\2\2\u048a"+
- "\u03eb\3\2\2\2\u048a\u03ee\3\2\2\2\u048a\u03f1\3\2\2\2\u048a\u03f4\3\2"+
- "\2\2\u048a\u03f7\3\2\2\2\u048a\u03fa\3\2\2\2\u048a\u03fd\3\2\2\2\u048a"+
- "\u0400\3\2\2\2\u048a\u0403\3\2\2\2\u048a\u0406\3\2\2\2\u048a\u0409\3\2"+
- "\2\2\u048a\u040c\3\2\2\2\u048a\u040f\3\2\2\2\u048a\u0412\3\2\2\2\u048a"+
- "\u0415\3\2\2\2\u048a\u0418\3\2\2\2\u048a\u041b\3\2\2\2\u048a\u041e\3\2"+
- "\2\2\u048a\u0421\3\2\2\2\u048a\u0424\3\2\2\2\u048a\u0427\3\2\2\2\u048a"+
- "\u042a\3\2\2\2\u048a\u042d\3\2\2\2\u048a\u0430\3\2\2\2\u048a\u0433\3\2"+
- "\2\2\u048a\u0436\3\2\2\2\u048a\u0439\3\2\2\2\u048a\u043c\3\2\2\2\u048a"+
- "\u043f\3\2\2\2\u048a\u0442\3\2\2\2\u048a\u0445\3\2\2\2\u048a\u0448\3\2"+
- "\2\2\u048a\u044b\3\2\2\2\u048a\u044e\3\2\2\2\u048a\u0451\3\2\2\2\u048a"+
- "\u0454\3\2\2\2\u048a\u0457\3\2\2\2\u048a\u045a\3\2\2\2\u048a\u045d\3\2"+
- "\2\2\u048a\u0460\3\2\2\2\u048a\u0463\3\2\2\2\u048a\u0466\3\2\2\2\u048a"+
- "\u0469\3\2\2\2\u048a\u046c\3\2\2\2\u048a\u046f\3\2\2\2\u048a\u0472\3\2"+
- "\2\2\u048a\u0475\3\2\2\2\u048a\u0478\3\2\2\2\u048a\u047b\3\2\2\2\u048a"+
- "\u047e\3\2\2\2\u048a\u0481\3\2\2\2\u048a\u0484\3\2\2\2\u048a\u0487\3\2"+
- "\2\2\u048b\u00d1\3\2\2\2\u048c\u048d\7%\2\2\u048d\u00d3\3\2\2\2\u048e"+
- "\u048f\7<\2\2\u048f\u00d5\3\2\2\2\u0490\u0491\7.\2\2\u0491\u00d7\3\2\2"+
- "\2\u0492\u0493\7*\2\2\u0493\u00d9\3\2\2\2\u0494\u0495\7+\2\2\u0495\u00db"+
- "\3\2\2\2\u0496\u0497\7]\2\2\u0497\u00dd\3\2\2\2\u0498\u0499\7_\2\2\u0499"+
- "\u00df\3\2\2\2\u049a\u049b\7\60\2\2\u049b\u00e1\3\2\2\2\u049c\u049d\7"+
- ">\2\2\u049d\u049e\7>\2\2\u049e\u00e3\3\2\2\2\u049f\u04a0\7@\2\2\u04a0"+
- "\u04a1\7@\2\2\u04a1\u00e5\3\2\2\2\u04a2\u04a3\7-\2\2\u04a3\u00e7\3\2\2"+
- "\2\u04a4\u04a5\7/\2\2\u04a5\u00e9\3\2\2\2\u04a6\u04a7\7>\2\2\u04a7\u00eb"+
- "\3\2\2\2\u04a8\u04a9\7@\2\2\u04a9\u00ed\3\2\2\2\u04aa\u04ab\7,\2\2\u04ab"+
- "\u00ef\3\2\2\2\u04ac\u04ad\7\61\2\2\u04ad\u00f1\3\2\2\2\u04ae\u04af\7"+
- "}\2\2\u04af\u04b0\by\t\2\u04b0\u00f3\3\2\2\2\u04b1\u04b2\7\177\2\2\u04b2"+
- "\u04b3\bz\n\2\u04b3\u00f5\3\2\2\2\u04b4\u04b7\5\u00f8|\2\u04b5\u04b7\5"+
- "\u0100\u0080\2\u04b6\u04b4\3\2\2\2\u04b6\u04b5\3\2\2\2\u04b7\u00f7\3\2"+
- "\2\2\u04b8\u04bc\5\u00fa}\2\u04b9\u04bc\5\u00fc~\2\u04ba\u04bc\5\u00fe"+
- "\177\2\u04bb\u04b8\3\2\2\2\u04bb\u04b9\3\2\2\2\u04bb\u04ba\3\2\2\2\u04bc"+
- "\u00f9\3\2\2\2\u04bd\u04c1\7\'\2\2\u04be\u04c0\5\u0108\u0084\2\u04bf\u04be"+
- "\3\2\2\2\u04c0\u04c3\3\2\2\2\u04c1\u04bf\3\2\2\2\u04c1\u04c2\3\2\2\2\u04c2"+
- "\u04c4\3\2\2\2\u04c3\u04c1\3\2\2\2\u04c4\u04c6\7\60\2\2\u04c5\u04c7\5"+
- "\u0108\u0084\2\u04c6\u04c5\3\2\2\2\u04c7\u04c8\3\2\2\2\u04c8\u04c6\3\2"+
- "\2\2\u04c8\u04c9\3\2\2\2\u04c9\u00fb\3\2\2\2\u04ca\u04cc\5\u010a\u0085"+
- "\2\u04cb\u04ca\3\2\2\2\u04cc\u04cf\3\2\2\2\u04cd\u04cb\3\2\2\2\u04cd\u04ce"+
- "\3\2\2\2\u04ce\u04d0\3\2\2\2\u04cf\u04cd\3\2\2\2\u04d0\u04d2\7\60\2\2"+
- "\u04d1\u04d3\5\u010a\u0085\2\u04d2\u04d1\3\2\2\2\u04d3\u04d4\3\2\2\2\u04d4"+
- "\u04d2\3\2\2\2\u04d4\u04d5\3\2\2\2\u04d5\u00fd\3\2\2\2\u04d6\u04da\7&"+
- "\2\2\u04d7\u04d9\5\u010c\u0086\2\u04d8\u04d7\3\2\2\2\u04d9\u04dc\3\2\2"+
- "\2\u04da\u04d8\3\2\2\2\u04da\u04db\3\2\2\2\u04db\u04dd\3\2\2\2\u04dc\u04da"+
- "\3\2\2\2\u04dd\u04df\7\60\2\2\u04de\u04e0\5\u010c\u0086\2\u04df\u04de"+
- "\3\2\2\2\u04e0\u04e1\3\2\2\2\u04e1\u04df\3\2\2\2\u04e1\u04e2\3\2\2\2\u04e2"+
- "\u00ff\3\2\2\2\u04e3\u04e7\5\u0104\u0082\2\u04e4\u04e7\5\u0106\u0083\2"+
- "\u04e5\u04e7\5\u0102\u0081\2\u04e6\u04e3\3\2\2\2\u04e6\u04e4\3\2\2\2\u04e6"+
- "\u04e5\3\2\2\2\u04e7\u0101\3\2\2\2\u04e8\u04ea\7\'\2\2\u04e9\u04eb\5\u0108"+
- "\u0084\2\u04ea\u04e9\3\2\2\2\u04eb\u04ec\3\2\2\2\u04ec\u04ea\3\2\2\2\u04ec"+
- "\u04ed\3\2\2\2\u04ed\u0103\3\2\2\2\u04ee\u04f0\5\u010a\u0085\2\u04ef\u04ee"+
- "\3\2\2\2\u04f0\u04f1\3\2\2\2\u04f1\u04ef\3\2\2\2\u04f1\u04f2\3\2\2\2\u04f2"+
- "\u0105\3\2\2\2\u04f3\u04f5\7&\2\2\u04f4\u04f6\5\u010c\u0086\2\u04f5\u04f4"+
+ "\4\u008e\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090\3\2\3\2\3\2\3\3\3\3\3"+
+ "\4\3\4\3\5\3\5\3\6\3\6\3\7\3\7\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\13"+
+ "\3\f\3\f\3\r\3\r\3\16\3\16\3\16\3\17\3\17\3\20\3\20\3\21\3\21\3\22\3\22"+
+ "\3\23\3\23\3\24\3\24\3\24\3\25\3\25\3\25\3\26\3\26\3\27\3\27\3\30\3\30"+
+ "\3\31\3\31\3\32\3\32\3\32\3\33\3\33\3\33\3\34\3\34\3\34\3\35\3\35\3\35"+
+ "\3\36\3\36\3\37\3\37\3\37\3 \3 \3 \3!\3!\3\"\3\"\3\"\3#\3#\3#\3$\3$\3"+
+ "%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\5%\u018c"+
+ "\n%\3&\3&\3&\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3(\3(\3"+
+ "(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3)\3)\3)\3*\3*\3*\3+\3+\3+\3+\3+\3+\3"+
+ "+\3,\3,\3,\3,\3,\3-\3-\3-\3-\3.\3.\3.\3.\3.\3.\3.\3.\3.\3/\3/\3/\3/\3"+
+ "/\3/\3/\3/\3/\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\61\3\61\3"+
+ "\61\3\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63\3"+
+ "\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\3\64\3\64\3\65\3\65\3\65\3\65\3"+
+ "\65\3\65\3\65\3\65\3\65\3\66\3\66\3\66\3\66\3\66\3\66\3\66\3\67\3\67\3"+
+ "\67\3\67\3\67\3\67\3\67\3\67\3\67\38\38\38\38\38\38\38\38\38\38\39\39"+
+ "\39\3:\3:\3:\3:\3:\3;\3;\3;\3;\3;\3;\3<\3<\3<\3=\3=\3=\3=\3>\3>\3>\3>"+
+ "\3>\3>\3>\3?\3?\3?\3?\3?\3?\3?\3@\3@\3@\3@\3@\3@\3A\3A\3A\3A\3A\3A\3A"+
+ "\3A\3A\3B\3B\3B\3B\3B\3B\3C\3C\3C\3C\3C\3C\3C\3C\3D\3D\3D\3D\3D\3E\3E"+
+ "\3E\3E\3E\3E\3E\3F\3F\3F\3F\3F\3G\3G\3G\3G\3G\3G\3G\3H\3H\3H\3H\3H\3H"+
+ "\3H\3I\3I\3I\3I\3I\3I\3I\3I\3J\3J\3J\3J\3J\3J\3J\3J\3J\3K\3K\3K\3K\3K"+
+ "\3L\3L\3L\3L\3L\3L\3L\3L\3L\3M\3M\3M\3M\3M\3M\3N\3N\3N\3N\3N\3N\3N\3O"+
+ "\3O\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\5P\u02b5\nP\3Q\3Q\3Q\3Q"+
+ "\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q"+
+ "\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\5Q\u02dc\nQ\3R\3R\3R\3R\3R\3R\3R\3R\3R"+
+ "\5R\u02e7\nR\3S\3S\3S\3S\7S\u02ed\nS\fS\16S\u02f0\13S\3S\3S\3S\3T\3T\3"+
+ "T\3T\7T\u02f9\nT\fT\16T\u02fc\13T\3T\3T\5T\u0300\nT\3T\3T\5T\u0304\nT"+
+ "\5T\u0306\nT\3T\5T\u0309\nT\3T\3T\3U\3U\3U\3U\5U\u0311\nU\3U\3U\3V\3V"+
+ "\5V\u0317\nV\3W\3W\3W\5W\u031c\nW\3X\3X\3X\3X\3X\5X\u0323\nX\3X\7X\u0326"+
+ "\nX\fX\16X\u0329\13X\3X\3X\6X\u032d\nX\rX\16X\u032e\3Y\7Y\u0332\nY\fY"+
+ "\16Y\u0335\13Y\3Y\3Y\6Y\u0339\nY\rY\16Y\u033a\3Z\3Z\3Z\3Z\3Z\5Z\u0342"+
+ "\nZ\3Z\7Z\u0345\nZ\fZ\16Z\u0348\13Z\3Z\3Z\6Z\u034c\nZ\rZ\16Z\u034d\3["+
+ "\3[\3[\5[\u0353\n[\3[\3[\3[\5[\u0358\n[\3\\\3\\\3\\\6\\\u035d\n\\\r\\"+
+ "\16\\\u035e\3\\\3\\\6\\\u0363\n\\\r\\\16\\\u0364\5\\\u0367\n\\\3]\6]\u036a"+
+ "\n]\r]\16]\u036b\3^\3^\3^\3^\3^\5^\u0373\n^\3^\6^\u0376\n^\r^\16^\u0377"+
+ "\3_\3_\3`\3`\3a\3a\3b\3b\7b\u0382\nb\fb\16b\u0385\13b\3b\3b\3c\3c\3d\3"+
+ "d\3e\6e\u038e\ne\re\16e\u038f\3e\3e\3f\3f\3f\3f\7f\u0398\nf\ff\16f\u039b"+
+ "\13f\3f\3f\3g\3g\3g\3g\7g\u03a3\ng\fg\16g\u03a6\13g\3g\3g\3g\3g\3g\3h"+
+ "\3h\3h\3h\3h\3h\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i"+
+ "\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i"+
+ "\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i"+
+ "\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i"+
+ "\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i"+
+ "\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i"+
+ "\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i"+
+ "\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i"+
+ "\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i"+
+ "\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\5i\u0491"+
+ "\ni\3j\3j\3k\3k\3l\3l\3m\3m\3n\3n\3o\3o\3p\3p\3q\3q\3r\3r\3r\3s\3s\3s"+
+ "\3t\3t\3u\3u\3v\3v\3w\3w\3x\3x\3y\3y\3z\3z\3z\3{\3{\3{\3|\3|\5|\u04bd"+
+ "\n|\3}\3}\3}\5}\u04c2\n}\3~\3~\7~\u04c6\n~\f~\16~\u04c9\13~\3~\3~\6~\u04cd"+
+ "\n~\r~\16~\u04ce\3\177\7\177\u04d2\n\177\f\177\16\177\u04d5\13\177\3\177"+
+ "\3\177\6\177\u04d9\n\177\r\177\16\177\u04da\3\u0080\3\u0080\7\u0080\u04df"+
+ "\n\u0080\f\u0080\16\u0080\u04e2\13\u0080\3\u0080\3\u0080\6\u0080\u04e6"+
+ "\n\u0080\r\u0080\16\u0080\u04e7\3\u0081\3\u0081\3\u0081\5\u0081\u04ed"+
+ "\n\u0081\3\u0082\3\u0082\6\u0082\u04f1\n\u0082\r\u0082\16\u0082\u04f2"+
+ "\3\u0083\6\u0083\u04f6\n\u0083\r\u0083\16\u0083\u04f7\3\u0084\3\u0084"+
+ "\6\u0084\u04fc\n\u0084\r\u0084\16\u0084\u04fd\3\u0085\3\u0085\3\u0086"+
+ "\3\u0086\3\u0087\3\u0087\3\u0088\3\u0088\3\u0088\3\u0088\5\u0088\u050a"+
+ "\n\u0088\3\u0088\3\u0088\3\u0089\3\u0089\6\u0089\u0510\n\u0089\r\u0089"+
+ "\16\u0089\u0511\3\u008a\3\u008a\7\u008a\u0516\n\u008a\f\u008a\16\u008a"+
+ "\u0519\13\u008a\3\u008b\3\u008b\7\u008b\u051d\n\u008b\f\u008b\16\u008b"+
+ "\u0520\13\u008b\3\u008c\3\u008c\3\u008d\3\u008d\3\u008e\6\u008e\u0527"+
+ "\n\u008e\r\u008e\16\u008e\u0528\3\u008e\3\u008e\3\u008f\3\u008f\3\u008f"+
+ "\3\u008f\7\u008f\u0531\n\u008f\f\u008f\16\u008f\u0534\13\u008f\3\u008f"+
+ "\3\u008f\3\u0090\3\u0090\3\u0090\3\u0090\7\u0090\u053c\n\u0090\f\u0090"+
+ "\16\u0090\u053f\13\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\5\u02ee"+
+ "\u03a4\u053d\2\u0091\4\4\6\5\b\6\n\7\f\b\16\t\20\n\22\13\24\f\26\r\30"+
+ "\16\32\17\34\20\36\21 \22\"\23$\24&\25(\26*\27,\30.\31\60\32\62\33\64"+
+ "\34\66\358\36:\37< >!@\"B#D$F%H&J\'L(N)P*R+T,V-X.Z/\\\60^\61`\62b\63d"+
+ "\64f\65h\66j\67l8n9p:r;tz?|@~A\u0080B\u0082C\u0084D\u0086E\u0088"+
+ "F\u008aG\u008cH\u008eI\u0090J\u0092K\u0094L\u0096M\u0098N\u009aO\u009c"+
+ "P\u009eQ\u00a0R\u00a2S\u00a4T\u00a6U\u00a8V\u00aaW\u00acX\u00aeY\u00b0"+
+ "Z\u00b2[\u00b4\\\u00b6]\u00b8^\u00ba_\u00bc`\u00be\2\u00c0\2\u00c2\2\u00c4"+
+ "a\u00c6\2\u00c8\2\u00cab\u00ccc\u00ced\u00d0e\u00d2f\u00d4g\u00d6h\u00d8"+
+ "i\u00daj\u00dck\u00del\u00e0m\u00e2n\u00e4o\u00e6p\u00e8q\u00ear\u00ec"+
+ "s\u00eet\u00f0u\u00f2v\u00f4w\u00f6x\u00f8y\u00faz\u00fc{\u00fe|\u0100"+
+ "}\u0102~\u0104\177\u0106\u0080\u0108\u0081\u010a\2\u010c\2\u010e\2\u0110"+
+ "\u0082\u0112\u0083\u0114\u0084\u0116\u0085\u0118\2\u011a\2\u011c\u0086"+
+ "\u011e\u0087\u0120\u0088\4\2\3\23\3\2$$\3\2||\4\2rruu\4\2ooww\7\2$$))"+
+ "hhpptt\3\2))\4\2uuww\7\2dfkknnuuyy\4\2DDdd\3\2\62\63\3\2\62;\5\2\62;C"+
+ "Hch\5\2C\\aac|\6\2\62;C\\aac|\6\2\13\f\17\17\"\"\u00a2\u00a2\4\2\f\f\17"+
+ "\17\4\2--//\2\u05ce\2\4\3\2\2\2\2\6\3\2\2\2\2\b\3\2\2\2\2\n\3\2\2\2\2"+
+ "\f\3\2\2\2\2\16\3\2\2\2\2\20\3\2\2\2\2\22\3\2\2\2\2\24\3\2\2\2\2\26\3"+
+ "\2\2\2\2\30\3\2\2\2\2\32\3\2\2\2\2\34\3\2\2\2\2\36\3\2\2\2\2 \3\2\2\2"+
+ "\2\"\3\2\2\2\2$\3\2\2\2\2&\3\2\2\2\2(\3\2\2\2\2*\3\2\2\2\2,\3\2\2\2\2"+
+ ".\3\2\2\2\2\60\3\2\2\2\2\62\3\2\2\2\2\64\3\2\2\2\2\66\3\2\2\2\28\3\2\2"+
+ "\2\2:\3\2\2\2\2<\3\2\2\2\2>\3\2\2\2\2@\3\2\2\2\2B\3\2\2\2\2D\3\2\2\2\2"+
+ "F\3\2\2\2\2H\3\2\2\2\2J\3\2\2\2\2L\3\2\2\2\2N\3\2\2\2\2P\3\2\2\2\2R\3"+
+ "\2\2\2\2T\3\2\2\2\2V\3\2\2\2\2X\3\2\2\2\2Z\3\2\2\2\2\\\3\2\2\2\2^\3\2"+
+ "\2\2\2`\3\2\2\2\2b\3\2\2\2\2d\3\2\2\2\2f\3\2\2\2\2h\3\2\2\2\2j\3\2\2\2"+
+ "\2l\3\2\2\2\2n\3\2\2\2\2p\3\2\2\2\2r\3\2\2\2\2t\3\2\2\2\2v\3\2\2\2\2x"+
+ "\3\2\2\2\2z\3\2\2\2\2|\3\2\2\2\2~\3\2\2\2\2\u0080\3\2\2\2\2\u0082\3\2"+
+ "\2\2\2\u0084\3\2\2\2\2\u0086\3\2\2\2\2\u0088\3\2\2\2\2\u008a\3\2\2\2\2"+
+ "\u008c\3\2\2\2\2\u008e\3\2\2\2\2\u0090\3\2\2\2\2\u0092\3\2\2\2\2\u0094"+
+ "\3\2\2\2\2\u0096\3\2\2\2\2\u0098\3\2\2\2\2\u009a\3\2\2\2\2\u009c\3\2\2"+
+ "\2\2\u009e\3\2\2\2\2\u00a0\3\2\2\2\2\u00a2\3\2\2\2\2\u00a4\3\2\2\2\2\u00a6"+
+ "\3\2\2\2\2\u00a8\3\2\2\2\2\u00aa\3\2\2\2\2\u00ac\3\2\2\2\2\u00ae\3\2\2"+
+ "\2\2\u00b0\3\2\2\2\2\u00b2\3\2\2\2\2\u00b4\3\2\2\2\2\u00b6\3\2\2\2\2\u00b8"+
+ "\3\2\2\2\2\u00ba\3\2\2\2\2\u00bc\3\2\2\2\2\u00c4\3\2\2\2\2\u00ca\3\2\2"+
+ "\2\2\u00cc\3\2\2\2\2\u00ce\3\2\2\2\3\u00d0\3\2\2\2\3\u00d2\3\2\2\2\3\u00d4"+
+ "\3\2\2\2\3\u00d6\3\2\2\2\3\u00d8\3\2\2\2\3\u00da\3\2\2\2\3\u00dc\3\2\2"+
+ "\2\3\u00de\3\2\2\2\3\u00e0\3\2\2\2\3\u00e2\3\2\2\2\3\u00e4\3\2\2\2\3\u00e6"+
+ "\3\2\2\2\3\u00e8\3\2\2\2\3\u00ea\3\2\2\2\3\u00ec\3\2\2\2\3\u00ee\3\2\2"+
+ "\2\3\u00f0\3\2\2\2\3\u00f2\3\2\2\2\3\u00f4\3\2\2\2\3\u00f6\3\2\2\2\3\u00f8"+
+ "\3\2\2\2\3\u00fa\3\2\2\2\3\u00fc\3\2\2\2\3\u00fe\3\2\2\2\3\u0100\3\2\2"+
+ "\2\3\u0102\3\2\2\2\3\u0104\3\2\2\2\3\u0106\3\2\2\2\3\u0108\3\2\2\2\3\u0110"+
+ "\3\2\2\2\3\u0112\3\2\2\2\3\u0114\3\2\2\2\3\u0116\3\2\2\2\3\u011c\3\2\2"+
+ "\2\3\u011e\3\2\2\2\3\u0120\3\2\2\2\4\u0122\3\2\2\2\6\u0125\3\2\2\2\b\u0127"+
+ "\3\2\2\2\n\u0129\3\2\2\2\f\u012b\3\2\2\2\16\u012d\3\2\2\2\20\u012f\3\2"+
+ "\2\2\22\u0131\3\2\2\2\24\u0133\3\2\2\2\26\u0135\3\2\2\2\30\u0138\3\2\2"+
+ "\2\32\u013a\3\2\2\2\34\u013c\3\2\2\2\36\u013f\3\2\2\2 \u0141\3\2\2\2\""+
+ "\u0143\3\2\2\2$\u0145\3\2\2\2&\u0147\3\2\2\2(\u0149\3\2\2\2*\u014c\3\2"+
+ "\2\2,\u014f\3\2\2\2.\u0151\3\2\2\2\60\u0153\3\2\2\2\62\u0155\3\2\2\2\64"+
+ "\u0157\3\2\2\2\66\u015a\3\2\2\28\u015d\3\2\2\2:\u0160\3\2\2\2<\u0163\3"+
+ "\2\2\2>\u0165\3\2\2\2@\u0168\3\2\2\2B\u016b\3\2\2\2D\u016d\3\2\2\2F\u0170"+
+ "\3\2\2\2H\u0173\3\2\2\2J\u018b\3\2\2\2L\u018d\3\2\2\2N\u0196\3\2\2\2P"+
+ "\u019e\3\2\2\2R\u01a6\3\2\2\2T\u01ae\3\2\2\2V\u01b1\3\2\2\2X\u01b8\3\2"+
+ "\2\2Z\u01bd\3\2\2\2\\\u01c1\3\2\2\2^\u01ca\3\2\2\2`\u01d3\3\2\2\2b\u01dc"+
+ "\3\2\2\2d\u01e2\3\2\2\2f\u01e9\3\2\2\2h\u01f0\3\2\2\2j\u01f6\3\2\2\2l"+
+ "\u01ff\3\2\2\2n\u0206\3\2\2\2p\u020f\3\2\2\2r\u0219\3\2\2\2t\u021c\3\2"+
+ "\2\2v\u0221\3\2\2\2x\u0227\3\2\2\2z\u022a\3\2\2\2|\u022e\3\2\2\2~\u0235"+
+ "\3\2\2\2\u0080\u023c\3\2\2\2\u0082\u0242\3\2\2\2\u0084\u024b\3\2\2\2\u0086"+
+ "\u0251\3\2\2\2\u0088\u0259\3\2\2\2\u008a\u025e\3\2\2\2\u008c\u0265\3\2"+
+ "\2\2\u008e\u026a\3\2\2\2\u0090\u0271\3\2\2\2\u0092\u0278\3\2\2\2\u0094"+
+ "\u0280\3\2\2\2\u0096\u0289\3\2\2\2\u0098\u028e\3\2\2\2\u009a\u0297\3\2"+
+ "\2\2\u009c\u029d\3\2\2\2\u009e\u02a4\3\2\2\2\u00a0\u02b4\3\2\2\2\u00a2"+
+ "\u02db\3\2\2\2\u00a4\u02e6\3\2\2\2\u00a6\u02e8\3\2\2\2\u00a8\u02f4\3\2"+
+ "\2\2\u00aa\u030c\3\2\2\2\u00ac\u0316\3\2\2\2\u00ae\u031b\3\2\2\2\u00b0"+
+ "\u0322\3\2\2\2\u00b2\u0333\3\2\2\2\u00b4\u0341\3\2\2\2\u00b6\u0352\3\2"+
+ "\2\2\u00b8\u0366\3\2\2\2\u00ba\u0369\3\2\2\2\u00bc\u0372\3\2\2\2\u00be"+
+ "\u0379\3\2\2\2\u00c0\u037b\3\2\2\2\u00c2\u037d\3\2\2\2\u00c4\u037f\3\2"+
+ "\2\2\u00c6\u0388\3\2\2\2\u00c8\u038a\3\2\2\2\u00ca\u038d\3\2\2\2\u00cc"+
+ "\u0393\3\2\2\2\u00ce\u039e\3\2\2\2\u00d0\u03ac\3\2\2\2\u00d2\u0490\3\2"+
+ "\2\2\u00d4\u0492\3\2\2\2\u00d6\u0494\3\2\2\2\u00d8\u0496\3\2\2\2\u00da"+
+ "\u0498\3\2\2\2\u00dc\u049a\3\2\2\2\u00de\u049c\3\2\2\2\u00e0\u049e\3\2"+
+ "\2\2\u00e2\u04a0\3\2\2\2\u00e4\u04a2\3\2\2\2\u00e6\u04a5\3\2\2\2\u00e8"+
+ "\u04a8\3\2\2\2\u00ea\u04aa\3\2\2\2\u00ec\u04ac\3\2\2\2\u00ee\u04ae\3\2"+
+ "\2\2\u00f0\u04b0\3\2\2\2\u00f2\u04b2\3\2\2\2\u00f4\u04b4\3\2\2\2\u00f6"+
+ "\u04b7\3\2\2\2\u00f8\u04bc\3\2\2\2\u00fa\u04c1\3\2\2\2\u00fc\u04c3\3\2"+
+ "\2\2\u00fe\u04d3\3\2\2\2\u0100\u04dc\3\2\2\2\u0102\u04ec\3\2\2\2\u0104"+
+ "\u04ee\3\2\2\2\u0106\u04f5\3\2\2\2\u0108\u04f9\3\2\2\2\u010a\u04ff\3\2"+
+ "\2\2\u010c\u0501\3\2\2\2\u010e\u0503\3\2\2\2\u0110\u0505\3\2\2\2\u0112"+
+ "\u050d\3\2\2\2\u0114\u0513\3\2\2\2\u0116\u051a\3\2\2\2\u0118\u0521\3\2"+
+ "\2\2\u011a\u0523\3\2\2\2\u011c\u0526\3\2\2\2\u011e\u052c\3\2\2\2\u0120"+
+ "\u0537\3\2\2\2\u0122\u0123\7}\2\2\u0123\u0124\b\2\2\2\u0124\5\3\2\2\2"+
+ "\u0125\u0126\7\177\2\2\u0126\7\3\2\2\2\u0127\u0128\7]\2\2\u0128\t\3\2"+
+ "\2\2\u0129\u012a\7_\2\2\u012a\13\3\2\2\2\u012b\u012c\7*\2\2\u012c\r\3"+
+ "\2\2\2\u012d\u012e\7+\2\2\u012e\17\3\2\2\2\u012f\u0130\7=\2\2\u0130\21"+
+ "\3\2\2\2\u0131\u0132\7<\2\2\u0132\23\3\2\2\2\u0133\u0134\7.\2\2\u0134"+
+ "\25\3\2\2\2\u0135\u0136\7\60\2\2\u0136\u0137\7\60\2\2\u0137\27\3\2\2\2"+
+ "\u0138\u0139\7A\2\2\u0139\31\3\2\2\2\u013a\u013b\7\60\2\2\u013b\33\3\2"+
+ "\2\2\u013c\u013d\7/\2\2\u013d\u013e\7@\2\2\u013e\35\3\2\2\2\u013f\u0140"+
+ "\7-\2\2\u0140\37\3\2\2\2\u0141\u0142\7/\2\2\u0142!\3\2\2\2\u0143\u0144"+
+ "\7,\2\2\u0144#\3\2\2\2\u0145\u0146\7\61\2\2\u0146%\3\2\2\2\u0147\u0148"+
+ "\7\'\2\2\u0148\'\3\2\2\2\u0149\u014a\7-\2\2\u014a\u014b\7-\2\2\u014b)"+
+ "\3\2\2\2\u014c\u014d\7/\2\2\u014d\u014e\7/\2\2\u014e+\3\2\2\2\u014f\u0150"+
+ "\7(\2\2\u0150-\3\2\2\2\u0151\u0152\7\u0080\2\2\u0152/\3\2\2\2\u0153\u0154"+
+ "\7`\2\2\u0154\61\3\2\2\2\u0155\u0156\7~\2\2\u0156\63\3\2\2\2\u0157\u0158"+
+ "\7>\2\2\u0158\u0159\7>\2\2\u0159\65\3\2\2\2\u015a\u015b\7@\2\2\u015b\u015c"+
+ "\7@\2\2\u015c\67\3\2\2\2\u015d\u015e\7?\2\2\u015e\u015f\7?\2\2\u015f9"+
+ "\3\2\2\2\u0160\u0161\7#\2\2\u0161\u0162\7?\2\2\u0162;\3\2\2\2\u0163\u0164"+
+ "\7>\2\2\u0164=\3\2\2\2\u0165\u0166\7>\2\2\u0166\u0167\7?\2\2\u0167?\3"+
+ "\2\2\2\u0168\u0169\7@\2\2\u0169\u016a\7?\2\2\u016aA\3\2\2\2\u016b\u016c"+
+ "\7@\2\2\u016cC\3\2\2\2\u016d\u016e\7(\2\2\u016e\u016f\7(\2\2\u016fE\3"+
+ "\2\2\2\u0170\u0171\7~\2\2\u0171\u0172\7~\2\2\u0172G\3\2\2\2\u0173\u0174"+
+ "\7?\2\2\u0174I\3\2\2\2\u0175\u0176\7-\2\2\u0176\u018c\7?\2\2\u0177\u0178"+
+ "\7/\2\2\u0178\u018c\7?\2\2\u0179\u017a\7,\2\2\u017a\u018c\7?\2\2\u017b"+
+ "\u017c\7\61\2\2\u017c\u018c\7?\2\2\u017d\u017e\7\'\2\2\u017e\u018c\7?"+
+ "\2\2\u017f\u0180\7>\2\2\u0180\u0181\7>\2\2\u0181\u018c\7?\2\2\u0182\u0183"+
+ "\7@\2\2\u0183\u0184\7@\2\2\u0184\u018c\7?\2\2\u0185\u0186\7(\2\2\u0186"+
+ "\u018c\7?\2\2\u0187\u0188\7~\2\2\u0188\u018c\7?\2\2\u0189\u018a\7`\2\2"+
+ "\u018a\u018c\7?\2\2\u018b\u0175\3\2\2\2\u018b\u0177\3\2\2\2\u018b\u0179"+
+ "\3\2\2\2\u018b\u017b\3\2\2\2\u018b\u017d\3\2\2\2\u018b\u017f\3\2\2\2\u018b"+
+ "\u0182\3\2\2\2\u018b\u0185\3\2\2\2\u018b\u0187\3\2\2\2\u018b\u0189\3\2"+
+ "\2\2\u018cK\3\2\2\2\u018d\u018e\7k\2\2\u018e\u018f\7o\2\2\u018f\u0190"+
+ "\7r\2\2\u0190\u0191\7q\2\2\u0191\u0192\7t\2\2\u0192\u0193\7v\2\2\u0193"+
+ "\u0194\3\2\2\2\u0194\u0195\b&\3\2\u0195M\3\2\2\2\u0196\u0197\7v\2\2\u0197"+
+ "\u0198\7{\2\2\u0198\u0199\7r\2\2\u0199\u019a\7g\2\2\u019a\u019b\7f\2\2"+
+ "\u019b\u019c\7g\2\2\u019c\u019d\7h\2\2\u019dO\3\2\2\2\u019e\u019f\7%\2"+
+ "\2\u019f\u01a0\7r\2\2\u01a0\u01a1\7t\2\2\u01a1\u01a2\7c\2\2\u01a2\u01a3"+
+ "\7i\2\2\u01a3\u01a4\7o\2\2\u01a4\u01a5\7c\2\2\u01a5Q\3\2\2\2\u01a6\u01a7"+
+ "\7t\2\2\u01a7\u01a8\7g\2\2\u01a8\u01a9\7u\2\2\u01a9\u01aa\7g\2\2\u01aa"+
+ "\u01ab\7t\2\2\u01ab\u01ac\7x\2\2\u01ac\u01ad\7g\2\2\u01adS\3\2\2\2\u01ae"+
+ "\u01af\7r\2\2\u01af\u01b0\7e\2\2\u01b0U\3\2\2\2\u01b1\u01b2\7v\2\2\u01b2"+
+ "\u01b3\7c\2\2\u01b3\u01b4\7t\2\2\u01b4\u01b5\7i\2\2\u01b5\u01b6\7g\2\2"+
+ "\u01b6\u01b7\7v\2\2\u01b7W\3\2\2\2\u01b8\u01b9\7n\2\2\u01b9\u01ba\7k\2"+
+ "\2\u01ba\u01bb\7p\2\2\u01bb\u01bc\7m\2\2\u01bcY\3\2\2\2\u01bd\u01be\7"+
+ "e\2\2\u01be\u01bf\7r\2\2\u01bf\u01c0\7w\2\2\u01c0[\3\2\2\2\u01c1\u01c2"+
+ "\7e\2\2\u01c2\u01c3\7q\2\2\u01c3\u01c4\7f\2\2\u01c4\u01c5\7g\2\2\u01c5"+
+ "\u01c6\7a\2\2\u01c6\u01c7\7u\2\2\u01c7\u01c8\7g\2\2\u01c8\u01c9\7i\2\2"+
+ "\u01c9]\3\2\2\2\u01ca\u01cb\7f\2\2\u01cb\u01cc\7c\2\2\u01cc\u01cd\7v\2"+
+ "\2\u01cd\u01ce\7c\2\2\u01ce\u01cf\7a\2\2\u01cf\u01d0\7u\2\2\u01d0\u01d1"+
+ "\7g\2\2\u01d1\u01d2\7i\2\2\u01d2_\3\2\2\2\u01d3\u01d4\7g\2\2\u01d4\u01d5"+
+ "\7p\2\2\u01d5\u01d6\7e\2\2\u01d6\u01d7\7q\2\2\u01d7\u01d8\7f\2\2\u01d8"+
+ "\u01d9\7k\2\2\u01d9\u01da\7p\2\2\u01da\u01db\7i\2\2\u01dba\3\2\2\2\u01dc"+
+ "\u01dd\7e\2\2\u01dd\u01de\7q\2\2\u01de\u01df\7p\2\2\u01df\u01e0\7u\2\2"+
+ "\u01e0\u01e1\7v\2\2\u01e1c\3\2\2\2\u01e2\u01e3\7g\2\2\u01e3\u01e4\7z\2"+
+ "\2\u01e4\u01e5\7v\2\2\u01e5\u01e6\7g\2\2\u01e6\u01e7\7t\2\2\u01e7\u01e8"+
+ "\7p\2\2\u01e8e\3\2\2\2\u01e9\u01ea\7g\2\2\u01ea\u01eb\7z\2\2\u01eb\u01ec"+
+ "\7r\2\2\u01ec\u01ed\7q\2\2\u01ed\u01ee\7t\2\2\u01ee\u01ef\7v\2\2\u01ef"+
+ "g\3\2\2\2\u01f0\u01f1\7c\2\2\u01f1\u01f2\7n\2\2\u01f2\u01f3\7k\2\2\u01f3"+
+ "\u01f4\7i\2\2\u01f4\u01f5\7p\2\2\u01f5i\3\2\2\2\u01f6\u01f7\7t\2\2\u01f7"+
+ "\u01f8\7g\2\2\u01f8\u01f9\7i\2\2\u01f9\u01fa\7k\2\2\u01fa\u01fb\7u\2\2"+
+ "\u01fb\u01fc\7v\2\2\u01fc\u01fd\7g\2\2\u01fd\u01fe\7t\2\2\u01fek\3\2\2"+
+ "\2\u01ff\u0200\7k\2\2\u0200\u0201\7p\2\2\u0201\u0202\7n\2\2\u0202\u0203"+
+ "\7k\2\2\u0203\u0204\7p\2\2\u0204\u0205\7g\2\2\u0205m\3\2\2\2\u0206\u0207"+
+ "\7x\2\2\u0207\u0208\7q\2\2\u0208\u0209\7n\2\2\u0209\u020a\7c\2\2\u020a"+
+ "\u020b\7v\2\2\u020b\u020c\7k\2\2\u020c\u020d\7n\2\2\u020d\u020e\7g\2\2"+
+ "\u020eo\3\2\2\2\u020f\u0210\7k\2\2\u0210\u0211\7p\2\2\u0211\u0212\7v\2"+
+ "\2\u0212\u0213\7g\2\2\u0213\u0214\7t\2\2\u0214\u0215\7t\2\2\u0215\u0216"+
+ "\7w\2\2\u0216\u0217\7r\2\2\u0217\u0218\7v\2\2\u0218q\3\2\2\2\u0219\u021a"+
+ "\7k\2\2\u021a\u021b\7h\2\2\u021bs\3\2\2\2\u021c\u021d\7g\2\2\u021d\u021e"+
+ "\7n\2\2\u021e\u021f\7u\2\2\u021f\u0220\7g\2\2\u0220u\3\2\2\2\u0221\u0222"+
+ "\7y\2\2\u0222\u0223\7j\2\2\u0223\u0224\7k\2\2\u0224\u0225\7n\2\2\u0225"+
+ "\u0226\7g\2\2\u0226w\3\2\2\2\u0227\u0228\7f\2\2\u0228\u0229\7q\2\2\u0229"+
+ "y\3\2\2\2\u022a\u022b\7h\2\2\u022b\u022c\7q\2\2\u022c\u022d\7t\2\2\u022d"+
+ "{\3\2\2\2\u022e\u022f\7u\2\2\u022f\u0230\7y\2\2\u0230\u0231\7k\2\2\u0231"+
+ "\u0232\7v\2\2\u0232\u0233\7e\2\2\u0233\u0234\7j\2\2\u0234}\3\2\2\2\u0235"+
+ "\u0236\7t\2\2\u0236\u0237\7g\2\2\u0237\u0238\7v\2\2\u0238\u0239\7w\2\2"+
+ "\u0239\u023a\7t\2\2\u023a\u023b\7p\2\2\u023b\177\3\2\2\2\u023c\u023d\7"+
+ "d\2\2\u023d\u023e\7t\2\2\u023e\u023f\7g\2\2\u023f\u0240\7c\2\2\u0240\u0241"+
+ "\7m\2\2\u0241\u0081\3\2\2\2\u0242\u0243\7e\2\2\u0243\u0244\7q\2\2\u0244"+
+ "\u0245\7p\2\2\u0245\u0246\7v\2\2\u0246\u0247\7k\2\2\u0247\u0248\7p\2\2"+
+ "\u0248\u0249\7w\2\2\u0249\u024a\7g\2\2\u024a\u0083\3\2\2\2\u024b\u024c"+
+ "\7c\2\2\u024c\u024d\7u\2\2\u024d\u024e\7o\2\2\u024e\u024f\3\2\2\2\u024f"+
+ "\u0250\bB\4\2\u0250\u0085\3\2\2\2\u0251\u0252\7f\2\2\u0252\u0253\7g\2"+
+ "\2\u0253\u0254\7h\2\2\u0254\u0255\7c\2\2\u0255\u0256\7w\2\2\u0256\u0257"+
+ "\7n\2\2\u0257\u0258\7v\2\2\u0258\u0087\3\2\2\2\u0259\u025a\7e\2\2\u025a"+
+ "\u025b\7c\2\2\u025b\u025c\7u\2\2\u025c\u025d\7g\2\2\u025d\u0089\3\2\2"+
+ "\2\u025e\u025f\7u\2\2\u025f\u0260\7v\2\2\u0260\u0261\7t\2\2\u0261\u0262"+
+ "\7w\2\2\u0262\u0263\7e\2\2\u0263\u0264\7v\2\2\u0264\u008b\3\2\2\2\u0265"+
+ "\u0266\7g\2\2\u0266\u0267\7p\2\2\u0267\u0268\7w\2\2\u0268\u0269\7o\2\2"+
+ "\u0269\u008d\3\2\2\2\u026a\u026b\7u\2\2\u026b\u026c\7k\2\2\u026c\u026d"+
+ "\7|\2\2\u026d\u026e\7g\2\2\u026e\u026f\7q\2\2\u026f\u0270\7h\2\2\u0270"+
+ "\u008f\3\2\2\2\u0271\u0272\7v\2\2\u0272\u0273\7{\2\2\u0273\u0274\7r\2"+
+ "\2\u0274\u0275\7g\2\2\u0275\u0276\7k\2\2\u0276\u0277\7f\2\2\u0277\u0091"+
+ "\3\2\2\2\u0278\u0279\7m\2\2\u0279\u027a\7k\2\2\u027a\u027b\7e\2\2\u027b"+
+ "\u027c\7m\2\2\u027c\u027d\7c\2\2\u027d\u027e\7u\2\2\u027e\u027f\7o\2\2"+
+ "\u027f\u0093\3\2\2\2\u0280\u0281\7t\2\2\u0281\u0282\7g\2\2\u0282\u0283"+
+ "\7u\2\2\u0283\u0284\7q\2\2\u0284\u0285\7w\2\2\u0285\u0286\7t\2\2\u0286"+
+ "\u0287\7e\2\2\u0287\u0288\7g\2\2\u0288\u0095\3\2\2\2\u0289\u028a\7w\2"+
+ "\2\u028a\u028b\7u\2\2\u028b\u028c\7g\2\2\u028c\u028d\7u\2\2\u028d\u0097"+
+ "\3\2\2\2\u028e\u028f\7e\2\2\u028f\u0290\7n\2\2\u0290\u0291\7q\2\2\u0291"+
+ "\u0292\7d\2\2\u0292\u0293\7d\2\2\u0293\u0294\7g\2\2\u0294\u0295\7t\2\2"+
+ "\u0295\u0296\7u\2\2\u0296\u0099\3\2\2\2\u0297\u0298\7d\2\2\u0298\u0299"+
+ "\7{\2\2\u0299\u029a\7v\2\2\u029a\u029b\7g\2\2\u029b\u029c\7u\2\2\u029c"+
+ "\u009b\3\2\2\2\u029d\u029e\7e\2\2\u029e\u029f\7{\2\2\u029f\u02a0\7e\2"+
+ "\2\u02a0\u02a1\7n\2\2\u02a1\u02a2\7g\2\2\u02a2\u02a3\7u\2\2\u02a3\u009d"+
+ "\3\2\2\2\u02a4\u02a5\7#\2\2\u02a5\u009f\3\2\2\2\u02a6\u02a7\7u\2\2\u02a7"+
+ "\u02a8\7k\2\2\u02a8\u02a9\7i\2\2\u02a9\u02aa\7p\2\2\u02aa\u02ab\7g\2\2"+
+ "\u02ab\u02b5\7f\2\2\u02ac\u02ad\7w\2\2\u02ad\u02ae\7p\2\2\u02ae\u02af"+
+ "\7u\2\2\u02af\u02b0\7k\2\2\u02b0\u02b1\7i\2\2\u02b1\u02b2\7p\2\2\u02b2"+
+ "\u02b3\7g\2\2\u02b3\u02b5\7f\2\2\u02b4\u02a6\3\2\2\2\u02b4\u02ac\3\2\2"+
+ "\2\u02b5\u00a1\3\2\2\2\u02b6\u02b7\7d\2\2\u02b7\u02b8\7{\2\2\u02b8\u02b9"+
+ "\7v\2\2\u02b9\u02dc\7g\2\2\u02ba\u02bb\7y\2\2\u02bb\u02bc\7q\2\2\u02bc"+
+ "\u02bd\7t\2\2\u02bd\u02dc\7f\2\2\u02be\u02bf\7f\2\2\u02bf\u02c0\7y\2\2"+
+ "\u02c0\u02c1\7q\2\2\u02c1\u02c2\7t\2\2\u02c2\u02dc\7f\2\2\u02c3\u02c4"+
+ "\7d\2\2\u02c4\u02c5\7q\2\2\u02c5\u02c6\7q\2\2\u02c6\u02dc\7n\2\2\u02c7"+
+ "\u02c8\7e\2\2\u02c8\u02c9\7j\2\2\u02c9\u02ca\7c\2\2\u02ca\u02dc\7t\2\2"+
+ "\u02cb\u02cc\7u\2\2\u02cc\u02cd\7j\2\2\u02cd\u02ce\7q\2\2\u02ce\u02cf"+
+ "\7t\2\2\u02cf\u02dc\7v\2\2\u02d0\u02d1\7k\2\2\u02d1\u02d2\7p\2\2\u02d2"+
+ "\u02dc\7v\2\2\u02d3\u02d4\7n\2\2\u02d4\u02d5\7q\2\2\u02d5\u02d6\7p\2\2"+
+ "\u02d6\u02dc\7i\2\2\u02d7\u02d8\7x\2\2\u02d8\u02d9\7q\2\2\u02d9\u02da"+
+ "\7k\2\2\u02da\u02dc\7f\2\2\u02db\u02b6\3\2\2\2\u02db\u02ba\3\2\2\2\u02db"+
+ "\u02be\3\2\2\2\u02db\u02c3\3\2\2\2\u02db\u02c7\3\2\2\2\u02db\u02cb\3\2"+
+ "\2\2\u02db\u02d0\3\2\2\2\u02db\u02d3\3\2\2\2\u02db\u02d7\3\2\2\2\u02dc"+
+ "\u00a3\3\2\2\2\u02dd\u02de\7v\2\2\u02de\u02df\7t\2\2\u02df\u02e0\7w\2"+
+ "\2\u02e0\u02e7\7g\2\2\u02e1\u02e2\7h\2\2\u02e2\u02e3\7c\2\2\u02e3\u02e4"+
+ "\7n\2\2\u02e4\u02e5\7u\2\2\u02e5\u02e7\7g\2\2\u02e6\u02dd\3\2\2\2\u02e6"+
+ "\u02e1\3\2\2\2\u02e7\u00a5\3\2\2\2\u02e8\u02e9\7}\2\2\u02e9\u02ea\7}\2"+
+ "\2\u02ea\u02ee\3\2\2\2\u02eb\u02ed\13\2\2\2\u02ec\u02eb\3\2\2\2\u02ed"+
+ "\u02f0\3\2\2\2\u02ee\u02ef\3\2\2\2\u02ee\u02ec\3\2\2\2\u02ef\u02f1\3\2"+
+ "\2\2\u02f0\u02ee\3\2\2\2\u02f1\u02f2\7\177\2\2\u02f2\u02f3\7\177\2\2\u02f3"+
+ "\u00a7\3\2\2\2\u02f4\u02fa\7$\2\2\u02f5\u02f6\7^\2\2\u02f6\u02f9\7$\2"+
+ "\2\u02f7\u02f9\n\2\2\2\u02f8\u02f5\3\2\2\2\u02f8\u02f7\3\2\2\2\u02f9\u02fc"+
+ "\3\2\2\2\u02fa\u02f8\3\2\2\2\u02fa\u02fb\3\2\2\2\u02fb\u02fd\3\2\2\2\u02fc"+
+ "\u02fa\3\2\2\2\u02fd\u02ff\7$\2\2\u02fe\u0300\t\3\2\2\u02ff\u02fe\3\2"+
+ "\2\2\u02ff\u0300\3\2\2\2\u0300\u0305\3\2\2\2\u0301\u0303\t\4\2\2\u0302"+
+ "\u0304\t\5\2\2\u0303\u0302\3\2\2\2\u0303\u0304\3\2\2\2\u0304\u0306\3\2"+
+ "\2\2\u0305\u0301\3\2\2\2\u0305\u0306\3\2\2\2\u0306\u0308\3\2\2\2\u0307"+
+ "\u0309\t\3\2\2\u0308\u0307\3\2\2\2\u0308\u0309\3\2\2\2\u0309\u030a\3\2"+
+ "\2\2\u030a\u030b\bT\5\2\u030b\u00a9\3\2\2\2\u030c\u0310\7)\2\2\u030d\u030e"+
+ "\7^\2\2\u030e\u0311\t\6\2\2\u030f\u0311\n\7\2\2\u0310\u030d\3\2\2\2\u0310"+
+ "\u030f\3\2\2\2\u0311\u0312\3\2\2\2\u0312\u0313\7)\2\2\u0313\u00ab\3\2"+
+ "\2\2\u0314\u0317\5\u00aeW\2\u0315\u0317\5\u00b6[\2\u0316\u0314\3\2\2\2"+
+ "\u0316\u0315\3\2\2\2\u0317\u00ad\3\2\2\2\u0318\u031c\5\u00b0X\2\u0319"+
+ "\u031c\5\u00b2Y\2\u031a\u031c\5\u00b4Z\2\u031b\u0318\3\2\2\2\u031b\u0319"+
+ "\3\2\2\2\u031b\u031a\3\2\2\2\u031c\u00af\3\2\2\2\u031d\u0323\7\'\2\2\u031e"+
+ "\u031f\7\62\2\2\u031f\u0323\7d\2\2\u0320\u0321\7\62\2\2\u0321\u0323\7"+
+ "D\2\2\u0322\u031d\3\2\2\2\u0322\u031e\3\2\2\2\u0322\u0320\3\2\2\2\u0323"+
+ "\u0327\3\2\2\2\u0324\u0326\5\u00be_\2\u0325\u0324\3\2\2\2\u0326\u0329"+
+ "\3\2\2\2\u0327\u0325\3\2\2\2\u0327\u0328\3\2\2\2\u0328\u032a\3\2\2\2\u0329"+
+ "\u0327\3\2\2\2\u032a\u032c\7\60\2\2\u032b\u032d\5\u00be_\2\u032c\u032b"+
+ "\3\2\2\2\u032d\u032e\3\2\2\2\u032e\u032c\3\2\2\2\u032e\u032f\3\2\2\2\u032f"+
+ "\u00b1\3\2\2\2\u0330\u0332\5\u00c0`\2\u0331\u0330\3\2\2\2\u0332\u0335"+
+ "\3\2\2\2\u0333\u0331\3\2\2\2\u0333\u0334\3\2\2\2\u0334\u0336\3\2\2\2\u0335"+
+ "\u0333\3\2\2\2\u0336\u0338\7\60\2\2\u0337\u0339\5\u00c0`\2\u0338\u0337"+
+ "\3\2\2\2\u0339\u033a\3\2\2\2\u033a\u0338\3\2\2\2\u033a\u033b\3\2\2\2\u033b"+
+ "\u00b3\3\2\2\2\u033c\u0342\7&\2\2\u033d\u033e\7\62\2\2\u033e\u0342\7z"+
+ "\2\2\u033f\u0340\7\62\2\2\u0340\u0342\7Z\2\2\u0341\u033c\3\2\2\2\u0341"+
+ "\u033d\3\2\2\2\u0341\u033f\3\2\2\2\u0342\u0346\3\2\2\2\u0343\u0345\5\u00c2"+
+ "a\2\u0344\u0343\3\2\2\2\u0345\u0348\3\2\2\2\u0346\u0344\3\2\2\2\u0346"+
+ "\u0347\3\2\2\2\u0347\u0349\3\2\2\2\u0348\u0346\3\2\2\2\u0349\u034b\7\60"+
+ "\2\2\u034a\u034c\5\u00c2a\2\u034b\u034a\3\2\2\2\u034c\u034d\3\2\2\2\u034d"+
+ "\u034b\3\2\2\2\u034d\u034e\3\2\2\2\u034e\u00b5\3\2\2\2\u034f\u0353\5\u00ba"+
+ "]\2\u0350\u0353\5\u00bc^\2\u0351\u0353\5\u00b8\\\2\u0352\u034f\3\2\2\2"+
+ "\u0352\u0350\3\2\2\2\u0352\u0351\3\2\2\2\u0353\u0357\3\2\2\2\u0354\u0355"+
+ "\t\b\2\2\u0355\u0358\t\t\2\2\u0356\u0358\7n\2\2\u0357\u0354\3\2\2\2\u0357"+
+ "\u0356\3\2\2\2\u0357\u0358\3\2\2\2\u0358\u00b7\3\2\2\2\u0359\u035a\7\62"+
+ "\2\2\u035a\u035c\t\n\2\2\u035b\u035d\5\u00be_\2\u035c\u035b\3\2\2\2\u035d"+
+ "\u035e\3\2\2\2\u035e\u035c\3\2\2\2\u035e\u035f\3\2\2\2\u035f\u0367\3\2"+
+ "\2\2\u0360\u0362\7\'\2\2\u0361\u0363\5\u00be_\2\u0362\u0361\3\2\2\2\u0363"+
+ "\u0364\3\2\2\2\u0364\u0362\3\2\2\2\u0364\u0365\3\2\2\2\u0365\u0367\3\2"+
+ "\2\2\u0366\u0359\3\2\2\2\u0366\u0360\3\2\2\2\u0367\u00b9\3\2\2\2\u0368"+
+ "\u036a\5\u00c0`\2\u0369\u0368\3\2\2\2\u036a\u036b\3\2\2\2\u036b\u0369"+
+ "\3\2\2\2\u036b\u036c\3\2\2\2\u036c\u00bb\3\2\2\2\u036d\u0373\7&\2\2\u036e"+
+ "\u036f\7\62\2\2\u036f\u0373\7z\2\2\u0370\u0371\7\62\2\2\u0371\u0373\7"+
+ "Z\2\2\u0372\u036d\3\2\2\2\u0372\u036e\3\2\2\2\u0372\u0370\3\2\2\2\u0373"+
+ "\u0375\3\2\2\2\u0374\u0376\5\u00c2a\2\u0375\u0374\3\2\2\2\u0376\u0377"+
+ "\3\2\2\2\u0377\u0375\3\2\2\2\u0377\u0378\3\2\2\2\u0378\u00bd\3\2\2\2\u0379"+
+ "\u037a\t\13\2\2\u037a\u00bf\3\2\2\2\u037b\u037c\t\f\2\2\u037c\u00c1\3"+
+ "\2\2\2\u037d\u037e\t\r\2\2\u037e\u00c3\3\2\2\2\u037f\u0383\5\u00c6c\2"+
+ "\u0380\u0382\5\u00c8d\2\u0381\u0380\3\2\2\2\u0382\u0385\3\2\2\2\u0383"+
+ "\u0381\3\2\2\2\u0383\u0384\3\2\2\2\u0384\u0386\3\2\2\2\u0385\u0383\3\2"+
+ "\2\2\u0386\u0387\bb\6\2\u0387\u00c5\3\2\2\2\u0388\u0389\t\16\2\2\u0389"+
+ "\u00c7\3\2\2\2\u038a\u038b\t\17\2\2\u038b\u00c9\3\2\2\2\u038c\u038e\t"+
+ "\20\2\2\u038d\u038c\3\2\2\2\u038e\u038f\3\2\2\2\u038f\u038d\3\2\2\2\u038f"+
+ "\u0390\3\2\2\2\u0390\u0391\3\2\2\2\u0391\u0392\be\7\2\u0392\u00cb\3\2"+
+ "\2\2\u0393\u0394\7\61\2\2\u0394\u0395\7\61\2\2\u0395\u0399\3\2\2\2\u0396"+
+ "\u0398\n\21\2\2\u0397\u0396\3\2\2\2\u0398\u039b\3\2\2\2\u0399\u0397\3"+
+ "\2\2\2\u0399\u039a\3\2\2\2\u039a\u039c\3\2\2\2\u039b\u0399\3\2\2\2\u039c"+
+ "\u039d\bf\b\2\u039d\u00cd\3\2\2\2\u039e\u039f\7\61\2\2\u039f\u03a0\7,"+
+ "\2\2\u03a0\u03a4\3\2\2\2\u03a1\u03a3\13\2\2\2\u03a2\u03a1\3\2\2\2\u03a3"+
+ "\u03a6\3\2\2\2\u03a4\u03a5\3\2\2\2\u03a4\u03a2\3\2\2\2\u03a5\u03a7\3\2"+
+ "\2\2\u03a6\u03a4\3\2\2\2\u03a7\u03a8\7,\2\2\u03a8\u03a9\7\61\2\2\u03a9"+
+ "\u03aa\3\2\2\2\u03aa\u03ab\bg\b\2\u03ab\u00cf\3\2\2\2\u03ac\u03ad\7\60"+
+ "\2\2\u03ad\u03ae\7d\2\2\u03ae\u03af\7{\2\2\u03af\u03b0\7v\2\2\u03b0\u03b1"+
+ "\7g\2\2\u03b1\u00d1\3\2\2\2\u03b2\u03b3\7d\2\2\u03b3\u03b4\7t\2\2\u03b4"+
+ "\u0491\7m\2\2\u03b5\u03b6\7q\2\2\u03b6\u03b7\7t\2\2\u03b7\u0491\7c\2\2"+
+ "\u03b8\u03b9\7m\2\2\u03b9\u03ba\7k\2\2\u03ba\u0491\7n\2\2\u03bb\u03bc"+
+ "\7u\2\2\u03bc\u03bd\7n\2\2\u03bd\u0491\7q\2\2\u03be\u03bf\7p\2\2\u03bf"+
+ "\u03c0\7q\2\2\u03c0\u0491\7r\2\2\u03c1\u03c2\7c\2\2\u03c2\u03c3\7u\2\2"+
+ "\u03c3\u0491\7n\2\2\u03c4\u03c5\7r\2\2\u03c5\u03c6\7j\2\2\u03c6\u0491"+
+ "\7r\2\2\u03c7\u03c8\7c\2\2\u03c8\u03c9\7p\2\2\u03c9\u0491\7e\2\2\u03ca"+
+ "\u03cb\7d\2\2\u03cb\u03cc\7r\2\2\u03cc\u0491\7n\2\2\u03cd\u03ce\7e\2\2"+
+ "\u03ce\u03cf\7n\2\2\u03cf\u0491\7e\2\2\u03d0\u03d1\7l\2\2\u03d1\u03d2"+
+ "\7u\2\2\u03d2\u0491\7t\2\2\u03d3\u03d4\7c\2\2\u03d4\u03d5\7p\2\2\u03d5"+
+ "\u0491\7f\2\2\u03d6\u03d7\7t\2\2\u03d7\u03d8\7n\2\2\u03d8\u0491\7c\2\2"+
+ "\u03d9\u03da\7d\2\2\u03da\u03db\7k\2\2\u03db\u0491\7v\2\2\u03dc\u03dd"+
+ "\7t\2\2\u03dd\u03de\7q\2\2\u03de\u0491\7n\2\2\u03df\u03e0\7r\2\2\u03e0"+
+ "\u03e1\7n\2\2\u03e1\u0491\7c\2\2\u03e2\u03e3\7r\2\2\u03e3\u03e4\7n\2\2"+
+ "\u03e4\u0491\7r\2\2\u03e5\u03e6\7d\2\2\u03e6\u03e7\7o\2\2\u03e7\u0491"+
+ "\7k\2\2\u03e8\u03e9\7u\2\2\u03e9\u03ea\7g\2\2\u03ea\u0491\7e\2\2\u03eb"+
+ "\u03ec\7t\2\2\u03ec\u03ed\7v\2\2\u03ed\u0491\7k\2\2\u03ee\u03ef\7g\2\2"+
+ "\u03ef\u03f0\7q\2\2\u03f0\u0491\7t\2\2\u03f1\u03f2\7u\2\2\u03f2\u03f3"+
+ "\7t\2\2\u03f3\u0491\7g\2\2\u03f4\u03f5\7n\2\2\u03f5\u03f6\7u\2\2\u03f6"+
+ "\u0491\7t\2\2\u03f7\u03f8\7r\2\2\u03f8\u03f9\7j\2\2\u03f9\u0491\7c\2\2"+
+ "\u03fa\u03fb\7c\2\2\u03fb\u03fc\7n\2\2\u03fc\u0491\7t\2\2\u03fd\u03fe"+
+ "\7l\2\2\u03fe\u03ff\7o\2\2\u03ff\u0491\7r\2\2\u0400\u0401\7d\2\2\u0401"+
+ "\u0402\7x\2\2\u0402\u0491\7e\2\2\u0403\u0404\7e\2\2\u0404\u0405\7n\2\2"+
+ "\u0405\u0491\7k\2\2\u0406\u0407\7t\2\2\u0407\u0408\7v\2\2\u0408\u0491"+
+ "\7u\2\2\u0409\u040a\7c\2\2\u040a\u040b\7f\2\2\u040b\u0491\7e\2\2\u040c"+
+ "\u040d\7t\2\2\u040d\u040e\7t\2\2\u040e\u0491\7c\2\2\u040f\u0410\7d\2\2"+
+ "\u0410\u0411\7x\2\2\u0411\u0491\7u\2\2\u0412\u0413\7u\2\2\u0413\u0414"+
+ "\7g\2\2\u0414\u0491\7k\2\2\u0415\u0416\7u\2\2\u0416\u0417\7c\2\2\u0417"+
+ "\u0491\7z\2\2\u0418\u0419\7u\2\2\u0419\u041a\7v\2\2\u041a\u0491\7{\2\2"+
+ "\u041b\u041c\7u\2\2\u041c\u041d\7v\2\2\u041d\u0491\7c\2\2\u041e\u041f"+
+ "\7u\2\2\u041f\u0420\7v\2\2\u0420\u0491\7z\2\2\u0421\u0422\7f\2\2\u0422"+
+ "\u0423\7g\2\2\u0423\u0491\7{\2\2\u0424\u0425\7v\2\2\u0425\u0426\7z\2\2"+
+ "\u0426\u0491\7c\2\2\u0427\u0428\7z\2\2\u0428\u0429\7c\2\2\u0429\u0491"+
+ "\7c\2\2\u042a\u042b\7d\2\2\u042b\u042c\7e\2\2\u042c\u0491\7e\2\2\u042d"+
+ "\u042e\7c\2\2\u042e\u042f\7j\2\2\u042f\u0491\7z\2\2\u0430\u0431\7v\2\2"+
+ "\u0431\u0432\7{\2\2\u0432\u0491\7c\2\2\u0433\u0434\7v\2\2\u0434\u0435"+
+ "\7z\2\2\u0435\u0491\7u\2\2\u0436\u0437\7v\2\2\u0437\u0438\7c\2\2\u0438"+
+ "\u0491\7u\2\2\u0439\u043a\7u\2\2\u043a\u043b\7j\2\2\u043b\u0491\7{\2\2"+
+ "\u043c\u043d\7u\2\2\u043d\u043e\7j\2\2\u043e\u0491\7z\2\2\u043f\u0440"+
+ "\7n\2\2\u0440\u0441\7f\2\2\u0441\u0491\7{\2\2\u0442\u0443\7n\2\2\u0443"+
+ "\u0444\7f\2\2\u0444\u0491\7c\2\2\u0445\u0446\7n\2\2\u0446\u0447\7f\2\2"+
+ "\u0447\u0491\7z\2\2\u0448\u0449\7n\2\2\u0449\u044a\7c\2\2\u044a\u0491"+
+ "\7z\2\2\u044b\u044c\7v\2\2\u044c\u044d\7c\2\2\u044d\u0491\7{\2\2\u044e"+
+ "\u044f\7v\2\2\u044f\u0450\7c\2\2\u0450\u0491\7z\2\2\u0451\u0452\7d\2\2"+
+ "\u0452\u0453\7e\2\2\u0453\u0491\7u\2\2\u0454\u0455\7e\2\2\u0455\u0456"+
+ "\7n\2\2\u0456\u0491\7x\2\2\u0457\u0458\7v\2\2\u0458\u0459\7u\2\2\u0459"+
+ "\u0491\7z\2\2\u045a\u045b\7n\2\2\u045b\u045c\7c\2\2\u045c\u0491\7u\2\2"+
+ "\u045d\u045e\7e\2\2\u045e\u045f\7r\2\2\u045f\u0491\7{\2\2\u0460\u0461"+
+ "\7e\2\2\u0461\u0462\7o\2\2\u0462\u0491\7r\2\2\u0463\u0464\7e\2\2\u0464"+
+ "\u0465\7r\2\2\u0465\u0491\7z\2\2\u0466\u0467\7f\2\2\u0467\u0468\7e\2\2"+
+ "\u0468\u0491\7r\2\2\u0469\u046a\7f\2\2\u046a\u046b\7g\2\2\u046b\u0491"+
+ "\7e\2\2\u046c\u046d\7k\2\2\u046d\u046e\7p\2\2\u046e\u0491\7e\2\2\u046f"+
+ "\u0470\7c\2\2\u0470\u0471\7z\2\2\u0471\u0491\7u\2\2\u0472\u0473\7d\2\2"+
+ "\u0473\u0474\7p\2\2\u0474\u0491\7g\2\2\u0475\u0476\7e\2\2\u0476\u0477"+
+ "\7n\2\2\u0477\u0491\7f\2\2\u0478\u0479\7u\2\2\u0479\u047a\7d\2\2\u047a"+
+ "\u0491\7e\2\2\u047b\u047c\7k\2\2\u047c\u047d\7u\2\2\u047d\u0491\7e\2\2"+
+ "\u047e\u047f\7k\2\2\u047f\u0480\7p\2\2\u0480\u0491\7z\2\2\u0481\u0482"+
+ "\7d\2\2\u0482\u0483\7g\2\2\u0483\u0491\7s\2\2\u0484\u0485\7u\2\2\u0485"+
+ "\u0486\7g\2\2\u0486\u0491\7f\2\2\u0487\u0488\7f\2\2\u0488\u0489\7g\2\2"+
+ "\u0489\u0491\7z\2\2\u048a\u048b\7k\2\2\u048b\u048c\7p\2\2\u048c\u0491"+
+ "\7{\2\2\u048d\u048e\7t\2\2\u048e\u048f\7q\2\2\u048f\u0491\7t\2\2\u0490"+
+ "\u03b2\3\2\2\2\u0490\u03b5\3\2\2\2\u0490\u03b8\3\2\2\2\u0490\u03bb\3\2"+
+ "\2\2\u0490\u03be\3\2\2\2\u0490\u03c1\3\2\2\2\u0490\u03c4\3\2\2\2\u0490"+
+ "\u03c7\3\2\2\2\u0490\u03ca\3\2\2\2\u0490\u03cd\3\2\2\2\u0490\u03d0\3\2"+
+ "\2\2\u0490\u03d3\3\2\2\2\u0490\u03d6\3\2\2\2\u0490\u03d9\3\2\2\2\u0490"+
+ "\u03dc\3\2\2\2\u0490\u03df\3\2\2\2\u0490\u03e2\3\2\2\2\u0490\u03e5\3\2"+
+ "\2\2\u0490\u03e8\3\2\2\2\u0490\u03eb\3\2\2\2\u0490\u03ee\3\2\2\2\u0490"+
+ "\u03f1\3\2\2\2\u0490\u03f4\3\2\2\2\u0490\u03f7\3\2\2\2\u0490\u03fa\3\2"+
+ "\2\2\u0490\u03fd\3\2\2\2\u0490\u0400\3\2\2\2\u0490\u0403\3\2\2\2\u0490"+
+ "\u0406\3\2\2\2\u0490\u0409\3\2\2\2\u0490\u040c\3\2\2\2\u0490\u040f\3\2"+
+ "\2\2\u0490\u0412\3\2\2\2\u0490\u0415\3\2\2\2\u0490\u0418\3\2\2\2\u0490"+
+ "\u041b\3\2\2\2\u0490\u041e\3\2\2\2\u0490\u0421\3\2\2\2\u0490\u0424\3\2"+
+ "\2\2\u0490\u0427\3\2\2\2\u0490\u042a\3\2\2\2\u0490\u042d\3\2\2\2\u0490"+
+ "\u0430\3\2\2\2\u0490\u0433\3\2\2\2\u0490\u0436\3\2\2\2\u0490\u0439\3\2"+
+ "\2\2\u0490\u043c\3\2\2\2\u0490\u043f\3\2\2\2\u0490\u0442\3\2\2\2\u0490"+
+ "\u0445\3\2\2\2\u0490\u0448\3\2\2\2\u0490\u044b\3\2\2\2\u0490\u044e\3\2"+
+ "\2\2\u0490\u0451\3\2\2\2\u0490\u0454\3\2\2\2\u0490\u0457\3\2\2\2\u0490"+
+ "\u045a\3\2\2\2\u0490\u045d\3\2\2\2\u0490\u0460\3\2\2\2\u0490\u0463\3\2"+
+ "\2\2\u0490\u0466\3\2\2\2\u0490\u0469\3\2\2\2\u0490\u046c\3\2\2\2\u0490"+
+ "\u046f\3\2\2\2\u0490\u0472\3\2\2\2\u0490\u0475\3\2\2\2\u0490\u0478\3\2"+
+ "\2\2\u0490\u047b\3\2\2\2\u0490\u047e\3\2\2\2\u0490\u0481\3\2\2\2\u0490"+
+ "\u0484\3\2\2\2\u0490\u0487\3\2\2\2\u0490\u048a\3\2\2\2\u0490\u048d\3\2"+
+ "\2\2\u0491\u00d3\3\2\2\2\u0492\u0493\7%\2\2\u0493\u00d5\3\2\2\2\u0494"+
+ "\u0495\7<\2\2\u0495\u00d7\3\2\2\2\u0496\u0497\7.\2\2\u0497\u00d9\3\2\2"+
+ "\2\u0498\u0499\7*\2\2\u0499\u00db\3\2\2\2\u049a\u049b\7+\2\2\u049b\u00dd"+
+ "\3\2\2\2\u049c\u049d\7]\2\2\u049d\u00df\3\2\2\2\u049e\u049f\7_\2\2\u049f"+
+ "\u00e1\3\2\2\2\u04a0\u04a1\7\60\2\2\u04a1\u00e3\3\2\2\2\u04a2\u04a3\7"+
+ ">\2\2\u04a3\u04a4\7>\2\2\u04a4\u00e5\3\2\2\2\u04a5\u04a6\7@\2\2\u04a6"+
+ "\u04a7\7@\2\2\u04a7\u00e7\3\2\2\2\u04a8\u04a9\7-\2\2\u04a9\u00e9\3\2\2"+
+ "\2\u04aa\u04ab\7/\2\2\u04ab\u00eb\3\2\2\2\u04ac\u04ad\7>\2\2\u04ad\u00ed"+
+ "\3\2\2\2\u04ae\u04af\7@\2\2\u04af\u00ef\3\2\2\2\u04b0\u04b1\7,\2\2\u04b1"+
+ "\u00f1\3\2\2\2\u04b2\u04b3\7\61\2\2\u04b3\u00f3\3\2\2\2\u04b4\u04b5\7"+
+ "}\2\2\u04b5\u04b6\bz\t\2\u04b6\u00f5\3\2\2\2\u04b7\u04b8\7\177\2\2\u04b8"+
+ "\u04b9\b{\n\2\u04b9\u00f7\3\2\2\2\u04ba\u04bd\5\u00fa}\2\u04bb\u04bd\5"+
+ "\u0102\u0081\2\u04bc\u04ba\3\2\2\2\u04bc\u04bb\3\2\2\2\u04bd\u00f9\3\2"+
+ "\2\2\u04be\u04c2\5\u00fc~\2\u04bf\u04c2\5\u00fe\177\2\u04c0\u04c2\5\u0100"+
+ "\u0080\2\u04c1\u04be\3\2\2\2\u04c1\u04bf\3\2\2\2\u04c1\u04c0\3\2\2\2\u04c2"+
+ "\u00fb\3\2\2\2\u04c3\u04c7\7\'\2\2\u04c4\u04c6\5\u010a\u0085\2\u04c5\u04c4"+
+ "\3\2\2\2\u04c6\u04c9\3\2\2\2\u04c7\u04c5\3\2\2\2\u04c7\u04c8\3\2\2\2\u04c8"+
+ "\u04ca\3\2\2\2\u04c9\u04c7\3\2\2\2\u04ca\u04cc\7\60\2\2\u04cb\u04cd\5"+
+ "\u010a\u0085\2\u04cc\u04cb\3\2\2\2\u04cd\u04ce\3\2\2\2\u04ce\u04cc\3\2"+
+ "\2\2\u04ce\u04cf\3\2\2\2\u04cf\u00fd\3\2\2\2\u04d0\u04d2\5\u010c\u0086"+
+ "\2\u04d1\u04d0\3\2\2\2\u04d2\u04d5\3\2\2\2\u04d3\u04d1\3\2\2\2\u04d3\u04d4"+
+ "\3\2\2\2\u04d4\u04d6\3\2\2\2\u04d5\u04d3\3\2\2\2\u04d6\u04d8\7\60\2\2"+
+ "\u04d7\u04d9\5\u010c\u0086\2\u04d8\u04d7\3\2\2\2\u04d9\u04da\3\2\2\2\u04da"+
+ "\u04d8\3\2\2\2\u04da\u04db\3\2\2\2\u04db\u00ff\3\2\2\2\u04dc\u04e0\7&"+
+ "\2\2\u04dd\u04df\5\u010e\u0087\2\u04de\u04dd\3\2\2\2\u04df\u04e2\3\2\2"+
+ "\2\u04e0\u04de\3\2\2\2\u04e0\u04e1\3\2\2\2\u04e1\u04e3\3\2\2\2\u04e2\u04e0"+
+ "\3\2\2\2\u04e3\u04e5\7\60\2\2\u04e4\u04e6\5\u010e\u0087\2\u04e5\u04e4"+
+ "\3\2\2\2\u04e6\u04e7\3\2\2\2\u04e7\u04e5\3\2\2\2\u04e7\u04e8\3\2\2\2\u04e8"+
+ "\u0101\3\2\2\2\u04e9\u04ed\5\u0106\u0083\2\u04ea\u04ed\5\u0108\u0084\2"+
+ "\u04eb\u04ed\5\u0104\u0082\2\u04ec\u04e9\3\2\2\2\u04ec\u04ea\3\2\2\2\u04ec"+
+ "\u04eb\3\2\2\2\u04ed\u0103\3\2\2\2\u04ee\u04f0\7\'\2\2\u04ef\u04f1\5\u010a"+
+ "\u0085\2\u04f0\u04ef\3\2\2\2\u04f1\u04f2\3\2\2\2\u04f2\u04f0\3\2\2\2\u04f2"+
+ "\u04f3\3\2\2\2\u04f3\u0105\3\2\2\2\u04f4\u04f6\5\u010c\u0086\2\u04f5\u04f4"+
"\3\2\2\2\u04f6\u04f7\3\2\2\2\u04f7\u04f5\3\2\2\2\u04f7\u04f8\3\2\2\2\u04f8"+
- "\u0107\3\2\2\2\u04f9\u04fa\t\13\2\2\u04fa\u0109\3\2\2\2\u04fb\u04fc\t"+
- "\f\2\2\u04fc\u010b\3\2\2\2\u04fd\u04fe\t\r\2\2\u04fe\u010d\3\2\2\2\u04ff"+
- "\u0503\7)\2\2\u0500\u0501\7^\2\2\u0501\u0504\t\6\2\2\u0502\u0504\n\7\2"+
- "\2\u0503\u0500\3\2\2\2\u0503\u0502\3\2\2\2\u0504\u0505\3\2\2\2\u0505\u0506"+
- "\7)\2\2\u0506\u010f\3\2\2\2\u0507\u0509\5\u0112\u0089\2\u0508\u050a\t"+
- "\22\2\2\u0509\u0508\3\2\2\2\u050a\u050b\3\2\2\2\u050b\u0509\3\2\2\2\u050b"+
- "\u050c\3\2\2\2\u050c\u0111\3\2\2\2\u050d\u0511\7#\2\2\u050e\u0510\5\u0118"+
- "\u008c\2\u050f\u050e\3\2\2\2\u0510\u0513\3\2\2\2\u0511\u050f\3\2\2\2\u0511"+
- "\u0512\3\2\2\2\u0512\u0113\3\2\2\2\u0513\u0511\3\2\2\2\u0514\u0518\5\u0116"+
- "\u008b\2\u0515\u0517\5\u0118\u008c\2\u0516\u0515\3\2\2\2\u0517\u051a\3"+
- "\2\2\2\u0518\u0516\3\2\2\2\u0518\u0519\3\2\2\2\u0519\u0115\3\2\2\2\u051a"+
- "\u0518\3\2\2\2\u051b\u051c\t\16\2\2\u051c\u0117\3\2\2\2\u051d\u051e\t"+
- "\17\2\2\u051e\u0119\3\2\2\2\u051f\u0521\t\20\2\2\u0520\u051f\3\2\2\2\u0521"+
- "\u0522\3\2\2\2\u0522\u0520\3\2\2\2\u0522\u0523\3\2\2\2\u0523\u0524\3\2"+
- "\2\2\u0524\u0525\b\u008d\7\2\u0525\u011b\3\2\2\2\u0526\u0527\7\61\2\2"+
- "\u0527\u0528\7\61\2\2\u0528\u052c\3\2\2\2\u0529\u052b\n\21\2\2\u052a\u0529"+
- "\3\2\2\2\u052b\u052e\3\2\2\2\u052c\u052a\3\2\2\2\u052c\u052d\3\2\2\2\u052d"+
- "\u052f\3\2\2\2\u052e\u052c\3\2\2\2\u052f\u0530\b\u008e\b\2\u0530\u011d"+
- "\3\2\2\2\u0531\u0532\7\61\2\2\u0532\u0533\7,\2\2\u0533\u0537\3\2\2\2\u0534"+
- "\u0536\13\2\2\2\u0535\u0534\3\2\2\2\u0536\u0539\3\2\2\2\u0537\u0538\3"+
- "\2\2\2\u0537\u0535\3\2\2\2\u0538\u053a\3\2\2\2\u0539\u0537\3\2\2\2\u053a"+
- "\u053b\7,\2\2\u053b\u053c\7\61\2\2\u053c\u053d\3\2\2\2\u053d\u053e\b\u008f"+
- "\b\2\u053e\u011f\3\2\2\2:\2\3\u0189\u02ae\u02d5\u02e0\u02e8\u02f2\u02f4"+
- "\u02f9\u02fd\u02ff\u0302\u030a\u0310\u0315\u031c\u0321\u0328\u032d\u0334"+
- "\u033b\u0340\u0347\u034c\u0351\u0358\u035e\u0360\u0365\u036c\u0371\u037d"+
- "\u0389\u0393\u039e\u048a\u04b6\u04bb\u04c1\u04c8\u04cd\u04d4\u04da\u04e1"+
- "\u04e6\u04ec\u04f1\u04f7\u0503\u050b\u0511\u0518\u0522\u052c\u0537\13"+
- "\3\2\2\3&\3\3A\4\3S\5\3a\6\2\3\2\2\4\2\3y\7\3z\b";
+ "\u0107\3\2\2\2\u04f9\u04fb\7&\2\2\u04fa\u04fc\5\u010e\u0087\2\u04fb\u04fa"+
+ "\3\2\2\2\u04fc\u04fd\3\2\2\2\u04fd\u04fb\3\2\2\2\u04fd\u04fe\3\2\2\2\u04fe"+
+ "\u0109\3\2\2\2\u04ff\u0500\t\13\2\2\u0500\u010b\3\2\2\2\u0501\u0502\t"+
+ "\f\2\2\u0502\u010d\3\2\2\2\u0503\u0504\t\r\2\2\u0504\u010f\3\2\2\2\u0505"+
+ "\u0509\7)\2\2\u0506\u0507\7^\2\2\u0507\u050a\t\6\2\2\u0508\u050a\n\7\2"+
+ "\2\u0509\u0506\3\2\2\2\u0509\u0508\3\2\2\2\u050a\u050b\3\2\2\2\u050b\u050c"+
+ "\7)\2\2\u050c\u0111\3\2\2\2\u050d\u050f\5\u0114\u008a\2\u050e\u0510\t"+
+ "\22\2\2\u050f\u050e\3\2\2\2\u0510\u0511\3\2\2\2\u0511\u050f\3\2\2\2\u0511"+
+ "\u0512\3\2\2\2\u0512\u0113\3\2\2\2\u0513\u0517\7#\2\2\u0514\u0516\5\u011a"+
+ "\u008d\2\u0515\u0514\3\2\2\2\u0516\u0519\3\2\2\2\u0517\u0515\3\2\2\2\u0517"+
+ "\u0518\3\2\2\2\u0518\u0115\3\2\2\2\u0519\u0517\3\2\2\2\u051a\u051e\5\u0118"+
+ "\u008c\2\u051b\u051d\5\u011a\u008d\2\u051c\u051b\3\2\2\2\u051d\u0520\3"+
+ "\2\2\2\u051e\u051c\3\2\2\2\u051e\u051f\3\2\2\2\u051f\u0117\3\2\2\2\u0520"+
+ "\u051e\3\2\2\2\u0521\u0522\t\16\2\2\u0522\u0119\3\2\2\2\u0523\u0524\t"+
+ "\17\2\2\u0524\u011b\3\2\2\2\u0525\u0527\t\20\2\2\u0526\u0525\3\2\2\2\u0527"+
+ "\u0528\3\2\2\2\u0528\u0526\3\2\2\2\u0528\u0529\3\2\2\2\u0529\u052a\3\2"+
+ "\2\2\u052a\u052b\b\u008e\7\2\u052b\u011d\3\2\2\2\u052c\u052d\7\61\2\2"+
+ "\u052d\u052e\7\61\2\2\u052e\u0532\3\2\2\2\u052f\u0531\n\21\2\2\u0530\u052f"+
+ "\3\2\2\2\u0531\u0534\3\2\2\2\u0532\u0530\3\2\2\2\u0532\u0533\3\2\2\2\u0533"+
+ "\u0535\3\2\2\2\u0534\u0532\3\2\2\2\u0535\u0536\b\u008f\b\2\u0536\u011f"+
+ "\3\2\2\2\u0537\u0538\7\61\2\2\u0538\u0539\7,\2\2\u0539\u053d\3\2\2\2\u053a"+
+ "\u053c\13\2\2\2\u053b\u053a\3\2\2\2\u053c\u053f\3\2\2\2\u053d\u053e\3"+
+ "\2\2\2\u053d\u053b\3\2\2\2\u053e\u0540\3\2\2\2\u053f\u053d\3\2\2\2\u0540"+
+ "\u0541\7,\2\2\u0541\u0542\7\61\2\2\u0542\u0543\3\2\2\2\u0543\u0544\b\u0090"+
+ "\b\2\u0544\u0121\3\2\2\2:\2\3\u018b\u02b4\u02db\u02e6\u02ee\u02f8\u02fa"+
+ "\u02ff\u0303\u0305\u0308\u0310\u0316\u031b\u0322\u0327\u032e\u0333\u033a"+
+ "\u0341\u0346\u034d\u0352\u0357\u035e\u0364\u0366\u036b\u0372\u0377\u0383"+
+ "\u038f\u0399\u03a4\u0490\u04bc\u04c1\u04c7\u04ce\u04d3\u04da\u04e0\u04e7"+
+ "\u04ec\u04f2\u04f7\u04fd\u0509\u0511\u0517\u051e\u0528\u0532\u053d\13"+
+ "\3\2\2\3&\3\3B\4\3T\5\3b\6\2\3\2\2\4\2\3z\7\3{\b";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCLexer.tokens b/src/main/java/dk/camelot64/kickc/parser/KickCLexer.tokens
index c1a5d096f..db1cd5f56 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCLexer.tokens
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCLexer.tokens
@@ -42,95 +42,96 @@ RESERVE=41
PC=42
TARGET=43
LINK=44
-CODESEG=45
-DATASEG=46
-ENCODING=47
-CONST=48
-EXTERN=49
-EXPORT=50
-ALIGN=51
-REGISTER=52
-INLINE=53
-VOLATILE=54
-INTERRUPT=55
-IF=56
-ELSE=57
-WHILE=58
-DO=59
-FOR=60
-SWITCH=61
-RETURN=62
-BREAK=63
-CONTINUE=64
-ASM=65
-DEFAULT=66
-CASE=67
-STRUCT=68
-ENUM=69
-SIZEOF=70
-TYPEID=71
-KICKASM=72
-RESOURCE=73
-USES=74
-CLOBBERS=75
-BYTES=76
-CYCLES=77
-LOGIC_NOT=78
-SIGNEDNESS=79
-SIMPLETYPE=80
-BOOLEAN=81
-KICKASM_BODY=82
-STRING=83
-CHAR=84
-NUMBER=85
-NUMFLOAT=86
-BINFLOAT=87
-DECFLOAT=88
-HEXFLOAT=89
-NUMINT=90
-BININTEGER=91
-DECINTEGER=92
-HEXINTEGER=93
-NAME=94
-WS=95
-COMMENT_LINE=96
-COMMENT_BLOCK=97
-ASM_BYTE=98
-ASM_MNEMONIC=99
-ASM_IMM=100
-ASM_COLON=101
-ASM_COMMA=102
-ASM_PAR_BEGIN=103
-ASM_PAR_END=104
-ASM_BRACKET_BEGIN=105
-ASM_BRACKET_END=106
-ASM_DOT=107
-ASM_SHIFT_LEFT=108
-ASM_SHIFT_RIGHT=109
-ASM_PLUS=110
-ASM_MINUS=111
-ASM_LESS_THAN=112
-ASM_GREATER_THAN=113
-ASM_MULTIPLY=114
-ASM_DIVIDE=115
-ASM_CURLY_BEGIN=116
-ASM_CURLY_END=117
-ASM_NUMBER=118
-ASM_NUMFLOAT=119
-ASM_BINFLOAT=120
-ASM_DECFLOAT=121
-ASM_HEXFLOAT=122
-ASM_NUMINT=123
-ASM_BININTEGER=124
-ASM_DECINTEGER=125
-ASM_HEXINTEGER=126
-ASM_CHAR=127
-ASM_MULTI_REL=128
-ASM_MULTI_NAME=129
-ASM_NAME=130
-ASM_WS=131
-ASM_COMMENT_LINE=132
-ASM_COMMENT_BLOCK=133
+CPU=45
+CODESEG=46
+DATASEG=47
+ENCODING=48
+CONST=49
+EXTERN=50
+EXPORT=51
+ALIGN=52
+REGISTER=53
+INLINE=54
+VOLATILE=55
+INTERRUPT=56
+IF=57
+ELSE=58
+WHILE=59
+DO=60
+FOR=61
+SWITCH=62
+RETURN=63
+BREAK=64
+CONTINUE=65
+ASM=66
+DEFAULT=67
+CASE=68
+STRUCT=69
+ENUM=70
+SIZEOF=71
+TYPEID=72
+KICKASM=73
+RESOURCE=74
+USES=75
+CLOBBERS=76
+BYTES=77
+CYCLES=78
+LOGIC_NOT=79
+SIGNEDNESS=80
+SIMPLETYPE=81
+BOOLEAN=82
+KICKASM_BODY=83
+STRING=84
+CHAR=85
+NUMBER=86
+NUMFLOAT=87
+BINFLOAT=88
+DECFLOAT=89
+HEXFLOAT=90
+NUMINT=91
+BININTEGER=92
+DECINTEGER=93
+HEXINTEGER=94
+NAME=95
+WS=96
+COMMENT_LINE=97
+COMMENT_BLOCK=98
+ASM_BYTE=99
+ASM_MNEMONIC=100
+ASM_IMM=101
+ASM_COLON=102
+ASM_COMMA=103
+ASM_PAR_BEGIN=104
+ASM_PAR_END=105
+ASM_BRACKET_BEGIN=106
+ASM_BRACKET_END=107
+ASM_DOT=108
+ASM_SHIFT_LEFT=109
+ASM_SHIFT_RIGHT=110
+ASM_PLUS=111
+ASM_MINUS=112
+ASM_LESS_THAN=113
+ASM_GREATER_THAN=114
+ASM_MULTIPLY=115
+ASM_DIVIDE=116
+ASM_CURLY_BEGIN=117
+ASM_CURLY_END=118
+ASM_NUMBER=119
+ASM_NUMFLOAT=120
+ASM_BINFLOAT=121
+ASM_DECFLOAT=122
+ASM_HEXFLOAT=123
+ASM_NUMINT=124
+ASM_BININTEGER=125
+ASM_DECINTEGER=126
+ASM_HEXINTEGER=127
+ASM_CHAR=128
+ASM_MULTI_REL=129
+ASM_MULTI_NAME=130
+ASM_NAME=131
+ASM_WS=132
+ASM_COMMENT_LINE=133
+ASM_COMMENT_BLOCK=134
';'=8
'..'=11
'?'=12
@@ -156,39 +157,40 @@ ASM_COMMENT_BLOCK=133
'pc'=42
'target'=43
'link'=44
-'code_seg'=45
-'data_seg'=46
-'encoding'=47
-'const'=48
-'extern'=49
-'export'=50
-'align'=51
-'register'=52
-'inline'=53
-'volatile'=54
-'interrupt'=55
-'if'=56
-'else'=57
-'while'=58
-'do'=59
-'for'=60
-'switch'=61
-'return'=62
-'break'=63
-'continue'=64
-'asm'=65
-'default'=66
-'case'=67
-'struct'=68
-'enum'=69
-'sizeof'=70
-'typeid'=71
-'kickasm'=72
-'resource'=73
-'uses'=74
-'clobbers'=75
-'bytes'=76
-'cycles'=77
-'!'=78
-'.byte'=98
-'#'=100
+'cpu'=45
+'code_seg'=46
+'data_seg'=47
+'encoding'=48
+'const'=49
+'extern'=50
+'export'=51
+'align'=52
+'register'=53
+'inline'=54
+'volatile'=55
+'interrupt'=56
+'if'=57
+'else'=58
+'while'=59
+'do'=60
+'for'=61
+'switch'=62
+'return'=63
+'break'=64
+'continue'=65
+'asm'=66
+'default'=67
+'case'=68
+'struct'=69
+'enum'=70
+'sizeof'=71
+'typeid'=72
+'kickasm'=73
+'resource'=74
+'uses'=75
+'clobbers'=76
+'bytes'=77
+'cycles'=78
+'!'=79
+'.byte'=99
+'#'=101
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParser.g4 b/src/main/java/dk/camelot64/kickc/parser/KickCParser.g4
index b87f896c3..9b2c14912 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCParser.g4
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCParser.g4
@@ -86,6 +86,7 @@ globalDirective
: (PRAGMA RESERVE) PAR_BEGIN NUMBER ( COMMA NUMBER )* PAR_END #globalDirectiveReserve
| (PRAGMA PC) PAR_BEGIN NUMBER PAR_END #globalDirectivePc
| (PRAGMA TARGET) PAR_BEGIN NAME PAR_END #globalDirectivePlatform
+ | (PRAGMA CPU) PAR_BEGIN NAME PAR_END #globalDirectiveCpu
| (PRAGMA LINK) PAR_BEGIN STRING PAR_END #globalDirectiveLinkScript
| (PRAGMA CODESEG) PAR_BEGIN NAME PAR_END #globalDirectiveCodeSeg
| (PRAGMA DATASEG) PAR_BEGIN NAME PAR_END #globalDirectiveDataSeg
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParser.java b/src/main/java/dk/camelot64/kickc/parser/KickCParser.java
index 164bd4ebb..13c25b9c7 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCParser.java
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCParser.java
@@ -26,23 +26,23 @@ public class KickCParser extends Parser {
SHIFT_RIGHT=27, EQUAL=28, NOT_EQUAL=29, LESS_THAN=30, LESS_THAN_EQUAL=31,
GREATER_THAN_EQUAL=32, GREATER_THAN=33, LOGIC_AND=34, LOGIC_OR=35, ASSIGN=36,
ASSIGN_COMPOUND=37, IMPORT=38, TYPEDEF=39, PRAGMA=40, RESERVE=41, PC=42,
- TARGET=43, LINK=44, CODESEG=45, DATASEG=46, ENCODING=47, CONST=48, EXTERN=49,
- EXPORT=50, ALIGN=51, REGISTER=52, INLINE=53, VOLATILE=54, INTERRUPT=55,
- IF=56, ELSE=57, WHILE=58, DO=59, FOR=60, SWITCH=61, RETURN=62, BREAK=63,
- CONTINUE=64, ASM=65, DEFAULT=66, CASE=67, STRUCT=68, ENUM=69, SIZEOF=70,
- TYPEID=71, KICKASM=72, RESOURCE=73, USES=74, CLOBBERS=75, BYTES=76, CYCLES=77,
- LOGIC_NOT=78, SIGNEDNESS=79, SIMPLETYPE=80, BOOLEAN=81, KICKASM_BODY=82,
- STRING=83, CHAR=84, NUMBER=85, NUMFLOAT=86, BINFLOAT=87, DECFLOAT=88,
- HEXFLOAT=89, NUMINT=90, BININTEGER=91, DECINTEGER=92, HEXINTEGER=93, NAME=94,
- WS=95, COMMENT_LINE=96, COMMENT_BLOCK=97, ASM_BYTE=98, ASM_MNEMONIC=99,
- ASM_IMM=100, ASM_COLON=101, ASM_COMMA=102, ASM_PAR_BEGIN=103, ASM_PAR_END=104,
- ASM_BRACKET_BEGIN=105, ASM_BRACKET_END=106, ASM_DOT=107, ASM_SHIFT_LEFT=108,
- ASM_SHIFT_RIGHT=109, ASM_PLUS=110, ASM_MINUS=111, ASM_LESS_THAN=112, ASM_GREATER_THAN=113,
- ASM_MULTIPLY=114, ASM_DIVIDE=115, ASM_CURLY_BEGIN=116, ASM_CURLY_END=117,
- ASM_NUMBER=118, ASM_NUMFLOAT=119, ASM_BINFLOAT=120, ASM_DECFLOAT=121,
- ASM_HEXFLOAT=122, ASM_NUMINT=123, ASM_BININTEGER=124, ASM_DECINTEGER=125,
- ASM_HEXINTEGER=126, ASM_CHAR=127, ASM_MULTI_REL=128, ASM_MULTI_NAME=129,
- ASM_NAME=130, ASM_WS=131, ASM_COMMENT_LINE=132, ASM_COMMENT_BLOCK=133;
+ TARGET=43, LINK=44, CPU=45, CODESEG=46, DATASEG=47, ENCODING=48, CONST=49,
+ EXTERN=50, EXPORT=51, ALIGN=52, REGISTER=53, INLINE=54, VOLATILE=55, INTERRUPT=56,
+ IF=57, ELSE=58, WHILE=59, DO=60, FOR=61, SWITCH=62, RETURN=63, BREAK=64,
+ CONTINUE=65, ASM=66, DEFAULT=67, CASE=68, STRUCT=69, ENUM=70, SIZEOF=71,
+ TYPEID=72, KICKASM=73, RESOURCE=74, USES=75, CLOBBERS=76, BYTES=77, CYCLES=78,
+ LOGIC_NOT=79, SIGNEDNESS=80, SIMPLETYPE=81, BOOLEAN=82, KICKASM_BODY=83,
+ STRING=84, CHAR=85, NUMBER=86, NUMFLOAT=87, BINFLOAT=88, DECFLOAT=89,
+ HEXFLOAT=90, NUMINT=91, BININTEGER=92, DECINTEGER=93, HEXINTEGER=94, NAME=95,
+ WS=96, COMMENT_LINE=97, COMMENT_BLOCK=98, ASM_BYTE=99, ASM_MNEMONIC=100,
+ ASM_IMM=101, ASM_COLON=102, ASM_COMMA=103, ASM_PAR_BEGIN=104, ASM_PAR_END=105,
+ ASM_BRACKET_BEGIN=106, ASM_BRACKET_END=107, ASM_DOT=108, ASM_SHIFT_LEFT=109,
+ ASM_SHIFT_RIGHT=110, ASM_PLUS=111, ASM_MINUS=112, ASM_LESS_THAN=113, ASM_GREATER_THAN=114,
+ ASM_MULTIPLY=115, ASM_DIVIDE=116, ASM_CURLY_BEGIN=117, ASM_CURLY_END=118,
+ ASM_NUMBER=119, ASM_NUMFLOAT=120, ASM_BINFLOAT=121, ASM_DECFLOAT=122,
+ ASM_HEXFLOAT=123, ASM_NUMINT=124, ASM_BININTEGER=125, ASM_DECINTEGER=126,
+ ASM_HEXINTEGER=127, ASM_CHAR=128, ASM_MULTI_REL=129, ASM_MULTI_NAME=130,
+ ASM_NAME=131, ASM_WS=132, ASM_COMMENT_LINE=133, ASM_COMMENT_BLOCK=134;
public static final int
RULE_file = 0, RULE_asmFile = 1, RULE_declSeq = 2, RULE_declOrImport = 3,
RULE_importDecl = 4, RULE_decl = 5, RULE_typeDef = 6, RULE_declTypes = 7,
@@ -72,7 +72,7 @@ public class KickCParser extends Parser {
"'?'", null, "'->'", null, null, null, null, "'%'", "'++'", "'--'", "'&'",
"'~'", "'^'", "'|'", null, null, "'=='", "'!='", null, "'<='", "'>='",
null, "'&&'", "'||'", "'='", null, "'import'", "'typedef'", "'#pragma'",
- "'reserve'", "'pc'", "'target'", "'link'", "'code_seg'", "'data_seg'",
+ "'reserve'", "'pc'", "'target'", "'link'", "'cpu'", "'code_seg'", "'data_seg'",
"'encoding'", "'const'", "'extern'", "'export'", "'align'", "'register'",
"'inline'", "'volatile'", "'interrupt'", "'if'", "'else'", "'while'",
"'do'", "'for'", "'switch'", "'return'", "'break'", "'continue'", "'asm'",
@@ -88,16 +88,16 @@ public class KickCParser extends Parser {
"DEC", "AND", "BIT_NOT", "BIT_XOR", "BIT_OR", "SHIFT_LEFT", "SHIFT_RIGHT",
"EQUAL", "NOT_EQUAL", "LESS_THAN", "LESS_THAN_EQUAL", "GREATER_THAN_EQUAL",
"GREATER_THAN", "LOGIC_AND", "LOGIC_OR", "ASSIGN", "ASSIGN_COMPOUND",
- "IMPORT", "TYPEDEF", "PRAGMA", "RESERVE", "PC", "TARGET", "LINK", "CODESEG",
- "DATASEG", "ENCODING", "CONST", "EXTERN", "EXPORT", "ALIGN", "REGISTER",
- "INLINE", "VOLATILE", "INTERRUPT", "IF", "ELSE", "WHILE", "DO", "FOR",
- "SWITCH", "RETURN", "BREAK", "CONTINUE", "ASM", "DEFAULT", "CASE", "STRUCT",
- "ENUM", "SIZEOF", "TYPEID", "KICKASM", "RESOURCE", "USES", "CLOBBERS",
- "BYTES", "CYCLES", "LOGIC_NOT", "SIGNEDNESS", "SIMPLETYPE", "BOOLEAN",
- "KICKASM_BODY", "STRING", "CHAR", "NUMBER", "NUMFLOAT", "BINFLOAT", "DECFLOAT",
- "HEXFLOAT", "NUMINT", "BININTEGER", "DECINTEGER", "HEXINTEGER", "NAME",
- "WS", "COMMENT_LINE", "COMMENT_BLOCK", "ASM_BYTE", "ASM_MNEMONIC", "ASM_IMM",
- "ASM_COLON", "ASM_COMMA", "ASM_PAR_BEGIN", "ASM_PAR_END", "ASM_BRACKET_BEGIN",
+ "IMPORT", "TYPEDEF", "PRAGMA", "RESERVE", "PC", "TARGET", "LINK", "CPU",
+ "CODESEG", "DATASEG", "ENCODING", "CONST", "EXTERN", "EXPORT", "ALIGN",
+ "REGISTER", "INLINE", "VOLATILE", "INTERRUPT", "IF", "ELSE", "WHILE",
+ "DO", "FOR", "SWITCH", "RETURN", "BREAK", "CONTINUE", "ASM", "DEFAULT",
+ "CASE", "STRUCT", "ENUM", "SIZEOF", "TYPEID", "KICKASM", "RESOURCE", "USES",
+ "CLOBBERS", "BYTES", "CYCLES", "LOGIC_NOT", "SIGNEDNESS", "SIMPLETYPE",
+ "BOOLEAN", "KICKASM_BODY", "STRING", "CHAR", "NUMBER", "NUMFLOAT", "BINFLOAT",
+ "DECFLOAT", "HEXFLOAT", "NUMINT", "BININTEGER", "DECINTEGER", "HEXINTEGER",
+ "NAME", "WS", "COMMENT_LINE", "COMMENT_BLOCK", "ASM_BYTE", "ASM_MNEMONIC",
+ "ASM_IMM", "ASM_COLON", "ASM_COMMA", "ASM_PAR_BEGIN", "ASM_PAR_END", "ASM_BRACKET_BEGIN",
"ASM_BRACKET_END", "ASM_DOT", "ASM_SHIFT_LEFT", "ASM_SHIFT_RIGHT", "ASM_PLUS",
"ASM_MINUS", "ASM_LESS_THAN", "ASM_GREATER_THAN", "ASM_MULTIPLY", "ASM_DIVIDE",
"ASM_CURLY_BEGIN", "ASM_CURLY_END", "ASM_NUMBER", "ASM_NUMFLOAT", "ASM_BINFLOAT",
@@ -293,7 +293,7 @@ public class KickCParser extends Parser {
setState(95);
_errHandler.sync(this);
_la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << IMPORT) | (1L << TYPEDEF) | (1L << PRAGMA) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT))) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (STRUCT - 68)) | (1L << (ENUM - 68)) | (1L << (KICKASM - 68)) | (1L << (SIGNEDNESS - 68)) | (1L << (SIMPLETYPE - 68)))) != 0)) {
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << IMPORT) | (1L << TYPEDEF) | (1L << PRAGMA) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (STRUCT - 69)) | (1L << (ENUM - 69)) | (1L << (KICKASM - 69)) | (1L << (SIGNEDNESS - 69)) | (1L << (SIMPLETYPE - 69)))) != 0)) {
{
{
setState(92);
@@ -977,7 +977,7 @@ public class KickCParser extends Parser {
setState(168);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT))) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (STRUCT - 68)) | (1L << (ENUM - 68)) | (1L << (SIGNEDNESS - 68)) | (1L << (SIMPLETYPE - 68)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (STRUCT - 69)) | (1L << (ENUM - 69)) | (1L << (SIGNEDNESS - 69)) | (1L << (SIMPLETYPE - 69)))) != 0)) {
{
setState(167);
parameterListDecl();
@@ -991,7 +991,7 @@ public class KickCParser extends Parser {
setState(173);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT) | (1L << IF) | (1L << WHILE) | (1L << DO) | (1L << FOR) | (1L << SWITCH) | (1L << RETURN) | (1L << BREAK))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT) | (1L << IF) | (1L << WHILE) | (1L << DO) | (1L << FOR) | (1L << SWITCH) | (1L << RETURN))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BREAK - 64)) | (1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)))) != 0)) {
{
setState(172);
stmtSeq();
@@ -1207,6 +1207,27 @@ public class KickCParser extends Parser {
else return visitor.visitChildren(this);
}
}
+ public static class GlobalDirectiveCpuContext extends GlobalDirectiveContext {
+ public TerminalNode PAR_BEGIN() { return getToken(KickCParser.PAR_BEGIN, 0); }
+ public TerminalNode NAME() { return getToken(KickCParser.NAME, 0); }
+ public TerminalNode PAR_END() { return getToken(KickCParser.PAR_END, 0); }
+ public TerminalNode PRAGMA() { return getToken(KickCParser.PRAGMA, 0); }
+ public TerminalNode CPU() { return getToken(KickCParser.CPU, 0); }
+ public GlobalDirectiveCpuContext(GlobalDirectiveContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof KickCParserListener ) ((KickCParserListener)listener).enterGlobalDirectiveCpu(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof KickCParserListener ) ((KickCParserListener)listener).exitGlobalDirectiveCpu(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof KickCParserVisitor ) return ((KickCParserVisitor extends T>)visitor).visitGlobalDirectiveCpu(this);
+ else return visitor.visitChildren(this);
+ }
+ }
public static class GlobalDirectivePcContext extends GlobalDirectiveContext {
public TerminalNode PAR_BEGIN() { return getToken(KickCParser.PAR_BEGIN, 0); }
public TerminalNode NUMBER() { return getToken(KickCParser.NUMBER, 0); }
@@ -1339,7 +1360,7 @@ public class KickCParser extends Parser {
enterRule(_localctx, 28, RULE_globalDirective);
int _la;
try {
- setState(240);
+ setState(246);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) {
case 1:
@@ -1413,50 +1434,50 @@ public class KickCParser extends Parser {
}
break;
case 4:
- _localctx = new GlobalDirectiveLinkScriptContext(_localctx);
+ _localctx = new GlobalDirectiveCpuContext(_localctx);
enterOuterAlt(_localctx, 4);
{
{
setState(216);
match(PRAGMA);
setState(217);
- match(LINK);
+ match(CPU);
}
setState(219);
match(PAR_BEGIN);
setState(220);
- match(STRING);
+ match(NAME);
setState(221);
match(PAR_END);
}
break;
case 5:
- _localctx = new GlobalDirectiveCodeSegContext(_localctx);
+ _localctx = new GlobalDirectiveLinkScriptContext(_localctx);
enterOuterAlt(_localctx, 5);
{
{
setState(222);
match(PRAGMA);
setState(223);
- match(CODESEG);
+ match(LINK);
}
setState(225);
match(PAR_BEGIN);
setState(226);
- match(NAME);
+ match(STRING);
setState(227);
match(PAR_END);
}
break;
case 6:
- _localctx = new GlobalDirectiveDataSegContext(_localctx);
+ _localctx = new GlobalDirectiveCodeSegContext(_localctx);
enterOuterAlt(_localctx, 6);
{
{
setState(228);
match(PRAGMA);
setState(229);
- match(DATASEG);
+ match(CODESEG);
}
setState(231);
match(PAR_BEGIN);
@@ -1467,14 +1488,14 @@ public class KickCParser extends Parser {
}
break;
case 7:
- _localctx = new GlobalDirectiveEncodingContext(_localctx);
+ _localctx = new GlobalDirectiveDataSegContext(_localctx);
enterOuterAlt(_localctx, 7);
{
{
setState(234);
match(PRAGMA);
setState(235);
- match(ENCODING);
+ match(DATASEG);
}
setState(237);
match(PAR_BEGIN);
@@ -1484,6 +1505,24 @@ public class KickCParser extends Parser {
match(PAR_END);
}
break;
+ case 8:
+ _localctx = new GlobalDirectiveEncodingContext(_localctx);
+ enterOuterAlt(_localctx, 8);
+ {
+ {
+ setState(240);
+ match(PRAGMA);
+ setState(241);
+ match(ENCODING);
+ }
+ setState(243);
+ match(PAR_BEGIN);
+ setState(244);
+ match(NAME);
+ setState(245);
+ match(PAR_END);
+ }
+ break;
}
}
catch (RecognitionException re) {
@@ -1687,14 +1726,14 @@ public class KickCParser extends Parser {
enterRule(_localctx, 30, RULE_directive);
int _la;
try {
- setState(274);
+ setState(280);
_errHandler.sync(this);
switch (_input.LA(1)) {
case CONST:
_localctx = new DirectiveConstContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(242);
+ setState(248);
match(CONST);
}
break;
@@ -1702,7 +1741,7 @@ public class KickCParser extends Parser {
_localctx = new DirectiveExternContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(243);
+ setState(249);
match(EXTERN);
}
break;
@@ -1710,7 +1749,7 @@ public class KickCParser extends Parser {
_localctx = new DirectiveExportContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(244);
+ setState(250);
match(EXPORT);
}
break;
@@ -1718,13 +1757,13 @@ public class KickCParser extends Parser {
_localctx = new DirectiveAlignContext(_localctx);
enterOuterAlt(_localctx, 4);
{
- setState(245);
+ setState(251);
match(ALIGN);
- setState(246);
+ setState(252);
match(PAR_BEGIN);
- setState(247);
+ setState(253);
match(NUMBER);
- setState(248);
+ setState(254);
match(PAR_END);
}
break;
@@ -1732,16 +1771,16 @@ public class KickCParser extends Parser {
_localctx = new DirectiveRegisterContext(_localctx);
enterOuterAlt(_localctx, 5);
{
- setState(249);
+ setState(255);
match(REGISTER);
- setState(253);
+ setState(259);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
case 1:
{
- setState(250);
+ setState(256);
match(PAR_BEGIN);
- setState(251);
+ setState(257);
_la = _input.LA(1);
if ( !(_la==NUMBER || _la==NAME) ) {
_errHandler.recoverInline(this);
@@ -1751,7 +1790,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(252);
+ setState(258);
match(PAR_END);
}
break;
@@ -1762,7 +1801,7 @@ public class KickCParser extends Parser {
_localctx = new DirectiveInlineContext(_localctx);
enterOuterAlt(_localctx, 6);
{
- setState(255);
+ setState(261);
match(INLINE);
}
break;
@@ -1770,7 +1809,7 @@ public class KickCParser extends Parser {
_localctx = new DirectiveVolatileContext(_localctx);
enterOuterAlt(_localctx, 7);
{
- setState(256);
+ setState(262);
match(VOLATILE);
}
break;
@@ -1778,18 +1817,18 @@ public class KickCParser extends Parser {
_localctx = new DirectiveInterruptContext(_localctx);
enterOuterAlt(_localctx, 8);
{
- setState(257);
+ setState(263);
match(INTERRUPT);
- setState(261);
+ setState(267);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
case 1:
{
- setState(258);
+ setState(264);
match(PAR_BEGIN);
- setState(259);
+ setState(265);
match(NAME);
- setState(260);
+ setState(266);
match(PAR_END);
}
break;
@@ -1800,29 +1839,29 @@ public class KickCParser extends Parser {
_localctx = new DirectiveReserveZpContext(_localctx);
enterOuterAlt(_localctx, 9);
{
- setState(263);
+ setState(269);
match(RESERVE);
- setState(264);
- match(PAR_BEGIN);
- setState(265);
- match(NUMBER);
setState(270);
+ match(PAR_BEGIN);
+ setState(271);
+ match(NUMBER);
+ setState(276);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==COMMA) {
{
{
- setState(266);
+ setState(272);
match(COMMA);
- setState(267);
+ setState(273);
match(NUMBER);
}
}
- setState(272);
+ setState(278);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(273);
+ setState(279);
match(PAR_END);
}
break;
@@ -1874,20 +1913,20 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(277);
+ setState(283);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(276);
+ setState(282);
stmt();
}
}
- setState(279);
+ setState(285);
_errHandler.sync(this);
_la = _input.LA(1);
- } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT) | (1L << IF) | (1L << WHILE) | (1L << DO) | (1L << FOR) | (1L << SWITCH) | (1L << RETURN) | (1L << BREAK))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)))) != 0) );
+ } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT) | (1L << IF) | (1L << WHILE) | (1L << DO) | (1L << FOR) | (1L << SWITCH) | (1L << RETURN))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BREAK - 64)) | (1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)))) != 0) );
}
}
catch (RecognitionException re) {
@@ -2225,16 +2264,16 @@ public class KickCParser extends Parser {
enterRule(_localctx, 34, RULE_stmt);
int _la;
try {
- setState(365);
+ setState(371);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
case 1:
_localctx = new StmtDeclVarContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(281);
+ setState(287);
declVariables();
- setState(282);
+ setState(288);
match(SEMICOLON);
}
break;
@@ -2242,19 +2281,19 @@ public class KickCParser extends Parser {
_localctx = new StmtBlockContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(284);
+ setState(290);
match(CURLY_BEGIN);
- setState(286);
+ setState(292);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT) | (1L << IF) | (1L << WHILE) | (1L << DO) | (1L << FOR) | (1L << SWITCH) | (1L << RETURN) | (1L << BREAK))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT) | (1L << IF) | (1L << WHILE) | (1L << DO) | (1L << FOR) | (1L << SWITCH) | (1L << RETURN))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BREAK - 64)) | (1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)))) != 0)) {
{
- setState(285);
+ setState(291);
stmtSeq();
}
}
- setState(288);
+ setState(294);
match(CURLY_END);
}
break;
@@ -2262,9 +2301,9 @@ public class KickCParser extends Parser {
_localctx = new StmtExprContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(289);
+ setState(295);
commaExpr(0);
- setState(290);
+ setState(296);
match(SEMICOLON);
}
break;
@@ -2272,24 +2311,24 @@ public class KickCParser extends Parser {
_localctx = new StmtIfElseContext(_localctx);
enterOuterAlt(_localctx, 4);
{
- setState(292);
+ setState(298);
match(IF);
- setState(293);
- match(PAR_BEGIN);
- setState(294);
- commaExpr(0);
- setState(295);
- match(PAR_END);
- setState(296);
- stmt();
setState(299);
+ match(PAR_BEGIN);
+ setState(300);
+ commaExpr(0);
+ setState(301);
+ match(PAR_END);
+ setState(302);
+ stmt();
+ setState(305);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
case 1:
{
- setState(297);
+ setState(303);
match(ELSE);
- setState(298);
+ setState(304);
stmt();
}
break;
@@ -2300,29 +2339,29 @@ public class KickCParser extends Parser {
_localctx = new StmtWhileContext(_localctx);
enterOuterAlt(_localctx, 5);
{
- setState(304);
+ setState(310);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT))) != 0)) {
{
{
- setState(301);
+ setState(307);
directive();
}
}
- setState(306);
+ setState(312);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(307);
+ setState(313);
match(WHILE);
- setState(308);
+ setState(314);
match(PAR_BEGIN);
- setState(309);
+ setState(315);
commaExpr(0);
- setState(310);
+ setState(316);
match(PAR_END);
- setState(311);
+ setState(317);
stmt();
}
break;
@@ -2330,33 +2369,33 @@ public class KickCParser extends Parser {
_localctx = new StmtDoWhileContext(_localctx);
enterOuterAlt(_localctx, 6);
{
- setState(316);
+ setState(322);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT))) != 0)) {
{
{
- setState(313);
+ setState(319);
directive();
}
}
- setState(318);
+ setState(324);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(319);
- match(DO);
- setState(320);
- stmt();
- setState(321);
- match(WHILE);
- setState(322);
- match(PAR_BEGIN);
- setState(323);
- commaExpr(0);
- setState(324);
- match(PAR_END);
setState(325);
+ match(DO);
+ setState(326);
+ stmt();
+ setState(327);
+ match(WHILE);
+ setState(328);
+ match(PAR_BEGIN);
+ setState(329);
+ commaExpr(0);
+ setState(330);
+ match(PAR_END);
+ setState(331);
match(SEMICOLON);
}
break;
@@ -2364,29 +2403,29 @@ public class KickCParser extends Parser {
_localctx = new StmtForContext(_localctx);
enterOuterAlt(_localctx, 7);
{
- setState(330);
+ setState(336);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT))) != 0)) {
{
{
- setState(327);
+ setState(333);
directive();
}
}
- setState(332);
+ setState(338);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(333);
+ setState(339);
match(FOR);
- setState(334);
+ setState(340);
match(PAR_BEGIN);
- setState(335);
+ setState(341);
forLoop();
- setState(336);
+ setState(342);
match(PAR_END);
- setState(337);
+ setState(343);
stmt();
}
break;
@@ -2394,19 +2433,19 @@ public class KickCParser extends Parser {
_localctx = new StmtSwitchContext(_localctx);
enterOuterAlt(_localctx, 8);
{
- setState(339);
- match(SWITCH);
- setState(340);
- match(PAR_BEGIN);
- setState(341);
- commaExpr(0);
- setState(342);
- match(PAR_END);
- setState(343);
- match(CURLY_BEGIN);
- setState(344);
- switchCases();
setState(345);
+ match(SWITCH);
+ setState(346);
+ match(PAR_BEGIN);
+ setState(347);
+ commaExpr(0);
+ setState(348);
+ match(PAR_END);
+ setState(349);
+ match(CURLY_BEGIN);
+ setState(350);
+ switchCases();
+ setState(351);
match(CURLY_END);
}
break;
@@ -2414,19 +2453,19 @@ public class KickCParser extends Parser {
_localctx = new StmtReturnContext(_localctx);
enterOuterAlt(_localctx, 9);
{
- setState(347);
+ setState(353);
match(RETURN);
- setState(349);
+ setState(355);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (SIZEOF - 70)) | (1L << (TYPEID - 70)) | (1L << (LOGIC_NOT - 70)) | (1L << (BOOLEAN - 70)) | (1L << (STRING - 70)) | (1L << (CHAR - 70)) | (1L << (NUMBER - 70)) | (1L << (NAME - 70)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 71)) & ~0x3f) == 0 && ((1L << (_la - 71)) & ((1L << (SIZEOF - 71)) | (1L << (TYPEID - 71)) | (1L << (LOGIC_NOT - 71)) | (1L << (BOOLEAN - 71)) | (1L << (STRING - 71)) | (1L << (CHAR - 71)) | (1L << (NUMBER - 71)) | (1L << (NAME - 71)))) != 0)) {
{
- setState(348);
+ setState(354);
commaExpr(0);
}
}
- setState(351);
+ setState(357);
match(SEMICOLON);
}
break;
@@ -2434,9 +2473,9 @@ public class KickCParser extends Parser {
_localctx = new StmtBreakContext(_localctx);
enterOuterAlt(_localctx, 10);
{
- setState(352);
+ setState(358);
match(BREAK);
- setState(353);
+ setState(359);
match(SEMICOLON);
}
break;
@@ -2444,9 +2483,9 @@ public class KickCParser extends Parser {
_localctx = new StmtContinueContext(_localctx);
enterOuterAlt(_localctx, 11);
{
- setState(354);
+ setState(360);
match(CONTINUE);
- setState(355);
+ setState(361);
match(SEMICOLON);
}
break;
@@ -2454,23 +2493,23 @@ public class KickCParser extends Parser {
_localctx = new StmtAsmContext(_localctx);
enterOuterAlt(_localctx, 12);
{
- setState(356);
+ setState(362);
match(ASM);
- setState(358);
+ setState(364);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==PAR_BEGIN) {
{
- setState(357);
+ setState(363);
asmDirectives();
}
}
- setState(360);
+ setState(366);
match(CURLY_BEGIN);
- setState(361);
+ setState(367);
asmLines();
- setState(362);
+ setState(368);
match(ASM_CURLY_END);
}
break;
@@ -2478,7 +2517,7 @@ public class KickCParser extends Parser {
_localctx = new StmtDeclKasmContext(_localctx);
enterOuterAlt(_localctx, 13);
{
- setState(364);
+ setState(370);
declKasm();
}
break;
@@ -2533,35 +2572,35 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(368);
+ setState(374);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(367);
+ setState(373);
switchCase();
}
}
- setState(370);
+ setState(376);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( _la==CASE );
- setState(377);
+ setState(383);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==DEFAULT) {
{
- setState(372);
+ setState(378);
match(DEFAULT);
- setState(373);
+ setState(379);
match(COLON);
- setState(375);
+ setState(381);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT) | (1L << IF) | (1L << WHILE) | (1L << DO) | (1L << FOR) | (1L << SWITCH) | (1L << RETURN) | (1L << BREAK))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT) | (1L << IF) | (1L << WHILE) | (1L << DO) | (1L << FOR) | (1L << SWITCH) | (1L << RETURN))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BREAK - 64)) | (1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)))) != 0)) {
{
- setState(374);
+ setState(380);
stmtSeq();
}
}
@@ -2617,18 +2656,18 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(379);
+ setState(385);
match(CASE);
- setState(380);
+ setState(386);
expr(0);
- setState(381);
+ setState(387);
match(COLON);
- setState(383);
+ setState(389);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT) | (1L << IF) | (1L << WHILE) | (1L << DO) | (1L << FOR) | (1L << SWITCH) | (1L << RETURN) | (1L << BREAK))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT) | (1L << IF) | (1L << WHILE) | (1L << DO) | (1L << FOR) | (1L << SWITCH) | (1L << RETURN))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (BREAK - 64)) | (1L << (CONTINUE - 64)) | (1L << (ASM - 64)) | (1L << (STRUCT - 64)) | (1L << (ENUM - 64)) | (1L << (SIZEOF - 64)) | (1L << (TYPEID - 64)) | (1L << (KICKASM - 64)) | (1L << (LOGIC_NOT - 64)) | (1L << (SIGNEDNESS - 64)) | (1L << (SIMPLETYPE - 64)) | (1L << (BOOLEAN - 64)) | (1L << (STRING - 64)) | (1L << (CHAR - 64)) | (1L << (NUMBER - 64)) | (1L << (NAME - 64)))) != 0)) {
{
- setState(382);
+ setState(388);
stmtSeq();
}
}
@@ -2715,27 +2754,27 @@ public class KickCParser extends Parser {
enterRule(_localctx, 40, RULE_forLoop);
int _la;
try {
- setState(401);
+ setState(407);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) {
case 1:
_localctx = new ForClassicContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(385);
+ setState(391);
forClassicInit();
- setState(386);
+ setState(392);
match(SEMICOLON);
- setState(387);
+ setState(393);
commaExpr(0);
- setState(388);
+ setState(394);
match(SEMICOLON);
- setState(390);
+ setState(396);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (SIZEOF - 70)) | (1L << (TYPEID - 70)) | (1L << (LOGIC_NOT - 70)) | (1L << (BOOLEAN - 70)) | (1L << (STRING - 70)) | (1L << (CHAR - 70)) | (1L << (NUMBER - 70)) | (1L << (NAME - 70)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 71)) & ~0x3f) == 0 && ((1L << (_la - 71)) & ((1L << (SIZEOF - 71)) | (1L << (TYPEID - 71)) | (1L << (LOGIC_NOT - 71)) | (1L << (BOOLEAN - 71)) | (1L << (STRING - 71)) | (1L << (CHAR - 71)) | (1L << (NUMBER - 71)) | (1L << (NAME - 71)))) != 0)) {
{
- setState(389);
+ setState(395);
commaExpr(0);
}
}
@@ -2746,25 +2785,25 @@ public class KickCParser extends Parser {
_localctx = new ForRangeContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(393);
+ setState(399);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT))) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (STRUCT - 68)) | (1L << (ENUM - 68)) | (1L << (SIGNEDNESS - 68)) | (1L << (SIMPLETYPE - 68)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (STRUCT - 69)) | (1L << (ENUM - 69)) | (1L << (SIGNEDNESS - 69)) | (1L << (SIMPLETYPE - 69)))) != 0)) {
{
- setState(392);
+ setState(398);
declTypes();
}
}
- setState(395);
+ setState(401);
match(NAME);
- setState(396);
+ setState(402);
match(COLON);
- setState(397);
+ setState(403);
expr(0);
- setState(398);
+ setState(404);
match(RANGE);
- setState(399);
+ setState(405);
expr(0);
}
break;
@@ -2836,19 +2875,19 @@ public class KickCParser extends Parser {
enterRule(_localctx, 42, RULE_forClassicInit);
int _la;
try {
- setState(407);
+ setState(413);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) {
case 1:
_localctx = new ForClassicInitDeclContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(404);
+ setState(410);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT))) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (STRUCT - 68)) | (1L << (ENUM - 68)) | (1L << (SIGNEDNESS - 68)) | (1L << (SIMPLETYPE - 68)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (STRUCT - 69)) | (1L << (ENUM - 69)) | (1L << (SIGNEDNESS - 69)) | (1L << (SIMPLETYPE - 69)))) != 0)) {
{
- setState(403);
+ setState(409);
declVariables();
}
}
@@ -2859,7 +2898,7 @@ public class KickCParser extends Parser {
_localctx = new ForClassicInitExprContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(406);
+ setState(412);
commaExpr(0);
}
break;
@@ -3118,7 +3157,7 @@ public class KickCParser extends Parser {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(424);
+ setState(430);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) {
case 1:
@@ -3127,11 +3166,11 @@ public class KickCParser extends Parser {
_ctx = _localctx;
_prevctx = _localctx;
- setState(410);
+ setState(416);
match(PAR_BEGIN);
- setState(411);
+ setState(417);
typeDecl(0);
- setState(412);
+ setState(418);
match(PAR_END);
}
break;
@@ -3140,7 +3179,7 @@ public class KickCParser extends Parser {
_localctx = new TypeSimpleContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(414);
+ setState(420);
match(SIMPLETYPE);
}
break;
@@ -3149,14 +3188,14 @@ public class KickCParser extends Parser {
_localctx = new TypeSignedSimpleContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(415);
+ setState(421);
match(SIGNEDNESS);
- setState(417);
+ setState(423);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) {
case 1:
{
- setState(416);
+ setState(422);
match(SIMPLETYPE);
}
break;
@@ -3168,7 +3207,7 @@ public class KickCParser extends Parser {
_localctx = new TypeStructDefContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(419);
+ setState(425);
structDef();
}
break;
@@ -3177,7 +3216,7 @@ public class KickCParser extends Parser {
_localctx = new TypeStructRefContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(420);
+ setState(426);
structRef();
}
break;
@@ -3186,7 +3225,7 @@ public class KickCParser extends Parser {
_localctx = new TypeEnumDefContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(421);
+ setState(427);
enumDef();
}
break;
@@ -3195,7 +3234,7 @@ public class KickCParser extends Parser {
_localctx = new TypeEnumRefContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(422);
+ setState(428);
enumRef();
}
break;
@@ -3204,13 +3243,13 @@ public class KickCParser extends Parser {
_localctx = new TypeNamedRefContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(423);
+ setState(429);
match(TYPEDEFNAME);
}
break;
}
_ctx.stop = _input.LT(-1);
- setState(439);
+ setState(445);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,40,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
@@ -3218,16 +3257,16 @@ public class KickCParser extends Parser {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- setState(437);
+ setState(443);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,39,_ctx) ) {
case 1:
{
_localctx = new TypePtrContext(new TypeDeclContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_typeDecl);
- setState(426);
+ setState(432);
if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
- setState(427);
+ setState(433);
match(ASTERISK);
}
break;
@@ -3235,21 +3274,21 @@ public class KickCParser extends Parser {
{
_localctx = new TypeArrayContext(new TypeDeclContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_typeDecl);
- setState(428);
+ setState(434);
if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
- setState(429);
+ setState(435);
match(BRACKET_BEGIN);
- setState(431);
+ setState(437);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (SIZEOF - 70)) | (1L << (TYPEID - 70)) | (1L << (LOGIC_NOT - 70)) | (1L << (BOOLEAN - 70)) | (1L << (STRING - 70)) | (1L << (CHAR - 70)) | (1L << (NUMBER - 70)) | (1L << (NAME - 70)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 71)) & ~0x3f) == 0 && ((1L << (_la - 71)) & ((1L << (SIZEOF - 71)) | (1L << (TYPEID - 71)) | (1L << (LOGIC_NOT - 71)) | (1L << (BOOLEAN - 71)) | (1L << (STRING - 71)) | (1L << (CHAR - 71)) | (1L << (NUMBER - 71)) | (1L << (NAME - 71)))) != 0)) {
{
- setState(430);
+ setState(436);
expr(0);
}
}
- setState(433);
+ setState(439);
match(BRACKET_END);
}
break;
@@ -3257,18 +3296,18 @@ public class KickCParser extends Parser {
{
_localctx = new TypeProcedureContext(new TypeDeclContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_typeDecl);
- setState(434);
+ setState(440);
if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
- setState(435);
+ setState(441);
match(PAR_BEGIN);
- setState(436);
+ setState(442);
match(PAR_END);
}
break;
}
}
}
- setState(441);
+ setState(447);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,40,_ctx);
}
@@ -3313,9 +3352,9 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(442);
+ setState(448);
match(STRUCT);
- setState(443);
+ setState(449);
match(NAME);
}
}
@@ -3367,35 +3406,35 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(445);
+ setState(451);
match(STRUCT);
- setState(447);
+ setState(453);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==NAME) {
{
- setState(446);
+ setState(452);
match(NAME);
}
}
- setState(449);
+ setState(455);
match(CURLY_BEGIN);
- setState(451);
+ setState(457);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(450);
+ setState(456);
structMembers();
}
}
- setState(453);
+ setState(459);
_errHandler.sync(this);
_la = _input.LA(1);
- } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT))) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (STRUCT - 68)) | (1L << (ENUM - 68)) | (1L << (SIGNEDNESS - 68)) | (1L << (SIMPLETYPE - 68)))) != 0) );
- setState(455);
+ } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TYPEDEFNAME) | (1L << PAR_BEGIN) | (1L << RESERVE) | (1L << CONST) | (1L << EXTERN) | (1L << EXPORT) | (1L << ALIGN) | (1L << REGISTER) | (1L << INLINE) | (1L << VOLATILE) | (1L << INTERRUPT))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (STRUCT - 69)) | (1L << (ENUM - 69)) | (1L << (SIGNEDNESS - 69)) | (1L << (SIMPLETYPE - 69)))) != 0) );
+ setState(461);
match(CURLY_END);
}
}
@@ -3439,9 +3478,9 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(457);
+ setState(463);
declVariables();
- setState(458);
+ setState(464);
match(SEMICOLON);
}
}
@@ -3484,9 +3523,9 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(460);
+ setState(466);
match(ENUM);
- setState(461);
+ setState(467);
match(NAME);
}
}
@@ -3535,23 +3574,23 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(463);
+ setState(469);
match(ENUM);
- setState(465);
+ setState(471);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==NAME) {
{
- setState(464);
+ setState(470);
match(NAME);
}
}
- setState(467);
+ setState(473);
match(CURLY_BEGIN);
- setState(468);
+ setState(474);
enumMemberList(0);
- setState(469);
+ setState(475);
match(CURLY_END);
}
}
@@ -3609,11 +3648,11 @@ public class KickCParser extends Parser {
enterOuterAlt(_localctx, 1);
{
{
- setState(472);
+ setState(478);
enumMember();
}
_ctx.stop = _input.LT(-1);
- setState(479);
+ setState(485);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,44,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
@@ -3624,16 +3663,16 @@ public class KickCParser extends Parser {
{
_localctx = new EnumMemberListContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx, _startState, RULE_enumMemberList);
- setState(474);
+ setState(480);
if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(475);
+ setState(481);
match(COMMA);
- setState(476);
+ setState(482);
enumMember();
}
}
}
- setState(481);
+ setState(487);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,44,_ctx);
}
@@ -3680,16 +3719,16 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(482);
+ setState(488);
match(NAME);
- setState(485);
+ setState(491);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) {
case 1:
{
- setState(483);
+ setState(489);
match(ASSIGN);
- setState(484);
+ setState(490);
expr(0);
}
break;
@@ -3781,11 +3820,11 @@ public class KickCParser extends Parser {
_ctx = _localctx;
_prevctx = _localctx;
- setState(488);
+ setState(494);
expr(0);
}
_ctx.stop = _input.LT(-1);
- setState(495);
+ setState(501);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,46,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
@@ -3796,16 +3835,16 @@ public class KickCParser extends Parser {
{
_localctx = new CommaSimpleContext(new CommaExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_commaExpr);
- setState(490);
+ setState(496);
if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(491);
+ setState(497);
match(COMMA);
- setState(492);
+ setState(498);
expr(0);
}
}
}
- setState(497);
+ setState(503);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,46,_ctx);
}
@@ -4330,7 +4369,7 @@ public class KickCParser extends Parser {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(552);
+ setState(558);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,51,_ctx) ) {
case 1:
@@ -4339,11 +4378,11 @@ public class KickCParser extends Parser {
_ctx = _localctx;
_prevctx = _localctx;
- setState(499);
+ setState(505);
match(PAR_BEGIN);
- setState(500);
+ setState(506);
commaExpr(0);
- setState(501);
+ setState(507);
match(PAR_END);
}
break;
@@ -4352,27 +4391,27 @@ public class KickCParser extends Parser {
_localctx = new ExprSizeOfContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(503);
+ setState(509);
match(SIZEOF);
- setState(504);
+ setState(510);
match(PAR_BEGIN);
- setState(507);
+ setState(513);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,47,_ctx) ) {
case 1:
{
- setState(505);
+ setState(511);
expr(0);
}
break;
case 2:
{
- setState(506);
+ setState(512);
typeDecl(0);
}
break;
}
- setState(509);
+ setState(515);
match(PAR_END);
}
break;
@@ -4381,27 +4420,27 @@ public class KickCParser extends Parser {
_localctx = new ExprTypeIdContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(511);
+ setState(517);
match(TYPEID);
- setState(512);
+ setState(518);
match(PAR_BEGIN);
- setState(515);
+ setState(521);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) {
case 1:
{
- setState(513);
+ setState(519);
expr(0);
}
break;
case 2:
{
- setState(514);
+ setState(520);
typeDecl(0);
}
break;
}
- setState(517);
+ setState(523);
match(PAR_END);
}
break;
@@ -4410,13 +4449,13 @@ public class KickCParser extends Parser {
_localctx = new ExprCastContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(519);
+ setState(525);
match(PAR_BEGIN);
- setState(520);
+ setState(526);
typeDecl(0);
- setState(521);
+ setState(527);
match(PAR_END);
- setState(522);
+ setState(528);
expr(24);
}
break;
@@ -4425,7 +4464,7 @@ public class KickCParser extends Parser {
_localctx = new ExprPreModContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(524);
+ setState(530);
_la = _input.LA(1);
if ( !(_la==INC || _la==DEC) ) {
_errHandler.recoverInline(this);
@@ -4435,7 +4474,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(525);
+ setState(531);
expr(23);
}
break;
@@ -4444,9 +4483,9 @@ public class KickCParser extends Parser {
_localctx = new ExprPtrContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(526);
+ setState(532);
match(ASTERISK);
- setState(527);
+ setState(533);
expr(21);
}
break;
@@ -4455,9 +4494,9 @@ public class KickCParser extends Parser {
_localctx = new ExprUnaryContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(528);
+ setState(534);
_la = _input.LA(1);
- if ( !(((((_la - 15)) & ~0x3f) == 0 && ((1L << (_la - 15)) & ((1L << (PLUS - 15)) | (1L << (MINUS - 15)) | (1L << (AND - 15)) | (1L << (BIT_NOT - 15)) | (1L << (LOGIC_NOT - 15)))) != 0)) ) {
+ if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << PLUS) | (1L << MINUS) | (1L << AND) | (1L << BIT_NOT))) != 0) || _la==LOGIC_NOT) ) {
_errHandler.recoverInline(this);
}
else {
@@ -4465,7 +4504,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(529);
+ setState(535);
expr(20);
}
break;
@@ -4474,7 +4513,7 @@ public class KickCParser extends Parser {
_localctx = new ExprUnaryContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(530);
+ setState(536);
_la = _input.LA(1);
if ( !(_la==LESS_THAN || _la==GREATER_THAN) ) {
_errHandler.recoverInline(this);
@@ -4484,7 +4523,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(531);
+ setState(537);
expr(16);
}
break;
@@ -4493,27 +4532,27 @@ public class KickCParser extends Parser {
_localctx = new InitListContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(532);
- match(CURLY_BEGIN);
- setState(533);
- expr(0);
setState(538);
+ match(CURLY_BEGIN);
+ setState(539);
+ expr(0);
+ setState(544);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==COMMA) {
{
{
- setState(534);
+ setState(540);
match(COMMA);
- setState(535);
+ setState(541);
expr(0);
}
}
- setState(540);
+ setState(546);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(541);
+ setState(547);
match(CURLY_END);
}
break;
@@ -4522,7 +4561,7 @@ public class KickCParser extends Parser {
_localctx = new ExprIdContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(543);
+ setState(549);
match(NAME);
}
break;
@@ -4531,7 +4570,7 @@ public class KickCParser extends Parser {
_localctx = new ExprNumberContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(544);
+ setState(550);
match(NUMBER);
}
break;
@@ -4540,7 +4579,7 @@ public class KickCParser extends Parser {
_localctx = new ExprStringContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(546);
+ setState(552);
_errHandler.sync(this);
_alt = 1;
do {
@@ -4548,7 +4587,7 @@ public class KickCParser extends Parser {
case 1:
{
{
- setState(545);
+ setState(551);
match(STRING);
}
}
@@ -4556,7 +4595,7 @@ public class KickCParser extends Parser {
default:
throw new NoViableAltException(this);
}
- setState(548);
+ setState(554);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,50,_ctx);
} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
@@ -4567,7 +4606,7 @@ public class KickCParser extends Parser {
_localctx = new ExprCharContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(550);
+ setState(556);
match(CHAR);
}
break;
@@ -4576,13 +4615,13 @@ public class KickCParser extends Parser {
_localctx = new ExprBoolContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(551);
+ setState(557);
match(BOOLEAN);
}
break;
}
_ctx.stop = _input.LT(-1);
- setState(614);
+ setState(620);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,54,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
@@ -4590,16 +4629,16 @@ public class KickCParser extends Parser {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- setState(612);
+ setState(618);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) {
case 1:
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(554);
+ setState(560);
if (!(precpred(_ctx, 19))) throw new FailedPredicateException(this, "precpred(_ctx, 19)");
- setState(555);
+ setState(561);
_la = _input.LA(1);
if ( !(_la==SHIFT_LEFT || _la==SHIFT_RIGHT) ) {
_errHandler.recoverInline(this);
@@ -4609,7 +4648,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(556);
+ setState(562);
expr(20);
}
break;
@@ -4617,9 +4656,9 @@ public class KickCParser extends Parser {
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(557);
+ setState(563);
if (!(precpred(_ctx, 18))) throw new FailedPredicateException(this, "precpred(_ctx, 18)");
- setState(558);
+ setState(564);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ASTERISK) | (1L << DIVIDE) | (1L << MODULO))) != 0)) ) {
_errHandler.recoverInline(this);
@@ -4629,7 +4668,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(559);
+ setState(565);
expr(19);
}
break;
@@ -4637,9 +4676,9 @@ public class KickCParser extends Parser {
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(560);
+ setState(566);
if (!(precpred(_ctx, 17))) throw new FailedPredicateException(this, "precpred(_ctx, 17)");
- setState(561);
+ setState(567);
_la = _input.LA(1);
if ( !(_la==PLUS || _la==MINUS) ) {
_errHandler.recoverInline(this);
@@ -4649,7 +4688,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(562);
+ setState(568);
expr(18);
}
break;
@@ -4657,9 +4696,9 @@ public class KickCParser extends Parser {
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(563);
+ setState(569);
if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)");
- setState(564);
+ setState(570);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EQUAL) | (1L << NOT_EQUAL) | (1L << LESS_THAN) | (1L << LESS_THAN_EQUAL) | (1L << GREATER_THAN_EQUAL) | (1L << GREATER_THAN))) != 0)) ) {
_errHandler.recoverInline(this);
@@ -4669,7 +4708,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(565);
+ setState(571);
expr(16);
}
break;
@@ -4677,13 +4716,13 @@ public class KickCParser extends Parser {
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(566);
+ setState(572);
if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)");
{
- setState(567);
+ setState(573);
match(AND);
}
- setState(568);
+ setState(574);
expr(15);
}
break;
@@ -4691,13 +4730,13 @@ public class KickCParser extends Parser {
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(569);
+ setState(575);
if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)");
{
- setState(570);
+ setState(576);
match(BIT_XOR);
}
- setState(571);
+ setState(577);
expr(14);
}
break;
@@ -4705,13 +4744,13 @@ public class KickCParser extends Parser {
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(572);
+ setState(578);
if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)");
{
- setState(573);
+ setState(579);
match(BIT_OR);
}
- setState(574);
+ setState(580);
expr(13);
}
break;
@@ -4719,13 +4758,13 @@ public class KickCParser extends Parser {
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(575);
+ setState(581);
if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
{
- setState(576);
+ setState(582);
match(LOGIC_AND);
}
- setState(577);
+ setState(583);
expr(12);
}
break;
@@ -4733,13 +4772,13 @@ public class KickCParser extends Parser {
{
_localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(578);
+ setState(584);
if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
{
- setState(579);
+ setState(585);
match(LOGIC_OR);
}
- setState(580);
+ setState(586);
expr(11);
}
break;
@@ -4747,15 +4786,15 @@ public class KickCParser extends Parser {
{
_localctx = new ExprTernaryContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(581);
+ setState(587);
if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
- setState(582);
+ setState(588);
match(CONDITION);
- setState(583);
+ setState(589);
expr(0);
- setState(584);
+ setState(590);
match(COLON);
- setState(585);
+ setState(591);
expr(10);
}
break;
@@ -4763,11 +4802,11 @@ public class KickCParser extends Parser {
{
_localctx = new ExprAssignmentContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(587);
+ setState(593);
if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
- setState(588);
+ setState(594);
match(ASSIGN);
- setState(589);
+ setState(595);
expr(8);
}
break;
@@ -4775,11 +4814,11 @@ public class KickCParser extends Parser {
{
_localctx = new ExprAssignmentCompoundContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(590);
+ setState(596);
if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
- setState(591);
+ setState(597);
match(ASSIGN_COMPOUND);
- setState(592);
+ setState(598);
expr(7);
}
break;
@@ -4787,11 +4826,11 @@ public class KickCParser extends Parser {
{
_localctx = new ExprDotContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(593);
+ setState(599);
if (!(precpred(_ctx, 30))) throw new FailedPredicateException(this, "precpred(_ctx, 30)");
- setState(594);
+ setState(600);
match(DOT);
- setState(595);
+ setState(601);
match(NAME);
}
break;
@@ -4799,11 +4838,11 @@ public class KickCParser extends Parser {
{
_localctx = new ExprArrowContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(596);
+ setState(602);
if (!(precpred(_ctx, 29))) throw new FailedPredicateException(this, "precpred(_ctx, 29)");
- setState(597);
+ setState(603);
match(ARROW);
- setState(598);
+ setState(604);
match(NAME);
}
break;
@@ -4811,21 +4850,21 @@ public class KickCParser extends Parser {
{
_localctx = new ExprCallContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(599);
+ setState(605);
if (!(precpred(_ctx, 28))) throw new FailedPredicateException(this, "precpred(_ctx, 28)");
- setState(600);
+ setState(606);
match(PAR_BEGIN);
- setState(602);
+ setState(608);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (SIZEOF - 70)) | (1L << (TYPEID - 70)) | (1L << (LOGIC_NOT - 70)) | (1L << (BOOLEAN - 70)) | (1L << (STRING - 70)) | (1L << (CHAR - 70)) | (1L << (NUMBER - 70)) | (1L << (NAME - 70)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURLY_BEGIN) | (1L << PAR_BEGIN) | (1L << PLUS) | (1L << MINUS) | (1L << ASTERISK) | (1L << INC) | (1L << DEC) | (1L << AND) | (1L << BIT_NOT) | (1L << LESS_THAN) | (1L << GREATER_THAN))) != 0) || ((((_la - 71)) & ~0x3f) == 0 && ((1L << (_la - 71)) & ((1L << (SIZEOF - 71)) | (1L << (TYPEID - 71)) | (1L << (LOGIC_NOT - 71)) | (1L << (BOOLEAN - 71)) | (1L << (STRING - 71)) | (1L << (CHAR - 71)) | (1L << (NUMBER - 71)) | (1L << (NAME - 71)))) != 0)) {
{
- setState(601);
+ setState(607);
parameterList();
}
}
- setState(604);
+ setState(610);
match(PAR_END);
}
break;
@@ -4833,13 +4872,13 @@ public class KickCParser extends Parser {
{
_localctx = new ExprArrayContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(605);
+ setState(611);
if (!(precpred(_ctx, 25))) throw new FailedPredicateException(this, "precpred(_ctx, 25)");
- setState(606);
+ setState(612);
match(BRACKET_BEGIN);
- setState(607);
+ setState(613);
commaExpr(0);
- setState(608);
+ setState(614);
match(BRACKET_END);
}
break;
@@ -4847,9 +4886,9 @@ public class KickCParser extends Parser {
{
_localctx = new ExprPostModContext(new ExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_expr);
- setState(610);
+ setState(616);
if (!(precpred(_ctx, 22))) throw new FailedPredicateException(this, "precpred(_ctx, 22)");
- setState(611);
+ setState(617);
_la = _input.LA(1);
if ( !(_la==INC || _la==DEC) ) {
_errHandler.recoverInline(this);
@@ -4864,7 +4903,7 @@ public class KickCParser extends Parser {
}
}
}
- setState(616);
+ setState(622);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,54,_ctx);
}
@@ -4918,21 +4957,21 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(617);
+ setState(623);
expr(0);
- setState(622);
+ setState(628);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==COMMA) {
{
{
- setState(618);
+ setState(624);
match(COMMA);
- setState(619);
+ setState(625);
expr(0);
}
}
- setState(624);
+ setState(630);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -4981,19 +5020,19 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(625);
+ setState(631);
match(KICKASM);
- setState(627);
+ setState(633);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==PAR_BEGIN) {
{
- setState(626);
+ setState(632);
asmDirectives();
}
}
- setState(629);
+ setState(635);
match(KICKASM_BODY);
}
}
@@ -5047,27 +5086,27 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(631);
- match(PAR_BEGIN);
- setState(632);
- asmDirective();
setState(637);
+ match(PAR_BEGIN);
+ setState(638);
+ asmDirective();
+ setState(643);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==COMMA) {
{
{
- setState(633);
+ setState(639);
match(COMMA);
- setState(634);
+ setState(640);
asmDirective();
}
}
- setState(639);
+ setState(645);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(640);
+ setState(646);
match(PAR_END);
}
}
@@ -5213,16 +5252,16 @@ public class KickCParser extends Parser {
AsmDirectiveContext _localctx = new AsmDirectiveContext(_ctx, getState());
enterRule(_localctx, 70, RULE_asmDirective);
try {
- setState(657);
+ setState(663);
_errHandler.sync(this);
switch (_input.LA(1)) {
case RESOURCE:
_localctx = new AsmDirectiveResourceContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(642);
+ setState(648);
match(RESOURCE);
- setState(643);
+ setState(649);
match(STRING);
}
break;
@@ -5230,9 +5269,9 @@ public class KickCParser extends Parser {
_localctx = new AsmDirectiveUsesContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(644);
+ setState(650);
match(USES);
- setState(645);
+ setState(651);
match(NAME);
}
break;
@@ -5240,9 +5279,9 @@ public class KickCParser extends Parser {
_localctx = new AsmDirectiveClobberContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(646);
+ setState(652);
match(CLOBBERS);
- setState(647);
+ setState(653);
match(STRING);
}
break;
@@ -5250,9 +5289,9 @@ public class KickCParser extends Parser {
_localctx = new AsmDirectiveBytesContext(_localctx);
enterOuterAlt(_localctx, 4);
{
- setState(648);
+ setState(654);
match(BYTES);
- setState(649);
+ setState(655);
expr(0);
}
break;
@@ -5260,9 +5299,9 @@ public class KickCParser extends Parser {
_localctx = new AsmDirectiveCyclesContext(_localctx);
enterOuterAlt(_localctx, 5);
{
- setState(650);
+ setState(656);
match(CYCLES);
- setState(651);
+ setState(657);
expr(0);
}
break;
@@ -5270,14 +5309,14 @@ public class KickCParser extends Parser {
_localctx = new AsmDirectiveAddressContext(_localctx);
enterOuterAlt(_localctx, 6);
{
- setState(652);
+ setState(658);
match(PC);
- setState(655);
+ setState(661);
_errHandler.sync(this);
switch (_input.LA(1)) {
case INLINE:
{
- setState(653);
+ setState(659);
match(INLINE);
}
break;
@@ -5301,7 +5340,7 @@ public class KickCParser extends Parser {
case NUMBER:
case NAME:
{
- setState(654);
+ setState(660);
expr(0);
}
break;
@@ -5358,17 +5397,17 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(662);
+ setState(668);
_errHandler.sync(this);
_la = _input.LA(1);
- while (((((_la - 98)) & ~0x3f) == 0 && ((1L << (_la - 98)) & ((1L << (ASM_BYTE - 98)) | (1L << (ASM_MNEMONIC - 98)) | (1L << (ASM_MULTI_NAME - 98)) | (1L << (ASM_NAME - 98)))) != 0)) {
+ while (((((_la - 99)) & ~0x3f) == 0 && ((1L << (_la - 99)) & ((1L << (ASM_BYTE - 99)) | (1L << (ASM_MNEMONIC - 99)) | (1L << (ASM_MULTI_NAME - 99)) | (1L << (ASM_NAME - 99)))) != 0)) {
{
{
- setState(659);
+ setState(665);
asmLine();
}
}
- setState(664);
+ setState(670);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -5418,28 +5457,28 @@ public class KickCParser extends Parser {
AsmLineContext _localctx = new AsmLineContext(_ctx, getState());
enterRule(_localctx, 74, RULE_asmLine);
try {
- setState(668);
+ setState(674);
_errHandler.sync(this);
switch (_input.LA(1)) {
case ASM_MULTI_NAME:
case ASM_NAME:
enterOuterAlt(_localctx, 1);
{
- setState(665);
+ setState(671);
asmLabel();
}
break;
case ASM_MNEMONIC:
enterOuterAlt(_localctx, 2);
{
- setState(666);
+ setState(672);
asmInstruction();
}
break;
case ASM_BYTE:
enterOuterAlt(_localctx, 3);
{
- setState(667);
+ setState(673);
asmBytes();
}
break;
@@ -5510,16 +5549,16 @@ public class KickCParser extends Parser {
AsmLabelContext _localctx = new AsmLabelContext(_ctx, getState());
enterRule(_localctx, 76, RULE_asmLabel);
try {
- setState(674);
+ setState(680);
_errHandler.sync(this);
switch (_input.LA(1)) {
case ASM_NAME:
_localctx = new AsmLabelNameContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(670);
+ setState(676);
match(ASM_NAME);
- setState(671);
+ setState(677);
match(ASM_COLON);
}
break;
@@ -5527,9 +5566,9 @@ public class KickCParser extends Parser {
_localctx = new AsmLabelMultiContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(672);
+ setState(678);
match(ASM_MULTI_NAME);
- setState(673);
+ setState(679);
match(ASM_COLON);
}
break;
@@ -5578,14 +5617,14 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(676);
+ setState(682);
match(ASM_MNEMONIC);
- setState(678);
+ setState(684);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,63,_ctx) ) {
case 1:
{
- setState(677);
+ setState(683);
asmParamMode();
}
break;
@@ -5641,23 +5680,23 @@ public class KickCParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(680);
- match(ASM_BYTE);
- setState(681);
- asmExpr(0);
setState(686);
+ match(ASM_BYTE);
+ setState(687);
+ asmExpr(0);
+ setState(692);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==ASM_COMMA) {
{
{
- setState(682);
+ setState(688);
match(ASM_COMMA);
- setState(683);
+ setState(689);
asmExpr(0);
}
}
- setState(688);
+ setState(694);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -5817,14 +5856,14 @@ public class KickCParser extends Parser {
AsmParamModeContext _localctx = new AsmParamModeContext(_ctx, getState());
enterRule(_localctx, 82, RULE_asmParamMode);
try {
- setState(712);
+ setState(718);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) {
case 1:
_localctx = new AsmModeAbsContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(689);
+ setState(695);
asmExpr(0);
}
break;
@@ -5832,9 +5871,9 @@ public class KickCParser extends Parser {
_localctx = new AsmModeImmContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(690);
+ setState(696);
match(ASM_IMM);
- setState(691);
+ setState(697);
asmExpr(0);
}
break;
@@ -5842,11 +5881,11 @@ public class KickCParser extends Parser {
_localctx = new AsmModeAbsXYContext(_localctx);
enterOuterAlt(_localctx, 3);
{
- setState(692);
+ setState(698);
asmExpr(0);
- setState(693);
+ setState(699);
match(ASM_COMMA);
- setState(694);
+ setState(700);
match(ASM_NAME);
}
break;
@@ -5854,15 +5893,15 @@ public class KickCParser extends Parser {
_localctx = new AsmModeIndIdxXYContext(_localctx);
enterOuterAlt(_localctx, 4);
{
- setState(696);
+ setState(702);
match(ASM_PAR_BEGIN);
- setState(697);
+ setState(703);
asmExpr(0);
- setState(698);
+ setState(704);
match(ASM_PAR_END);
- setState(699);
+ setState(705);
match(ASM_COMMA);
- setState(700);
+ setState(706);
match(ASM_NAME);
}
break;
@@ -5870,15 +5909,15 @@ public class KickCParser extends Parser {
_localctx = new AsmModeIdxIndXYContext(_localctx);
enterOuterAlt(_localctx, 5);
{
- setState(702);
+ setState(708);
match(ASM_PAR_BEGIN);
- setState(703);
+ setState(709);
asmExpr(0);
- setState(704);
+ setState(710);
match(ASM_COMMA);
- setState(705);
+ setState(711);
match(ASM_NAME);
- setState(706);
+ setState(712);
match(ASM_PAR_END);
}
break;
@@ -5886,11 +5925,11 @@ public class KickCParser extends Parser {
_localctx = new AsmModeIndContext(_localctx);
enterOuterAlt(_localctx, 6);
{
- setState(708);
+ setState(714);
match(ASM_PAR_BEGIN);
- setState(709);
+ setState(715);
asmExpr(0);
- setState(710);
+ setState(716);
match(ASM_PAR_END);
}
break;
@@ -6095,7 +6134,7 @@ public class KickCParser extends Parser {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(728);
+ setState(734);
_errHandler.sync(this);
switch (_input.LA(1)) {
case ASM_BRACKET_BEGIN:
@@ -6104,11 +6143,11 @@ public class KickCParser extends Parser {
_ctx = _localctx;
_prevctx = _localctx;
- setState(715);
+ setState(721);
match(ASM_BRACKET_BEGIN);
- setState(716);
+ setState(722);
asmExpr(0);
- setState(717);
+ setState(723);
match(ASM_BRACKET_END);
}
break;
@@ -6120,9 +6159,9 @@ public class KickCParser extends Parser {
_localctx = new AsmExprUnaryContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(719);
+ setState(725);
_la = _input.LA(1);
- if ( !(((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (ASM_PLUS - 110)) | (1L << (ASM_MINUS - 110)) | (1L << (ASM_LESS_THAN - 110)) | (1L << (ASM_GREATER_THAN - 110)))) != 0)) ) {
+ if ( !(((((_la - 111)) & ~0x3f) == 0 && ((1L << (_la - 111)) & ((1L << (ASM_PLUS - 111)) | (1L << (ASM_MINUS - 111)) | (1L << (ASM_LESS_THAN - 111)) | (1L << (ASM_GREATER_THAN - 111)))) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
@@ -6130,7 +6169,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(720);
+ setState(726);
asmExpr(8);
}
break;
@@ -6139,7 +6178,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprLabelContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(721);
+ setState(727);
match(ASM_NAME);
}
break;
@@ -6148,7 +6187,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprLabelRelContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(722);
+ setState(728);
match(ASM_MULTI_REL);
}
break;
@@ -6157,11 +6196,11 @@ public class KickCParser extends Parser {
_localctx = new AsmExprReplaceContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(723);
+ setState(729);
match(ASM_CURLY_BEGIN);
- setState(724);
+ setState(730);
match(ASM_NAME);
- setState(725);
+ setState(731);
match(ASM_CURLY_END);
}
break;
@@ -6170,7 +6209,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprIntContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(726);
+ setState(732);
match(ASM_NUMBER);
}
break;
@@ -6179,7 +6218,7 @@ public class KickCParser extends Parser {
_localctx = new AsmExprCharContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
- setState(727);
+ setState(733);
match(ASM_CHAR);
}
break;
@@ -6187,7 +6226,7 @@ public class KickCParser extends Parser {
throw new NoViableAltException(this);
}
_ctx.stop = _input.LT(-1);
- setState(744);
+ setState(750);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,68,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
@@ -6195,20 +6234,20 @@ public class KickCParser extends Parser {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- setState(742);
+ setState(748);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,67,_ctx) ) {
case 1:
{
_localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_asmExpr);
- setState(730);
+ setState(736);
if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
{
- setState(731);
+ setState(737);
match(ASM_DOT);
}
- setState(732);
+ setState(738);
asmExpr(11);
}
break;
@@ -6216,9 +6255,9 @@ public class KickCParser extends Parser {
{
_localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_asmExpr);
- setState(733);
+ setState(739);
if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
- setState(734);
+ setState(740);
_la = _input.LA(1);
if ( !(_la==ASM_SHIFT_LEFT || _la==ASM_SHIFT_RIGHT) ) {
_errHandler.recoverInline(this);
@@ -6228,7 +6267,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(735);
+ setState(741);
asmExpr(10);
}
break;
@@ -6236,9 +6275,9 @@ public class KickCParser extends Parser {
{
_localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_asmExpr);
- setState(736);
+ setState(742);
if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
- setState(737);
+ setState(743);
_la = _input.LA(1);
if ( !(_la==ASM_MULTIPLY || _la==ASM_DIVIDE) ) {
_errHandler.recoverInline(this);
@@ -6248,7 +6287,7 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(738);
+ setState(744);
asmExpr(8);
}
break;
@@ -6256,9 +6295,9 @@ public class KickCParser extends Parser {
{
_localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_asmExpr);
- setState(739);
+ setState(745);
if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
- setState(740);
+ setState(746);
_la = _input.LA(1);
if ( !(_la==ASM_PLUS || _la==ASM_MINUS) ) {
_errHandler.recoverInline(this);
@@ -6268,14 +6307,14 @@ public class KickCParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(741);
+ setState(747);
asmExpr(7);
}
break;
}
}
}
- setState(746);
+ setState(752);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,68,_ctx);
}
@@ -6395,7 +6434,7 @@ public class KickCParser extends Parser {
}
public static final String _serializedATN =
- "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u0087\u02ee\4\2\t"+
+ "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u0088\u02f4\4\2\t"+
"\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
"\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
@@ -6412,277 +6451,280 @@ public class KickCParser extends Parser {
"\3\20\3\20\3\20\7\20\u00c9\n\20\f\20\16\20\u00cc\13\20\3\20\3\20\3\20"+
"\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20"+
"\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20"+
- "\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u00f3\n\20\3\21\3\21\3\21\3\21\3\21"+
- "\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u0100\n\21\3\21\3\21\3\21\3\21\3\21"+
- "\3\21\5\21\u0108\n\21\3\21\3\21\3\21\3\21\3\21\7\21\u010f\n\21\f\21\16"+
- "\21\u0112\13\21\3\21\5\21\u0115\n\21\3\22\6\22\u0118\n\22\r\22\16\22\u0119"+
- "\3\23\3\23\3\23\3\23\3\23\5\23\u0121\n\23\3\23\3\23\3\23\3\23\3\23\3\23"+
- "\3\23\3\23\3\23\3\23\3\23\5\23\u012e\n\23\3\23\7\23\u0131\n\23\f\23\16"+
- "\23\u0134\13\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\7\23\u013d\n\23\f\23"+
- "\16\23\u0140\13\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\7\23\u014b"+
- "\n\23\f\23\16\23\u014e\13\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3"+
- "\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u0160\n\23\3\23\3\23\3\23"+
- "\3\23\3\23\3\23\3\23\5\23\u0169\n\23\3\23\3\23\3\23\3\23\3\23\5\23\u0170"+
- "\n\23\3\24\6\24\u0173\n\24\r\24\16\24\u0174\3\24\3\24\3\24\5\24\u017a"+
- "\n\24\5\24\u017c\n\24\3\25\3\25\3\25\3\25\5\25\u0182\n\25\3\26\3\26\3"+
- "\26\3\26\3\26\5\26\u0189\n\26\3\26\5\26\u018c\n\26\3\26\3\26\3\26\3\26"+
- "\3\26\3\26\5\26\u0194\n\26\3\27\5\27\u0197\n\27\3\27\5\27\u019a\n\27\3"+
- "\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\5\30\u01a4\n\30\3\30\3\30\3\30"+
- "\3\30\3\30\5\30\u01ab\n\30\3\30\3\30\3\30\3\30\3\30\5\30\u01b2\n\30\3"+
- "\30\3\30\3\30\3\30\7\30\u01b8\n\30\f\30\16\30\u01bb\13\30\3\31\3\31\3"+
- "\31\3\32\3\32\5\32\u01c2\n\32\3\32\3\32\6\32\u01c6\n\32\r\32\16\32\u01c7"+
- "\3\32\3\32\3\33\3\33\3\33\3\34\3\34\3\34\3\35\3\35\5\35\u01d4\n\35\3\35"+
- "\3\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\7\36\u01e0\n\36\f\36\16"+
- "\36\u01e3\13\36\3\37\3\37\3\37\5\37\u01e8\n\37\3 \3 \3 \3 \3 \3 \7 \u01f0"+
- "\n \f \16 \u01f3\13 \3!\3!\3!\3!\3!\3!\3!\3!\3!\5!\u01fe\n!\3!\3!\3!\3"+
- "!\3!\3!\5!\u0206\n!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3"+
- "!\3!\3!\7!\u021b\n!\f!\16!\u021e\13!\3!\3!\3!\3!\3!\6!\u0225\n!\r!\16"+
- "!\u0226\3!\3!\5!\u022b\n!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3"+
- "!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3"+
- "!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\5!\u025d\n!\3!\3!\3!\3!\3!\3!\3!\3!\7"+
- "!\u0267\n!\f!\16!\u026a\13!\3\"\3\"\3\"\7\"\u026f\n\"\f\"\16\"\u0272\13"+
- "\"\3#\3#\5#\u0276\n#\3#\3#\3$\3$\3$\3$\7$\u027e\n$\f$\16$\u0281\13$\3"+
- "$\3$\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\5%\u0292\n%\5%\u0294\n%\3"+
- "&\7&\u0297\n&\f&\16&\u029a\13&\3\'\3\'\3\'\5\'\u029f\n\'\3(\3(\3(\3(\5"+
- "(\u02a5\n(\3)\3)\5)\u02a9\n)\3*\3*\3*\3*\7*\u02af\n*\f*\16*\u02b2\13*"+
- "\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+"+
- "\5+\u02cb\n+\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\5,\u02db\n,\3,"+
- "\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\7,\u02e9\n,\f,\16,\u02ec\13,\3,\2\b"+
- "\24.:>@V-\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\66"+
- "8:<>@BDFHJLNPRTV\2\16\4\2WW``\3\2\26\27\5\2\21\22\30\31PP\4\2 ##\3\2"+
- "\34\35\3\2\23\25\3\2\21\22\3\2\36#\3\2ps\3\2no\3\2tu\3\2pq\2\u0355\2X"+
- "\3\2\2\2\4[\3\2\2\2\6a\3\2\2\2\bf\3\2\2\2\nh\3\2\2\2\fz\3\2\2\2\16|\3"+
- "\2\2\2\20\u0084\3\2\2\2\22\u008e\3\2\2\2\24\u0091\3\2\2\2\26\u00a4\3\2"+
- "\2\2\30\u00a6\3\2\2\2\32\u00b3\3\2\2\2\34\u00bf\3\2\2\2\36\u00f2\3\2\2"+
- "\2 \u0114\3\2\2\2\"\u0117\3\2\2\2$\u016f\3\2\2\2&\u0172\3\2\2\2(\u017d"+
- "\3\2\2\2*\u0193\3\2\2\2,\u0199\3\2\2\2.\u01aa\3\2\2\2\60\u01bc\3\2\2\2"+
- "\62\u01bf\3\2\2\2\64\u01cb\3\2\2\2\66\u01ce\3\2\2\28\u01d1\3\2\2\2:\u01d9"+
- "\3\2\2\2<\u01e4\3\2\2\2>\u01e9\3\2\2\2@\u022a\3\2\2\2B\u026b\3\2\2\2D"+
- "\u0273\3\2\2\2F\u0279\3\2\2\2H\u0293\3\2\2\2J\u0298\3\2\2\2L\u029e\3\2"+
- "\2\2N\u02a4\3\2\2\2P\u02a6\3\2\2\2R\u02aa\3\2\2\2T\u02ca\3\2\2\2V\u02da"+
- "\3\2\2\2XY\5\6\4\2YZ\7\2\2\3Z\3\3\2\2\2[\\\5J&\2\\]\7\2\2\3]\5\3\2\2\2"+
- "^`\5\b\5\2_^\3\2\2\2`c\3\2\2\2a_\3\2\2\2ab\3\2\2\2b\7\3\2\2\2ca\3\2\2"+
- "\2dg\5\f\7\2eg\5\n\6\2fd\3\2\2\2fe\3\2\2\2g\t\3\2\2\2hi\7(\2\2ij\7U\2"+
- "\2j\13\3\2\2\2kl\5\22\n\2lm\7\n\2\2m{\3\2\2\2no\5\62\32\2op\7\n\2\2p{"+
- "\3\2\2\2qr\58\35\2rs\7\n\2\2s{\3\2\2\2t{\5\30\r\2u{\5D#\2v{\5\36\20\2"+
- "wx\5\16\b\2xy\7\n\2\2y{\3\2\2\2zk\3\2\2\2zn\3\2\2\2zq\3\2\2\2zt\3\2\2"+
- "\2zu\3\2\2\2zv\3\2\2\2zw\3\2\2\2{\r\3\2\2\2|}\7)\2\2}~\5.\30\2~\177\7"+
- "`\2\2\177\u0080\b\b\1\2\u0080\17\3\2\2\2\u0081\u0083\5 \21\2\u0082\u0081"+
- "\3\2\2\2\u0083\u0086\3\2\2\2\u0084\u0082\3\2\2\2\u0084\u0085\3\2\2\2\u0085"+
- "\u0087\3\2\2\2\u0086\u0084\3\2\2\2\u0087\u008b\5.\30\2\u0088\u008a\5 "+
- "\21\2\u0089\u0088\3\2\2\2\u008a\u008d\3\2\2\2\u008b\u0089\3\2\2\2\u008b"+
- "\u008c\3\2\2\2\u008c\21\3\2\2\2\u008d\u008b\3\2\2\2\u008e\u008f\5\20\t"+
- "\2\u008f\u0090\5\24\13\2\u0090\23\3\2\2\2\u0091\u0092\b\13\1\2\u0092\u0093"+
- "\5\26\f\2\u0093\u0099\3\2\2\2\u0094\u0095\f\3\2\2\u0095\u0096\7\f\2\2"+
- "\u0096\u0098\5\26\f\2\u0097\u0094\3\2\2\2\u0098\u009b\3\2\2\2\u0099\u0097"+
- "\3\2\2\2\u0099\u009a\3\2\2\2\u009a\25\3\2\2\2\u009b\u0099\3\2\2\2\u009c"+
- "\u009f\7`\2\2\u009d\u009e\7&\2\2\u009e\u00a0\5@!\2\u009f\u009d\3\2\2\2"+
- "\u009f\u00a0\3\2\2\2\u00a0\u00a5\3\2\2\2\u00a1\u00a2\7`\2\2\u00a2\u00a3"+
- "\7&\2\2\u00a3\u00a5\5D#\2\u00a4\u009c\3\2\2\2\u00a4\u00a1\3\2\2\2\u00a5"+
- "\27\3\2\2\2\u00a6\u00a7\5\20\t\2\u00a7\u00a8\7`\2\2\u00a8\u00aa\7\b\2"+
- "\2\u00a9\u00ab\5\32\16\2\u00aa\u00a9\3\2\2\2\u00aa\u00ab\3\2\2\2\u00ab"+
- "\u00ac\3\2\2\2\u00ac\u00ad\7\t\2\2\u00ad\u00af\7\4\2\2\u00ae\u00b0\5\""+
- "\22\2\u00af\u00ae\3\2\2\2\u00af\u00b0\3\2\2\2\u00b0\u00b1\3\2\2\2\u00b1"+
- "\u00b2\7\5\2\2\u00b2\31\3\2\2\2\u00b3\u00b8\5\34\17\2\u00b4\u00b5\7\f"+
- "\2\2\u00b5\u00b7\5\34\17\2\u00b6\u00b4\3\2\2\2\u00b7\u00ba\3\2\2\2\u00b8"+
- "\u00b6\3\2\2\2\u00b8\u00b9\3\2\2\2\u00b9\33\3\2\2\2\u00ba\u00b8\3\2\2"+
- "\2\u00bb\u00bc\5\20\t\2\u00bc\u00bd\7`\2\2\u00bd\u00c0\3\2\2\2\u00be\u00c0"+
- "\7R\2\2\u00bf\u00bb\3\2\2\2\u00bf\u00be\3\2\2\2\u00c0\35\3\2\2\2\u00c1"+
- "\u00c2\7*\2\2\u00c2\u00c3\7+\2\2\u00c3\u00c4\3\2\2\2\u00c4\u00c5\7\b\2"+
- "\2\u00c5\u00ca\7W\2\2\u00c6\u00c7\7\f\2\2\u00c7\u00c9\7W\2\2\u00c8\u00c6"+
- "\3\2\2\2\u00c9\u00cc\3\2\2\2\u00ca\u00c8\3\2\2\2\u00ca\u00cb\3\2\2\2\u00cb"+
- "\u00cd\3\2\2\2\u00cc\u00ca\3\2\2\2\u00cd\u00f3\7\t\2\2\u00ce\u00cf\7*"+
- "\2\2\u00cf\u00d0\7,\2\2\u00d0\u00d1\3\2\2\2\u00d1\u00d2\7\b\2\2\u00d2"+
- "\u00d3\7W\2\2\u00d3\u00f3\7\t\2\2\u00d4\u00d5\7*\2\2\u00d5\u00d6\7-\2"+
- "\2\u00d6\u00d7\3\2\2\2\u00d7\u00d8\7\b\2\2\u00d8\u00d9\7`\2\2\u00d9\u00f3"+
- "\7\t\2\2\u00da\u00db\7*\2\2\u00db\u00dc\7.\2\2\u00dc\u00dd\3\2\2\2\u00dd"+
- "\u00de\7\b\2\2\u00de\u00df\7U\2\2\u00df\u00f3\7\t\2\2\u00e0\u00e1\7*\2"+
- "\2\u00e1\u00e2\7/\2\2\u00e2\u00e3\3\2\2\2\u00e3\u00e4\7\b\2\2\u00e4\u00e5"+
- "\7`\2\2\u00e5\u00f3\7\t\2\2\u00e6\u00e7\7*\2\2\u00e7\u00e8\7\60\2\2\u00e8"+
- "\u00e9\3\2\2\2\u00e9\u00ea\7\b\2\2\u00ea\u00eb\7`\2\2\u00eb\u00f3\7\t"+
- "\2\2\u00ec\u00ed\7*\2\2\u00ed\u00ee\7\61\2\2\u00ee\u00ef\3\2\2\2\u00ef"+
- "\u00f0\7\b\2\2\u00f0\u00f1\7`\2\2\u00f1\u00f3\7\t\2\2\u00f2\u00c1\3\2"+
- "\2\2\u00f2\u00ce\3\2\2\2\u00f2\u00d4\3\2\2\2\u00f2\u00da\3\2\2\2\u00f2"+
- "\u00e0\3\2\2\2\u00f2\u00e6\3\2\2\2\u00f2\u00ec\3\2\2\2\u00f3\37\3\2\2"+
- "\2\u00f4\u0115\7\62\2\2\u00f5\u0115\7\63\2\2\u00f6\u0115\7\64\2\2\u00f7"+
- "\u00f8\7\65\2\2\u00f8\u00f9\7\b\2\2\u00f9\u00fa\7W\2\2\u00fa\u0115\7\t"+
- "\2\2\u00fb\u00ff\7\66\2\2\u00fc\u00fd\7\b\2\2\u00fd\u00fe\t\2\2\2\u00fe"+
- "\u0100\7\t\2\2\u00ff\u00fc\3\2\2\2\u00ff\u0100\3\2\2\2\u0100\u0115\3\2"+
- "\2\2\u0101\u0115\7\67\2\2\u0102\u0115\78\2\2\u0103\u0107\79\2\2\u0104"+
- "\u0105\7\b\2\2\u0105\u0106\7`\2\2\u0106\u0108\7\t\2\2\u0107\u0104\3\2"+
- "\2\2\u0107\u0108\3\2\2\2\u0108\u0115\3\2\2\2\u0109\u010a\7+\2\2\u010a"+
- "\u010b\7\b\2\2\u010b\u0110\7W\2\2\u010c\u010d\7\f\2\2\u010d\u010f\7W\2"+
- "\2\u010e\u010c\3\2\2\2\u010f\u0112\3\2\2\2\u0110\u010e\3\2\2\2\u0110\u0111"+
- "\3\2\2\2\u0111\u0113\3\2\2\2\u0112\u0110\3\2\2\2\u0113\u0115\7\t\2\2\u0114"+
- "\u00f4\3\2\2\2\u0114\u00f5\3\2\2\2\u0114\u00f6\3\2\2\2\u0114\u00f7\3\2"+
- "\2\2\u0114\u00fb\3\2\2\2\u0114\u0101\3\2\2\2\u0114\u0102\3\2\2\2\u0114"+
- "\u0103\3\2\2\2\u0114\u0109\3\2\2\2\u0115!\3\2\2\2\u0116\u0118\5$\23\2"+
- "\u0117\u0116\3\2\2\2\u0118\u0119\3\2\2\2\u0119\u0117\3\2\2\2\u0119\u011a"+
- "\3\2\2\2\u011a#\3\2\2\2\u011b\u011c\5\22\n\2\u011c\u011d\7\n\2\2\u011d"+
- "\u0170\3\2\2\2\u011e\u0120\7\4\2\2\u011f\u0121\5\"\22\2\u0120\u011f\3"+
- "\2\2\2\u0120\u0121\3\2\2\2\u0121\u0122\3\2\2\2\u0122\u0170\7\5\2\2\u0123"+
- "\u0124\5> \2\u0124\u0125\7\n\2\2\u0125\u0170\3\2\2\2\u0126\u0127\7:\2"+
- "\2\u0127\u0128\7\b\2\2\u0128\u0129\5> \2\u0129\u012a\7\t\2\2\u012a\u012d"+
- "\5$\23\2\u012b\u012c\7;\2\2\u012c\u012e\5$\23\2\u012d\u012b\3\2\2\2\u012d"+
- "\u012e\3\2\2\2\u012e\u0170\3\2\2\2\u012f\u0131\5 \21\2\u0130\u012f\3\2"+
- "\2\2\u0131\u0134\3\2\2\2\u0132\u0130\3\2\2\2\u0132\u0133\3\2\2\2\u0133"+
- "\u0135\3\2\2\2\u0134\u0132\3\2\2\2\u0135\u0136\7<\2\2\u0136\u0137\7\b"+
- "\2\2\u0137\u0138\5> \2\u0138\u0139\7\t\2\2\u0139\u013a\5$\23\2\u013a\u0170"+
- "\3\2\2\2\u013b\u013d\5 \21\2\u013c\u013b\3\2\2\2\u013d\u0140\3\2\2\2\u013e"+
- "\u013c\3\2\2\2\u013e\u013f\3\2\2\2\u013f\u0141\3\2\2\2\u0140\u013e\3\2"+
- "\2\2\u0141\u0142\7=\2\2\u0142\u0143\5$\23\2\u0143\u0144\7<\2\2\u0144\u0145"+
- "\7\b\2\2\u0145\u0146\5> \2\u0146\u0147\7\t\2\2\u0147\u0148\7\n\2\2\u0148"+
- "\u0170\3\2\2\2\u0149\u014b\5 \21\2\u014a\u0149\3\2\2\2\u014b\u014e\3\2"+
- "\2\2\u014c\u014a\3\2\2\2\u014c\u014d\3\2\2\2\u014d\u014f\3\2\2\2\u014e"+
- "\u014c\3\2\2\2\u014f\u0150\7>\2\2\u0150\u0151\7\b\2\2\u0151\u0152\5*\26"+
- "\2\u0152\u0153\7\t\2\2\u0153\u0154\5$\23\2\u0154\u0170\3\2\2\2\u0155\u0156"+
- "\7?\2\2\u0156\u0157\7\b\2\2\u0157\u0158\5> \2\u0158\u0159\7\t\2\2\u0159"+
- "\u015a\7\4\2\2\u015a\u015b\5&\24\2\u015b\u015c\7\5\2\2\u015c\u0170\3\2"+
- "\2\2\u015d\u015f\7@\2\2\u015e\u0160\5> \2\u015f\u015e\3\2\2\2\u015f\u0160"+
- "\3\2\2\2\u0160\u0161\3\2\2\2\u0161\u0170\7\n\2\2\u0162\u0163\7A\2\2\u0163"+
- "\u0170\7\n\2\2\u0164\u0165\7B\2\2\u0165\u0170\7\n\2\2\u0166\u0168\7C\2"+
- "\2\u0167\u0169\5F$\2\u0168\u0167\3\2\2\2\u0168\u0169\3\2\2\2\u0169\u016a"+
- "\3\2\2\2\u016a\u016b\7\4\2\2\u016b\u016c\5J&\2\u016c\u016d\7w\2\2\u016d"+
- "\u0170\3\2\2\2\u016e\u0170\5D#\2\u016f\u011b\3\2\2\2\u016f\u011e\3\2\2"+
- "\2\u016f\u0123\3\2\2\2\u016f\u0126\3\2\2\2\u016f\u0132\3\2\2\2\u016f\u013e"+
- "\3\2\2\2\u016f\u014c\3\2\2\2\u016f\u0155\3\2\2\2\u016f\u015d\3\2\2\2\u016f"+
- "\u0162\3\2\2\2\u016f\u0164\3\2\2\2\u016f\u0166\3\2\2\2\u016f\u016e\3\2"+
- "\2\2\u0170%\3\2\2\2\u0171\u0173\5(\25\2\u0172\u0171\3\2\2\2\u0173\u0174"+
- "\3\2\2\2\u0174\u0172\3\2\2\2\u0174\u0175\3\2\2\2\u0175\u017b\3\2\2\2\u0176"+
- "\u0177\7D\2\2\u0177\u0179\7\13\2\2\u0178\u017a\5\"\22\2\u0179\u0178\3"+
- "\2\2\2\u0179\u017a\3\2\2\2\u017a\u017c\3\2\2\2\u017b\u0176\3\2\2\2\u017b"+
- "\u017c\3\2\2\2\u017c\'\3\2\2\2\u017d\u017e\7E\2\2\u017e\u017f\5@!\2\u017f"+
- "\u0181\7\13\2\2\u0180\u0182\5\"\22\2\u0181\u0180\3\2\2\2\u0181\u0182\3"+
- "\2\2\2\u0182)\3\2\2\2\u0183\u0184\5,\27\2\u0184\u0185\7\n\2\2\u0185\u0186"+
- "\5> \2\u0186\u0188\7\n\2\2\u0187\u0189\5> \2\u0188\u0187\3\2\2\2\u0188"+
- "\u0189\3\2\2\2\u0189\u0194\3\2\2\2\u018a\u018c\5\20\t\2\u018b\u018a\3"+
- "\2\2\2\u018b\u018c\3\2\2\2\u018c\u018d\3\2\2\2\u018d\u018e\7`\2\2\u018e"+
- "\u018f\7\13\2\2\u018f\u0190\5@!\2\u0190\u0191\7\r\2\2\u0191\u0192\5@!"+
- "\2\u0192\u0194\3\2\2\2\u0193\u0183\3\2\2\2\u0193\u018b\3\2\2\2\u0194+"+
- "\3\2\2\2\u0195\u0197\5\22\n\2\u0196\u0195\3\2\2\2\u0196\u0197\3\2\2\2"+
- "\u0197\u019a\3\2\2\2\u0198\u019a\5> \2\u0199\u0196\3\2\2\2\u0199\u0198"+
- "\3\2\2\2\u019a-\3\2\2\2\u019b\u019c\b\30\1\2\u019c\u019d\7\b\2\2\u019d"+
- "\u019e\5.\30\2\u019e\u019f\7\t\2\2\u019f\u01ab\3\2\2\2\u01a0\u01ab\7R"+
- "\2\2\u01a1\u01a3\7Q\2\2\u01a2\u01a4\7R\2\2\u01a3\u01a2\3\2\2\2\u01a3\u01a4"+
- "\3\2\2\2\u01a4\u01ab\3\2\2\2\u01a5\u01ab\5\62\32\2\u01a6\u01ab\5\60\31"+
- "\2\u01a7\u01ab\58\35\2\u01a8\u01ab\5\66\34\2\u01a9\u01ab\7\3\2\2\u01aa"+
- "\u019b\3\2\2\2\u01aa\u01a0\3\2\2\2\u01aa\u01a1\3\2\2\2\u01aa\u01a5\3\2"+
- "\2\2\u01aa\u01a6\3\2\2\2\u01aa\u01a7\3\2\2\2\u01aa\u01a8\3\2\2\2\u01aa"+
- "\u01a9\3\2\2\2\u01ab\u01b9\3\2\2\2\u01ac\u01ad\f\n\2\2\u01ad\u01b8\7\23"+
- "\2\2\u01ae\u01af\f\t\2\2\u01af\u01b1\7\6\2\2\u01b0\u01b2\5@!\2\u01b1\u01b0"+
- "\3\2\2\2\u01b1\u01b2\3\2\2\2\u01b2\u01b3\3\2\2\2\u01b3\u01b8\7\7\2\2\u01b4"+
- "\u01b5\f\b\2\2\u01b5\u01b6\7\b\2\2\u01b6\u01b8\7\t\2\2\u01b7\u01ac\3\2"+
- "\2\2\u01b7\u01ae\3\2\2\2\u01b7\u01b4\3\2\2\2\u01b8\u01bb\3\2\2\2\u01b9"+
- "\u01b7\3\2\2\2\u01b9\u01ba\3\2\2\2\u01ba/\3\2\2\2\u01bb\u01b9\3\2\2\2"+
- "\u01bc\u01bd\7F\2\2\u01bd\u01be\7`\2\2\u01be\61\3\2\2\2\u01bf\u01c1\7"+
- "F\2\2\u01c0\u01c2\7`\2\2\u01c1\u01c0\3\2\2\2\u01c1\u01c2\3\2\2\2\u01c2"+
- "\u01c3\3\2\2\2\u01c3\u01c5\7\4\2\2\u01c4\u01c6\5\64\33\2\u01c5\u01c4\3"+
- "\2\2\2\u01c6\u01c7\3\2\2\2\u01c7\u01c5\3\2\2\2\u01c7\u01c8\3\2\2\2\u01c8"+
- "\u01c9\3\2\2\2\u01c9\u01ca\7\5\2\2\u01ca\63\3\2\2\2\u01cb\u01cc\5\22\n"+
- "\2\u01cc\u01cd\7\n\2\2\u01cd\65\3\2\2\2\u01ce\u01cf\7G\2\2\u01cf\u01d0"+
- "\7`\2\2\u01d0\67\3\2\2\2\u01d1\u01d3\7G\2\2\u01d2\u01d4\7`\2\2\u01d3\u01d2"+
- "\3\2\2\2\u01d3\u01d4\3\2\2\2\u01d4\u01d5\3\2\2\2\u01d5\u01d6\7\4\2\2\u01d6"+
- "\u01d7\5:\36\2\u01d7\u01d8\7\5\2\2\u01d89\3\2\2\2\u01d9\u01da\b\36\1\2"+
- "\u01da\u01db\5<\37\2\u01db\u01e1\3\2\2\2\u01dc\u01dd\f\3\2\2\u01dd\u01de"+
- "\7\f\2\2\u01de\u01e0\5<\37\2\u01df\u01dc\3\2\2\2\u01e0\u01e3\3\2\2\2\u01e1"+
- "\u01df\3\2\2\2\u01e1\u01e2\3\2\2\2\u01e2;\3\2\2\2\u01e3\u01e1\3\2\2\2"+
- "\u01e4\u01e7\7`\2\2\u01e5\u01e6\7&\2\2\u01e6\u01e8\5@!\2\u01e7\u01e5\3"+
- "\2\2\2\u01e7\u01e8\3\2\2\2\u01e8=\3\2\2\2\u01e9\u01ea\b \1\2\u01ea\u01eb"+
- "\5@!\2\u01eb\u01f1\3\2\2\2\u01ec\u01ed\f\3\2\2\u01ed\u01ee\7\f\2\2\u01ee"+
- "\u01f0\5@!\2\u01ef\u01ec\3\2\2\2\u01f0\u01f3\3\2\2\2\u01f1\u01ef\3\2\2"+
- "\2\u01f1\u01f2\3\2\2\2\u01f2?\3\2\2\2\u01f3\u01f1\3\2\2\2\u01f4\u01f5"+
- "\b!\1\2\u01f5\u01f6\7\b\2\2\u01f6\u01f7\5> \2\u01f7\u01f8\7\t\2\2\u01f8"+
- "\u022b\3\2\2\2\u01f9\u01fa\7H\2\2\u01fa\u01fd\7\b\2\2\u01fb\u01fe\5@!"+
- "\2\u01fc\u01fe\5.\30\2\u01fd\u01fb\3\2\2\2\u01fd\u01fc\3\2\2\2\u01fe\u01ff"+
- "\3\2\2\2\u01ff\u0200\7\t\2\2\u0200\u022b\3\2\2\2\u0201\u0202\7I\2\2\u0202"+
- "\u0205\7\b\2\2\u0203\u0206\5@!\2\u0204\u0206\5.\30\2\u0205\u0203\3\2\2"+
- "\2\u0205\u0204\3\2\2\2\u0206\u0207\3\2\2\2\u0207\u0208\7\t\2\2\u0208\u022b"+
- "\3\2\2\2\u0209\u020a\7\b\2\2\u020a\u020b\5.\30\2\u020b\u020c\7\t\2\2\u020c"+
- "\u020d\5@!\32\u020d\u022b\3\2\2\2\u020e\u020f\t\3\2\2\u020f\u022b\5@!"+
- "\31\u0210\u0211\7\23\2\2\u0211\u022b\5@!\27\u0212\u0213\t\4\2\2\u0213"+
- "\u022b\5@!\26\u0214\u0215\t\5\2\2\u0215\u022b\5@!\22\u0216\u0217\7\4\2"+
- "\2\u0217\u021c\5@!\2\u0218\u0219\7\f\2\2\u0219\u021b\5@!\2\u021a\u0218"+
- "\3\2\2\2\u021b\u021e\3\2\2\2\u021c\u021a\3\2\2\2\u021c\u021d\3\2\2\2\u021d"+
- "\u021f\3\2\2\2\u021e\u021c\3\2\2\2\u021f\u0220\7\5\2\2\u0220\u022b\3\2"+
- "\2\2\u0221\u022b\7`\2\2\u0222\u022b\7W\2\2\u0223\u0225\7U\2\2\u0224\u0223"+
- "\3\2\2\2\u0225\u0226\3\2\2\2\u0226\u0224\3\2\2\2\u0226\u0227\3\2\2\2\u0227"+
- "\u022b\3\2\2\2\u0228\u022b\7V\2\2\u0229\u022b\7S\2\2\u022a\u01f4\3\2\2"+
- "\2\u022a\u01f9\3\2\2\2\u022a\u0201\3\2\2\2\u022a\u0209\3\2\2\2\u022a\u020e"+
- "\3\2\2\2\u022a\u0210\3\2\2\2\u022a\u0212\3\2\2\2\u022a\u0214\3\2\2\2\u022a"+
- "\u0216\3\2\2\2\u022a\u0221\3\2\2\2\u022a\u0222\3\2\2\2\u022a\u0224\3\2"+
- "\2\2\u022a\u0228\3\2\2\2\u022a\u0229\3\2\2\2\u022b\u0268\3\2\2\2\u022c"+
- "\u022d\f\25\2\2\u022d\u022e\t\6\2\2\u022e\u0267\5@!\26\u022f\u0230\f\24"+
- "\2\2\u0230\u0231\t\7\2\2\u0231\u0267\5@!\25\u0232\u0233\f\23\2\2\u0233"+
- "\u0234\t\b\2\2\u0234\u0267\5@!\24\u0235\u0236\f\21\2\2\u0236\u0237\t\t"+
- "\2\2\u0237\u0267\5@!\22\u0238\u0239\f\20\2\2\u0239\u023a\7\30\2\2\u023a"+
- "\u0267\5@!\21\u023b\u023c\f\17\2\2\u023c\u023d\7\32\2\2\u023d\u0267\5"+
- "@!\20\u023e\u023f\f\16\2\2\u023f\u0240\7\33\2\2\u0240\u0267\5@!\17\u0241"+
- "\u0242\f\r\2\2\u0242\u0243\7$\2\2\u0243\u0267\5@!\16\u0244\u0245\f\f\2"+
- "\2\u0245\u0246\7%\2\2\u0246\u0267\5@!\r\u0247\u0248\f\13\2\2\u0248\u0249"+
- "\7\16\2\2\u0249\u024a\5@!\2\u024a\u024b\7\13\2\2\u024b\u024c\5@!\f\u024c"+
- "\u0267\3\2\2\2\u024d\u024e\f\n\2\2\u024e\u024f\7&\2\2\u024f\u0267\5@!"+
- "\n\u0250\u0251\f\t\2\2\u0251\u0252\7\'\2\2\u0252\u0267\5@!\t\u0253\u0254"+
- "\f \2\2\u0254\u0255\7\17\2\2\u0255\u0267\7`\2\2\u0256\u0257\f\37\2\2\u0257"+
- "\u0258\7\20\2\2\u0258\u0267\7`\2\2\u0259\u025a\f\36\2\2\u025a\u025c\7"+
- "\b\2\2\u025b\u025d\5B\"\2\u025c\u025b\3\2\2\2\u025c\u025d\3\2\2\2\u025d"+
- "\u025e\3\2\2\2\u025e\u0267\7\t\2\2\u025f\u0260\f\33\2\2\u0260\u0261\7"+
- "\6\2\2\u0261\u0262\5> \2\u0262\u0263\7\7\2\2\u0263\u0267\3\2\2\2\u0264"+
- "\u0265\f\30\2\2\u0265\u0267\t\3\2\2\u0266\u022c\3\2\2\2\u0266\u022f\3"+
- "\2\2\2\u0266\u0232\3\2\2\2\u0266\u0235\3\2\2\2\u0266\u0238\3\2\2\2\u0266"+
- "\u023b\3\2\2\2\u0266\u023e\3\2\2\2\u0266\u0241\3\2\2\2\u0266\u0244\3\2"+
- "\2\2\u0266\u0247\3\2\2\2\u0266\u024d\3\2\2\2\u0266\u0250\3\2\2\2\u0266"+
- "\u0253\3\2\2\2\u0266\u0256\3\2\2\2\u0266\u0259\3\2\2\2\u0266\u025f\3\2"+
- "\2\2\u0266\u0264\3\2\2\2\u0267\u026a\3\2\2\2\u0268\u0266\3\2\2\2\u0268"+
- "\u0269\3\2\2\2\u0269A\3\2\2\2\u026a\u0268\3\2\2\2\u026b\u0270\5@!\2\u026c"+
- "\u026d\7\f\2\2\u026d\u026f\5@!\2\u026e\u026c\3\2\2\2\u026f\u0272\3\2\2"+
- "\2\u0270\u026e\3\2\2\2\u0270\u0271\3\2\2\2\u0271C\3\2\2\2\u0272\u0270"+
- "\3\2\2\2\u0273\u0275\7J\2\2\u0274\u0276\5F$\2\u0275\u0274\3\2\2\2\u0275"+
- "\u0276\3\2\2\2\u0276\u0277\3\2\2\2\u0277\u0278\7T\2\2\u0278E\3\2\2\2\u0279"+
- "\u027a\7\b\2\2\u027a\u027f\5H%\2\u027b\u027c\7\f\2\2\u027c\u027e\5H%\2"+
- "\u027d\u027b\3\2\2\2\u027e\u0281\3\2\2\2\u027f\u027d\3\2\2\2\u027f\u0280"+
- "\3\2\2\2\u0280\u0282\3\2\2\2\u0281\u027f\3\2\2\2\u0282\u0283\7\t\2\2\u0283"+
- "G\3\2\2\2\u0284\u0285\7K\2\2\u0285\u0294\7U\2\2\u0286\u0287\7L\2\2\u0287"+
- "\u0294\7`\2\2\u0288\u0289\7M\2\2\u0289\u0294\7U\2\2\u028a\u028b\7N\2\2"+
- "\u028b\u0294\5@!\2\u028c\u028d\7O\2\2\u028d\u0294\5@!\2\u028e\u0291\7"+
- ",\2\2\u028f\u0292\7\67\2\2\u0290\u0292\5@!\2\u0291\u028f\3\2\2\2\u0291"+
- "\u0290\3\2\2\2\u0292\u0294\3\2\2\2\u0293\u0284\3\2\2\2\u0293\u0286\3\2"+
- "\2\2\u0293\u0288\3\2\2\2\u0293\u028a\3\2\2\2\u0293\u028c\3\2\2\2\u0293"+
- "\u028e\3\2\2\2\u0294I\3\2\2\2\u0295\u0297\5L\'\2\u0296\u0295\3\2\2\2\u0297"+
- "\u029a\3\2\2\2\u0298\u0296\3\2\2\2\u0298\u0299\3\2\2\2\u0299K\3\2\2\2"+
- "\u029a\u0298\3\2\2\2\u029b\u029f\5N(\2\u029c\u029f\5P)\2\u029d\u029f\5"+
- "R*\2\u029e\u029b\3\2\2\2\u029e\u029c\3\2\2\2\u029e\u029d\3\2\2\2\u029f"+
- "M\3\2\2\2\u02a0\u02a1\7\u0084\2\2\u02a1\u02a5\7g\2\2\u02a2\u02a3\7\u0083"+
- "\2\2\u02a3\u02a5\7g\2\2\u02a4\u02a0\3\2\2\2\u02a4\u02a2\3\2\2\2\u02a5"+
- "O\3\2\2\2\u02a6\u02a8\7e\2\2\u02a7\u02a9\5T+\2\u02a8\u02a7\3\2\2\2\u02a8"+
- "\u02a9\3\2\2\2\u02a9Q\3\2\2\2\u02aa\u02ab\7d\2\2\u02ab\u02b0\5V,\2\u02ac"+
- "\u02ad\7h\2\2\u02ad\u02af\5V,\2\u02ae\u02ac\3\2\2\2\u02af\u02b2\3\2\2"+
- "\2\u02b0\u02ae\3\2\2\2\u02b0\u02b1\3\2\2\2\u02b1S\3\2\2\2\u02b2\u02b0"+
- "\3\2\2\2\u02b3\u02cb\5V,\2\u02b4\u02b5\7f\2\2\u02b5\u02cb\5V,\2\u02b6"+
- "\u02b7\5V,\2\u02b7\u02b8\7h\2\2\u02b8\u02b9\7\u0084\2\2\u02b9\u02cb\3"+
- "\2\2\2\u02ba\u02bb\7i\2\2\u02bb\u02bc\5V,\2\u02bc\u02bd\7j\2\2\u02bd\u02be"+
- "\7h\2\2\u02be\u02bf\7\u0084\2\2\u02bf\u02cb\3\2\2\2\u02c0\u02c1\7i\2\2"+
- "\u02c1\u02c2\5V,\2\u02c2\u02c3\7h\2\2\u02c3\u02c4\7\u0084\2\2\u02c4\u02c5"+
- "\7j\2\2\u02c5\u02cb\3\2\2\2\u02c6\u02c7\7i\2\2\u02c7\u02c8\5V,\2\u02c8"+
- "\u02c9\7j\2\2\u02c9\u02cb\3\2\2\2\u02ca\u02b3\3\2\2\2\u02ca\u02b4\3\2"+
- "\2\2\u02ca\u02b6\3\2\2\2\u02ca\u02ba\3\2\2\2\u02ca\u02c0\3\2\2\2\u02ca"+
- "\u02c6\3\2\2\2\u02cbU\3\2\2\2\u02cc\u02cd\b,\1\2\u02cd\u02ce\7k\2\2\u02ce"+
- "\u02cf\5V,\2\u02cf\u02d0\7l\2\2\u02d0\u02db\3\2\2\2\u02d1\u02d2\t\n\2"+
- "\2\u02d2\u02db\5V,\n\u02d3\u02db\7\u0084\2\2\u02d4\u02db\7\u0082\2\2\u02d5"+
- "\u02d6\7v\2\2\u02d6\u02d7\7\u0084\2\2\u02d7\u02db\7w\2\2\u02d8\u02db\7"+
- "x\2\2\u02d9\u02db\7\u0081\2\2\u02da\u02cc\3\2\2\2\u02da\u02d1\3\2\2\2"+
- "\u02da\u02d3\3\2\2\2\u02da\u02d4\3\2\2\2\u02da\u02d5\3\2\2\2\u02da\u02d8"+
- "\3\2\2\2\u02da\u02d9\3\2\2\2\u02db\u02ea\3\2\2\2\u02dc\u02dd\f\f\2\2\u02dd"+
- "\u02de\7m\2\2\u02de\u02e9\5V,\r\u02df\u02e0\f\13\2\2\u02e0\u02e1\t\13"+
- "\2\2\u02e1\u02e9\5V,\f\u02e2\u02e3\f\t\2\2\u02e3\u02e4\t\f\2\2\u02e4\u02e9"+
- "\5V,\n\u02e5\u02e6\f\b\2\2\u02e6\u02e7\t\r\2\2\u02e7\u02e9\5V,\t\u02e8"+
- "\u02dc\3\2\2\2\u02e8\u02df\3\2\2\2\u02e8\u02e2\3\2\2\2\u02e8\u02e5\3\2"+
- "\2\2\u02e9\u02ec\3\2\2\2\u02ea\u02e8\3\2\2\2\u02ea\u02eb\3\2\2\2\u02eb"+
- "W\3\2\2\2\u02ec\u02ea\3\2\2\2Gafz\u0084\u008b\u0099\u009f\u00a4\u00aa"+
- "\u00af\u00b8\u00bf\u00ca\u00f2\u00ff\u0107\u0110\u0114\u0119\u0120\u012d"+
- "\u0132\u013e\u014c\u015f\u0168\u016f\u0174\u0179\u017b\u0181\u0188\u018b"+
- "\u0193\u0196\u0199\u01a3\u01aa\u01b1\u01b7\u01b9\u01c1\u01c7\u01d3\u01e1"+
- "\u01e7\u01f1\u01fd\u0205\u021c\u0226\u022a\u025c\u0266\u0268\u0270\u0275"+
- "\u027f\u0291\u0293\u0298\u029e\u02a4\u02a8\u02b0\u02ca\u02da\u02e8\u02ea";
+ "\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u00f9"+
+ "\n\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u0106"+
+ "\n\21\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u010e\n\21\3\21\3\21\3\21\3\21"+
+ "\3\21\7\21\u0115\n\21\f\21\16\21\u0118\13\21\3\21\5\21\u011b\n\21\3\22"+
+ "\6\22\u011e\n\22\r\22\16\22\u011f\3\23\3\23\3\23\3\23\3\23\5\23\u0127"+
+ "\n\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u0134"+
+ "\n\23\3\23\7\23\u0137\n\23\f\23\16\23\u013a\13\23\3\23\3\23\3\23\3\23"+
+ "\3\23\3\23\3\23\7\23\u0143\n\23\f\23\16\23\u0146\13\23\3\23\3\23\3\23"+
+ "\3\23\3\23\3\23\3\23\3\23\3\23\7\23\u0151\n\23\f\23\16\23\u0154\13\23"+
+ "\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23"+
+ "\3\23\3\23\5\23\u0166\n\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u016f"+
+ "\n\23\3\23\3\23\3\23\3\23\3\23\5\23\u0176\n\23\3\24\6\24\u0179\n\24\r"+
+ "\24\16\24\u017a\3\24\3\24\3\24\5\24\u0180\n\24\5\24\u0182\n\24\3\25\3"+
+ "\25\3\25\3\25\5\25\u0188\n\25\3\26\3\26\3\26\3\26\3\26\5\26\u018f\n\26"+
+ "\3\26\5\26\u0192\n\26\3\26\3\26\3\26\3\26\3\26\3\26\5\26\u019a\n\26\3"+
+ "\27\5\27\u019d\n\27\3\27\5\27\u01a0\n\27\3\30\3\30\3\30\3\30\3\30\3\30"+
+ "\3\30\3\30\5\30\u01aa\n\30\3\30\3\30\3\30\3\30\3\30\5\30\u01b1\n\30\3"+
+ "\30\3\30\3\30\3\30\3\30\5\30\u01b8\n\30\3\30\3\30\3\30\3\30\7\30\u01be"+
+ "\n\30\f\30\16\30\u01c1\13\30\3\31\3\31\3\31\3\32\3\32\5\32\u01c8\n\32"+
+ "\3\32\3\32\6\32\u01cc\n\32\r\32\16\32\u01cd\3\32\3\32\3\33\3\33\3\33\3"+
+ "\34\3\34\3\34\3\35\3\35\5\35\u01da\n\35\3\35\3\35\3\35\3\35\3\36\3\36"+
+ "\3\36\3\36\3\36\3\36\7\36\u01e6\n\36\f\36\16\36\u01e9\13\36\3\37\3\37"+
+ "\3\37\5\37\u01ee\n\37\3 \3 \3 \3 \3 \3 \7 \u01f6\n \f \16 \u01f9\13 \3"+
+ "!\3!\3!\3!\3!\3!\3!\3!\3!\5!\u0204\n!\3!\3!\3!\3!\3!\3!\5!\u020c\n!\3"+
+ "!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\7!\u0221\n!\f"+
+ "!\16!\u0224\13!\3!\3!\3!\3!\3!\6!\u022b\n!\r!\16!\u022c\3!\3!\5!\u0231"+
+ "\n!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!"+
+ "\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!"+
+ "\3!\3!\3!\5!\u0263\n!\3!\3!\3!\3!\3!\3!\3!\3!\7!\u026d\n!\f!\16!\u0270"+
+ "\13!\3\"\3\"\3\"\7\"\u0275\n\"\f\"\16\"\u0278\13\"\3#\3#\5#\u027c\n#\3"+
+ "#\3#\3$\3$\3$\3$\7$\u0284\n$\f$\16$\u0287\13$\3$\3$\3%\3%\3%\3%\3%\3%"+
+ "\3%\3%\3%\3%\3%\3%\3%\5%\u0298\n%\5%\u029a\n%\3&\7&\u029d\n&\f&\16&\u02a0"+
+ "\13&\3\'\3\'\3\'\5\'\u02a5\n\'\3(\3(\3(\3(\5(\u02ab\n(\3)\3)\5)\u02af"+
+ "\n)\3*\3*\3*\3*\7*\u02b5\n*\f*\16*\u02b8\13*\3+\3+\3+\3+\3+\3+\3+\3+\3"+
+ "+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\5+\u02d1\n+\3,\3,\3,\3,\3"+
+ ",\3,\3,\3,\3,\3,\3,\3,\3,\3,\5,\u02e1\n,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3"+
+ ",\3,\3,\7,\u02ef\n,\f,\16,\u02f2\13,\3,\2\b\24.:>@V-\2\4\6\b\n\f\16\20"+
+ "\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTV\2\16\4\2XX"+
+ "aa\3\2\26\27\5\2\21\22\30\31QQ\4\2 ##\3\2\34\35\3\2\23\25\3\2\21\22\3"+
+ "\2\36#\3\2qt\3\2op\3\2uv\3\2qr\2\u035c\2X\3\2\2\2\4[\3\2\2\2\6a\3\2\2"+
+ "\2\bf\3\2\2\2\nh\3\2\2\2\fz\3\2\2\2\16|\3\2\2\2\20\u0084\3\2\2\2\22\u008e"+
+ "\3\2\2\2\24\u0091\3\2\2\2\26\u00a4\3\2\2\2\30\u00a6\3\2\2\2\32\u00b3\3"+
+ "\2\2\2\34\u00bf\3\2\2\2\36\u00f8\3\2\2\2 \u011a\3\2\2\2\"\u011d\3\2\2"+
+ "\2$\u0175\3\2\2\2&\u0178\3\2\2\2(\u0183\3\2\2\2*\u0199\3\2\2\2,\u019f"+
+ "\3\2\2\2.\u01b0\3\2\2\2\60\u01c2\3\2\2\2\62\u01c5\3\2\2\2\64\u01d1\3\2"+
+ "\2\2\66\u01d4\3\2\2\28\u01d7\3\2\2\2:\u01df\3\2\2\2<\u01ea\3\2\2\2>\u01ef"+
+ "\3\2\2\2@\u0230\3\2\2\2B\u0271\3\2\2\2D\u0279\3\2\2\2F\u027f\3\2\2\2H"+
+ "\u0299\3\2\2\2J\u029e\3\2\2\2L\u02a4\3\2\2\2N\u02aa\3\2\2\2P\u02ac\3\2"+
+ "\2\2R\u02b0\3\2\2\2T\u02d0\3\2\2\2V\u02e0\3\2\2\2XY\5\6\4\2YZ\7\2\2\3"+
+ "Z\3\3\2\2\2[\\\5J&\2\\]\7\2\2\3]\5\3\2\2\2^`\5\b\5\2_^\3\2\2\2`c\3\2\2"+
+ "\2a_\3\2\2\2ab\3\2\2\2b\7\3\2\2\2ca\3\2\2\2dg\5\f\7\2eg\5\n\6\2fd\3\2"+
+ "\2\2fe\3\2\2\2g\t\3\2\2\2hi\7(\2\2ij\7V\2\2j\13\3\2\2\2kl\5\22\n\2lm\7"+
+ "\n\2\2m{\3\2\2\2no\5\62\32\2op\7\n\2\2p{\3\2\2\2qr\58\35\2rs\7\n\2\2s"+
+ "{\3\2\2\2t{\5\30\r\2u{\5D#\2v{\5\36\20\2wx\5\16\b\2xy\7\n\2\2y{\3\2\2"+
+ "\2zk\3\2\2\2zn\3\2\2\2zq\3\2\2\2zt\3\2\2\2zu\3\2\2\2zv\3\2\2\2zw\3\2\2"+
+ "\2{\r\3\2\2\2|}\7)\2\2}~\5.\30\2~\177\7a\2\2\177\u0080\b\b\1\2\u0080\17"+
+ "\3\2\2\2\u0081\u0083\5 \21\2\u0082\u0081\3\2\2\2\u0083\u0086\3\2\2\2\u0084"+
+ "\u0082\3\2\2\2\u0084\u0085\3\2\2\2\u0085\u0087\3\2\2\2\u0086\u0084\3\2"+
+ "\2\2\u0087\u008b\5.\30\2\u0088\u008a\5 \21\2\u0089\u0088\3\2\2\2\u008a"+
+ "\u008d\3\2\2\2\u008b\u0089\3\2\2\2\u008b\u008c\3\2\2\2\u008c\21\3\2\2"+
+ "\2\u008d\u008b\3\2\2\2\u008e\u008f\5\20\t\2\u008f\u0090\5\24\13\2\u0090"+
+ "\23\3\2\2\2\u0091\u0092\b\13\1\2\u0092\u0093\5\26\f\2\u0093\u0099\3\2"+
+ "\2\2\u0094\u0095\f\3\2\2\u0095\u0096\7\f\2\2\u0096\u0098\5\26\f\2\u0097"+
+ "\u0094\3\2\2\2\u0098\u009b\3\2\2\2\u0099\u0097\3\2\2\2\u0099\u009a\3\2"+
+ "\2\2\u009a\25\3\2\2\2\u009b\u0099\3\2\2\2\u009c\u009f\7a\2\2\u009d\u009e"+
+ "\7&\2\2\u009e\u00a0\5@!\2\u009f\u009d\3\2\2\2\u009f\u00a0\3\2\2\2\u00a0"+
+ "\u00a5\3\2\2\2\u00a1\u00a2\7a\2\2\u00a2\u00a3\7&\2\2\u00a3\u00a5\5D#\2"+
+ "\u00a4\u009c\3\2\2\2\u00a4\u00a1\3\2\2\2\u00a5\27\3\2\2\2\u00a6\u00a7"+
+ "\5\20\t\2\u00a7\u00a8\7a\2\2\u00a8\u00aa\7\b\2\2\u00a9\u00ab\5\32\16\2"+
+ "\u00aa\u00a9\3\2\2\2\u00aa\u00ab\3\2\2\2\u00ab\u00ac\3\2\2\2\u00ac\u00ad"+
+ "\7\t\2\2\u00ad\u00af\7\4\2\2\u00ae\u00b0\5\"\22\2\u00af\u00ae\3\2\2\2"+
+ "\u00af\u00b0\3\2\2\2\u00b0\u00b1\3\2\2\2\u00b1\u00b2\7\5\2\2\u00b2\31"+
+ "\3\2\2\2\u00b3\u00b8\5\34\17\2\u00b4\u00b5\7\f\2\2\u00b5\u00b7\5\34\17"+
+ "\2\u00b6\u00b4\3\2\2\2\u00b7\u00ba\3\2\2\2\u00b8\u00b6\3\2\2\2\u00b8\u00b9"+
+ "\3\2\2\2\u00b9\33\3\2\2\2\u00ba\u00b8\3\2\2\2\u00bb\u00bc\5\20\t\2\u00bc"+
+ "\u00bd\7a\2\2\u00bd\u00c0\3\2\2\2\u00be\u00c0\7S\2\2\u00bf\u00bb\3\2\2"+
+ "\2\u00bf\u00be\3\2\2\2\u00c0\35\3\2\2\2\u00c1\u00c2\7*\2\2\u00c2\u00c3"+
+ "\7+\2\2\u00c3\u00c4\3\2\2\2\u00c4\u00c5\7\b\2\2\u00c5\u00ca\7X\2\2\u00c6"+
+ "\u00c7\7\f\2\2\u00c7\u00c9\7X\2\2\u00c8\u00c6\3\2\2\2\u00c9\u00cc\3\2"+
+ "\2\2\u00ca\u00c8\3\2\2\2\u00ca\u00cb\3\2\2\2\u00cb\u00cd\3\2\2\2\u00cc"+
+ "\u00ca\3\2\2\2\u00cd\u00f9\7\t\2\2\u00ce\u00cf\7*\2\2\u00cf\u00d0\7,\2"+
+ "\2\u00d0\u00d1\3\2\2\2\u00d1\u00d2\7\b\2\2\u00d2\u00d3\7X\2\2\u00d3\u00f9"+
+ "\7\t\2\2\u00d4\u00d5\7*\2\2\u00d5\u00d6\7-\2\2\u00d6\u00d7\3\2\2\2\u00d7"+
+ "\u00d8\7\b\2\2\u00d8\u00d9\7a\2\2\u00d9\u00f9\7\t\2\2\u00da\u00db\7*\2"+
+ "\2\u00db\u00dc\7/\2\2\u00dc\u00dd\3\2\2\2\u00dd\u00de\7\b\2\2\u00de\u00df"+
+ "\7a\2\2\u00df\u00f9\7\t\2\2\u00e0\u00e1\7*\2\2\u00e1\u00e2\7.\2\2\u00e2"+
+ "\u00e3\3\2\2\2\u00e3\u00e4\7\b\2\2\u00e4\u00e5\7V\2\2\u00e5\u00f9\7\t"+
+ "\2\2\u00e6\u00e7\7*\2\2\u00e7\u00e8\7\60\2\2\u00e8\u00e9\3\2\2\2\u00e9"+
+ "\u00ea\7\b\2\2\u00ea\u00eb\7a\2\2\u00eb\u00f9\7\t\2\2\u00ec\u00ed\7*\2"+
+ "\2\u00ed\u00ee\7\61\2\2\u00ee\u00ef\3\2\2\2\u00ef\u00f0\7\b\2\2\u00f0"+
+ "\u00f1\7a\2\2\u00f1\u00f9\7\t\2\2\u00f2\u00f3\7*\2\2\u00f3\u00f4\7\62"+
+ "\2\2\u00f4\u00f5\3\2\2\2\u00f5\u00f6\7\b\2\2\u00f6\u00f7\7a\2\2\u00f7"+
+ "\u00f9\7\t\2\2\u00f8\u00c1\3\2\2\2\u00f8\u00ce\3\2\2\2\u00f8\u00d4\3\2"+
+ "\2\2\u00f8\u00da\3\2\2\2\u00f8\u00e0\3\2\2\2\u00f8\u00e6\3\2\2\2\u00f8"+
+ "\u00ec\3\2\2\2\u00f8\u00f2\3\2\2\2\u00f9\37\3\2\2\2\u00fa\u011b\7\63\2"+
+ "\2\u00fb\u011b\7\64\2\2\u00fc\u011b\7\65\2\2\u00fd\u00fe\7\66\2\2\u00fe"+
+ "\u00ff\7\b\2\2\u00ff\u0100\7X\2\2\u0100\u011b\7\t\2\2\u0101\u0105\7\67"+
+ "\2\2\u0102\u0103\7\b\2\2\u0103\u0104\t\2\2\2\u0104\u0106\7\t\2\2\u0105"+
+ "\u0102\3\2\2\2\u0105\u0106\3\2\2\2\u0106\u011b\3\2\2\2\u0107\u011b\78"+
+ "\2\2\u0108\u011b\79\2\2\u0109\u010d\7:\2\2\u010a\u010b\7\b\2\2\u010b\u010c"+
+ "\7a\2\2\u010c\u010e\7\t\2\2\u010d\u010a\3\2\2\2\u010d\u010e\3\2\2\2\u010e"+
+ "\u011b\3\2\2\2\u010f\u0110\7+\2\2\u0110\u0111\7\b\2\2\u0111\u0116\7X\2"+
+ "\2\u0112\u0113\7\f\2\2\u0113\u0115\7X\2\2\u0114\u0112\3\2\2\2\u0115\u0118"+
+ "\3\2\2\2\u0116\u0114\3\2\2\2\u0116\u0117\3\2\2\2\u0117\u0119\3\2\2\2\u0118"+
+ "\u0116\3\2\2\2\u0119\u011b\7\t\2\2\u011a\u00fa\3\2\2\2\u011a\u00fb\3\2"+
+ "\2\2\u011a\u00fc\3\2\2\2\u011a\u00fd\3\2\2\2\u011a\u0101\3\2\2\2\u011a"+
+ "\u0107\3\2\2\2\u011a\u0108\3\2\2\2\u011a\u0109\3\2\2\2\u011a\u010f\3\2"+
+ "\2\2\u011b!\3\2\2\2\u011c\u011e\5$\23\2\u011d\u011c\3\2\2\2\u011e\u011f"+
+ "\3\2\2\2\u011f\u011d\3\2\2\2\u011f\u0120\3\2\2\2\u0120#\3\2\2\2\u0121"+
+ "\u0122\5\22\n\2\u0122\u0123\7\n\2\2\u0123\u0176\3\2\2\2\u0124\u0126\7"+
+ "\4\2\2\u0125\u0127\5\"\22\2\u0126\u0125\3\2\2\2\u0126\u0127\3\2\2\2\u0127"+
+ "\u0128\3\2\2\2\u0128\u0176\7\5\2\2\u0129\u012a\5> \2\u012a\u012b\7\n\2"+
+ "\2\u012b\u0176\3\2\2\2\u012c\u012d\7;\2\2\u012d\u012e\7\b\2\2\u012e\u012f"+
+ "\5> \2\u012f\u0130\7\t\2\2\u0130\u0133\5$\23\2\u0131\u0132\7<\2\2\u0132"+
+ "\u0134\5$\23\2\u0133\u0131\3\2\2\2\u0133\u0134\3\2\2\2\u0134\u0176\3\2"+
+ "\2\2\u0135\u0137\5 \21\2\u0136\u0135\3\2\2\2\u0137\u013a\3\2\2\2\u0138"+
+ "\u0136\3\2\2\2\u0138\u0139\3\2\2\2\u0139\u013b\3\2\2\2\u013a\u0138\3\2"+
+ "\2\2\u013b\u013c\7=\2\2\u013c\u013d\7\b\2\2\u013d\u013e\5> \2\u013e\u013f"+
+ "\7\t\2\2\u013f\u0140\5$\23\2\u0140\u0176\3\2\2\2\u0141\u0143\5 \21\2\u0142"+
+ "\u0141\3\2\2\2\u0143\u0146\3\2\2\2\u0144\u0142\3\2\2\2\u0144\u0145\3\2"+
+ "\2\2\u0145\u0147\3\2\2\2\u0146\u0144\3\2\2\2\u0147\u0148\7>\2\2\u0148"+
+ "\u0149\5$\23\2\u0149\u014a\7=\2\2\u014a\u014b\7\b\2\2\u014b\u014c\5> "+
+ "\2\u014c\u014d\7\t\2\2\u014d\u014e\7\n\2\2\u014e\u0176\3\2\2\2\u014f\u0151"+
+ "\5 \21\2\u0150\u014f\3\2\2\2\u0151\u0154\3\2\2\2\u0152\u0150\3\2\2\2\u0152"+
+ "\u0153\3\2\2\2\u0153\u0155\3\2\2\2\u0154\u0152\3\2\2\2\u0155\u0156\7?"+
+ "\2\2\u0156\u0157\7\b\2\2\u0157\u0158\5*\26\2\u0158\u0159\7\t\2\2\u0159"+
+ "\u015a\5$\23\2\u015a\u0176\3\2\2\2\u015b\u015c\7@\2\2\u015c\u015d\7\b"+
+ "\2\2\u015d\u015e\5> \2\u015e\u015f\7\t\2\2\u015f\u0160\7\4\2\2\u0160\u0161"+
+ "\5&\24\2\u0161\u0162\7\5\2\2\u0162\u0176\3\2\2\2\u0163\u0165\7A\2\2\u0164"+
+ "\u0166\5> \2\u0165\u0164\3\2\2\2\u0165\u0166\3\2\2\2\u0166\u0167\3\2\2"+
+ "\2\u0167\u0176\7\n\2\2\u0168\u0169\7B\2\2\u0169\u0176\7\n\2\2\u016a\u016b"+
+ "\7C\2\2\u016b\u0176\7\n\2\2\u016c\u016e\7D\2\2\u016d\u016f\5F$\2\u016e"+
+ "\u016d\3\2\2\2\u016e\u016f\3\2\2\2\u016f\u0170\3\2\2\2\u0170\u0171\7\4"+
+ "\2\2\u0171\u0172\5J&\2\u0172\u0173\7x\2\2\u0173\u0176\3\2\2\2\u0174\u0176"+
+ "\5D#\2\u0175\u0121\3\2\2\2\u0175\u0124\3\2\2\2\u0175\u0129\3\2\2\2\u0175"+
+ "\u012c\3\2\2\2\u0175\u0138\3\2\2\2\u0175\u0144\3\2\2\2\u0175\u0152\3\2"+
+ "\2\2\u0175\u015b\3\2\2\2\u0175\u0163\3\2\2\2\u0175\u0168\3\2\2\2\u0175"+
+ "\u016a\3\2\2\2\u0175\u016c\3\2\2\2\u0175\u0174\3\2\2\2\u0176%\3\2\2\2"+
+ "\u0177\u0179\5(\25\2\u0178\u0177\3\2\2\2\u0179\u017a\3\2\2\2\u017a\u0178"+
+ "\3\2\2\2\u017a\u017b\3\2\2\2\u017b\u0181\3\2\2\2\u017c\u017d\7E\2\2\u017d"+
+ "\u017f\7\13\2\2\u017e\u0180\5\"\22\2\u017f\u017e\3\2\2\2\u017f\u0180\3"+
+ "\2\2\2\u0180\u0182\3\2\2\2\u0181\u017c\3\2\2\2\u0181\u0182\3\2\2\2\u0182"+
+ "\'\3\2\2\2\u0183\u0184\7F\2\2\u0184\u0185\5@!\2\u0185\u0187\7\13\2\2\u0186"+
+ "\u0188\5\"\22\2\u0187\u0186\3\2\2\2\u0187\u0188\3\2\2\2\u0188)\3\2\2\2"+
+ "\u0189\u018a\5,\27\2\u018a\u018b\7\n\2\2\u018b\u018c\5> \2\u018c\u018e"+
+ "\7\n\2\2\u018d\u018f\5> \2\u018e\u018d\3\2\2\2\u018e\u018f\3\2\2\2\u018f"+
+ "\u019a\3\2\2\2\u0190\u0192\5\20\t\2\u0191\u0190\3\2\2\2\u0191\u0192\3"+
+ "\2\2\2\u0192\u0193\3\2\2\2\u0193\u0194\7a\2\2\u0194\u0195\7\13\2\2\u0195"+
+ "\u0196\5@!\2\u0196\u0197\7\r\2\2\u0197\u0198\5@!\2\u0198\u019a\3\2\2\2"+
+ "\u0199\u0189\3\2\2\2\u0199\u0191\3\2\2\2\u019a+\3\2\2\2\u019b\u019d\5"+
+ "\22\n\2\u019c\u019b\3\2\2\2\u019c\u019d\3\2\2\2\u019d\u01a0\3\2\2\2\u019e"+
+ "\u01a0\5> \2\u019f\u019c\3\2\2\2\u019f\u019e\3\2\2\2\u01a0-\3\2\2\2\u01a1"+
+ "\u01a2\b\30\1\2\u01a2\u01a3\7\b\2\2\u01a3\u01a4\5.\30\2\u01a4\u01a5\7"+
+ "\t\2\2\u01a5\u01b1\3\2\2\2\u01a6\u01b1\7S\2\2\u01a7\u01a9\7R\2\2\u01a8"+
+ "\u01aa\7S\2\2\u01a9\u01a8\3\2\2\2\u01a9\u01aa\3\2\2\2\u01aa\u01b1\3\2"+
+ "\2\2\u01ab\u01b1\5\62\32\2\u01ac\u01b1\5\60\31\2\u01ad\u01b1\58\35\2\u01ae"+
+ "\u01b1\5\66\34\2\u01af\u01b1\7\3\2\2\u01b0\u01a1\3\2\2\2\u01b0\u01a6\3"+
+ "\2\2\2\u01b0\u01a7\3\2\2\2\u01b0\u01ab\3\2\2\2\u01b0\u01ac\3\2\2\2\u01b0"+
+ "\u01ad\3\2\2\2\u01b0\u01ae\3\2\2\2\u01b0\u01af\3\2\2\2\u01b1\u01bf\3\2"+
+ "\2\2\u01b2\u01b3\f\n\2\2\u01b3\u01be\7\23\2\2\u01b4\u01b5\f\t\2\2\u01b5"+
+ "\u01b7\7\6\2\2\u01b6\u01b8\5@!\2\u01b7\u01b6\3\2\2\2\u01b7\u01b8\3\2\2"+
+ "\2\u01b8\u01b9\3\2\2\2\u01b9\u01be\7\7\2\2\u01ba\u01bb\f\b\2\2\u01bb\u01bc"+
+ "\7\b\2\2\u01bc\u01be\7\t\2\2\u01bd\u01b2\3\2\2\2\u01bd\u01b4\3\2\2\2\u01bd"+
+ "\u01ba\3\2\2\2\u01be\u01c1\3\2\2\2\u01bf\u01bd\3\2\2\2\u01bf\u01c0\3\2"+
+ "\2\2\u01c0/\3\2\2\2\u01c1\u01bf\3\2\2\2\u01c2\u01c3\7G\2\2\u01c3\u01c4"+
+ "\7a\2\2\u01c4\61\3\2\2\2\u01c5\u01c7\7G\2\2\u01c6\u01c8\7a\2\2\u01c7\u01c6"+
+ "\3\2\2\2\u01c7\u01c8\3\2\2\2\u01c8\u01c9\3\2\2\2\u01c9\u01cb\7\4\2\2\u01ca"+
+ "\u01cc\5\64\33\2\u01cb\u01ca\3\2\2\2\u01cc\u01cd\3\2\2\2\u01cd\u01cb\3"+
+ "\2\2\2\u01cd\u01ce\3\2\2\2\u01ce\u01cf\3\2\2\2\u01cf\u01d0\7\5\2\2\u01d0"+
+ "\63\3\2\2\2\u01d1\u01d2\5\22\n\2\u01d2\u01d3\7\n\2\2\u01d3\65\3\2\2\2"+
+ "\u01d4\u01d5\7H\2\2\u01d5\u01d6\7a\2\2\u01d6\67\3\2\2\2\u01d7\u01d9\7"+
+ "H\2\2\u01d8\u01da\7a\2\2\u01d9\u01d8\3\2\2\2\u01d9\u01da\3\2\2\2\u01da"+
+ "\u01db\3\2\2\2\u01db\u01dc\7\4\2\2\u01dc\u01dd\5:\36\2\u01dd\u01de\7\5"+
+ "\2\2\u01de9\3\2\2\2\u01df\u01e0\b\36\1\2\u01e0\u01e1\5<\37\2\u01e1\u01e7"+
+ "\3\2\2\2\u01e2\u01e3\f\3\2\2\u01e3\u01e4\7\f\2\2\u01e4\u01e6\5<\37\2\u01e5"+
+ "\u01e2\3\2\2\2\u01e6\u01e9\3\2\2\2\u01e7\u01e5\3\2\2\2\u01e7\u01e8\3\2"+
+ "\2\2\u01e8;\3\2\2\2\u01e9\u01e7\3\2\2\2\u01ea\u01ed\7a\2\2\u01eb\u01ec"+
+ "\7&\2\2\u01ec\u01ee\5@!\2\u01ed\u01eb\3\2\2\2\u01ed\u01ee\3\2\2\2\u01ee"+
+ "=\3\2\2\2\u01ef\u01f0\b \1\2\u01f0\u01f1\5@!\2\u01f1\u01f7\3\2\2\2\u01f2"+
+ "\u01f3\f\3\2\2\u01f3\u01f4\7\f\2\2\u01f4\u01f6\5@!\2\u01f5\u01f2\3\2\2"+
+ "\2\u01f6\u01f9\3\2\2\2\u01f7\u01f5\3\2\2\2\u01f7\u01f8\3\2\2\2\u01f8?"+
+ "\3\2\2\2\u01f9\u01f7\3\2\2\2\u01fa\u01fb\b!\1\2\u01fb\u01fc\7\b\2\2\u01fc"+
+ "\u01fd\5> \2\u01fd\u01fe\7\t\2\2\u01fe\u0231\3\2\2\2\u01ff\u0200\7I\2"+
+ "\2\u0200\u0203\7\b\2\2\u0201\u0204\5@!\2\u0202\u0204\5.\30\2\u0203\u0201"+
+ "\3\2\2\2\u0203\u0202\3\2\2\2\u0204\u0205\3\2\2\2\u0205\u0206\7\t\2\2\u0206"+
+ "\u0231\3\2\2\2\u0207\u0208\7J\2\2\u0208\u020b\7\b\2\2\u0209\u020c\5@!"+
+ "\2\u020a\u020c\5.\30\2\u020b\u0209\3\2\2\2\u020b\u020a\3\2\2\2\u020c\u020d"+
+ "\3\2\2\2\u020d\u020e\7\t\2\2\u020e\u0231\3\2\2\2\u020f\u0210\7\b\2\2\u0210"+
+ "\u0211\5.\30\2\u0211\u0212\7\t\2\2\u0212\u0213\5@!\32\u0213\u0231\3\2"+
+ "\2\2\u0214\u0215\t\3\2\2\u0215\u0231\5@!\31\u0216\u0217\7\23\2\2\u0217"+
+ "\u0231\5@!\27\u0218\u0219\t\4\2\2\u0219\u0231\5@!\26\u021a\u021b\t\5\2"+
+ "\2\u021b\u0231\5@!\22\u021c\u021d\7\4\2\2\u021d\u0222\5@!\2\u021e\u021f"+
+ "\7\f\2\2\u021f\u0221\5@!\2\u0220\u021e\3\2\2\2\u0221\u0224\3\2\2\2\u0222"+
+ "\u0220\3\2\2\2\u0222\u0223\3\2\2\2\u0223\u0225\3\2\2\2\u0224\u0222\3\2"+
+ "\2\2\u0225\u0226\7\5\2\2\u0226\u0231\3\2\2\2\u0227\u0231\7a\2\2\u0228"+
+ "\u0231\7X\2\2\u0229\u022b\7V\2\2\u022a\u0229\3\2\2\2\u022b\u022c\3\2\2"+
+ "\2\u022c\u022a\3\2\2\2\u022c\u022d\3\2\2\2\u022d\u0231\3\2\2\2\u022e\u0231"+
+ "\7W\2\2\u022f\u0231\7T\2\2\u0230\u01fa\3\2\2\2\u0230\u01ff\3\2\2\2\u0230"+
+ "\u0207\3\2\2\2\u0230\u020f\3\2\2\2\u0230\u0214\3\2\2\2\u0230\u0216\3\2"+
+ "\2\2\u0230\u0218\3\2\2\2\u0230\u021a\3\2\2\2\u0230\u021c\3\2\2\2\u0230"+
+ "\u0227\3\2\2\2\u0230\u0228\3\2\2\2\u0230\u022a\3\2\2\2\u0230\u022e\3\2"+
+ "\2\2\u0230\u022f\3\2\2\2\u0231\u026e\3\2\2\2\u0232\u0233\f\25\2\2\u0233"+
+ "\u0234\t\6\2\2\u0234\u026d\5@!\26\u0235\u0236\f\24\2\2\u0236\u0237\t\7"+
+ "\2\2\u0237\u026d\5@!\25\u0238\u0239\f\23\2\2\u0239\u023a\t\b\2\2\u023a"+
+ "\u026d\5@!\24\u023b\u023c\f\21\2\2\u023c\u023d\t\t\2\2\u023d\u026d\5@"+
+ "!\22\u023e\u023f\f\20\2\2\u023f\u0240\7\30\2\2\u0240\u026d\5@!\21\u0241"+
+ "\u0242\f\17\2\2\u0242\u0243\7\32\2\2\u0243\u026d\5@!\20\u0244\u0245\f"+
+ "\16\2\2\u0245\u0246\7\33\2\2\u0246\u026d\5@!\17\u0247\u0248\f\r\2\2\u0248"+
+ "\u0249\7$\2\2\u0249\u026d\5@!\16\u024a\u024b\f\f\2\2\u024b\u024c\7%\2"+
+ "\2\u024c\u026d\5@!\r\u024d\u024e\f\13\2\2\u024e\u024f\7\16\2\2\u024f\u0250"+
+ "\5@!\2\u0250\u0251\7\13\2\2\u0251\u0252\5@!\f\u0252\u026d\3\2\2\2\u0253"+
+ "\u0254\f\n\2\2\u0254\u0255\7&\2\2\u0255\u026d\5@!\n\u0256\u0257\f\t\2"+
+ "\2\u0257\u0258\7\'\2\2\u0258\u026d\5@!\t\u0259\u025a\f \2\2\u025a\u025b"+
+ "\7\17\2\2\u025b\u026d\7a\2\2\u025c\u025d\f\37\2\2\u025d\u025e\7\20\2\2"+
+ "\u025e\u026d\7a\2\2\u025f\u0260\f\36\2\2\u0260\u0262\7\b\2\2\u0261\u0263"+
+ "\5B\"\2\u0262\u0261\3\2\2\2\u0262\u0263\3\2\2\2\u0263\u0264\3\2\2\2\u0264"+
+ "\u026d\7\t\2\2\u0265\u0266\f\33\2\2\u0266\u0267\7\6\2\2\u0267\u0268\5"+
+ "> \2\u0268\u0269\7\7\2\2\u0269\u026d\3\2\2\2\u026a\u026b\f\30\2\2\u026b"+
+ "\u026d\t\3\2\2\u026c\u0232\3\2\2\2\u026c\u0235\3\2\2\2\u026c\u0238\3\2"+
+ "\2\2\u026c\u023b\3\2\2\2\u026c\u023e\3\2\2\2\u026c\u0241\3\2\2\2\u026c"+
+ "\u0244\3\2\2\2\u026c\u0247\3\2\2\2\u026c\u024a\3\2\2\2\u026c\u024d\3\2"+
+ "\2\2\u026c\u0253\3\2\2\2\u026c\u0256\3\2\2\2\u026c\u0259\3\2\2\2\u026c"+
+ "\u025c\3\2\2\2\u026c\u025f\3\2\2\2\u026c\u0265\3\2\2\2\u026c\u026a\3\2"+
+ "\2\2\u026d\u0270\3\2\2\2\u026e\u026c\3\2\2\2\u026e\u026f\3\2\2\2\u026f"+
+ "A\3\2\2\2\u0270\u026e\3\2\2\2\u0271\u0276\5@!\2\u0272\u0273\7\f\2\2\u0273"+
+ "\u0275\5@!\2\u0274\u0272\3\2\2\2\u0275\u0278\3\2\2\2\u0276\u0274\3\2\2"+
+ "\2\u0276\u0277\3\2\2\2\u0277C\3\2\2\2\u0278\u0276\3\2\2\2\u0279\u027b"+
+ "\7K\2\2\u027a\u027c\5F$\2\u027b\u027a\3\2\2\2\u027b\u027c\3\2\2\2\u027c"+
+ "\u027d\3\2\2\2\u027d\u027e\7U\2\2\u027eE\3\2\2\2\u027f\u0280\7\b\2\2\u0280"+
+ "\u0285\5H%\2\u0281\u0282\7\f\2\2\u0282\u0284\5H%\2\u0283\u0281\3\2\2\2"+
+ "\u0284\u0287\3\2\2\2\u0285\u0283\3\2\2\2\u0285\u0286\3\2\2\2\u0286\u0288"+
+ "\3\2\2\2\u0287\u0285\3\2\2\2\u0288\u0289\7\t\2\2\u0289G\3\2\2\2\u028a"+
+ "\u028b\7L\2\2\u028b\u029a\7V\2\2\u028c\u028d\7M\2\2\u028d\u029a\7a\2\2"+
+ "\u028e\u028f\7N\2\2\u028f\u029a\7V\2\2\u0290\u0291\7O\2\2\u0291\u029a"+
+ "\5@!\2\u0292\u0293\7P\2\2\u0293\u029a\5@!\2\u0294\u0297\7,\2\2\u0295\u0298"+
+ "\78\2\2\u0296\u0298\5@!\2\u0297\u0295\3\2\2\2\u0297\u0296\3\2\2\2\u0298"+
+ "\u029a\3\2\2\2\u0299\u028a\3\2\2\2\u0299\u028c\3\2\2\2\u0299\u028e\3\2"+
+ "\2\2\u0299\u0290\3\2\2\2\u0299\u0292\3\2\2\2\u0299\u0294\3\2\2\2\u029a"+
+ "I\3\2\2\2\u029b\u029d\5L\'\2\u029c\u029b\3\2\2\2\u029d\u02a0\3\2\2\2\u029e"+
+ "\u029c\3\2\2\2\u029e\u029f\3\2\2\2\u029fK\3\2\2\2\u02a0\u029e\3\2\2\2"+
+ "\u02a1\u02a5\5N(\2\u02a2\u02a5\5P)\2\u02a3\u02a5\5R*\2\u02a4\u02a1\3\2"+
+ "\2\2\u02a4\u02a2\3\2\2\2\u02a4\u02a3\3\2\2\2\u02a5M\3\2\2\2\u02a6\u02a7"+
+ "\7\u0085\2\2\u02a7\u02ab\7h\2\2\u02a8\u02a9\7\u0084\2\2\u02a9\u02ab\7"+
+ "h\2\2\u02aa\u02a6\3\2\2\2\u02aa\u02a8\3\2\2\2\u02abO\3\2\2\2\u02ac\u02ae"+
+ "\7f\2\2\u02ad\u02af\5T+\2\u02ae\u02ad\3\2\2\2\u02ae\u02af\3\2\2\2\u02af"+
+ "Q\3\2\2\2\u02b0\u02b1\7e\2\2\u02b1\u02b6\5V,\2\u02b2\u02b3\7i\2\2\u02b3"+
+ "\u02b5\5V,\2\u02b4\u02b2\3\2\2\2\u02b5\u02b8\3\2\2\2\u02b6\u02b4\3\2\2"+
+ "\2\u02b6\u02b7\3\2\2\2\u02b7S\3\2\2\2\u02b8\u02b6\3\2\2\2\u02b9\u02d1"+
+ "\5V,\2\u02ba\u02bb\7g\2\2\u02bb\u02d1\5V,\2\u02bc\u02bd\5V,\2\u02bd\u02be"+
+ "\7i\2\2\u02be\u02bf\7\u0085\2\2\u02bf\u02d1\3\2\2\2\u02c0\u02c1\7j\2\2"+
+ "\u02c1\u02c2\5V,\2\u02c2\u02c3\7k\2\2\u02c3\u02c4\7i\2\2\u02c4\u02c5\7"+
+ "\u0085\2\2\u02c5\u02d1\3\2\2\2\u02c6\u02c7\7j\2\2\u02c7\u02c8\5V,\2\u02c8"+
+ "\u02c9\7i\2\2\u02c9\u02ca\7\u0085\2\2\u02ca\u02cb\7k\2\2\u02cb\u02d1\3"+
+ "\2\2\2\u02cc\u02cd\7j\2\2\u02cd\u02ce\5V,\2\u02ce\u02cf\7k\2\2\u02cf\u02d1"+
+ "\3\2\2\2\u02d0\u02b9\3\2\2\2\u02d0\u02ba\3\2\2\2\u02d0\u02bc\3\2\2\2\u02d0"+
+ "\u02c0\3\2\2\2\u02d0\u02c6\3\2\2\2\u02d0\u02cc\3\2\2\2\u02d1U\3\2\2\2"+
+ "\u02d2\u02d3\b,\1\2\u02d3\u02d4\7l\2\2\u02d4\u02d5\5V,\2\u02d5\u02d6\7"+
+ "m\2\2\u02d6\u02e1\3\2\2\2\u02d7\u02d8\t\n\2\2\u02d8\u02e1\5V,\n\u02d9"+
+ "\u02e1\7\u0085\2\2\u02da\u02e1\7\u0083\2\2\u02db\u02dc\7w\2\2\u02dc\u02dd"+
+ "\7\u0085\2\2\u02dd\u02e1\7x\2\2\u02de\u02e1\7y\2\2\u02df\u02e1\7\u0082"+
+ "\2\2\u02e0\u02d2\3\2\2\2\u02e0\u02d7\3\2\2\2\u02e0\u02d9\3\2\2\2\u02e0"+
+ "\u02da\3\2\2\2\u02e0\u02db\3\2\2\2\u02e0\u02de\3\2\2\2\u02e0\u02df\3\2"+
+ "\2\2\u02e1\u02f0\3\2\2\2\u02e2\u02e3\f\f\2\2\u02e3\u02e4\7n\2\2\u02e4"+
+ "\u02ef\5V,\r\u02e5\u02e6\f\13\2\2\u02e6\u02e7\t\13\2\2\u02e7\u02ef\5V"+
+ ",\f\u02e8\u02e9\f\t\2\2\u02e9\u02ea\t\f\2\2\u02ea\u02ef\5V,\n\u02eb\u02ec"+
+ "\f\b\2\2\u02ec\u02ed\t\r\2\2\u02ed\u02ef\5V,\t\u02ee\u02e2\3\2\2\2\u02ee"+
+ "\u02e5\3\2\2\2\u02ee\u02e8\3\2\2\2\u02ee\u02eb\3\2\2\2\u02ef\u02f2\3\2"+
+ "\2\2\u02f0\u02ee\3\2\2\2\u02f0\u02f1\3\2\2\2\u02f1W\3\2\2\2\u02f2\u02f0"+
+ "\3\2\2\2Gafz\u0084\u008b\u0099\u009f\u00a4\u00aa\u00af\u00b8\u00bf\u00ca"+
+ "\u00f8\u0105\u010d\u0116\u011a\u011f\u0126\u0133\u0138\u0144\u0152\u0165"+
+ "\u016e\u0175\u017a\u017f\u0181\u0187\u018e\u0191\u0199\u019c\u019f\u01a9"+
+ "\u01b0\u01b7\u01bd\u01bf\u01c7\u01cd\u01d9\u01e7\u01ed\u01f7\u0203\u020b"+
+ "\u0222\u022c\u0230\u0262\u026c\u026e\u0276\u027b\u0285\u0297\u0299\u029e"+
+ "\u02a4\u02aa\u02ae\u02b6\u02d0\u02e0\u02ee\u02f0";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParser.tokens b/src/main/java/dk/camelot64/kickc/parser/KickCParser.tokens
index c1a5d096f..db1cd5f56 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCParser.tokens
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCParser.tokens
@@ -42,95 +42,96 @@ RESERVE=41
PC=42
TARGET=43
LINK=44
-CODESEG=45
-DATASEG=46
-ENCODING=47
-CONST=48
-EXTERN=49
-EXPORT=50
-ALIGN=51
-REGISTER=52
-INLINE=53
-VOLATILE=54
-INTERRUPT=55
-IF=56
-ELSE=57
-WHILE=58
-DO=59
-FOR=60
-SWITCH=61
-RETURN=62
-BREAK=63
-CONTINUE=64
-ASM=65
-DEFAULT=66
-CASE=67
-STRUCT=68
-ENUM=69
-SIZEOF=70
-TYPEID=71
-KICKASM=72
-RESOURCE=73
-USES=74
-CLOBBERS=75
-BYTES=76
-CYCLES=77
-LOGIC_NOT=78
-SIGNEDNESS=79
-SIMPLETYPE=80
-BOOLEAN=81
-KICKASM_BODY=82
-STRING=83
-CHAR=84
-NUMBER=85
-NUMFLOAT=86
-BINFLOAT=87
-DECFLOAT=88
-HEXFLOAT=89
-NUMINT=90
-BININTEGER=91
-DECINTEGER=92
-HEXINTEGER=93
-NAME=94
-WS=95
-COMMENT_LINE=96
-COMMENT_BLOCK=97
-ASM_BYTE=98
-ASM_MNEMONIC=99
-ASM_IMM=100
-ASM_COLON=101
-ASM_COMMA=102
-ASM_PAR_BEGIN=103
-ASM_PAR_END=104
-ASM_BRACKET_BEGIN=105
-ASM_BRACKET_END=106
-ASM_DOT=107
-ASM_SHIFT_LEFT=108
-ASM_SHIFT_RIGHT=109
-ASM_PLUS=110
-ASM_MINUS=111
-ASM_LESS_THAN=112
-ASM_GREATER_THAN=113
-ASM_MULTIPLY=114
-ASM_DIVIDE=115
-ASM_CURLY_BEGIN=116
-ASM_CURLY_END=117
-ASM_NUMBER=118
-ASM_NUMFLOAT=119
-ASM_BINFLOAT=120
-ASM_DECFLOAT=121
-ASM_HEXFLOAT=122
-ASM_NUMINT=123
-ASM_BININTEGER=124
-ASM_DECINTEGER=125
-ASM_HEXINTEGER=126
-ASM_CHAR=127
-ASM_MULTI_REL=128
-ASM_MULTI_NAME=129
-ASM_NAME=130
-ASM_WS=131
-ASM_COMMENT_LINE=132
-ASM_COMMENT_BLOCK=133
+CPU=45
+CODESEG=46
+DATASEG=47
+ENCODING=48
+CONST=49
+EXTERN=50
+EXPORT=51
+ALIGN=52
+REGISTER=53
+INLINE=54
+VOLATILE=55
+INTERRUPT=56
+IF=57
+ELSE=58
+WHILE=59
+DO=60
+FOR=61
+SWITCH=62
+RETURN=63
+BREAK=64
+CONTINUE=65
+ASM=66
+DEFAULT=67
+CASE=68
+STRUCT=69
+ENUM=70
+SIZEOF=71
+TYPEID=72
+KICKASM=73
+RESOURCE=74
+USES=75
+CLOBBERS=76
+BYTES=77
+CYCLES=78
+LOGIC_NOT=79
+SIGNEDNESS=80
+SIMPLETYPE=81
+BOOLEAN=82
+KICKASM_BODY=83
+STRING=84
+CHAR=85
+NUMBER=86
+NUMFLOAT=87
+BINFLOAT=88
+DECFLOAT=89
+HEXFLOAT=90
+NUMINT=91
+BININTEGER=92
+DECINTEGER=93
+HEXINTEGER=94
+NAME=95
+WS=96
+COMMENT_LINE=97
+COMMENT_BLOCK=98
+ASM_BYTE=99
+ASM_MNEMONIC=100
+ASM_IMM=101
+ASM_COLON=102
+ASM_COMMA=103
+ASM_PAR_BEGIN=104
+ASM_PAR_END=105
+ASM_BRACKET_BEGIN=106
+ASM_BRACKET_END=107
+ASM_DOT=108
+ASM_SHIFT_LEFT=109
+ASM_SHIFT_RIGHT=110
+ASM_PLUS=111
+ASM_MINUS=112
+ASM_LESS_THAN=113
+ASM_GREATER_THAN=114
+ASM_MULTIPLY=115
+ASM_DIVIDE=116
+ASM_CURLY_BEGIN=117
+ASM_CURLY_END=118
+ASM_NUMBER=119
+ASM_NUMFLOAT=120
+ASM_BINFLOAT=121
+ASM_DECFLOAT=122
+ASM_HEXFLOAT=123
+ASM_NUMINT=124
+ASM_BININTEGER=125
+ASM_DECINTEGER=126
+ASM_HEXINTEGER=127
+ASM_CHAR=128
+ASM_MULTI_REL=129
+ASM_MULTI_NAME=130
+ASM_NAME=131
+ASM_WS=132
+ASM_COMMENT_LINE=133
+ASM_COMMENT_BLOCK=134
';'=8
'..'=11
'?'=12
@@ -156,39 +157,40 @@ ASM_COMMENT_BLOCK=133
'pc'=42
'target'=43
'link'=44
-'code_seg'=45
-'data_seg'=46
-'encoding'=47
-'const'=48
-'extern'=49
-'export'=50
-'align'=51
-'register'=52
-'inline'=53
-'volatile'=54
-'interrupt'=55
-'if'=56
-'else'=57
-'while'=58
-'do'=59
-'for'=60
-'switch'=61
-'return'=62
-'break'=63
-'continue'=64
-'asm'=65
-'default'=66
-'case'=67
-'struct'=68
-'enum'=69
-'sizeof'=70
-'typeid'=71
-'kickasm'=72
-'resource'=73
-'uses'=74
-'clobbers'=75
-'bytes'=76
-'cycles'=77
-'!'=78
-'.byte'=98
-'#'=100
+'cpu'=45
+'code_seg'=46
+'data_seg'=47
+'encoding'=48
+'const'=49
+'extern'=50
+'export'=51
+'align'=52
+'register'=53
+'inline'=54
+'volatile'=55
+'interrupt'=56
+'if'=57
+'else'=58
+'while'=59
+'do'=60
+'for'=61
+'switch'=62
+'return'=63
+'break'=64
+'continue'=65
+'asm'=66
+'default'=67
+'case'=68
+'struct'=69
+'enum'=70
+'sizeof'=71
+'typeid'=72
+'kickasm'=73
+'resource'=74
+'uses'=75
+'clobbers'=76
+'bytes'=77
+'cycles'=78
+'!'=79
+'.byte'=99
+'#'=101
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParserBaseListener.java b/src/main/java/dk/camelot64/kickc/parser/KickCParserBaseListener.java
index a1ae8c22f..543992e35 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCParserBaseListener.java
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCParserBaseListener.java
@@ -241,6 +241,18 @@ public class KickCParserBaseListener implements KickCParserListener {
* The default implementation does nothing.
*/
@Override public void exitGlobalDirectivePlatform(KickCParser.GlobalDirectivePlatformContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGlobalDirectiveCpu(KickCParser.GlobalDirectiveCpuContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGlobalDirectiveCpu(KickCParser.GlobalDirectiveCpuContext ctx) { }
/**
* {@inheritDoc}
*
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParserBaseVisitor.java b/src/main/java/dk/camelot64/kickc/parser/KickCParserBaseVisitor.java
index 0e882d15e..26453ce5b 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCParserBaseVisitor.java
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCParserBaseVisitor.java
@@ -146,6 +146,13 @@ public class KickCParserBaseVisitor extends AbstractParseTreeVisitor imple
* {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitGlobalDirectivePlatform(KickCParser.GlobalDirectivePlatformContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitGlobalDirectiveCpu(KickCParser.GlobalDirectiveCpuContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParserListener.java b/src/main/java/dk/camelot64/kickc/parser/KickCParserListener.java
index 9a60419b9..98bcb647b 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCParserListener.java
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCParserListener.java
@@ -213,6 +213,18 @@ public interface KickCParserListener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitGlobalDirectivePlatform(KickCParser.GlobalDirectivePlatformContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code globalDirectiveCpu}
+ * labeled alternative in {@link KickCParser#globalDirective}.
+ * @param ctx the parse tree
+ */
+ void enterGlobalDirectiveCpu(KickCParser.GlobalDirectiveCpuContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code globalDirectiveCpu}
+ * labeled alternative in {@link KickCParser#globalDirective}.
+ * @param ctx the parse tree
+ */
+ void exitGlobalDirectiveCpu(KickCParser.GlobalDirectiveCpuContext ctx);
/**
* Enter a parse tree produced by the {@code globalDirectiveLinkScript}
* labeled alternative in {@link KickCParser#globalDirective}.
diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParserVisitor.java b/src/main/java/dk/camelot64/kickc/parser/KickCParserVisitor.java
index 078ae3d39..8681ae34c 100644
--- a/src/main/java/dk/camelot64/kickc/parser/KickCParserVisitor.java
+++ b/src/main/java/dk/camelot64/kickc/parser/KickCParserVisitor.java
@@ -133,6 +133,13 @@ public interface KickCParserVisitor extends ParseTreeVisitor {
* @return the visitor result
*/
T visitGlobalDirectivePlatform(KickCParser.GlobalDirectivePlatformContext ctx);
+ /**
+ * Visit a parse tree produced by the {@code globalDirectiveCpu}
+ * labeled alternative in {@link KickCParser#globalDirective}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitGlobalDirectiveCpu(KickCParser.GlobalDirectiveCpuContext ctx);
/**
* Visit a parse tree produced by the {@code globalDirectiveLinkScript}
* labeled alternative in {@link KickCParser#globalDirective}.
diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java b/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java
index 9ea19d090..deeaa2d5b 100644
--- a/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java
+++ b/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java
@@ -141,7 +141,18 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor templates =
@@ -201,7 +201,7 @@ public class TestFragments {
private void testFragments(String fileName, Collection signatures) throws IOException {
CompileLog log = new CompileLog();
- AsmFragmentTemplateSynthesizer.initialize(new File("src/main/fragment/").toPath(), null, log);
+ AsmFragmentTemplateSynthesizer.initialize(new File("src/main/fragment/").toPath(), new File("src/main/fragment/6502X/").toPath(), null, log);
List sigs = new ArrayList<>(signatures);
// Always test max 1000 signatures
diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java
index 0a57dfa33..d65316cec 100644
--- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java
+++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java
@@ -324,16 +324,6 @@ public class TestPrograms {
compileAndCompare("platform-asm6502");
}
- @Test
- public void testPlatformC64BasicSegments() throws IOException, URISyntaxException {
- compileAndCompare("platform-c64basic_segments");
- }
-
- @Test
- public void testPlatformAsm6502Segments() throws IOException, URISyntaxException {
- compileAndCompare("platform-asm6502_segments");
- }
-
@Test
public void testEuclid2() throws IOException, URISyntaxException {
compileAndCompare("euclid-3");
@@ -3092,7 +3082,7 @@ public class TestPrograms {
@BeforeClass
public static void setUp() {
- AsmFragmentTemplateSynthesizer.initialize(new File("src/main/fragment/").toPath(), getFragmentCacheDir().toPath(), new CompileLog());
+ AsmFragmentTemplateSynthesizer.initialize(new File("src/main/fragment/").toPath(), new File("src/main/fragment/6502X/").toPath(), getFragmentCacheDir().toPath(), new CompileLog());
}
@AfterClass
diff --git a/src/test/kc/encoding-literal-char.kc b/src/test/kc/encoding-literal-char.kc
index 2ef5f2801..0e0820d1d 100644
--- a/src/test/kc/encoding-literal-char.kc
+++ b/src/test/kc/encoding-literal-char.kc
@@ -4,7 +4,7 @@
const char cpm = 'A';
const char[] spm = "A";
#pragma encoding(petscii_upper)
-const char cpu = 'A';
+const char ccpu = 'A';
const char[] spu = "A";
#pragma encoding(screencode_mixed)
const char csm = 'A';
@@ -17,7 +17,7 @@ const char* screen = 0x0400;
void main() {
char idx = 0;
screen[idx++] = cpm;
- screen[idx++] = cpu;
+ screen[idx++] = ccpu;
screen[idx++] = csm;
screen[idx++] = csu;
idx = 0x28;
diff --git a/src/test/kc/platform-asm6502_segments.kc b/src/test/kc/platform-asm6502_segments.kc
deleted file mode 100644
index 1d2e85708..000000000
--- a/src/test/kc/platform-asm6502_segments.kc
+++ /dev/null
@@ -1,10 +0,0 @@
-// Tests the target platform ASM6502_SEGMENTS
-
-#pragma target(asm6502_segments)
-
-unsigned char[10] TABLE;
-
-void main() {
- for(char i=0;i<10;i++)
- TABLE[i] = i;
-}
\ No newline at end of file
diff --git a/src/test/kc/platform-c64basic_segments.kc b/src/test/kc/platform-c64basic_segments.kc
deleted file mode 100644
index c40887062..000000000
--- a/src/test/kc/platform-c64basic_segments.kc
+++ /dev/null
@@ -1,10 +0,0 @@
-// Tests the target platform C64BASIC_SEGMENTS
-
-#pragma target(c64basic_segments)
-
-unsigned char[10] TABLE;
-
-void main() {
- for(char i=0;i<10;i++)
- TABLE[i] = i;
-}
\ No newline at end of file
diff --git a/src/test/ref/address-of-0.log b/src/test/ref/address-of-0.log
index 94cdb16df..bbb43c8db 100644
--- a/src/test/ref/address-of-0.log
+++ b/src/test/ref/address-of-0.log
@@ -145,7 +145,7 @@ Allocated zp ZP_BYTE:2 [ main::b#2 main::b#0 main::b#1 ]
Allocated zp ZP_BYTE:3 [ main::c#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test address-of - use the pointer to get the value
// Upstart
diff --git a/src/test/ref/address-of-1.log b/src/test/ref/address-of-1.log
index 83c0a2948..0a5633b53 100644
--- a/src/test/ref/address-of-1.log
+++ b/src/test/ref/address-of-1.log
@@ -261,7 +261,7 @@ Allocated zp ZP_BYTE:6 [ main::b2#0 ]
Allocated zp ZP_BYTE:7 [ main::b3#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test address-of - pass the pointer as parameter
// Upstart
diff --git a/src/test/ref/address-of-2.log b/src/test/ref/address-of-2.log
index b4dde3bb8..3a931a160 100644
--- a/src/test/ref/address-of-2.log
+++ b/src/test/ref/address-of-2.log
@@ -364,7 +364,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ val#0 val#1 val#2 val#12 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test address-of by assigning the affected variable in multiple ways
// Upstart
diff --git a/src/test/ref/address-of-3.log b/src/test/ref/address-of-3.log
index 21a851426..dff061791 100644
--- a/src/test/ref/address-of-3.log
+++ b/src/test/ref/address-of-3.log
@@ -318,7 +318,7 @@ Allocated zp ZP_BYTE:6 [ main::$7 ]
Allocated zp ZP_BYTE:7 [ print::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test address-of an array element
// Upstart
diff --git a/src/test/ref/array-16bit-lookup.log b/src/test/ref/array-16bit-lookup.log
index 4eed31059..4d127e9e4 100644
--- a/src/test/ref/array-16bit-lookup.log
+++ b/src/test/ref/array-16bit-lookup.log
@@ -267,7 +267,7 @@ Allocated zp ZP_BYTE:13 [ getValue::$2 ]
Allocated zp ZP_WORD:14 [ getValue::return#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test KickC performance for 16-bit array lookup function from article "Optimizing C array lookups for the 6502"
// http://8bitworkshop.com/blog/compilers/2019/03/17/cc65-optimization.html
diff --git a/src/test/ref/array-length-symbolic-min.log b/src/test/ref/array-length-symbolic-min.log
index a39e365c5..8325b0349 100644
--- a/src/test/ref/array-length-symbolic-min.log
+++ b/src/test/ref/array-length-symbolic-min.log
@@ -143,7 +143,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::sub#2 main::sub#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates symbolic array lengths
// Upstart
diff --git a/src/test/ref/array-length-symbolic.log b/src/test/ref/array-length-symbolic.log
index b7bd75d62..fa5f0024f 100644
--- a/src/test/ref/array-length-symbolic.log
+++ b/src/test/ref/array-length-symbolic.log
@@ -285,7 +285,7 @@ Allocated zp ZP_BYTE:6 [ main::$2 ]
Allocated zp ZP_BYTE:7 [ main::$3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates symbolic array lengths
// Upstart
diff --git a/src/test/ref/arrays-init-kasm-0.log b/src/test/ref/arrays-init-kasm-0.log
index 26534385a..8b9d97cd4 100644
--- a/src/test/ref/arrays-init-kasm-0.log
+++ b/src/test/ref/arrays-init-kasm-0.log
@@ -91,7 +91,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test initializing array using KickAssembler
// Upstart
diff --git a/src/test/ref/arrays-init.log b/src/test/ref/arrays-init.log
index 15eebded9..a93cc3f00 100644
--- a/src/test/ref/arrays-init.log
+++ b/src/test/ref/arrays-init.log
@@ -139,7 +139,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/asm-culling-jmp.log b/src/test/ref/asm-culling-jmp.log
index c37abb906..30eb369b1 100644
--- a/src/test/ref/asm-culling-jmp.log
+++ b/src/test/ref/asm-culling-jmp.log
@@ -74,7 +74,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Example of inline ASM where a JMP is erronously culled during compilation
// https://gitlab.com/camelot/kickc/issues/302
diff --git a/src/test/ref/asm-mnemonic-names.log b/src/test/ref/asm-mnemonic-names.log
index 02a399290..306045ddf 100644
--- a/src/test/ref/asm-mnemonic-names.log
+++ b/src/test/ref/asm-mnemonic-names.log
@@ -128,7 +128,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test using an ASM mnemonic as a C symbol names
// Works if the C-lexer and the ASM-lexer are separated properly
diff --git a/src/test/ref/asm-uses-0.log b/src/test/ref/asm-uses-0.log
index 7fe1e5887..4ef91a4fa 100644
--- a/src/test/ref/asm-uses-0.log
+++ b/src/test/ref/asm-uses-0.log
@@ -100,7 +100,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that inline asm uses clause makes the compiler not cull a procedure referenced
// Upstart
diff --git a/src/test/ref/assignment-chained.log b/src/test/ref/assignment-chained.log
index 5c1b6a9ab..d221498c8 100644
--- a/src/test/ref/assignment-chained.log
+++ b/src/test/ref/assignment-chained.log
@@ -149,7 +149,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::a#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that chained assignments work as intended
// Upstart
diff --git a/src/test/ref/assignment-compound.log b/src/test/ref/assignment-compound.log
index 83c02fe8f..58cf6d34f 100644
--- a/src/test/ref/assignment-compound.log
+++ b/src/test/ref/assignment-compound.log
@@ -744,7 +744,7 @@ Allocated zp ZP_BYTE:2 [ test::a#11 ]
Allocated zp ZP_BYTE:3 [ test::i#11 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test compound assignment operators
// Upstart
diff --git a/src/test/ref/bgblack.log b/src/test/ref/bgblack.log
index 8653ea653..5100df901 100644
--- a/src/test/ref/bgblack.log
+++ b/src/test/ref/bgblack.log
@@ -83,7 +83,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/bitmap-circle.log b/src/test/ref/bitmap-circle.log
index 9465a5fad..4f109fb2f 100644
--- a/src/test/ref/bitmap-circle.log
+++ b/src/test/ref/bitmap-circle.log
@@ -1191,7 +1191,7 @@ Allocated zp ZP_BYTE:46 [ plot::$6 ]
Allocated zp ZP_WORD:47 [ fill::end#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Plots a circle on a bitmap using Bresenham's Circle algorithm
// Coded by Richard-William Loerakker
diff --git a/src/test/ref/bitmap-plot-0.log b/src/test/ref/bitmap-plot-0.log
index 6443e8014..bc5d1fe05 100644
--- a/src/test/ref/bitmap-plot-0.log
+++ b/src/test/ref/bitmap-plot-0.log
@@ -1819,7 +1819,7 @@ Allocated zp ZP_BYTE:35 [ bitmap_init::$5 ]
Allocated zp ZP_BYTE:36 [ bitmap_init::$6 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests the simple bitmap plotter - and counts plots per frame in an IRQ
// Plots simple plots
diff --git a/src/test/ref/bitmap-plot-1.log b/src/test/ref/bitmap-plot-1.log
index d04eac657..c1238ec70 100644
--- a/src/test/ref/bitmap-plot-1.log
+++ b/src/test/ref/bitmap-plot-1.log
@@ -4063,7 +4063,7 @@ Allocated zp ZP_BYTE:224 [ divr16u::$2 ]
Allocated zp ZP_WORD:225 [ rem16u#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests the simple bitmap plotter - and counts plots per frame in an IRQ
// Plots a fullscreen elipsis
diff --git a/src/test/ref/bitmap-plot-2.log b/src/test/ref/bitmap-plot-2.log
index c8ecb0c36..58480dfbb 100644
--- a/src/test/ref/bitmap-plot-2.log
+++ b/src/test/ref/bitmap-plot-2.log
@@ -4298,7 +4298,7 @@ Allocated zp ZP_BYTE:223 [ divr16u::$2 ]
Allocated zp ZP_WORD:224 [ rem16u#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests the simple bitmap plotter - and counts plots per frame in an IRQ
// Plots a spiral
diff --git a/src/test/ref/bitmap-plot-3.log b/src/test/ref/bitmap-plot-3.log
index ce9fb54ba..3aae369fd 100644
--- a/src/test/ref/bitmap-plot-3.log
+++ b/src/test/ref/bitmap-plot-3.log
@@ -2532,7 +2532,7 @@ Allocated zp ZP_BYTE:72 [ bitmap_init::$5 ]
Allocated zp ZP_BYTE:73 [ bitmap_init::$6 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests the simple bitmap plotter
// Plots a few lines using the bresenham line algorithm
diff --git a/src/test/ref/bitmap-plotter.log b/src/test/ref/bitmap-plotter.log
index ee54bb279..679d34166 100644
--- a/src/test/ref/bitmap-plotter.log
+++ b/src/test/ref/bitmap-plotter.log
@@ -1048,7 +1048,7 @@ Allocated zp ZP_BYTE:32 [ init_plot_tables::$8 ]
Allocated zp ZP_BYTE:33 [ init_plot_tables::$9 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/bitwise-not.log b/src/test/ref/bitwise-not.log
index 53cf6be4b..54482db7c 100644
--- a/src/test/ref/bitwise-not.log
+++ b/src/test/ref/bitwise-not.log
@@ -124,7 +124,7 @@ Allocated zp ZP_BYTE:2 [ main::c#2 main::c#1 ]
Allocated zp ZP_BYTE:3 [ main::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/bool-const.log b/src/test/ref/bool-const.log
index 65d4146a4..4cb9d7dd3 100644
--- a/src/test/ref/bool-const.log
+++ b/src/test/ref/bool-const.log
@@ -379,7 +379,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A Minimal test of boolean constants.
// Upstart
diff --git a/src/test/ref/bool-function.log b/src/test/ref/bool-function.log
index 345f3e606..1af865a4c 100644
--- a/src/test/ref/bool-function.log
+++ b/src/test/ref/bool-function.log
@@ -275,7 +275,7 @@ Allocated zp ZP_BOOL:9 [ isSet::$1 ]
Allocated zp ZP_BOOL:10 [ isSet::return#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test a function taking boolean parameter and returning boolean result
// Upstart
diff --git a/src/test/ref/bool-ifs-min.log b/src/test/ref/bool-ifs-min.log
index e42865848..615418540 100644
--- a/src/test/ref/bool-ifs-min.log
+++ b/src/test/ref/bool-ifs-min.log
@@ -178,7 +178,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A test of boolean conditions using && || and !
// Upstart
diff --git a/src/test/ref/bool-nullpointer-exception.log b/src/test/ref/bool-nullpointer-exception.log
index 8cf3849af..40443692d 100644
--- a/src/test/ref/bool-nullpointer-exception.log
+++ b/src/test/ref/bool-nullpointer-exception.log
@@ -139,7 +139,7 @@ Complete equivalence classes
Allocated zp ZP_BOOL:2 [ framedone#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Some bool code that causes a NullPointerException
// Upstart
diff --git a/src/test/ref/bool-pointer.log b/src/test/ref/bool-pointer.log
index 4ccf72aa0..972b1b0e9 100644
--- a/src/test/ref/bool-pointer.log
+++ b/src/test/ref/bool-pointer.log
@@ -133,7 +133,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests a pointer to a boolean
// Upstart
diff --git a/src/test/ref/bool-vars.log b/src/test/ref/bool-vars.log
index d24f92c7a..3f02833d8 100644
--- a/src/test/ref/bool-vars.log
+++ b/src/test/ref/bool-vars.log
@@ -703,7 +703,7 @@ Allocated zp ZP_BYTE:10 [ bool_or::$1 ]
Allocated zp ZP_BYTE:11 [ bool_and::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A test of boolean conditions using && || and !
// Upstart
diff --git a/src/test/ref/bresenham.log b/src/test/ref/bresenham.log
index d44ba2890..75b3d620e 100644
--- a/src/test/ref/bresenham.log
+++ b/src/test/ref/bresenham.log
@@ -390,7 +390,7 @@ Allocated zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
Allocated zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/bresenhamarr.log b/src/test/ref/bresenhamarr.log
index 773ca8918..4803764f8 100644
--- a/src/test/ref/bresenhamarr.log
+++ b/src/test/ref/bresenhamarr.log
@@ -401,7 +401,7 @@ Allocated zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
Allocated zp ZP_WORD:7 [ main::$15 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/c-types.log b/src/test/ref/c-types.log
index df8e502a6..0b8ab589d 100644
--- a/src/test/ref/c-types.log
+++ b/src/test/ref/c-types.log
@@ -2302,7 +2302,7 @@ Allocated zp ZP_BYTE:24 [ print_byte::$0 ]
Allocated zp ZP_BYTE:25 [ print_byte::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests the different standard C types
// Upstart
diff --git a/src/test/ref/c64dtv-8bppcharstretch.log b/src/test/ref/c64dtv-8bppcharstretch.log
index 520dea64b..ff697443d 100644
--- a/src/test/ref/c64dtv-8bppcharstretch.log
+++ b/src/test/ref/c64dtv-8bppcharstretch.log
@@ -1603,7 +1603,7 @@ Allocated zp ZP_BYTE:25 [ gfx_init_screen0::$2 ]
Allocated zp ZP_BYTE:26 [ gfx_init_screen0::$3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// C64DTV 8bpp charmode stretcher
// Upstart
diff --git a/src/test/ref/c64dtv-8bppchunkystretch.log b/src/test/ref/c64dtv-8bppchunkystretch.log
index 945ac8511..0aeb74b6c 100644
--- a/src/test/ref/c64dtv-8bppchunkystretch.log
+++ b/src/test/ref/c64dtv-8bppchunkystretch.log
@@ -1134,7 +1134,7 @@ Allocated zp ZP_WORD:14 [ gfx_init_chunky::$8 ]
Allocated zp ZP_BYTE:16 [ gfx_init_chunky::c#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// C64DTV 8bpp charmode stretcher
// Upstart
diff --git a/src/test/ref/c64dtv-blitter-box.log b/src/test/ref/c64dtv-blitter-box.log
index 1e1a1c385..1d0c9c7a4 100644
--- a/src/test/ref/c64dtv-blitter-box.log
+++ b/src/test/ref/c64dtv-blitter-box.log
@@ -641,7 +641,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::$13 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Fill a box on the screen using the blitter
// Upstart
diff --git a/src/test/ref/c64dtv-blittermin.log b/src/test/ref/c64dtv-blittermin.log
index e3f4af108..ad5607cc0 100644
--- a/src/test/ref/c64dtv-blittermin.log
+++ b/src/test/ref/c64dtv-blittermin.log
@@ -683,7 +683,7 @@ Allocated zp ZP_BYTE:2 [ main::r#2 main::r#1 ]
Allocated zp ZP_BYTE:3 [ main::$9 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/c64dtv-color.log b/src/test/ref/c64dtv-color.log
index 002bc377e..a9f846dca 100644
--- a/src/test/ref/c64dtv-color.log
+++ b/src/test/ref/c64dtv-color.log
@@ -329,7 +329,7 @@ Allocated zp ZP_BYTE:2 [ main::r#2 main::r#1 ]
Allocated zp ZP_BYTE:3 [ main::c#2 main::c#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test C64DTV v2 256-colors and the 16-color redefinable palette
// Upstart
diff --git a/src/test/ref/c64dtv-gfxexplorer.log b/src/test/ref/c64dtv-gfxexplorer.log
index 63911107a..82b3d6ef0 100644
--- a/src/test/ref/c64dtv-gfxexplorer.log
+++ b/src/test/ref/c64dtv-gfxexplorer.log
@@ -15199,7 +15199,7 @@ Allocated zp ZP_BYTE:341 [ gfx_init_screen0::$2 ]
Allocated zp ZP_BYTE:342 [ gfx_init_screen0::$3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Interactive Explorer for C64DTV Screen Modes
// Upstart
diff --git a/src/test/ref/c64dtv-gfxmodes.log b/src/test/ref/c64dtv-gfxmodes.log
index c2cf523cc..974a2494c 100644
--- a/src/test/ref/c64dtv-gfxmodes.log
+++ b/src/test/ref/c64dtv-gfxmodes.log
@@ -14126,7 +14126,7 @@ Allocated zp ZP_BYTE:293 [ mode_stdchar::$30 ]
Allocated zp ZP_BYTE:294 [ print_str_lines::ch#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Exploring C64DTV Screen Modes
// Upstart
diff --git a/src/test/ref/call-parameter-autocast.log b/src/test/ref/call-parameter-autocast.log
index 0a9db42b5..7369656c1 100644
--- a/src/test/ref/call-parameter-autocast.log
+++ b/src/test/ref/call-parameter-autocast.log
@@ -260,7 +260,7 @@ Allocated zp ZP_WORD:3 [ print::w#3 ]
Allocated zp ZP_BYTE:5 [ print::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test auto-casting of call-parameters
// Upstart
diff --git a/src/test/ref/callconstparam.log b/src/test/ref/callconstparam.log
index 3336335c3..1f371e9af 100644
--- a/src/test/ref/callconstparam.log
+++ b/src/test/ref/callconstparam.log
@@ -265,7 +265,7 @@ Allocated zp ZP_WORD:3 [ screen#16 screen#10 screen#4 ]
Allocated zp ZP_BYTE:5 [ line::x#2 line::x#0 line::x#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Multiple calls with different (constant?) parameters should yield different values at runtime
// Currently the same constant parameter is passed on every call.
diff --git a/src/test/ref/cast-deref.log b/src/test/ref/cast-deref.log
index fa61383b8..4eb860f6c 100644
--- a/src/test/ref/cast-deref.log
+++ b/src/test/ref/cast-deref.log
@@ -136,7 +136,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Example of NOP-casting a dereferenced signed byte to a byte
// Upstart
diff --git a/src/test/ref/cast-not-needed-2.log b/src/test/ref/cast-not-needed-2.log
index 127a33235..9b20d1ed0 100644
--- a/src/test/ref/cast-not-needed-2.log
+++ b/src/test/ref/cast-not-needed-2.log
@@ -227,7 +227,7 @@ Allocated zp ZP_WORD:2 [ main::getScreen1_return#0 ]
Allocated zp ZP_WORD:4 [ main::spritePtr1_return#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests a cast that is not needed
// Upstart
diff --git a/src/test/ref/cast-not-needed-3.log b/src/test/ref/cast-not-needed-3.log
index 60ca421e5..85741a94c 100644
--- a/src/test/ref/cast-not-needed-3.log
+++ b/src/test/ref/cast-not-needed-3.log
@@ -232,7 +232,7 @@ Allocated zp ZP_WORD:4 [ main::spritePtr1_$0#0 ]
Allocated zp ZP_BYTE:6 [ main::spritePtr1_return#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests a cast that is not needed
// Upstart
diff --git a/src/test/ref/cast-not-needed.log b/src/test/ref/cast-not-needed.log
index 8a96dcd33..6d361fb31 100644
--- a/src/test/ref/cast-not-needed.log
+++ b/src/test/ref/cast-not-needed.log
@@ -120,7 +120,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests a cast that is not needed
// Upstart
diff --git a/src/test/ref/cast-precedence-problem.log b/src/test/ref/cast-precedence-problem.log
index 04e771d61..5943cf3a0 100644
--- a/src/test/ref/cast-precedence-problem.log
+++ b/src/test/ref/cast-precedence-problem.log
@@ -233,7 +233,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that casting inside constants in the output handles precedence between cast and + correctly - should generate the following KA-expression ($ff & sumw>>1)+1
// Upstart
diff --git a/src/test/ref/casting.log b/src/test/ref/casting.log
index 32c719774..72382c59c 100644
--- a/src/test/ref/casting.log
+++ b/src/test/ref/casting.log
@@ -362,7 +362,7 @@ Allocated zp ZP_BYTE:5 [ main::sb#0 ]
Allocated zp ZP_BYTE:6 [ w::b2#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/chargen.log b/src/test/ref/chargen.log
index 704ed7328..2b26e2d67 100644
--- a/src/test/ref/chargen.log
+++ b/src/test/ref/chargen.log
@@ -381,7 +381,7 @@ Allocated zp ZP_BYTE:7 [ main::c#2 ]
Allocated zp ZP_BYTE:8 [ main::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/chessboard.log b/src/test/ref/chessboard.log
index 10dfa5c18..9f4d2e7e9 100644
--- a/src/test/ref/chessboard.log
+++ b/src/test/ref/chessboard.log
@@ -284,7 +284,7 @@ Allocated zp ZP_BYTE:7 [ main::column#2 main::column#1 ]
Allocated zp ZP_BYTE:8 [ main::color#3 main::color#5 main::color#2 main::color#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Draws a chess board in the upper left corner of the screen
// Upstart
diff --git a/src/test/ref/cia-timer-cyclecount.log b/src/test/ref/cia-timer-cyclecount.log
index cdb2c207e..782c41d9f 100644
--- a/src/test/ref/cia-timer-cyclecount.log
+++ b/src/test/ref/cia-timer-cyclecount.log
@@ -721,7 +721,7 @@ Allocated zp ZP_BYTE:29 [ print_byte_at::$2 ]
Allocated zp ZP_DWORD:30 [ clock::return#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Counting cycles using a CIA timer
// Upstart
diff --git a/src/test/ref/cia-timer-simple.log b/src/test/ref/cia-timer-simple.log
index b3a088472..7a592f8b5 100644
--- a/src/test/ref/cia-timer-simple.log
+++ b/src/test/ref/cia-timer-simple.log
@@ -689,7 +689,7 @@ Allocated zp ZP_BYTE:21 [ print_byte_at::$2 ]
Allocated zp ZP_DWORD:22 [ clock::return#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Setup and run a simple CIA-timer
// Upstart
diff --git a/src/test/ref/clobber-a-problem.log b/src/test/ref/clobber-a-problem.log
index ec76a1269..0d103031f 100644
--- a/src/test/ref/clobber-a-problem.log
+++ b/src/test/ref/clobber-a-problem.log
@@ -244,7 +244,7 @@ Allocated zp ZP_BYTE:3 [ irq_raster_next#0 irq_raster_next#1 ]
Allocated zp ZP_BYTE:4 [ irq::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/coalesce-assignment.log b/src/test/ref/coalesce-assignment.log
index 420f1eec8..f0fc6dc53 100644
--- a/src/test/ref/coalesce-assignment.log
+++ b/src/test/ref/coalesce-assignment.log
@@ -245,7 +245,7 @@ Allocated zp ZP_BYTE:6 [ main::f#0 ]
Allocated zp ZP_BYTE:7 [ main::g#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests variable coalescing over assignments
// Upstart
diff --git a/src/test/ref/code-after-return-1.log b/src/test/ref/code-after-return-1.log
index e4b9d3a84..1fc40b59c 100644
--- a/src/test/ref/code-after-return-1.log
+++ b/src/test/ref/code-after-return-1.log
@@ -155,7 +155,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test code after return in main()
// Upstart
diff --git a/src/test/ref/code-after-return.log b/src/test/ref/code-after-return.log
index 7645b3047..d59ab3a12 100644
--- a/src/test/ref/code-after-return.log
+++ b/src/test/ref/code-after-return.log
@@ -88,7 +88,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test code after return in main()
// Upstart
diff --git a/src/test/ref/comma-decl-for.log b/src/test/ref/comma-decl-for.log
index 7ab54aee2..eebbed745 100644
--- a/src/test/ref/comma-decl-for.log
+++ b/src/test/ref/comma-decl-for.log
@@ -146,7 +146,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::j#2 main::j#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests comma-separated declarations inside for()
// Upstart
diff --git a/src/test/ref/comma-decl.log b/src/test/ref/comma-decl.log
index 90fd818b4..9be428afd 100644
--- a/src/test/ref/comma-decl.log
+++ b/src/test/ref/comma-decl.log
@@ -131,7 +131,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests comma-separated declarations
// Upstart
diff --git a/src/test/ref/comma-expr-1.log b/src/test/ref/comma-expr-1.log
index ce2b6603c..8fe64eacc 100644
--- a/src/test/ref/comma-expr-1.log
+++ b/src/test/ref/comma-expr-1.log
@@ -106,7 +106,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests simple comma-expression (in parenthesis)
// Upstart
diff --git a/src/test/ref/comma-expr-2.log b/src/test/ref/comma-expr-2.log
index 1c43b1424..a91127b00 100644
--- a/src/test/ref/comma-expr-2.log
+++ b/src/test/ref/comma-expr-2.log
@@ -93,7 +93,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests simple comma-expressions (without parenthesis)
// Upstart
diff --git a/src/test/ref/comma-expr-for.log b/src/test/ref/comma-expr-for.log
index 9f9321323..c209abbbb 100644
--- a/src/test/ref/comma-expr-for.log
+++ b/src/test/ref/comma-expr-for.log
@@ -150,7 +150,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::j#2 main::j#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests comma-expressions in for()-statement
// Upstart
diff --git a/src/test/ref/comparison-rewriting-pointer.log b/src/test/ref/comparison-rewriting-pointer.log
index 9e0493d01..debc56ba8 100644
--- a/src/test/ref/comparison-rewriting-pointer.log
+++ b/src/test/ref/comparison-rewriting-pointer.log
@@ -204,7 +204,7 @@ Allocated zp ZP_WORD:2 [ main::sc#2 main::sc#1 ]
Allocated zp ZP_WORD:4 [ main::cc#2 main::cc#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test rewriting of constant comparisons for pointers
// Upstart
diff --git a/src/test/ref/comparison-rewriting.log b/src/test/ref/comparison-rewriting.log
index 938bf3faa..43a752cc6 100644
--- a/src/test/ref/comparison-rewriting.log
+++ b/src/test/ref/comparison-rewriting.log
@@ -509,7 +509,7 @@ Allocated zp ZP_WORD:6 [ main::screen#11 main::screen#1 ]
Allocated zp ZP_BYTE:8 [ main::$4 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test rewriting of constant comparisons
// Upstart
diff --git a/src/test/ref/complex-conditional-problem.log b/src/test/ref/complex-conditional-problem.log
index 6d2d902dd..77eac6347 100644
--- a/src/test/ref/complex-conditional-problem.log
+++ b/src/test/ref/complex-conditional-problem.log
@@ -179,7 +179,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::key#2 main::key#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test to provoke Exception when using complex || condition
// Upstart
diff --git a/src/test/ref/complex/ataritempest/ataritempest.log b/src/test/ref/complex/ataritempest/ataritempest.log
index d122b77b2..d923c842b 100644
--- a/src/test/ref/complex/ataritempest/ataritempest.log
+++ b/src/test/ref/complex/ataritempest/ataritempest.log
@@ -183,7 +183,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ entryPoint::i#2 entryPoint::i#1 ]
INITIAL ASM
-Target platform is custom
+Target platform is custom / 6502X
// File Comments
// Atari Tempest ROM Development Template
// Each function of the kernal is a no-args function
diff --git a/src/test/ref/complex/clearscreen/clearscreen.log b/src/test/ref/complex/clearscreen/clearscreen.log
index 6b5134e26..b1e9d24b2 100644
--- a/src/test/ref/complex/clearscreen/clearscreen.log
+++ b/src/test/ref/complex/clearscreen/clearscreen.log
@@ -5211,7 +5211,7 @@ Allocated zp ZP_BYTE:184 [ processChars::$39 ]
Allocated zp ZP_BYTE:185 [ processChars::$33 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Clears start screen throwing around the letters (by turning them into sprites)
// Upstart
diff --git a/src/test/ref/complex/medusa/medusa.log b/src/test/ref/complex/medusa/medusa.log
index 5a5ebd4ea..e58976ba6 100644
--- a/src/test/ref/complex/medusa/medusa.log
+++ b/src/test/ref/complex/medusa/medusa.log
@@ -384,7 +384,7 @@ Allocated zp ZP_WORD:8 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
Allocated zp ZP_WORD:10 [ memcpy::src_end#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Display MEDUSA PETSCII by Buzz_clik
// https://csdb.dk/release/?id=178673
diff --git a/src/test/ref/complex/splines/truetype-splines.log b/src/test/ref/complex/splines/truetype-splines.log
index b502c9ea1..34bde2868 100644
--- a/src/test/ref/complex/splines/truetype-splines.log
+++ b/src/test/ref/complex/splines/truetype-splines.log
@@ -6221,7 +6221,7 @@ Allocated zp ZP_BYTE:310 [ mulf_init::$12 ]
Allocated zp ZP_BYTE:311 [ mulf_init::$13 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Show a few simple splines using the splines library
// Upstart
diff --git a/src/test/ref/complex/tetris/test-sprites.log b/src/test/ref/complex/tetris/test-sprites.log
index 8dd3dda08..ba1d58e86 100644
--- a/src/test/ref/complex/tetris/test-sprites.log
+++ b/src/test/ref/complex/tetris/test-sprites.log
@@ -2136,7 +2136,7 @@ Allocated zp ZP_BYTE:25 [ sprites_irq::ptr#1 ]
Allocated zp ZP_BYTE:26 [ sprites_irq::ptr#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/complex/tetris/tetris.log b/src/test/ref/complex/tetris/tetris.log
index ef1b7933f..9b68ae779 100644
--- a/src/test/ref/complex/tetris/tetris.log
+++ b/src/test/ref/complex/tetris/tetris.log
@@ -13834,7 +13834,7 @@ Allocated zp ZP_BYTE:222 [ sprites_irq::ptr#1 ]
Allocated zp ZP_BYTE:223 [ sprites_irq::ptr#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tetris Game for the Commodore 64
// The tetris game tries to match NES tetris gameplay pretty closely
diff --git a/src/test/ref/complex/xmega65/xmega65.log b/src/test/ref/complex/xmega65/xmega65.log
index 194e41d90..fa5878132 100644
--- a/src/test/ref/complex/xmega65/xmega65.log
+++ b/src/test/ref/complex/xmega65/xmega65.log
@@ -622,7 +622,7 @@ Allocated zp ZP_WORD:11 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
Allocated zp ZP_WORD:13 [ memset::end#0 ]
INITIAL ASM
-Target platform is custom
+Target platform is custom / 6502X
// File Comments
// XMega65 Kernal Development Template
// Each function of the kernal is a no-args function
diff --git a/src/test/ref/condition-integer-0.log b/src/test/ref/condition-integer-0.log
index 149c9897d..885fd151e 100644
--- a/src/test/ref/condition-integer-0.log
+++ b/src/test/ref/condition-integer-0.log
@@ -382,7 +382,7 @@ Allocated zp ZP_WORD:4 [ main::i1#2 main::i1#1 ]
Allocated zp ZP_BYTE:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests using integer conditions in if()
// This should produce '+ ++ ++' at the top of the screen
diff --git a/src/test/ref/condition-integer-1.log b/src/test/ref/condition-integer-1.log
index a9fbd101c..a489af45d 100644
--- a/src/test/ref/condition-integer-1.log
+++ b/src/test/ref/condition-integer-1.log
@@ -384,7 +384,7 @@ Allocated zp ZP_WORD:4 [ main::i1#2 main::i1#1 ]
Allocated zp ZP_BYTE:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests using integer conditions in if()
// This should produce '0 0 0' at the top of the screen
diff --git a/src/test/ref/condition-integer-2.log b/src/test/ref/condition-integer-2.log
index e5724462b..9753dbcbf 100644
--- a/src/test/ref/condition-integer-2.log
+++ b/src/test/ref/condition-integer-2.log
@@ -323,7 +323,7 @@ Allocated zp ZP_BYTE:6 [ main::k#2 main::k#1 ]
Allocated zp ZP_BYTE:7 [ idx#12 idx#13 idx#4 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests using integer conditions in while() / for() / do..while
// This should produce 'ba ba ba' at the top of the screen
diff --git a/src/test/ref/condition-integer-3.log b/src/test/ref/condition-integer-3.log
index 517b92b75..0a829da38 100644
--- a/src/test/ref/condition-integer-3.log
+++ b/src/test/ref/condition-integer-3.log
@@ -210,7 +210,7 @@ Allocated zp ZP_BYTE:3 [ main::idx#2 main::idx#1 ]
Allocated zp ZP_BYTE:4 [ main::j#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests using integer conditions in ternary operator
// This should produce '++0++' at the top of the screen
diff --git a/src/test/ref/condition-integer-4.log b/src/test/ref/condition-integer-4.log
index b15b0cc0e..1bd1ef35a 100644
--- a/src/test/ref/condition-integer-4.log
+++ b/src/test/ref/condition-integer-4.log
@@ -408,7 +408,7 @@ Allocated zp ZP_BYTE:8 [ main::$11 ]
Allocated zp ZP_BYTE:9 [ main::$12 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests using integer conditions in && and || operator
// This should produce '01010101', '00110011', '00010001', '01110111' at the top of the screen
diff --git a/src/test/ref/condition-type-mismatch.log b/src/test/ref/condition-type-mismatch.log
index 9889c96f0..ba9c1360d 100644
--- a/src/test/ref/condition-type-mismatch.log
+++ b/src/test/ref/condition-type-mismatch.log
@@ -112,7 +112,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests a condition type mismatch (not boolean)
// Upstart
diff --git a/src/test/ref/consolidate-array-index-problem.log b/src/test/ref/consolidate-array-index-problem.log
index f9f3cac0e..d3055de0e 100644
--- a/src/test/ref/consolidate-array-index-problem.log
+++ b/src/test/ref/consolidate-array-index-problem.log
@@ -158,7 +158,7 @@ Allocated zp ZP_BYTE:2 [ main::x#2 main::x#1 ]
Allocated zp ZP_BYTE:3 [ main::y#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/consolidate-constant-problem.log b/src/test/ref/consolidate-constant-problem.log
index 679cbc230..c4772daa8 100644
--- a/src/test/ref/consolidate-constant-problem.log
+++ b/src/test/ref/consolidate-constant-problem.log
@@ -226,7 +226,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/const-condition.log b/src/test/ref/const-condition.log
index 0aa68f00b..b41d07779 100644
--- a/src/test/ref/const-condition.log
+++ b/src/test/ref/const-condition.log
@@ -103,7 +103,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Ensure that if()'s with constant comparisons are identified and eliminated
// Upstart
diff --git a/src/test/ref/const-early-identification.log b/src/test/ref/const-early-identification.log
index 405c9c671..2cebb8d3e 100644
--- a/src/test/ref/const-early-identification.log
+++ b/src/test/ref/const-early-identification.log
@@ -184,7 +184,7 @@ Allocated zp ZP_BYTE:2 [ A#0 ]
Allocated zp ZP_BYTE:3 [ sub::D#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that constants are identified early
// Upstart
diff --git a/src/test/ref/const-identification.log b/src/test/ref/const-identification.log
index 93f96b342..4bf856c4a 100644
--- a/src/test/ref/const-identification.log
+++ b/src/test/ref/const-identification.log
@@ -347,7 +347,7 @@ Allocated zp ZP_BYTE:5 [ plot::idx#0 ]
Allocated zp ZP_BYTE:6 [ plot::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/const-if-problem.log b/src/test/ref/const-if-problem.log
index c93bd8851..7f17d4b48 100644
--- a/src/test/ref/const-if-problem.log
+++ b/src/test/ref/const-if-problem.log
@@ -151,7 +151,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Constant if() contains call to (unused) function - should be optimized away
// Upstart
diff --git a/src/test/ref/const-int-cast-problem.log b/src/test/ref/const-int-cast-problem.log
index 65ac9c7e8..e109600ce 100644
--- a/src/test/ref/const-int-cast-problem.log
+++ b/src/test/ref/const-int-cast-problem.log
@@ -129,7 +129,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test a problem with converting casted constant numbers to fixed type constant integers
// Upstart
diff --git a/src/test/ref/const-mult-div.log b/src/test/ref/const-mult-div.log
index b21765fb2..5afd42833 100644
--- a/src/test/ref/const-mult-div.log
+++ b/src/test/ref/const-mult-div.log
@@ -90,7 +90,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test a constant with multiplication and division
// Upstart
diff --git a/src/test/ref/const-param.log b/src/test/ref/const-param.log
index 09e2efc5f..26c855d01 100644
--- a/src/test/ref/const-param.log
+++ b/src/test/ref/const-param.log
@@ -258,7 +258,7 @@ Allocated zp ZP_BYTE:8 [ main::$2 ]
Allocated zp ZP_BYTE:9 [ sum::return#3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test that the compiler optimizes when the same parameter value is passed into a function in all calls
// Upstart
diff --git a/src/test/ref/const-pointer.log b/src/test/ref/const-pointer.log
index 544aa29ef..afafad483 100644
--- a/src/test/ref/const-pointer.log
+++ b/src/test/ref/const-pointer.log
@@ -126,7 +126,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
//Test that constant pointers are detected correctly
// Upstart
diff --git a/src/test/ref/const-signed-promotion.log b/src/test/ref/const-signed-promotion.log
index 2bc13c2ea..253efd139 100644
--- a/src/test/ref/const-signed-promotion.log
+++ b/src/test/ref/const-signed-promotion.log
@@ -166,7 +166,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test fragment promotion of a constant (400) to signed word even if it also matches an unsigned word
// Upstart
diff --git a/src/test/ref/const-word-pointer.log b/src/test/ref/const-word-pointer.log
index 56b615107..d3ad1c995 100644
--- a/src/test/ref/const-word-pointer.log
+++ b/src/test/ref/const-word-pointer.log
@@ -157,7 +157,7 @@ Allocated zp ZP_BYTE:6 [ main::$3 ]
Allocated zp ZP_BYTE:7 [ main::$4 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test a constant word pointers (pointing to a word placed on zeropage).
// The result when running is "CML!" on the screen.
diff --git a/src/test/ref/constabsmin.log b/src/test/ref/constabsmin.log
index 859d35e5c..3301512c9 100644
--- a/src/test/ref/constabsmin.log
+++ b/src/test/ref/constabsmin.log
@@ -78,7 +78,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/constant-string-concat-0.log b/src/test/ref/constant-string-concat-0.log
index 2dbf8b585..ffdbe85e2 100644
--- a/src/test/ref/constant-string-concat-0.log
+++ b/src/test/ref/constant-string-concat-0.log
@@ -136,7 +136,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Concatenates string constants in different ways
// Upstart
diff --git a/src/test/ref/constant-string-concat.log b/src/test/ref/constant-string-concat.log
index c3f712d3b..cf095e06f 100644
--- a/src/test/ref/constant-string-concat.log
+++ b/src/test/ref/constant-string-concat.log
@@ -125,7 +125,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Concatenates string constants in different ways
// Upstart
diff --git a/src/test/ref/constantmin.log b/src/test/ref/constantmin.log
index a5fda27fc..eb07e3c1b 100644
--- a/src/test/ref/constantmin.log
+++ b/src/test/ref/constantmin.log
@@ -188,7 +188,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/constants.log b/src/test/ref/constants.log
index 6d89ccfb6..7d47ed123 100644
--- a/src/test/ref/constants.log
+++ b/src/test/ref/constants.log
@@ -1631,7 +1631,7 @@ Allocated zp ZP_BYTE:15 [ assert_byte::c#3 ]
Allocated zp ZP_WORD:16 [ memset::dst#2 memset::dst#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/cordic-atan2-16-ref.log b/src/test/ref/cordic-atan2-16-ref.log
index f7551f1f6..d0ce635ed 100644
--- a/src/test/ref/cordic-atan2-16-ref.log
+++ b/src/test/ref/cordic-atan2-16-ref.log
@@ -2430,7 +2430,7 @@ Allocated zp ZP_BYTE:67 [ init_font_hex::$2 ]
Allocated zp ZP_BYTE:68 [ init_font_hex::idx#3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Find atan2(x, y) using the CORDIC method
// See http://bsvi.ru/uploads/CORDIC--_10EBA/cordic.pdf
diff --git a/src/test/ref/cordic-atan2-16.log b/src/test/ref/cordic-atan2-16.log
index d75d40fbe..3c1bd9ffa 100644
--- a/src/test/ref/cordic-atan2-16.log
+++ b/src/test/ref/cordic-atan2-16.log
@@ -1844,7 +1844,7 @@ Allocated zp ZP_BYTE:49 [ init_font_hex::$2 ]
Allocated zp ZP_BYTE:50 [ init_font_hex::idx#3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Find atan2(x, y) using the CORDIC method
// See http://bsvi.ru/uploads/CORDIC--_10EBA/cordic.pdf
diff --git a/src/test/ref/cordic-atan2-clear.log b/src/test/ref/cordic-atan2-clear.log
index 7152400d8..61c50ae43 100644
--- a/src/test/ref/cordic-atan2-clear.log
+++ b/src/test/ref/cordic-atan2-clear.log
@@ -2072,7 +2072,7 @@ Allocated zp ZP_BYTE:60 [ init_font_hex::$2 ]
Allocated zp ZP_BYTE:61 [ init_font_hex::idx#3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Find atan2(x, y) using the CORDIC method
// See http://bsvi.ru/uploads/CORDIC--_10EBA/cordic.pdf
diff --git a/src/test/ref/cordic-atan2.log b/src/test/ref/cordic-atan2.log
index 20a2869fe..4d3c2c90f 100644
--- a/src/test/ref/cordic-atan2.log
+++ b/src/test/ref/cordic-atan2.log
@@ -1527,7 +1527,7 @@ Allocated zp ZP_BYTE:29 [ init_font_hex::$2 ]
Allocated zp ZP_BYTE:30 [ init_font_hex::idx#3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Find atan2(x, y) using the CORDIC method
// See http://bsvi.ru/uploads/CORDIC--_10EBA/cordic.pdf
diff --git a/src/test/ref/danny-joystick-problem.log b/src/test/ref/danny-joystick-problem.log
index dd0bb1ccd..3c1868fad 100644
--- a/src/test/ref/danny-joystick-problem.log
+++ b/src/test/ref/danny-joystick-problem.log
@@ -107,7 +107,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::port4Value#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests problem writing/reading joystick encountered by Danny Spijksma
// https://www.protovision.games/hardw/build4player.php?language=en&fbclid=IwAR1MJLgQjOU0zVa0ax2aNeGa-xVbE9IGY9zC6b6eInTV4HQzoUAoCPoXu14
diff --git a/src/test/ref/deep-nesting.log b/src/test/ref/deep-nesting.log
index cd540de22..81076e2cb 100644
--- a/src/test/ref/deep-nesting.log
+++ b/src/test/ref/deep-nesting.log
@@ -7179,7 +7179,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test that the compiler handles deep nesting well -- mainly a performance issue.
// Upstart
diff --git a/src/test/ref/default-font.log b/src/test/ref/default-font.log
index 4994d2166..98a74db8a 100644
--- a/src/test/ref/default-font.log
+++ b/src/test/ref/default-font.log
@@ -450,7 +450,7 @@ Allocated zp ZP_BYTE:6 [ main::y#2 main::y#1 ]
Allocated zp ZP_WORD:7 [ memset::dst#2 memset::dst#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Show default font on screen
// Upstart
diff --git a/src/test/ref/deref-to-derefidx-2.log b/src/test/ref/deref-to-derefidx-2.log
index d546f536a..cd2bc0016 100644
--- a/src/test/ref/deref-to-derefidx-2.log
+++ b/src/test/ref/deref-to-derefidx-2.log
@@ -232,7 +232,7 @@ Allocated zp ZP_BYTE:4 [ screen_idx#10 screen_idx#11 ]
Allocated zp ZP_BYTE:5 [ print::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests optimizing derefs of *(ptr+b) to ptr[b - even when a noop-cast is needed
// Upstart
diff --git a/src/test/ref/deref-to-derefidx.log b/src/test/ref/deref-to-derefidx.log
index 8a654c80a..03997b3ea 100644
--- a/src/test/ref/deref-to-derefidx.log
+++ b/src/test/ref/deref-to-derefidx.log
@@ -214,7 +214,7 @@ Allocated zp ZP_WORD:2 [ print::m#2 ]
Allocated zp ZP_BYTE:4 [ idx#10 idx#11 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests optimizing derefs of *(ptr+b) to ptr[b]
// Upstart
diff --git a/src/test/ref/derefidx-word-0.log b/src/test/ref/derefidx-word-0.log
index fda49b703..262a47df0 100644
--- a/src/test/ref/derefidx-word-0.log
+++ b/src/test/ref/derefidx-word-0.log
@@ -138,7 +138,7 @@ Allocated zp ZP_WORD:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_WORD:4 [ main::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that array-indexing by a word variable is turned into pointer addition
// Upstart
diff --git a/src/test/ref/derefidx-word-1.log b/src/test/ref/derefidx-word-1.log
index 720f3f21c..1dd3b0ef2 100644
--- a/src/test/ref/derefidx-word-1.log
+++ b/src/test/ref/derefidx-word-1.log
@@ -82,7 +82,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that array-indexing by a constant word is turned into a constant pointer
// Upstart
diff --git a/src/test/ref/derefidx-word-2.log b/src/test/ref/derefidx-word-2.log
index bef8eb0d6..9e7b4d547 100644
--- a/src/test/ref/derefidx-word-2.log
+++ b/src/test/ref/derefidx-word-2.log
@@ -133,7 +133,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that array-indexing by a word variable that is a sum of a constant word and a byte is turned back into derefidx
// Upstart
diff --git a/src/test/ref/divide-2s.log b/src/test/ref/divide-2s.log
index 51a2ad7fd..524eb7c94 100644
--- a/src/test/ref/divide-2s.log
+++ b/src/test/ref/divide-2s.log
@@ -248,7 +248,7 @@ Allocated zp ZP_BYTE:6 [ main::sb#0 ]
Allocated zp ZP_BYTE:7 [ main::$12 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Check that division by factors of 2 is converted to shifts
// Upstart
diff --git a/src/test/ref/double-assignment.log b/src/test/ref/double-assignment.log
index 3a4f5f962..a8da454a5 100644
--- a/src/test/ref/double-assignment.log
+++ b/src/test/ref/double-assignment.log
@@ -111,7 +111,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test that a double-assignment works.
// Upstart
diff --git a/src/test/ref/double-import.log b/src/test/ref/double-import.log
index db79a225d..db732917b 100644
--- a/src/test/ref/double-import.log
+++ b/src/test/ref/double-import.log
@@ -83,7 +83,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/double-indexing-arrays.log b/src/test/ref/double-indexing-arrays.log
index 335658fee..66bd8fff2 100644
--- a/src/test/ref/double-indexing-arrays.log
+++ b/src/test/ref/double-indexing-arrays.log
@@ -334,7 +334,7 @@ Complete equivalence classes
[ main::x#2 main::x#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that constant offset indexing into arrays is handled correctly
// Upstart
diff --git a/src/test/ref/duplicate-loop-problem.log b/src/test/ref/duplicate-loop-problem.log
index 53bb33cad..575b97a03 100644
--- a/src/test/ref/duplicate-loop-problem.log
+++ b/src/test/ref/duplicate-loop-problem.log
@@ -163,7 +163,7 @@ Allocated zp ZP_BYTE:2 [ key#1 ]
Allocated zp ZP_BYTE:3 [ main::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Duplicate Loop Problem from Richard-William Loerakker
// Resulted in infinite loop in loop depth analysis
diff --git a/src/test/ref/dword.log b/src/test/ref/dword.log
index b65f2b322..238ea24c3 100644
--- a/src/test/ref/dword.log
+++ b/src/test/ref/dword.log
@@ -155,7 +155,7 @@ Allocated zp ZP_DWORD:3 [ main::b#0 ]
Allocated zp ZP_BYTE:7 [ main::c#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/emptyblock-error.log b/src/test/ref/emptyblock-error.log
index 938b29c16..f6dd94b76 100644
--- a/src/test/ref/emptyblock-error.log
+++ b/src/test/ref/emptyblock-error.log
@@ -210,7 +210,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Error cleaning up unused blocks
// Upstart
diff --git a/src/test/ref/enum-0.log b/src/test/ref/enum-0.log
index 57bd786f8..0608d31fe 100644
--- a/src/test/ref/enum-0.log
+++ b/src/test/ref/enum-0.log
@@ -83,7 +83,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test of simple enum - two-value enum
// Upstart
diff --git a/src/test/ref/enum-1.log b/src/test/ref/enum-1.log
index 09dcb1c50..f37d8ca67 100644
--- a/src/test/ref/enum-1.log
+++ b/src/test/ref/enum-1.log
@@ -84,7 +84,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test of simple enum - three-value enum with specified integer values and increment
// Upstart
diff --git a/src/test/ref/enum-2.log b/src/test/ref/enum-2.log
index 9f2002770..d45802a18 100644
--- a/src/test/ref/enum-2.log
+++ b/src/test/ref/enum-2.log
@@ -84,7 +84,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test of simple enum - char values with increment
// Upstart
diff --git a/src/test/ref/enum-3.log b/src/test/ref/enum-3.log
index 60df54664..15267fbc9 100644
--- a/src/test/ref/enum-3.log
+++ b/src/test/ref/enum-3.log
@@ -86,7 +86,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test of simple enum - value with complex calculation
// Upstart
diff --git a/src/test/ref/enum-4.log b/src/test/ref/enum-4.log
index ce65a4066..ad0aa6bd2 100644
--- a/src/test/ref/enum-4.log
+++ b/src/test/ref/enum-4.log
@@ -81,7 +81,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test of simple enum - inline enum definitions
// Upstart
diff --git a/src/test/ref/enum-5.log b/src/test/ref/enum-5.log
index dc1fe0ae6..f6124506e 100644
--- a/src/test/ref/enum-5.log
+++ b/src/test/ref/enum-5.log
@@ -121,7 +121,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test of simple enum - multiple inline enum definitions
// Upstart
diff --git a/src/test/ref/enum-6.log b/src/test/ref/enum-6.log
index 86b5786e7..852fed2d9 100644
--- a/src/test/ref/enum-6.log
+++ b/src/test/ref/enum-6.log
@@ -99,7 +99,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test of simple enum - anonymous enum definition
// Upstart
diff --git a/src/test/ref/enum-7.log b/src/test/ref/enum-7.log
index 8fe61ae6f..f1031987e 100644
--- a/src/test/ref/enum-7.log
+++ b/src/test/ref/enum-7.log
@@ -118,7 +118,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test of simple enum - struct with enum
// Upstart
diff --git a/src/test/ref/enum-8.log b/src/test/ref/enum-8.log
index cd35bfb3b..d465a8872 100644
--- a/src/test/ref/enum-8.log
+++ b/src/test/ref/enum-8.log
@@ -120,7 +120,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test of simple enum - struct with inline anonymous enum
// Upstart
diff --git a/src/test/ref/euclid-3.log b/src/test/ref/euclid-3.log
index 0c725430e..a2705f44b 100644
--- a/src/test/ref/euclid-3.log
+++ b/src/test/ref/euclid-3.log
@@ -1251,7 +1251,7 @@ Allocated zp ZP_BYTE:15 [ print_byte::$0 ]
Allocated zp ZP_BYTE:16 [ print_byte::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
/*
* Find greatest common denominator using subtraction-based Euclidian algorithm
diff --git a/src/test/ref/euclid-problem-2.log b/src/test/ref/euclid-problem-2.log
index 1ab1c3a34..b893420bf 100644
--- a/src/test/ref/euclid-problem-2.log
+++ b/src/test/ref/euclid-problem-2.log
@@ -465,7 +465,7 @@ Allocated zp ZP_BYTE:10 [ euclid::return#3 ]
Allocated zp ZP_BYTE:11 [ main::$3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates a problem where wrong alive ranges result in clobbering an alive variable
// The compiler does not realize that A is alive in the statement b=b-a - and thus can clobber it.
diff --git a/src/test/ref/euclid-problem.log b/src/test/ref/euclid-problem.log
index 411bfb55c..0ae22e1f1 100644
--- a/src/test/ref/euclid-problem.log
+++ b/src/test/ref/euclid-problem.log
@@ -192,7 +192,7 @@ Allocated zp ZP_BYTE:2 [ main::a#2 main::a#1 ]
Allocated zp ZP_BYTE:3 [ main::b#2 main::b#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates a problem where wrong alive ranges result in clobbering an alive variable
// The compiler does not realize that A is alive in the statement b=b-a - and thus can clobber it.
diff --git a/src/test/ref/examples/3d/3d.log b/src/test/ref/examples/3d/3d.log
index b9f540166..c971287c9 100644
--- a/src/test/ref/examples/3d/3d.log
+++ b/src/test/ref/examples/3d/3d.log
@@ -4747,7 +4747,7 @@ Allocated zp ZP_WORD:97 [ debug_print_init::$62 ]
Allocated zp ZP_WORD:99 [ debug_print_init::$65 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// 3D Rotation using a Rotation Matrix
// Based on:
diff --git a/src/test/ref/examples/3d/perspective.log b/src/test/ref/examples/3d/perspective.log
index fe29cf9a3..71914ac50 100644
--- a/src/test/ref/examples/3d/perspective.log
+++ b/src/test/ref/examples/3d/perspective.log
@@ -1725,7 +1725,7 @@ Allocated zp ZP_BYTE:22 [ mulf_init::$8 ]
Allocated zp ZP_BYTE:23 [ mulf_init::$10 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// 3D Rotation using a Rotation Matrix
// Based on:
diff --git a/src/test/ref/examples/bresenham/bitmap-bresenham.log b/src/test/ref/examples/bresenham/bitmap-bresenham.log
index e1cbbcd96..deb111553 100644
--- a/src/test/ref/examples/bresenham/bitmap-bresenham.log
+++ b/src/test/ref/examples/bresenham/bitmap-bresenham.log
@@ -2757,7 +2757,7 @@ Allocated zp ZP_BYTE:66 [ bitmap_init::$8 ]
Allocated zp ZP_BYTE:67 [ bitmap_init::$9 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/examples/chargen/chargen-analysis.log b/src/test/ref/examples/chargen/chargen-analysis.log
index be6051de1..c62407142 100644
--- a/src/test/ref/examples/chargen/chargen-analysis.log
+++ b/src/test/ref/examples/chargen/chargen-analysis.log
@@ -2561,7 +2561,7 @@ Allocated zp ZP_BYTE:60 [ keyboard_matrix_read::return#0 ]
Allocated zp ZP_BYTE:61 [ keyboard_get_keycode::return#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Allows analysis of the CHARGEN ROM font
// Upstart
diff --git a/src/test/ref/examples/fastmultiply/fastmultiply8.log b/src/test/ref/examples/fastmultiply/fastmultiply8.log
index cc3be23d3..7eefd17af 100644
--- a/src/test/ref/examples/fastmultiply/fastmultiply8.log
+++ b/src/test/ref/examples/fastmultiply/fastmultiply8.log
@@ -1303,7 +1303,7 @@ Allocated zp ZP_BYTE:31 [ print_byte_at::$2 ]
Allocated zp ZP_BYTE:32 [ fmul8::return#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Seriously fast multiply 8-bit version (8bit*8bit=8bit)
// Multiplies two signed 8-bit numbers and results in an 8-bit number
diff --git a/src/test/ref/examples/fire/fire.log b/src/test/ref/examples/fire/fire.log
index abacbcbf9..c836bc46f 100644
--- a/src/test/ref/examples/fire/fire.log
+++ b/src/test/ref/examples/fire/fire.log
@@ -1746,7 +1746,7 @@ Allocated zp ZP_BYTE:44 [ makecharset::$12 ]
Allocated zp ZP_BYTE:45 [ makecharset::$13 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A KickC version of the fire routine from the CC65 samples
// (w)2002 by groepaz/hitmen
diff --git a/src/test/ref/examples/helloworld/helloworld.log b/src/test/ref/examples/helloworld/helloworld.log
index f5967d59f..1e4d8a2ca 100644
--- a/src/test/ref/examples/helloworld/helloworld.log
+++ b/src/test/ref/examples/helloworld/helloworld.log
@@ -376,7 +376,7 @@ Allocated zp ZP_WORD:4 [ print_str::str#2 print_str::str#0 ]
Allocated zp ZP_WORD:6 [ print_char_cursor#10 print_char_cursor#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/examples/irq/irq-hyperscreen.log b/src/test/ref/examples/irq/irq-hyperscreen.log
index 27e7e2180..ca036482c 100644
--- a/src/test/ref/examples/irq/irq-hyperscreen.log
+++ b/src/test/ref/examples/irq/irq-hyperscreen.log
@@ -294,7 +294,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A raster IRQ that opens the top/bottom border.
// Upstart
diff --git a/src/test/ref/examples/linking/linking.log b/src/test/ref/examples/linking/linking.log
index f3b75aaef..fd8a80f24 100644
--- a/src/test/ref/examples/linking/linking.log
+++ b/src/test/ref/examples/linking/linking.log
@@ -295,7 +295,7 @@ Allocated zp ZP_BYTE:6 [ fillscreen::c#0 ]
Allocated zp ZP_BYTE:7 [ fillscreen::$2 ]
INITIAL ASM
-Target platform is custom
+Target platform is custom / 6502X
// File Comments
// Example showing how to perform linking using a linker-file
// The linker file is created using KickAssembler segments.
diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.log b/src/test/ref/examples/multiplexer/simple-multiplexer.log
index e4cb5b696..5f2bd4220 100644
--- a/src/test/ref/examples/multiplexer/simple-multiplexer.log
+++ b/src/test/ref/examples/multiplexer/simple-multiplexer.log
@@ -2259,7 +2259,7 @@ Allocated zp ZP_BYTE:32 [ plexSort::s#2 ]
Allocated zp ZP_BYTE:33 [ init::$8 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A simple usage of the flexible sprite multiplexer routine
// Upstart
diff --git a/src/test/ref/examples/music/music.log b/src/test/ref/examples/music/music.log
index 69f589256..c95997866 100644
--- a/src/test/ref/examples/music/music.log
+++ b/src/test/ref/examples/music/music.log
@@ -138,7 +138,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A simple SID music player playing music in the main loop.
// Upstart
diff --git a/src/test/ref/examples/music/music_irq.log b/src/test/ref/examples/music/music_irq.log
index d53835b2c..fced4571a 100644
--- a/src/test/ref/examples/music/music_irq.log
+++ b/src/test/ref/examples/music/music_irq.log
@@ -209,7 +209,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A simple SID music player using RASTER IRQ
// Upstart
diff --git a/src/test/ref/examples/nmisamples/nmisamples.log b/src/test/ref/examples/nmisamples/nmisamples.log
index 502d49eff..28ce0daa8 100644
--- a/src/test/ref/examples/nmisamples/nmisamples.log
+++ b/src/test/ref/examples/nmisamples/nmisamples.log
@@ -346,7 +346,7 @@ Allocated zp ZP_BYTE:5 [ nmi2::$2 ]
Allocated zp ZP_BYTE:6 [ nmi::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// NMI Sample Player using the SID volume register
// Code by Scan of Desire (Richard-William Loerakker)
diff --git a/src/test/ref/examples/plasma/plasma-unroll.log b/src/test/ref/examples/plasma/plasma-unroll.log
index 0d88b3172..aa6647eda 100644
--- a/src/test/ref/examples/plasma/plasma-unroll.log
+++ b/src/test/ref/examples/plasma/plasma-unroll.log
@@ -3371,7 +3371,7 @@ Allocated zp ZP_BYTE:65 [ makecharset::$7 ]
Allocated zp ZP_BYTE:66 [ sid_rnd::return#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A KickC version of the plasma routine from the CC65 samples
// This version has an unrolled inner loop to reach 50+FPS
diff --git a/src/test/ref/examples/plasma/plasma.log b/src/test/ref/examples/plasma/plasma.log
index a7dcd8fca..fc7429e46 100644
--- a/src/test/ref/examples/plasma/plasma.log
+++ b/src/test/ref/examples/plasma/plasma.log
@@ -2646,7 +2646,7 @@ Allocated zp ZP_BYTE:41 [ makecharset::$7 ]
Allocated zp ZP_BYTE:42 [ sid_rnd::return#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A KickC version of the plasma routine from the CC65 samples
// (w)2001 by groepaz/hitmen
diff --git a/src/test/ref/examples/rasterbars/raster-bars.log b/src/test/ref/examples/rasterbars/raster-bars.log
index 937200f5c..97785e18a 100644
--- a/src/test/ref/examples/rasterbars/raster-bars.log
+++ b/src/test/ref/examples/rasterbars/raster-bars.log
@@ -273,7 +273,7 @@ Allocated zp ZP_BYTE:2 [ raster::col#2 raster::col#0 raster::col#1 ]
Allocated zp ZP_BYTE:3 [ raster::i#2 raster::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/examples/rotate/rotate.log b/src/test/ref/examples/rotate/rotate.log
index e972d9b04..e419122df 100644
--- a/src/test/ref/examples/rotate/rotate.log
+++ b/src/test/ref/examples/rotate/rotate.log
@@ -2688,7 +2688,7 @@ Allocated zp ZP_BYTE:96 [ mulf_init::$12 ]
Allocated zp ZP_BYTE:97 [ mulf_init::$13 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// 2D rotattion of 8 sprites
// Upstart
diff --git a/src/test/ref/examples/scroll/scroll.log b/src/test/ref/examples/scroll/scroll.log
index 09b54af92..ea0982897 100644
--- a/src/test/ref/examples/scroll/scroll.log
+++ b/src/test/ref/examples/scroll/scroll.log
@@ -535,7 +535,7 @@ Allocated zp ZP_WORD:5 [ main::nxt#4 main::nxt#10 main::nxt#11 main::nxt#1 ]
Allocated zp ZP_WORD:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/examples/scrollbig/scrollbig.log b/src/test/ref/examples/scrollbig/scrollbig.log
index a668f09d3..25c9c80a1 100644
--- a/src/test/ref/examples/scrollbig/scrollbig.log
+++ b/src/test/ref/examples/scrollbig/scrollbig.log
@@ -1380,7 +1380,7 @@ Allocated zp ZP_BYTE:21 [ scroll_bit::bits#0 ]
Allocated zp ZP_BYTE:22 [ scroll_bit::$9 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// An 8x8 char letter scroller
// Upstart
diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.log b/src/test/ref/examples/scrolllogo/scrolllogo.log
index e10794c06..aed300de1 100644
--- a/src/test/ref/examples/scrolllogo/scrolllogo.log
+++ b/src/test/ref/examples/scrolllogo/scrolllogo.log
@@ -4300,7 +4300,7 @@ Allocated zp ZP_WORD:177 [ rem16u#1 ]
Allocated zp ZP_WORD:179 [ memset::end#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/examples/showlogo/showlogo.log b/src/test/ref/examples/showlogo/showlogo.log
index 43daa575d..ddb235203 100644
--- a/src/test/ref/examples/showlogo/showlogo.log
+++ b/src/test/ref/examples/showlogo/showlogo.log
@@ -688,7 +688,7 @@ Allocated zp ZP_WORD:8 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
Allocated zp ZP_WORD:10 [ memset::end#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/examples/sinplotter/sine-plotter.log b/src/test/ref/examples/sinplotter/sine-plotter.log
index dab8c0198..98d9814d4 100644
--- a/src/test/ref/examples/sinplotter/sine-plotter.log
+++ b/src/test/ref/examples/sinplotter/sine-plotter.log
@@ -4002,7 +4002,7 @@ Allocated zp ZP_BYTE:191 [ bitmap_init::$5 ]
Allocated zp ZP_BYTE:192 [ bitmap_init::$6 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Generate a big sinus and plot it on a bitmap
// Upstart
diff --git a/src/test/ref/examples/sinsprites/sinus-sprites.log b/src/test/ref/examples/sinsprites/sinus-sprites.log
index d7ea96c86..7c6a72dc8 100644
--- a/src/test/ref/examples/sinsprites/sinus-sprites.log
+++ b/src/test/ref/examples/sinsprites/sinus-sprites.log
@@ -3697,7 +3697,7 @@ Allocated zp ZP_BYTE:78 [ gen_chargen_sprite::$6 ]
Allocated zp ZP_BYTE:79 [ place_sprites::j2#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/examples/zpcode/zpcode.log b/src/test/ref/examples/zpcode/zpcode.log
index ad568f782..125a54b57 100644
--- a/src/test/ref/examples/zpcode/zpcode.log
+++ b/src/test/ref/examples/zpcode/zpcode.log
@@ -356,7 +356,7 @@ Allocated zp ZP_BYTE:3 [ zpLoop::i#2 zpLoop::i#1 ]
Allocated zp ZP_BYTE:4 [ loop::i#2 loop::i#1 ]
INITIAL ASM
-Target platform is custom
+Target platform is custom / 6502X
// File Comments
// Example showing how to use KickAsm segments to compile meant to be transfered to zeropage before execution.
// The linker-file defines the ZpCode segment to be on zeropage and does not include it directly in the PRG-file (by excluding it from the Program segment).
diff --git a/src/test/ref/fastmultiply-127.log b/src/test/ref/fastmultiply-127.log
index 13cab9bf8..ef38ba4cf 100644
--- a/src/test/ref/fastmultiply-127.log
+++ b/src/test/ref/fastmultiply-127.log
@@ -2815,7 +2815,7 @@ Allocated zp ZP_WORD:47 [ mulf8u127::return#0 ]
Allocated zp ZP_WORD:49 [ print_mulf8u127::c#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// An implementation of seriously fast multiply for integer values in the interval [-1;1] with the best possible precision
// NOTE: So far unsuccessful - since the handling of sign and values where a+b>sqrt2) makes the code slower than regular fast multiply
diff --git a/src/test/ref/fibmem.log b/src/test/ref/fibmem.log
index 2e22a75f0..3010b27e7 100644
--- a/src/test/ref/fibmem.log
+++ b/src/test/ref/fibmem.log
@@ -162,7 +162,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/fill-square.log b/src/test/ref/fill-square.log
index f750f4dfe..d869ab35d 100644
--- a/src/test/ref/fill-square.log
+++ b/src/test/ref/fill-square.log
@@ -224,7 +224,7 @@ Allocated zp ZP_WORD:12 [ main::line#0 ]
Allocated zp ZP_BYTE:14 [ main::$3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Fill a square on the screen
// Upstart
diff --git a/src/test/ref/fillscreen.log b/src/test/ref/fillscreen.log
index 5c1a718ac..3174c024b 100644
--- a/src/test/ref/fillscreen.log
+++ b/src/test/ref/fillscreen.log
@@ -213,7 +213,7 @@ Allocated zp ZP_BYTE:3 [ main::c#0 ]
Allocated zp ZP_BYTE:4 [ fillscreen::c#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/flipper-rex2.log b/src/test/ref/flipper-rex2.log
index edae7dd62..068d13260 100644
--- a/src/test/ref/flipper-rex2.log
+++ b/src/test/ref/flipper-rex2.log
@@ -702,7 +702,7 @@ Allocated zp ZP_BYTE:12 [ flip::i#2 flip::i#1 ]
Allocated zp ZP_BYTE:13 [ prepare::i#2 prepare::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/font-hex-show.log b/src/test/ref/font-hex-show.log
index 8d93b41a0..f5a1b336c 100644
--- a/src/test/ref/font-hex-show.log
+++ b/src/test/ref/font-hex-show.log
@@ -754,7 +754,7 @@ Allocated zp ZP_BYTE:15 [ init_font_hex::$2 ]
Allocated zp ZP_BYTE:16 [ init_font_hex::idx#3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Shows a font where each char contains the number of the char (00-ff)
// Upstart
diff --git a/src/test/ref/for-empty-increment.log b/src/test/ref/for-empty-increment.log
index 4bfd1d799..5122bf81b 100644
--- a/src/test/ref/for-empty-increment.log
+++ b/src/test/ref/for-empty-increment.log
@@ -128,7 +128,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that for()-loops can have empty increments
// Upstart
diff --git a/src/test/ref/for-empty-init.log b/src/test/ref/for-empty-init.log
index 2892bee9c..4ca7eefc3 100644
--- a/src/test/ref/for-empty-init.log
+++ b/src/test/ref/for-empty-init.log
@@ -128,7 +128,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that for()-loops can have empty inits
// Upstart
diff --git a/src/test/ref/for-two-vars.log b/src/test/ref/for-two-vars.log
index 2a8d7a9d3..f3931bc29 100644
--- a/src/test/ref/for-two-vars.log
+++ b/src/test/ref/for-two-vars.log
@@ -159,7 +159,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_WORD:3 [ main::sc#2 main::sc#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test a for-loop with two iterating variables
// Illustrates that for()-loops currently cannot contain two variable declarations.
diff --git a/src/test/ref/forced-zeropage.log b/src/test/ref/forced-zeropage.log
index 61e487e41..57e2f0676 100644
--- a/src/test/ref/forced-zeropage.log
+++ b/src/test/ref/forced-zeropage.log
@@ -126,7 +126,7 @@ Allocated zp ZP_WORD:2 [ main::u#1 ]
Allocated zp ZP_WORD:4 [ main::$5 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test some forced zeropage access
// Upstart
diff --git a/src/test/ref/forclassicmin.log b/src/test/ref/forclassicmin.log
index 10a55319e..841452f5b 100644
--- a/src/test/ref/forclassicmin.log
+++ b/src/test/ref/forclassicmin.log
@@ -143,7 +143,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal classic for() loop
// Upstart
diff --git a/src/test/ref/forincrementassign.log b/src/test/ref/forincrementassign.log
index 0dfaab525..8e43e9826 100644
--- a/src/test/ref/forincrementassign.log
+++ b/src/test/ref/forincrementassign.log
@@ -137,7 +137,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Classic for() does not allow assignment as increment, eg. for(byte i=0;i<40;i=i+2) {}
// The following should give a program rendering a char on every second char of the first line - but results in a syntax error
diff --git a/src/test/ref/forrangedwords.log b/src/test/ref/forrangedwords.log
index f9a2ae12b..8a87e837b 100644
--- a/src/test/ref/forrangedwords.log
+++ b/src/test/ref/forrangedwords.log
@@ -214,7 +214,7 @@ Allocated zp ZP_BYTE:8 [ main::$3 ]
Allocated zp ZP_BYTE:9 [ main::$4 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/forrangemin.log b/src/test/ref/forrangemin.log
index eb7040492..bddd925db 100644
--- a/src/test/ref/forrangemin.log
+++ b/src/test/ref/forrangemin.log
@@ -181,7 +181,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::j#3 main::j#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal range based for() loop
// Upstart
diff --git a/src/test/ref/forrangesymbolic.log b/src/test/ref/forrangesymbolic.log
index bef624556..c6fa1a462 100644
--- a/src/test/ref/forrangesymbolic.log
+++ b/src/test/ref/forrangesymbolic.log
@@ -134,7 +134,7 @@ Complete equivalence classes
Allocated zp ZP_WORD:2 [ main::b#2 main::b#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Range-based for does not recognize symbolic constants.
// The following should work but gives a not-constant exception
diff --git a/src/test/ref/fragment-synth.log b/src/test/ref/fragment-synth.log
index a09c9354f..dfac6118e 100644
--- a/src/test/ref/fragment-synth.log
+++ b/src/test/ref/fragment-synth.log
@@ -286,7 +286,7 @@ Allocated zp ZP_BYTE:7 [ main::a2#0 ]
Allocated zp ZP_BYTE:8 [ fct::return#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests a sub-optimal fragment synthesis
// vbuaa=vbuxx_band_pbuz1_derefidx_vbuc1 < vbuaa=pbuz1_derefidx_vbuc1_band_vbuxx < vbuaa=pbuz1_derefidx_vbuaa_band_vbuxx < vbuaa=pbuz1_derefidx_vbuyy_band_vbuxx < vbuaa=pbuz1_derefidx_vbuyy_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:11.5
diff --git a/src/test/ref/fragment-variations.log b/src/test/ref/fragment-variations.log
index cdc971eac..46f7a64b0 100644
--- a/src/test/ref/fragment-variations.log
+++ b/src/test/ref/fragment-variations.log
@@ -256,7 +256,7 @@ Allocated zp ZP_DWORD:20 [ main::$1 ]
Allocated zp ZP_DWORD:24 [ mul16u::return#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that ASM fragment variations works
// ASM fragment variations "cast" constants to different types
diff --git a/src/test/ref/function-pointer-noarg-2.log b/src/test/ref/function-pointer-noarg-2.log
index 265ccf379..b91469bbe 100644
--- a/src/test/ref/function-pointer-noarg-2.log
+++ b/src/test/ref/function-pointer-noarg-2.log
@@ -195,7 +195,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests creating and assigning pointers to non-args no-return functions
// Upstart
diff --git a/src/test/ref/function-pointer-noarg-3.log b/src/test/ref/function-pointer-noarg-3.log
index 9aa06b498..0adedd6a5 100644
--- a/src/test/ref/function-pointer-noarg-3.log
+++ b/src/test/ref/function-pointer-noarg-3.log
@@ -259,7 +259,7 @@ Allocated zp ZP_WORD:3 [ main::f#3 ]
Allocated zp ZP_BYTE:5 [ main::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests creating and assigning pointers to non-args no-return functions - plus inline kickasm-based calling
// Upstart
diff --git a/src/test/ref/function-pointer-noarg-call-10.log b/src/test/ref/function-pointer-noarg-call-10.log
index 0cd359ab7..9f13c5789 100644
--- a/src/test/ref/function-pointer-noarg-call-10.log
+++ b/src/test/ref/function-pointer-noarg-call-10.log
@@ -383,7 +383,7 @@ Allocated zp ZP_BYTE:7 [ print::i#2 print::i#1 ]
Allocated zp ZP_BYTE:8 [ idx#11 idx#16 idx#12 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests calling into different function pointers which call a common sub-method
// Upstart
diff --git a/src/test/ref/function-pointer-noarg-call-2.log b/src/test/ref/function-pointer-noarg-call-2.log
index 5a0b114cd..39c95b860 100644
--- a/src/test/ref/function-pointer-noarg-call-2.log
+++ b/src/test/ref/function-pointer-noarg-call-2.log
@@ -247,7 +247,7 @@ Allocated zp ZP_WORD:3 [ main::f#3 ]
Allocated zp ZP_BYTE:5 [ main::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests creating, assigning and calling pointers to non-args no-return functions
// Upstart
diff --git a/src/test/ref/function-pointer-noarg-call-3.log b/src/test/ref/function-pointer-noarg-call-3.log
index 10510efba..6d8d75061 100644
--- a/src/test/ref/function-pointer-noarg-call-3.log
+++ b/src/test/ref/function-pointer-noarg-call-3.log
@@ -288,7 +288,7 @@ Allocated zp ZP_WORD:8 [ main::$1 ]
Allocated zp ZP_BYTE:10 [ getfn::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests creating, assigning returning and calling pointers to non-args no-return functions
// Upstart
diff --git a/src/test/ref/function-pointer-noarg-call-4.log b/src/test/ref/function-pointer-noarg-call-4.log
index 397c7633c..74f82eb20 100644
--- a/src/test/ref/function-pointer-noarg-call-4.log
+++ b/src/test/ref/function-pointer-noarg-call-4.log
@@ -210,7 +210,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests creating, assigning returning and calling pointers to non-args no-return functions
// Upstart
diff --git a/src/test/ref/function-pointer-noarg-call-5.log b/src/test/ref/function-pointer-noarg-call-5.log
index c49d6e3a4..c05e20ad4 100644
--- a/src/test/ref/function-pointer-noarg-call-5.log
+++ b/src/test/ref/function-pointer-noarg-call-5.log
@@ -218,7 +218,7 @@ Allocated zp ZP_BYTE:4 [ main::$2 ]
Allocated zp ZP_WORD:5 [ main::f#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests calling into arrays of pointers to non-args no-return functions
// Upstart
diff --git a/src/test/ref/function-pointer-noarg-call-6.log b/src/test/ref/function-pointer-noarg-call-6.log
index 21b01b571..ed2143df6 100644
--- a/src/test/ref/function-pointer-noarg-call-6.log
+++ b/src/test/ref/function-pointer-noarg-call-6.log
@@ -208,7 +208,7 @@ Allocated zp ZP_WORD:2 [ main::cols#2 main::cols#1 ]
Allocated zp ZP_WORD:4 [ fn1::screen#2 fn1::screen#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests calling into a function pointer with local variables
// Upstart
diff --git a/src/test/ref/function-pointer-noarg-call-7.log b/src/test/ref/function-pointer-noarg-call-7.log
index 203e3bf37..690717a0c 100644
--- a/src/test/ref/function-pointer-noarg-call-7.log
+++ b/src/test/ref/function-pointer-noarg-call-7.log
@@ -282,7 +282,7 @@ Allocated zp ZP_BYTE:3 [ hello::i#2 hello::i#1 ]
Allocated zp ZP_BYTE:4 [ idx#0 idx#3 idx#7 idx#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests calling into a function pointer with local variables
// Upstart
diff --git a/src/test/ref/function-pointer-noarg-call-8.log b/src/test/ref/function-pointer-noarg-call-8.log
index 754da843e..8b3d43506 100644
--- a/src/test/ref/function-pointer-noarg-call-8.log
+++ b/src/test/ref/function-pointer-noarg-call-8.log
@@ -345,7 +345,7 @@ Allocated zp ZP_WORD:4 [ msg#0 msg#1 msg#10 ]
Allocated zp ZP_BYTE:6 [ idx#0 idx#3 idx#7 idx#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests calling into a function pointer with local variables
// Upstart
diff --git a/src/test/ref/function-pointer-noarg-call-9.log b/src/test/ref/function-pointer-noarg-call-9.log
index c964f785c..a07f3c6a3 100644
--- a/src/test/ref/function-pointer-noarg-call-9.log
+++ b/src/test/ref/function-pointer-noarg-call-9.log
@@ -145,7 +145,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ idx#0 idx#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests calling into a function pointer which modifies global volatile
// Upstart
diff --git a/src/test/ref/function-pointer-noarg-call.log b/src/test/ref/function-pointer-noarg-call.log
index 0b9420627..1fb35c655 100644
--- a/src/test/ref/function-pointer-noarg-call.log
+++ b/src/test/ref/function-pointer-noarg-call.log
@@ -109,7 +109,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests creating, assigning and calling pointers to non-args no-return functions
// Upstart
diff --git a/src/test/ref/function-pointer-noarg.log b/src/test/ref/function-pointer-noarg.log
index 6f6a631b4..7eee9c044 100644
--- a/src/test/ref/function-pointer-noarg.log
+++ b/src/test/ref/function-pointer-noarg.log
@@ -223,7 +223,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests creating pointers to non-args no-return functions
// Upstart
diff --git a/src/test/ref/function-pointer-return.log b/src/test/ref/function-pointer-return.log
index f381782f4..c433ab47d 100644
--- a/src/test/ref/function-pointer-return.log
+++ b/src/test/ref/function-pointer-return.log
@@ -289,7 +289,7 @@ Allocated zp ZP_BYTE:5 [ main::$0 ]
Allocated zp ZP_BYTE:6 [ main::$4 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests creating and assigning pointers to non-args return with function value
// Upstart
diff --git a/src/test/ref/gfxbank.log b/src/test/ref/gfxbank.log
index b9252ca2f..7d2458586 100644
--- a/src/test/ref/gfxbank.log
+++ b/src/test/ref/gfxbank.log
@@ -211,7 +211,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test minimization of constants
// Upstart
diff --git a/src/test/ref/global-pc-multiple.log b/src/test/ref/global-pc-multiple.log
index bd00d35ad..da450a8a8 100644
--- a/src/test/ref/global-pc-multiple.log
+++ b/src/test/ref/global-pc-multiple.log
@@ -155,7 +155,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test setting the program PC through a #pc directive
// Upstart
diff --git a/src/test/ref/global-pc.log b/src/test/ref/global-pc.log
index c90f6e4bf..d0c4f410d 100644
--- a/src/test/ref/global-pc.log
+++ b/src/test/ref/global-pc.log
@@ -107,7 +107,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::col#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test setting the program PC through a #pc directive
// Upstart
diff --git a/src/test/ref/halfscii.log b/src/test/ref/halfscii.log
index 92ba1f0a0..09b112526 100644
--- a/src/test/ref/halfscii.log
+++ b/src/test/ref/halfscii.log
@@ -870,7 +870,7 @@ Allocated zp ZP_BYTE:36 [ main::bits#3 ]
Allocated zp ZP_BYTE:37 [ main::bits_gen#7 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/helloworld0.log b/src/test/ref/helloworld0.log
index 0e6a9d28c..303f7e507 100644
--- a/src/test/ref/helloworld0.log
+++ b/src/test/ref/helloworld0.log
@@ -125,7 +125,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests minimal hello world
// Upstart
diff --git a/src/test/ref/helloworld2-inline.log b/src/test/ref/helloworld2-inline.log
index 7117a1243..9813ca591 100644
--- a/src/test/ref/helloworld2-inline.log
+++ b/src/test/ref/helloworld2-inline.log
@@ -342,7 +342,7 @@ Allocated zp ZP_BYTE:4 [ main::print22_i#2 main::print22_i#1 ]
Allocated zp ZP_BYTE:5 [ main::print22_j#2 main::print22_j#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/helloworld2.log b/src/test/ref/helloworld2.log
index 74808f2d3..ce8520a1d 100644
--- a/src/test/ref/helloworld2.log
+++ b/src/test/ref/helloworld2.log
@@ -258,7 +258,7 @@ Allocated zp ZP_BYTE:4 [ print2::i#2 print2::i#1 ]
Allocated zp ZP_BYTE:5 [ print2::j#2 print2::j#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/hex2dec-ptrptr.log b/src/test/ref/hex2dec-ptrptr.log
index 7abc8a98b..e4e4580f0 100644
--- a/src/test/ref/hex2dec-ptrptr.log
+++ b/src/test/ref/hex2dec-ptrptr.log
@@ -769,7 +769,7 @@ Allocated zp ZP_BYTE:16 [ utoa16w::$8 ]
Allocated zp ZP_BYTE:17 [ utoa16w::$12 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Testing binary to hex conversion using pointer to pointer
// Upstart
diff --git a/src/test/ref/hex2dec.log b/src/test/ref/hex2dec.log
index 991f47e78..fbb763f7a 100644
--- a/src/test/ref/hex2dec.log
+++ b/src/test/ref/hex2dec.log
@@ -1449,7 +1449,7 @@ Allocated zp ZP_BYTE:36 [ utoa16w::$8 ]
Allocated zp ZP_BYTE:37 [ utoa16w::$12 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Testing hex to decimal conversion
// Upstart
diff --git a/src/test/ref/ifmin.log b/src/test/ref/ifmin.log
index 8561a289f..04ec563cd 100644
--- a/src/test/ref/ifmin.log
+++ b/src/test/ref/ifmin.log
@@ -149,7 +149,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal if() test
// Upstart
diff --git a/src/test/ref/immzero.log b/src/test/ref/immzero.log
index 1da37af07..e4607c0a2 100644
--- a/src/test/ref/immzero.log
+++ b/src/test/ref/immzero.log
@@ -136,7 +136,7 @@ Allocated zp ZP_WORD:2 [ main::w#2 main::w#1 ]
Allocated zp ZP_BYTE:4 [ main::j#2 main::j#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that immediate zero values are reused - even when assigning to words
// Upstart
diff --git a/src/test/ref/importing.log b/src/test/ref/importing.log
index bbeafc9e8..f432b2b16 100644
--- a/src/test/ref/importing.log
+++ b/src/test/ref/importing.log
@@ -97,7 +97,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/incd020.log b/src/test/ref/incd020.log
index 6f4860428..720bb2403 100644
--- a/src/test/ref/incd020.log
+++ b/src/test/ref/incd020.log
@@ -86,7 +86,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Incrementing / decrementing pointer content should result in code modifying the memory location - eg. inc $d020.
// Currently it does not but instead leads to just reading the value a few times.
diff --git a/src/test/ref/incrementinarray.log b/src/test/ref/incrementinarray.log
index 3d16cc87b..691f0eb91 100644
--- a/src/test/ref/incrementinarray.log
+++ b/src/test/ref/incrementinarray.log
@@ -712,7 +712,7 @@ Allocated zp ZP_WORD:7 [ print_char_cursor#12 print_char_cursor#25 print_char_cu
Allocated zp ZP_WORD:9 [ memset::dst#2 memset::dst#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/infloop-error.log b/src/test/ref/infloop-error.log
index deefad57f..2752c0f86 100644
--- a/src/test/ref/infloop-error.log
+++ b/src/test/ref/infloop-error.log
@@ -277,7 +277,7 @@ Allocated zp ZP_BYTE:3 [ main::min#2 main::min#3 main::min#9 ]
Allocated zp ZP_BYTE:4 [ main::max#2 main::max#3 main::max#9 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Results in infinite compile loop as the compiler keeps trying to remove the same (empty) alias
// Upstart
diff --git a/src/test/ref/init-volatiles.log b/src/test/ref/init-volatiles.log
index 9341e5568..2f0490ed0 100644
--- a/src/test/ref/init-volatiles.log
+++ b/src/test/ref/init-volatiles.log
@@ -140,7 +140,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ x#5 x#0 x#1 x#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates a problem where volatiles with initializers are initialized outside the main()-routine
// Upstart
diff --git a/src/test/ref/initializer-0.log b/src/test/ref/initializer-0.log
index eaa8ffa67..9f7ca490e 100644
--- a/src/test/ref/initializer-0.log
+++ b/src/test/ref/initializer-0.log
@@ -154,7 +154,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::idx#2 main::idx#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates initializing an object using = { ... } syntax
// Array of chars
diff --git a/src/test/ref/initializer-1.log b/src/test/ref/initializer-1.log
index c91e8a583..4b4131bd8 100644
--- a/src/test/ref/initializer-1.log
+++ b/src/test/ref/initializer-1.log
@@ -197,7 +197,7 @@ Allocated zp ZP_BYTE:6 [ main::idx#1 ]
Allocated zp ZP_BYTE:7 [ main::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates initializing an object using = { ... } syntax
// Array of words
diff --git a/src/test/ref/initializer-2.log b/src/test/ref/initializer-2.log
index 2e6c6c6e9..60d0e83ed 100644
--- a/src/test/ref/initializer-2.log
+++ b/src/test/ref/initializer-2.log
@@ -216,7 +216,7 @@ Allocated zp ZP_BYTE:4 [ main::$2 ]
Allocated zp ZP_BYTE:5 [ main::idx#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates initializing an array of structs
// Array of structs containing chars
diff --git a/src/test/ref/initializer-3.log b/src/test/ref/initializer-3.log
index bb7f645c1..5dea183db 100644
--- a/src/test/ref/initializer-3.log
+++ b/src/test/ref/initializer-3.log
@@ -256,7 +256,7 @@ Allocated zp ZP_BYTE:8 [ main::idx#2 ]
Allocated zp ZP_BYTE:9 [ main::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates initializing an array of structs
// Array of structs containing words
diff --git a/src/test/ref/inline-asm-clobber-none.log b/src/test/ref/inline-asm-clobber-none.log
index 61b1655bd..e05649e73 100644
--- a/src/test/ref/inline-asm-clobber-none.log
+++ b/src/test/ref/inline-asm-clobber-none.log
@@ -211,7 +211,7 @@ Allocated zp ZP_BYTE:3 [ main::j#4 main::j#1 ]
Allocated zp ZP_BYTE:4 [ main::k#2 main::k#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that inline ASM JSR clobbers all registers
// Upstart
diff --git a/src/test/ref/inline-asm-clobber.log b/src/test/ref/inline-asm-clobber.log
index e8b645346..7c36a70ce 100644
--- a/src/test/ref/inline-asm-clobber.log
+++ b/src/test/ref/inline-asm-clobber.log
@@ -262,7 +262,7 @@ Allocated zp ZP_BYTE:4 [ main::k#4 main::k#1 ]
Allocated zp ZP_BYTE:5 [ main::l#2 main::l#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that inline ASM clobbering is taken into account when assigning registers
// Upstart
diff --git a/src/test/ref/inline-asm-jsr-clobber.log b/src/test/ref/inline-asm-jsr-clobber.log
index 164b6a3d0..620d9a900 100644
--- a/src/test/ref/inline-asm-jsr-clobber.log
+++ b/src/test/ref/inline-asm-jsr-clobber.log
@@ -109,7 +109,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that inline ASM JSR clobbers all registers
// Upstart
diff --git a/src/test/ref/inline-asm-label.log b/src/test/ref/inline-asm-label.log
index 75b1a3946..f238807c7 100644
--- a/src/test/ref/inline-asm-label.log
+++ b/src/test/ref/inline-asm-label.log
@@ -80,7 +80,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates how inline assembler use internal labels and external references
// Upstart
diff --git a/src/test/ref/inline-asm-optimized.log b/src/test/ref/inline-asm-optimized.log
index 49c015244..2d95f8f64 100644
--- a/src/test/ref/inline-asm-optimized.log
+++ b/src/test/ref/inline-asm-optimized.log
@@ -93,7 +93,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that inline assembler is optimized
// Upstart
diff --git a/src/test/ref/inline-asm-param.log b/src/test/ref/inline-asm-param.log
index 4eaf2799f..da05b84f0 100644
--- a/src/test/ref/inline-asm-param.log
+++ b/src/test/ref/inline-asm-param.log
@@ -118,7 +118,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/inline-asm-ref-scoped.log b/src/test/ref/inline-asm-ref-scoped.log
index deb18b9fb..83847b9c6 100644
--- a/src/test/ref/inline-asm-ref-scoped.log
+++ b/src/test/ref/inline-asm-ref-scoped.log
@@ -87,7 +87,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that references to labels in other scopes is possible from inline ASM
// Upstart
diff --git a/src/test/ref/inline-asm-refout-const.log b/src/test/ref/inline-asm-refout-const.log
index 4ab364b83..cb6446177 100644
--- a/src/test/ref/inline-asm-refout-const.log
+++ b/src/test/ref/inline-asm-refout-const.log
@@ -80,7 +80,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates how inline assembler can reference data from the outside program without the data being optimized away as unused
// Upstart
diff --git a/src/test/ref/inline-asm-refout.log b/src/test/ref/inline-asm-refout.log
index 59fd0c146..b1fe79844 100644
--- a/src/test/ref/inline-asm-refout.log
+++ b/src/test/ref/inline-asm-refout.log
@@ -100,7 +100,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates how inline assembler can reference data from the outside program
// Upstart
diff --git a/src/test/ref/inline-asm.log b/src/test/ref/inline-asm.log
index 5238ed429..0f59ddc53 100644
--- a/src/test/ref/inline-asm.log
+++ b/src/test/ref/inline-asm.log
@@ -62,7 +62,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/inline-assignment.log b/src/test/ref/inline-assignment.log
index e8b21b8a3..e39ef4253 100644
--- a/src/test/ref/inline-assignment.log
+++ b/src/test/ref/inline-assignment.log
@@ -142,7 +142,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::a#1 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/inline-function-if.log b/src/test/ref/inline-function-if.log
index 10fcae02e..ee2ab721e 100644
--- a/src/test/ref/inline-function-if.log
+++ b/src/test/ref/inline-function-if.log
@@ -267,7 +267,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test inlining a slightly complex print function (containing an if)
// Upstart
diff --git a/src/test/ref/inline-function-level2.log b/src/test/ref/inline-function-level2.log
index 614cb584b..38662b845 100644
--- a/src/test/ref/inline-function-level2.log
+++ b/src/test/ref/inline-function-level2.log
@@ -657,7 +657,7 @@ Allocated zp ZP_BYTE:14 [ main::plot2_xpos#0 ]
Allocated zp ZP_BYTE:15 [ main::plot1_xpos#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Inline functions in two levels
// Upstart
diff --git a/src/test/ref/inline-function-min.log b/src/test/ref/inline-function-min.log
index 5994f8e3a..4587e96e2 100644
--- a/src/test/ref/inline-function-min.log
+++ b/src/test/ref/inline-function-min.log
@@ -290,7 +290,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test minimal inline function
// Upstart
diff --git a/src/test/ref/inline-function-print.log b/src/test/ref/inline-function-print.log
index c1bd11c39..aa7500087 100644
--- a/src/test/ref/inline-function-print.log
+++ b/src/test/ref/inline-function-print.log
@@ -340,7 +340,7 @@ Allocated zp ZP_BYTE:4 [ main::print2_i#2 main::print2_i#1 ]
Allocated zp ZP_BYTE:5 [ main::print2_j#2 main::print2_j#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// TEst inlining a slightly complex print function (containing a loop)
// Upstart
diff --git a/src/test/ref/inline-function.log b/src/test/ref/inline-function.log
index 135316fe2..ef3a4ade7 100644
--- a/src/test/ref/inline-function.log
+++ b/src/test/ref/inline-function.log
@@ -419,7 +419,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test inline function
// Splits screen so upper half is lower case and lower half lower case
diff --git a/src/test/ref/inline-kasm-clobber.log b/src/test/ref/inline-kasm-clobber.log
index cd77de6d0..499c2ffec 100644
--- a/src/test/ref/inline-kasm-clobber.log
+++ b/src/test/ref/inline-kasm-clobber.log
@@ -226,7 +226,7 @@ Allocated zp ZP_BYTE:3 [ main::l#4 main::l#1 ]
Allocated zp ZP_BYTE:4 [ main::m#2 main::m#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that inline kickasm supports the clobbering directive
// Upstart
diff --git a/src/test/ref/inline-kasm-data.log b/src/test/ref/inline-kasm-data.log
index 83cfa2161..b60dbf147 100644
--- a/src/test/ref/inline-kasm-data.log
+++ b/src/test/ref/inline-kasm-data.log
@@ -183,7 +183,7 @@ Allocated zp ZP_WORD:5 [ main::cols#2 main::cols#1 ]
Allocated zp ZP_BYTE:7 [ main::sin#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Example of inline kickasm data
// Upstart
diff --git a/src/test/ref/inline-kasm-loop.log b/src/test/ref/inline-kasm-loop.log
index 4ceffd8e1..02e07f505 100644
--- a/src/test/ref/inline-kasm-loop.log
+++ b/src/test/ref/inline-kasm-loop.log
@@ -99,7 +99,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Example of inline kickasm in a function
// Upstart
diff --git a/src/test/ref/inline-kasm-refout.log b/src/test/ref/inline-kasm-refout.log
index 1fd4f5736..163c5db4d 100644
--- a/src/test/ref/inline-kasm-refout.log
+++ b/src/test/ref/inline-kasm-refout.log
@@ -94,7 +94,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates how inline kickassembler can reference data from the outside program
// Upstart
diff --git a/src/test/ref/inline-kasm-resource.log b/src/test/ref/inline-kasm-resource.log
index d57da2fcf..718b98781 100644
--- a/src/test/ref/inline-kasm-resource.log
+++ b/src/test/ref/inline-kasm-resource.log
@@ -165,7 +165,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Example of inline kickasm resource data
// Upstart
diff --git a/src/test/ref/inline-pointer-0.log b/src/test/ref/inline-pointer-0.log
index 7e69b1ffd..c3502f919 100644
--- a/src/test/ref/inline-pointer-0.log
+++ b/src/test/ref/inline-pointer-0.log
@@ -100,7 +100,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests creating a literal pointer from two bytes
// Upstart
diff --git a/src/test/ref/inline-pointer-1.log b/src/test/ref/inline-pointer-1.log
index 81b005c22..af84357b5 100644
--- a/src/test/ref/inline-pointer-1.log
+++ b/src/test/ref/inline-pointer-1.log
@@ -181,7 +181,7 @@ Allocated zp ZP_BYTE:3 [ puta::pl#2 ]
Allocated zp ZP_WORD:4 [ puta::screen#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests creating a literal pointer from two bytes
// Upstart
diff --git a/src/test/ref/inline-pointer-2.log b/src/test/ref/inline-pointer-2.log
index c57b47dc6..9ea034540 100644
--- a/src/test/ref/inline-pointer-2.log
+++ b/src/test/ref/inline-pointer-2.log
@@ -119,7 +119,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests creating a literal pointer from two bytes
// Upstart
diff --git a/src/test/ref/inline-string-2.log b/src/test/ref/inline-string-2.log
index 8508697b1..320507290 100644
--- a/src/test/ref/inline-string-2.log
+++ b/src/test/ref/inline-string-2.log
@@ -350,7 +350,7 @@ Allocated zp ZP_WORD:5 [ print_msg::msg#3 ]
Allocated zp ZP_WORD:7 [ print::msg#2 print::msg#0 print::msg#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Inline Strings in assignments
// Upstart
diff --git a/src/test/ref/inline-string-3.log b/src/test/ref/inline-string-3.log
index 851dcacfe..6bad5e5d8 100644
--- a/src/test/ref/inline-string-3.log
+++ b/src/test/ref/inline-string-3.log
@@ -147,7 +147,7 @@ Complete equivalence classes
Allocated zp ZP_WORD:2 [ main::ptr#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test assigning address of inline string to pointer
// The result should be an labelled .text in the ASM
diff --git a/src/test/ref/inline-string.log b/src/test/ref/inline-string.log
index cbf9604f9..e8b8ac84c 100644
--- a/src/test/ref/inline-string.log
+++ b/src/test/ref/inline-string.log
@@ -264,7 +264,7 @@ Allocated zp ZP_WORD:2 [ screen#18 screen#12 screen#5 ]
Allocated zp ZP_WORD:4 [ print::msg#4 print::msg#6 print::msg#3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Inline Strings in method calls are automatically converted to local constant variables byte[] st = "..."; - generating an ASM .text).
// Upstart
diff --git a/src/test/ref/inline-word-0.log b/src/test/ref/inline-word-0.log
index 49a4218d6..efa4195f5 100644
--- a/src/test/ref/inline-word-0.log
+++ b/src/test/ref/inline-word-0.log
@@ -119,7 +119,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests minimal inline word
// Upstart
diff --git a/src/test/ref/inline-word-1.log b/src/test/ref/inline-word-1.log
index ace8a8ca2..f40969f78 100644
--- a/src/test/ref/inline-word-1.log
+++ b/src/test/ref/inline-word-1.log
@@ -119,7 +119,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests minimal inline word
// Upstart
diff --git a/src/test/ref/inline-word-2.log b/src/test/ref/inline-word-2.log
index 929dd5154..988ec1341 100644
--- a/src/test/ref/inline-word-2.log
+++ b/src/test/ref/inline-word-2.log
@@ -119,7 +119,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests minimal inline word
// Upstart
diff --git a/src/test/ref/inline-word.log b/src/test/ref/inline-word.log
index e0e5a469b..22ee3f7ed 100644
--- a/src/test/ref/inline-word.log
+++ b/src/test/ref/inline-word.log
@@ -235,7 +235,7 @@ Allocated zp ZP_BYTE:3 [ main::l#2 main::l#1 ]
Allocated zp ZP_WORD:4 [ main::w#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/inlinearrayproblem.log b/src/test/ref/inlinearrayproblem.log
index bdb8944cd..13cb61211 100644
--- a/src/test/ref/inlinearrayproblem.log
+++ b/src/test/ref/inlinearrayproblem.log
@@ -148,7 +148,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Arrays / strings allocated inline destroy functions (because they are allocated where the call enters.
// The following places the text at the start of the main-function - and JSR's straight into the text - not the code.
diff --git a/src/test/ref/inmem-const-array.log b/src/test/ref/inmem-const-array.log
index 4fcf5ad26..26ef3ff89 100644
--- a/src/test/ref/inmem-const-array.log
+++ b/src/test/ref/inmem-const-array.log
@@ -241,7 +241,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::j#3 main::j#4 main::j#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/inmemarray.log b/src/test/ref/inmemarray.log
index 05b331857..daae919de 100644
--- a/src/test/ref/inmemarray.log
+++ b/src/test/ref/inmemarray.log
@@ -210,7 +210,7 @@ Allocated zp ZP_BYTE:2 [ main::j#3 main::j#4 main::j#1 ]
Allocated zp ZP_BYTE:3 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/inmemstring.log b/src/test/ref/inmemstring.log
index f359d4be8..131d3bdc7 100644
--- a/src/test/ref/inmemstring.log
+++ b/src/test/ref/inmemstring.log
@@ -203,7 +203,7 @@ Allocated zp ZP_BYTE:2 [ main::i#3 main::i#4 main::i#1 ]
Allocated zp ZP_WORD:3 [ main::cursor#2 main::cursor#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/inner-increment-problem.log b/src/test/ref/inner-increment-problem.log
index fb6d1e12f..48b9cae25 100644
--- a/src/test/ref/inner-increment-problem.log
+++ b/src/test/ref/inner-increment-problem.log
@@ -161,7 +161,7 @@ Allocated zp ZP_BYTE:6 [ main::$3 ]
Allocated zp ZP_BYTE:7 [ main::$4 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Inner increment is not being done properly (screen++)
// Upstart
diff --git a/src/test/ref/int-conversion.log b/src/test/ref/int-conversion.log
index ee0076350..dbf26ef36 100644
--- a/src/test/ref/int-conversion.log
+++ b/src/test/ref/int-conversion.log
@@ -1647,7 +1647,7 @@ Allocated zp ZP_BYTE:5 [ assertType::t2#42 ]
Allocated zp ZP_BYTE:6 [ idx#105 idx#108 idx#26 idx#40 idx#47 idx#19 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests different integer literal types
// Upstart
diff --git a/src/test/ref/int-literals.log b/src/test/ref/int-literals.log
index abf5fb8a2..7939603e5 100644
--- a/src/test/ref/int-literals.log
+++ b/src/test/ref/int-literals.log
@@ -770,7 +770,7 @@ Allocated zp ZP_BYTE:5 [ assertType::t2#15 ]
Allocated zp ZP_BYTE:6 [ idx#41 idx#20 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests different integer literal types
// Upstart
diff --git a/src/test/ref/interrupt-volatile-reuse-problem1.log b/src/test/ref/interrupt-volatile-reuse-problem1.log
index 9c81a5943..11c0622cf 100644
--- a/src/test/ref/interrupt-volatile-reuse-problem1.log
+++ b/src/test/ref/interrupt-volatile-reuse-problem1.log
@@ -172,7 +172,7 @@ Allocated zp ZP_BYTE:2 [ col1#0 col1#1 ]
Allocated zp ZP_BYTE:3 [ col2#0 col2#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates problem where volatiles reuse the same ZP addresses for multiple overlapping volatiles
// Upstart
diff --git a/src/test/ref/interrupt-volatile-reuse-problem2.log b/src/test/ref/interrupt-volatile-reuse-problem2.log
index dc370accf..9d46d0aed 100644
--- a/src/test/ref/interrupt-volatile-reuse-problem2.log
+++ b/src/test/ref/interrupt-volatile-reuse-problem2.log
@@ -328,7 +328,7 @@ Allocated zp ZP_BYTE:5 [ col1#0 col1#1 ]
Allocated zp ZP_BYTE:6 [ main::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates problem where volatiles reuse ZP addresses of other variables
// Upstart
diff --git a/src/test/ref/irq-hardware-clobber-jsr.log b/src/test/ref/irq-hardware-clobber-jsr.log
index e3e54bf91..25944dd7a 100644
--- a/src/test/ref/irq-hardware-clobber-jsr.log
+++ b/src/test/ref/irq-hardware-clobber-jsr.log
@@ -292,7 +292,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A minimal working raster hardware IRQ with clobber-based register savings
// Upstart
diff --git a/src/test/ref/irq-hardware-clobber.log b/src/test/ref/irq-hardware-clobber.log
index b3dbb34f5..693038cd6 100644
--- a/src/test/ref/irq-hardware-clobber.log
+++ b/src/test/ref/irq-hardware-clobber.log
@@ -262,7 +262,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A minimal working raster hardware IRQ with clobber-based register savings
// Upstart
diff --git a/src/test/ref/irq-hardware-stack.log b/src/test/ref/irq-hardware-stack.log
index 1012424bd..2dfc65753 100644
--- a/src/test/ref/irq-hardware-stack.log
+++ b/src/test/ref/irq-hardware-stack.log
@@ -262,7 +262,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A minimal working raster IRQ
// Upstart
diff --git a/src/test/ref/irq-hardware.log b/src/test/ref/irq-hardware.log
index c0e28e364..67eb39427 100644
--- a/src/test/ref/irq-hardware.log
+++ b/src/test/ref/irq-hardware.log
@@ -262,7 +262,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A minimal working raster IRQ
// Upstart
diff --git a/src/test/ref/irq-idx-problem.log b/src/test/ref/irq-idx-problem.log
index 51272bdbc..17833a02b 100644
--- a/src/test/ref/irq-idx-problem.log
+++ b/src/test/ref/irq-idx-problem.log
@@ -465,7 +465,7 @@ Allocated zp ZP_BYTE:3 [ table_driven_irq::idx#0 ]
Allocated zp ZP_BYTE:4 [ table_driven_irq::val#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test interrupt routine using a variable between calls (irq_idx)
// Upstart
diff --git a/src/test/ref/irq-kernel-minimal.log b/src/test/ref/irq-kernel-minimal.log
index 0e9db3c38..ba8a42e1a 100644
--- a/src/test/ref/irq-kernel-minimal.log
+++ b/src/test/ref/irq-kernel-minimal.log
@@ -135,7 +135,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A minimal working IRQ
// Upstart
diff --git a/src/test/ref/irq-kernel.log b/src/test/ref/irq-kernel.log
index 3a3947ff6..71fb384c5 100644
--- a/src/test/ref/irq-kernel.log
+++ b/src/test/ref/irq-kernel.log
@@ -200,7 +200,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A minimal working raster IRQ
// Upstart
diff --git a/src/test/ref/irq-local-var-overlap-problem.log b/src/test/ref/irq-local-var-overlap-problem.log
index 0a0a28949..ac341f9c5 100644
--- a/src/test/ref/irq-local-var-overlap-problem.log
+++ b/src/test/ref/irq-local-var-overlap-problem.log
@@ -898,7 +898,7 @@ Allocated zp ZP_BYTE:20 [ sub_irq::$0 ]
Allocated zp ZP_BYTE:21 [ sub_irq::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates a problem where local variables inside an IRQ are assigned the same zeropage as a variable outside the IRQ
// Upstart
diff --git a/src/test/ref/irq-raster.log b/src/test/ref/irq-raster.log
index 986baa319..b40754ae7 100644
--- a/src/test/ref/irq-raster.log
+++ b/src/test/ref/irq-raster.log
@@ -200,7 +200,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A minimal working raster IRQ
// Upstart
diff --git a/src/test/ref/irq-volatile-bool-problem.log b/src/test/ref/irq-volatile-bool-problem.log
index 3038cce49..2551dfd75 100644
--- a/src/test/ref/irq-volatile-bool-problem.log
+++ b/src/test/ref/irq-volatile-bool-problem.log
@@ -315,7 +315,7 @@ Complete equivalence classes
Allocated zp ZP_BOOL:2 [ framedone#10 framedone#1 framedone#11 framedone#0 framedone#3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates a problem where a volatile bool modified at the end of an IRQ is not stored properly
// because it is assigned to the A register
diff --git a/src/test/ref/iterarray.log b/src/test/ref/iterarray.log
index fac18a7d6..d5f00e3d6 100644
--- a/src/test/ref/iterarray.log
+++ b/src/test/ref/iterarray.log
@@ -150,7 +150,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/kc-ka-string-encoding.log b/src/test/ref/kc-ka-string-encoding.log
index 6c8ad2b1b..8d7aae470 100644
--- a/src/test/ref/kc-ka-string-encoding.log
+++ b/src/test/ref/kc-ka-string-encoding.log
@@ -116,7 +116,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/keyboard-glitch.log b/src/test/ref/keyboard-glitch.log
index b805602a6..b24b3e040 100644
--- a/src/test/ref/keyboard-glitch.log
+++ b/src/test/ref/keyboard-glitch.log
@@ -701,7 +701,7 @@ Allocated zp ZP_BYTE:16 [ keyboard_key_pressed::return#10 ]
Allocated zp ZP_BYTE:17 [ pressed::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Exploring keyboard glitch that finds "C" press when pressing space
// The glitch is caused by the "normal" C64 interrupt occuring just as the keyboard is read.
diff --git a/src/test/ref/kickasm-uses-prevent-deletion.log b/src/test/ref/kickasm-uses-prevent-deletion.log
index d712c21ef..04006f724 100644
--- a/src/test/ref/kickasm-uses-prevent-deletion.log
+++ b/src/test/ref/kickasm-uses-prevent-deletion.log
@@ -131,7 +131,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Ensure that an inline kickasm uses-clause is anough to prevent a function from being deleted
// Upstart
diff --git a/src/test/ref/line-anim.log b/src/test/ref/line-anim.log
index 0ee89128e..57c04fb47 100644
--- a/src/test/ref/line-anim.log
+++ b/src/test/ref/line-anim.log
@@ -2781,7 +2781,7 @@ Allocated zp ZP_BYTE:92 [ bitmap_init::$5 ]
Allocated zp ZP_BYTE:93 [ bitmap_init::$6 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Animated lines drawn on a single color bitmap
// Upstart
diff --git a/src/test/ref/linegen.log b/src/test/ref/linegen.log
index b68238520..40ce2d0c6 100644
--- a/src/test/ref/linegen.log
+++ b/src/test/ref/linegen.log
@@ -2427,7 +2427,7 @@ Allocated zp ZP_BYTE:58 [ divr16u::$2 ]
Allocated zp ZP_WORD:59 [ rem16u#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Linear table generator
// Work in progress towards a sinus generator
diff --git a/src/test/ref/literal-char-minus-number.log b/src/test/ref/literal-char-minus-number.log
index ac8d4f0ee..b2784651a 100644
--- a/src/test/ref/literal-char-minus-number.log
+++ b/src/test/ref/literal-char-minus-number.log
@@ -80,7 +80,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests subtracting a number from a literal char
// Upstart
diff --git a/src/test/ref/literal-strings.log b/src/test/ref/literal-strings.log
index 0190a1811..79a1541b5 100644
--- a/src/test/ref/literal-strings.log
+++ b/src/test/ref/literal-strings.log
@@ -145,7 +145,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests literal strings with and without zero-termination
// Upstart
diff --git a/src/test/ref/literal-word-pointer-0.log b/src/test/ref/literal-word-pointer-0.log
index d35324d12..29f9f2262 100644
--- a/src/test/ref/literal-word-pointer-0.log
+++ b/src/test/ref/literal-word-pointer-0.log
@@ -115,7 +115,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests assigning a literal word pointer
// Upstart
diff --git a/src/test/ref/literals.log b/src/test/ref/literals.log
index 6431be2f1..e429dc3c8 100644
--- a/src/test/ref/literals.log
+++ b/src/test/ref/literals.log
@@ -187,7 +187,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/liverange-call-problem.log b/src/test/ref/liverange-call-problem.log
index 7518443aa..e128c13ff 100644
--- a/src/test/ref/liverange-call-problem.log
+++ b/src/test/ref/liverange-call-problem.log
@@ -300,7 +300,7 @@ Allocated zp ZP_WORD:2 [ w2#10 w2#11 ]
Allocated zp ZP_WORD:4 [ w1#11 w1#12 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Live ranges were not functioning properly, when multiple method calls were chained - each modifying different vars.
// w1 and w2 ended up having the same zero-page register as their live range was not propagated properly
diff --git a/src/test/ref/liverange-problem-0.log b/src/test/ref/liverange-problem-0.log
index fe2dab66a..3334f278e 100644
--- a/src/test/ref/liverange-problem-0.log
+++ b/src/test/ref/liverange-problem-0.log
@@ -227,7 +227,7 @@ Allocated zp ZP_WORD:10 [ SCREEN_2#0 ]
Allocated zp ZP_WORD:12 [ malloc::return#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Error where the compiler is reusing the same ZP for two byte* variables.
// SCREEN_1 and SCREEN_2 are both allocated to ZP: 4
diff --git a/src/test/ref/liverange.log b/src/test/ref/liverange.log
index 21f787778..dca093009 100644
--- a/src/test/ref/liverange.log
+++ b/src/test/ref/liverange.log
@@ -272,7 +272,7 @@ Allocated zp ZP_BYTE:8 [ main::a#2 ]
Allocated zp ZP_BYTE:9 [ inci::return#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/local-string.log b/src/test/ref/local-string.log
index a84fa5955..6d9a564ca 100644
--- a/src/test/ref/local-string.log
+++ b/src/test/ref/local-string.log
@@ -137,7 +137,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Local constant strings are placed at the start of the method. This means the generated ASM jumps / calls straignt into the constant string
// Upstart
diff --git a/src/test/ref/localscope-loops.log b/src/test/ref/localscope-loops.log
index 78426ba84..d5957d611 100644
--- a/src/test/ref/localscope-loops.log
+++ b/src/test/ref/localscope-loops.log
@@ -174,7 +174,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::i1#2 main::i1#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates introducing local scopes inside loops etc
// Upstart
diff --git a/src/test/ref/localscope-simple.log b/src/test/ref/localscope-simple.log
index 41caefcb8..eb8b012eb 100644
--- a/src/test/ref/localscope-simple.log
+++ b/src/test/ref/localscope-simple.log
@@ -96,7 +96,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests anonymous scopes inside functions
// Upstart
diff --git a/src/test/ref/long-pointer-0.log b/src/test/ref/long-pointer-0.log
index ba97331a6..e7a34ef66 100644
--- a/src/test/ref/long-pointer-0.log
+++ b/src/test/ref/long-pointer-0.log
@@ -99,7 +99,7 @@ Complete equivalence classes
Allocated zp ZP_DWORD:2 [ main::long_ptr#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests creating a long (32bit) pointer on zeropage for 45GS02 flat memory access
// Upstart
diff --git a/src/test/ref/long-pointer-1.log b/src/test/ref/long-pointer-1.log
index fccdb2f21..f6fbf89be 100644
--- a/src/test/ref/long-pointer-1.log
+++ b/src/test/ref/long-pointer-1.log
@@ -100,7 +100,7 @@ Complete equivalence classes
Allocated zp ZP_DWORD:2 [ main::long_ptr#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests creating a long (32bit) pointer on zeropage for 45GS02 flat memory access
// Upstart
diff --git a/src/test/ref/longbranch-interrupt-problem.log b/src/test/ref/longbranch-interrupt-problem.log
index 88171e39b..39359104e 100644
--- a/src/test/ref/longbranch-interrupt-problem.log
+++ b/src/test/ref/longbranch-interrupt-problem.log
@@ -240,7 +240,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ col#10 col#12 col#0 col#1 col#3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that long branch fixing works with interrupt exits (to $ea81)
// Upstart
diff --git a/src/test/ref/longjump.log b/src/test/ref/longjump.log
index 7f8353a01..f28c5612c 100644
--- a/src/test/ref/longjump.log
+++ b/src/test/ref/longjump.log
@@ -120,7 +120,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal example program generating a long jump
// Upstart
diff --git a/src/test/ref/longjump2.log b/src/test/ref/longjump2.log
index bdbc1304d..0ddecb74d 100644
--- a/src/test/ref/longjump2.log
+++ b/src/test/ref/longjump2.log
@@ -222,7 +222,7 @@ Allocated zp ZP_BYTE:2 [ long2::i#2 long2::i#1 ]
Allocated zp ZP_BYTE:3 [ long1::i#2 long1::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal example program generating two long jumps
// Upstart
diff --git a/src/test/ref/loop-break-continue.log b/src/test/ref/loop-break-continue.log
index dcd809590..e6bf36437 100644
--- a/src/test/ref/loop-break-continue.log
+++ b/src/test/ref/loop-break-continue.log
@@ -208,7 +208,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_WORD:3 [ main::screen#2 main::screen#5 main::screen#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates both break & continue statements in a loop
// Prints a message ending at NUL skipping all spaces
diff --git a/src/test/ref/loop-break-nested.log b/src/test/ref/loop-break-nested.log
index 1d60be4d2..b15e4dd98 100644
--- a/src/test/ref/loop-break-nested.log
+++ b/src/test/ref/loop-break-nested.log
@@ -219,7 +219,7 @@ Allocated zp ZP_WORD:2 [ main::line#2 main::line#1 ]
Allocated zp ZP_BYTE:4 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests break statement in a simple loop
// Upstart
diff --git a/src/test/ref/loop-break.log b/src/test/ref/loop-break.log
index 68ab60a4d..57d0d5eba 100644
--- a/src/test/ref/loop-break.log
+++ b/src/test/ref/loop-break.log
@@ -136,7 +136,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests break statement in a simple loop
// Upstart
diff --git a/src/test/ref/loop-continue.log b/src/test/ref/loop-continue.log
index 7096a7c14..7470b20ed 100644
--- a/src/test/ref/loop-continue.log
+++ b/src/test/ref/loop-continue.log
@@ -144,7 +144,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests break statement in a simple loop
// Upstart
diff --git a/src/test/ref/loop-for-continue.log b/src/test/ref/loop-for-continue.log
index af5fb47ea..8628af541 100644
--- a/src/test/ref/loop-for-continue.log
+++ b/src/test/ref/loop-for-continue.log
@@ -203,7 +203,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::idx#2 main::idx#5 main::idx#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests continue statement in a simple for()-loop
// Upstart
diff --git a/src/test/ref/loop-for-empty-body.log b/src/test/ref/loop-for-empty-body.log
index 796424f1c..0d5425172 100644
--- a/src/test/ref/loop-for-empty-body.log
+++ b/src/test/ref/loop-for-empty-body.log
@@ -153,7 +153,7 @@ Allocated zp ZP_BYTE:2 [ main::b#2 main::b#1 ]
Allocated zp ZP_BYTE:3 [ main::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test a for-loop with an empty body
// Upstart
diff --git a/src/test/ref/loop-for-sideeffect.log b/src/test/ref/loop-for-sideeffect.log
index e946f6875..6442cda4c 100644
--- a/src/test/ref/loop-for-sideeffect.log
+++ b/src/test/ref/loop-for-sideeffect.log
@@ -147,7 +147,7 @@ Allocated zp ZP_BYTE:2 [ main::i#3 main::i#6 ]
Allocated zp ZP_BYTE:3 [ main::i#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test a for()-loop where the condition has a side-effect
// Currently not standard C compliant (since the condition is not evaluated before the body)
diff --git a/src/test/ref/loop-memset-min.log b/src/test/ref/loop-memset-min.log
index 89eadddaf..7e3096dac 100644
--- a/src/test/ref/loop-memset-min.log
+++ b/src/test/ref/loop-memset-min.log
@@ -271,7 +271,7 @@ Complete equivalence classes
Allocated zp ZP_WORD:2 [ memset::dst#2 memset::dst#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal classic for() loop - coded using while() to test optimization of loop heads
// Upstart
diff --git a/src/test/ref/loop-problem.log b/src/test/ref/loop-problem.log
index 258a3a34c..9daefd5cd 100644
--- a/src/test/ref/loop-problem.log
+++ b/src/test/ref/loop-problem.log
@@ -181,7 +181,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ b::i#2 b::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A simple loop results in NullPointerException during loop analysis
// Upstart
diff --git a/src/test/ref/loop-problem2.log b/src/test/ref/loop-problem2.log
index 59f6f3e82..4493d2938 100644
--- a/src/test/ref/loop-problem2.log
+++ b/src/test/ref/loop-problem2.log
@@ -252,7 +252,7 @@ Allocated zp ZP_WORD:2 [ print_cls::sc#2 print_cls::sc#1 ]
Allocated zp ZP_BYTE:4 [ mode_ctrl::before#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/loop-while-continue.log b/src/test/ref/loop-while-continue.log
index 8bf26b510..bcfbe778c 100644
--- a/src/test/ref/loop-while-continue.log
+++ b/src/test/ref/loop-while-continue.log
@@ -150,7 +150,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests break statement in a simple loop
// Upstart
diff --git a/src/test/ref/loop-while-min.log b/src/test/ref/loop-while-min.log
index 8efa4fe71..06f438eec 100644
--- a/src/test/ref/loop-while-min.log
+++ b/src/test/ref/loop-while-min.log
@@ -129,7 +129,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal classic while() loop
// Upstart
diff --git a/src/test/ref/loop-while-sideeffect.log b/src/test/ref/loop-while-sideeffect.log
index f9d3e35bf..99b90a53b 100644
--- a/src/test/ref/loop-while-sideeffect.log
+++ b/src/test/ref/loop-while-sideeffect.log
@@ -142,7 +142,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#5 ]
Allocated zp ZP_BYTE:3 [ main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test a while()-loop where the condition has a side-effect
// Upstart
diff --git a/src/test/ref/loop100.log b/src/test/ref/loop100.log
index 70089a1a4..df2b99a04 100644
--- a/src/test/ref/loop100.log
+++ b/src/test/ref/loop100.log
@@ -119,7 +119,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/loophead-problem-2.log b/src/test/ref/loophead-problem-2.log
index 4a3848982..388e36e95 100644
--- a/src/test/ref/loophead-problem-2.log
+++ b/src/test/ref/loophead-problem-2.log
@@ -372,7 +372,7 @@ Allocated zp ZP_BYTE:11 [ scan_for_lowest::$3 ]
Allocated zp ZP_BYTE:12 [ scan_for_lowest::$4 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Call returns wrong value
// Reported by Clay Cowgill as an NPE (which has been fixed - but this return-value problem has popped up instead)
diff --git a/src/test/ref/loophead-problem-3.log b/src/test/ref/loophead-problem-3.log
index 60481baa4..8276ed48b 100644
--- a/src/test/ref/loophead-problem-3.log
+++ b/src/test/ref/loophead-problem-3.log
@@ -369,7 +369,7 @@ Allocated zp ZP_BYTE:23 [ main::$3 ]
Allocated zp ZP_BYTE:24 [ mul16u::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Program where loop-head optimization produces wrong return value
// Reported by Richard-William Loerakker
diff --git a/src/test/ref/loophead-problem.log b/src/test/ref/loophead-problem.log
index 99c544679..cad01f012 100644
--- a/src/test/ref/loophead-problem.log
+++ b/src/test/ref/loophead-problem.log
@@ -223,7 +223,7 @@ Allocated zp ZP_BYTE:2 [ popup_selector::k#2 popup_selector::k#1 ]
Allocated zp ZP_BYTE:3 [ opcode#12 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates a problem where constant loophead unrolling results in an error
// The result is a NullPointerException
diff --git a/src/test/ref/loopmin.log b/src/test/ref/loopmin.log
index fb96276a1..15bf5f8c9 100644
--- a/src/test/ref/loopmin.log
+++ b/src/test/ref/loopmin.log
@@ -185,7 +185,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::s#2 main::s#4 main::s#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/loopnest.log b/src/test/ref/loopnest.log
index 76dcd7a5c..4cae1d47c 100644
--- a/src/test/ref/loopnest.log
+++ b/src/test/ref/loopnest.log
@@ -189,7 +189,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ nest::j#2 nest::j#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/loopnest2.log b/src/test/ref/loopnest2.log
index 471b07de6..0e16a3622 100644
--- a/src/test/ref/loopnest2.log
+++ b/src/test/ref/loopnest2.log
@@ -409,7 +409,7 @@ Allocated zp ZP_BYTE:6 [ nest2::i#4 nest2::i#1 ]
Allocated zp ZP_BYTE:7 [ nest2::j#2 nest2::j#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/loopnest3.log b/src/test/ref/loopnest3.log
index 5a9da9bbb..25b23c82f 100644
--- a/src/test/ref/loopnest3.log
+++ b/src/test/ref/loopnest3.log
@@ -239,7 +239,7 @@ Allocated zp ZP_BYTE:4 [ b::i#0 ]
Allocated zp ZP_BYTE:5 [ c::i#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/loopsplit.log b/src/test/ref/loopsplit.log
index 53404070c..b4ad2f914 100644
--- a/src/test/ref/loopsplit.log
+++ b/src/test/ref/loopsplit.log
@@ -204,7 +204,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::s#3 main::s#1 main::s#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/malloc-0.log b/src/test/ref/malloc-0.log
index 9bd58f29c..320714f83 100644
--- a/src/test/ref/malloc-0.log
+++ b/src/test/ref/malloc-0.log
@@ -275,7 +275,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Experiments with malloc() - a byte array
// Upstart
diff --git a/src/test/ref/malloc-1.log b/src/test/ref/malloc-1.log
index b2f2db7f1..897cf92b4 100644
--- a/src/test/ref/malloc-1.log
+++ b/src/test/ref/malloc-1.log
@@ -294,7 +294,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_WORD:3 [ main::w#2 main::w#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Experiments with malloc() - a word array
// Upstart
diff --git a/src/test/ref/mem-alignment.log b/src/test/ref/mem-alignment.log
index 68439182a..480f8b4e0 100644
--- a/src/test/ref/mem-alignment.log
+++ b/src/test/ref/mem-alignment.log
@@ -192,7 +192,7 @@ Allocated zp ZP_BYTE:3 [ main::j#2 main::j#1 ]
Allocated zp ZP_BYTE:4 [ main::i1#2 main::i1#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test that memory alignment of arrays work
// Upstart
diff --git a/src/test/ref/memcpy-0.log b/src/test/ref/memcpy-0.log
index d24e19926..6d7f6511a 100644
--- a/src/test/ref/memcpy-0.log
+++ b/src/test/ref/memcpy-0.log
@@ -522,7 +522,7 @@ Allocated zp ZP_WORD:10 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
Allocated zp ZP_WORD:12 [ memcpy::src_end#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test memcpy - copy charset and screen using memcpy() from stdlib string
// Upstart
diff --git a/src/test/ref/memcpy-1.log b/src/test/ref/memcpy-1.log
index da1a2b5f4..fc4347e48 100644
--- a/src/test/ref/memcpy-1.log
+++ b/src/test/ref/memcpy-1.log
@@ -517,7 +517,7 @@ Allocated zp ZP_WORD:20 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
Allocated zp ZP_WORD:22 [ memcpy::src_end#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test memcpy on strings (
// Upstart
diff --git a/src/test/ref/memory-heap.log b/src/test/ref/memory-heap.log
index bfab2017d..05314f5b4 100644
--- a/src/test/ref/memory-heap.log
+++ b/src/test/ref/memory-heap.log
@@ -434,7 +434,7 @@ Allocated zp ZP_BYTE:9 [ main::$4 ]
Allocated zp ZP_WORD:10 [ malloc::mem#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Experiments with malloc()
// Upstart
diff --git a/src/test/ref/min-fmul-16.log b/src/test/ref/min-fmul-16.log
index dcdcf9343..47a6478cf 100644
--- a/src/test/ref/min-fmul-16.log
+++ b/src/test/ref/min-fmul-16.log
@@ -1396,7 +1396,7 @@ Allocated zp ZP_BYTE:41 [ mulf_init::$12 ]
Allocated zp ZP_BYTE:42 [ mulf_init::$13 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/mixed-array-0.log b/src/test/ref/mixed-array-0.log
index 1ac0f989d..28da03119 100644
--- a/src/test/ref/mixed-array-0.log
+++ b/src/test/ref/mixed-array-0.log
@@ -116,7 +116,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test an array with mixed byte/number types
// Upstart
diff --git a/src/test/ref/mixed-array-1.log b/src/test/ref/mixed-array-1.log
index 0d72940fb..3b149825b 100644
--- a/src/test/ref/mixed-array-1.log
+++ b/src/test/ref/mixed-array-1.log
@@ -117,7 +117,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test an array with mixed byte/number types
// Upstart
diff --git a/src/test/ref/modglobal.log b/src/test/ref/modglobal.log
index 0fc1011ec..b938e1d69 100644
--- a/src/test/ref/modglobal.log
+++ b/src/test/ref/modglobal.log
@@ -358,7 +358,7 @@ Allocated zp ZP_BYTE:9 [ cnt#12 ]
Allocated zp ZP_BYTE:10 [ inccnt::return#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/modglobalmin.log b/src/test/ref/modglobalmin.log
index cb3f4d3f5..fa6171a75 100644
--- a/src/test/ref/modglobalmin.log
+++ b/src/test/ref/modglobalmin.log
@@ -193,7 +193,7 @@ Allocated zp ZP_BYTE:3 [ cnt#11 ]
Allocated zp ZP_BYTE:4 [ cnt#13 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/mul8u-min.log b/src/test/ref/mul8u-min.log
index dc6ec1d46..1da649949 100644
--- a/src/test/ref/mul8u-min.log
+++ b/src/test/ref/mul8u-min.log
@@ -462,7 +462,7 @@ Allocated zp ZP_BYTE:15 [ main::$3 ]
Allocated zp ZP_BYTE:16 [ mul8u::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal test of mul8u
// Upstart
diff --git a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log
index d4ff3f1e7..f1f382619 100644
--- a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log
+++ b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log
@@ -2398,7 +2398,7 @@ Allocated zp ZP_BYTE:32 [ plexShowSprite::$9 ]
Allocated zp ZP_BYTE:33 [ plexShowSprite::$5 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A simple usage of the flexible sprite multiplexer routine
// Upstart
diff --git a/src/test/ref/multiply-2s.log b/src/test/ref/multiply-2s.log
index d6a917b59..19787ba3c 100644
--- a/src/test/ref/multiply-2s.log
+++ b/src/test/ref/multiply-2s.log
@@ -248,7 +248,7 @@ Allocated zp ZP_BYTE:6 [ main::sb#0 ]
Allocated zp ZP_BYTE:7 [ main::$12 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Check that multiplication by factors of 2 is converted to shifts
// Upstart
diff --git a/src/test/ref/multiply-ns.log b/src/test/ref/multiply-ns.log
index 51840c4e8..2721c1b87 100644
--- a/src/test/ref/multiply-ns.log
+++ b/src/test/ref/multiply-ns.log
@@ -542,7 +542,7 @@ Allocated zp ZP_BYTE:31 [ main::$67 ]
Allocated zp ZP_BYTE:32 [ main::$29 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Check that multiplication by constants is converted to shift/add
// Upstart
diff --git a/src/test/ref/nes-array.log b/src/test/ref/nes-array.log
index b6fd00338..f11fb74fe 100644
--- a/src/test/ref/nes-array.log
+++ b/src/test/ref/nes-array.log
@@ -287,7 +287,7 @@ Allocated zp ZP_BYTE:17 [ foo::$1 ]
Allocated zp ZP_WORD:18 [ foo::return#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test a bit of array code from the NES forum
// https://forums.nesdev.com/viewtopic.php?f=2&t=18735
diff --git a/src/test/ref/no-recursion-heavy.log b/src/test/ref/no-recursion-heavy.log
index 467a2f9ff..1cc3dee1d 100644
--- a/src/test/ref/no-recursion-heavy.log
+++ b/src/test/ref/no-recursion-heavy.log
@@ -2825,7 +2825,7 @@ Allocated zp ZP_BYTE:7 [ bd#116 bd#154 bd#114 bd#153 bd#113 bd#152 bd#112 bd#151
Allocated zp ZP_BYTE:8 [ bd#117 bd#235 bd#236 bd#237 bd#238 bd#239 bd#240 bd#241 bd#242 bd#243 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/noop-cast-elimination.log b/src/test/ref/noop-cast-elimination.log
index c40d22be4..a8cf90baf 100644
--- a/src/test/ref/noop-cast-elimination.log
+++ b/src/test/ref/noop-cast-elimination.log
@@ -160,7 +160,7 @@ Allocated zp ZP_WORD:3 [ main::sw#2 main::sw#1 ]
Allocated zp ZP_BYTE:5 [ main::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test elimination of noop-casts (signed byte to byte)
// Upstart
diff --git a/src/test/ref/norom-charset.log b/src/test/ref/norom-charset.log
index a5acb58a7..a96f92bbf 100644
--- a/src/test/ref/norom-charset.log
+++ b/src/test/ref/norom-charset.log
@@ -568,7 +568,7 @@ Allocated zp ZP_BYTE:13 [ gen_char3::$0 ]
Allocated zp ZP_BYTE:14 [ gen_char3::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Generate a charset based on a 5x3 pattern stored in 2 bytes
// Upstart
diff --git a/src/test/ref/number-conversion.log b/src/test/ref/number-conversion.log
index 50144e082..5078f8e0b 100644
--- a/src/test/ref/number-conversion.log
+++ b/src/test/ref/number-conversion.log
@@ -1392,7 +1392,7 @@ Allocated zp ZP_BYTE:3 [ assertType::t2#35 ]
Allocated zp ZP_BYTE:4 [ idx#79 idx#40 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests conversion of numbers to correct int types
// See https://gitlab.com/camelot/kickc/issues/181
diff --git a/src/test/ref/number-inference-sum.log b/src/test/ref/number-inference-sum.log
index ec8afe272..12fa71057 100644
--- a/src/test/ref/number-inference-sum.log
+++ b/src/test/ref/number-inference-sum.log
@@ -175,7 +175,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test inference of number types using a long sum
// Currently fails - because the compiler does not handle byte+byte correctly (not truncating the result to 8 bits)
diff --git a/src/test/ref/number-type.log b/src/test/ref/number-type.log
index fa1a5f5d8..9fd95f3ee 100644
--- a/src/test/ref/number-type.log
+++ b/src/test/ref/number-type.log
@@ -528,7 +528,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests the number type used for constant expressions
// Upstart
diff --git a/src/test/ref/operator-lohi-problem-1.log b/src/test/ref/operator-lohi-problem-1.log
index afaa280ba..ba9a7676c 100644
--- a/src/test/ref/operator-lohi-problem-1.log
+++ b/src/test/ref/operator-lohi-problem-1.log
@@ -148,7 +148,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates problem with constant evaluation of lo/hi-operator
// $20000 /$400 results in a byte value - confusing the lo/hi-evaluation
diff --git a/src/test/ref/operator-lohi-problem.log b/src/test/ref/operator-lohi-problem.log
index 44be38012..2ab11bf2e 100644
--- a/src/test/ref/operator-lohi-problem.log
+++ b/src/test/ref/operator-lohi-problem.log
@@ -173,7 +173,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates problem with constant evaluation of lo/hi-operator
// $20000 /$400 results in a byte value - confusing the lo/hi-evaluation
diff --git a/src/test/ref/optimize-unsigned-comparisons.log b/src/test/ref/optimize-unsigned-comparisons.log
index 9806b9473..828ff4ce5 100644
--- a/src/test/ref/optimize-unsigned-comparisons.log
+++ b/src/test/ref/optimize-unsigned-comparisons.log
@@ -211,7 +211,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Examples of unsigned comparisons to values outside the range of unsigned
// These should be optimized to constants
diff --git a/src/test/ref/overlap-allocation-2.log b/src/test/ref/overlap-allocation-2.log
index 5d903abdf..890fcc45e 100644
--- a/src/test/ref/overlap-allocation-2.log
+++ b/src/test/ref/overlap-allocation-2.log
@@ -279,7 +279,7 @@ Allocated zp ZP_BYTE:4 [ line::l#2 line::l#0 line::l#1 ]
Allocated zp ZP_BYTE:5 [ plot::x#2 plot::x#0 plot::x#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Two levels of functions to test that register allocation handles live ranges and call-ranges optimally to allocate the fewest possible ZP-variables
// Upstart
diff --git a/src/test/ref/overlap-allocation.log b/src/test/ref/overlap-allocation.log
index b3b973210..609b65e2a 100644
--- a/src/test/ref/overlap-allocation.log
+++ b/src/test/ref/overlap-allocation.log
@@ -276,7 +276,7 @@ Allocated zp ZP_BYTE:4 [ main::k#2 main::k#1 ]
Allocated zp ZP_BYTE:5 [ plot::x#3 plot::x#0 plot::x#1 plot::x#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Allocates ZP to j/k-variables even though all of i, j, k could be allocates to x and be more efficient.
// Reason: Pass4RegisterUpliftCombinations.isAllocationOverlapping() believes i/j/k variables overlaps insode plot()
diff --git a/src/test/ref/parse-negated-struct-ref.log b/src/test/ref/parse-negated-struct-ref.log
index 93c8afa00..06134e64f 100644
--- a/src/test/ref/parse-negated-struct-ref.log
+++ b/src/test/ref/parse-negated-struct-ref.log
@@ -158,7 +158,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ aa_b#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test parsing a negated struct reference - which causes problems with the ASMREL labels !a++
// https://gitlab.com/camelot/kickc/issues/266
diff --git a/src/test/ref/plasma-center.log b/src/test/ref/plasma-center.log
index 22c1c7a19..de9708aec 100644
--- a/src/test/ref/plasma-center.log
+++ b/src/test/ref/plasma-center.log
@@ -5310,7 +5310,7 @@ Allocated zp ZP_BYTE:155 [ init_squares::$4 ]
Allocated zp ZP_WORD:156 [ malloc::mem#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Plasma based on the distance/angle to the screen center
// Upstart
diff --git a/src/test/ref/platform-asm6502.log b/src/test/ref/platform-asm6502.log
index a7133f6d4..418b1909f 100644
--- a/src/test/ref/platform-asm6502.log
+++ b/src/test/ref/platform-asm6502.log
@@ -128,7 +128,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is asm6502
+Target platform is asm6502 / 6502X
// File Comments
// Tests the target platform ASM6502
// Upstart
diff --git a/src/test/ref/platform-asm6502_segments.asm b/src/test/ref/platform-asm6502_segments.asm
deleted file mode 100644
index 4aba1c8c6..000000000
--- a/src/test/ref/platform-asm6502_segments.asm
+++ /dev/null
@@ -1,20 +0,0 @@
-// Tests the target platform ASM6502_SEGMENTS
-.file [ name="platform-asm6502_segments.prg",type="prg",segments="Program" ]
-.segmentdef Program [ segments="Code,Data" ]
-.segmentdef Code [ start=$2000 ]
-.segmentdef Data [ startAfter="Code" ]
-.segment Code
-main: {
- ldx #0
- b1:
- cpx #$a
- bcc b2
- rts
- b2:
- txa
- sta TABLE,x
- inx
- jmp b1
-}
-.segment Data
- TABLE: .fill $a, 0
diff --git a/src/test/ref/platform-asm6502_segments.cfg b/src/test/ref/platform-asm6502_segments.cfg
deleted file mode 100644
index 6d2b8eabe..000000000
--- a/src/test/ref/platform-asm6502_segments.cfg
+++ /dev/null
@@ -1,23 +0,0 @@
-@begin: scope:[] from
- [0] phi()
- to:@1
-@1: scope:[] from @begin
- [1] phi()
- [2] call main
- to:@end
-@end: scope:[] from @1
- [3] phi()
-main: scope:[main] from @1
- [4] phi()
- to:main::@1
-main::@1: scope:[main] from main main::@2
- [5] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 )
- [6] if((byte) main::i#2<(byte) $a) goto main::@2
- to:main::@return
-main::@return: scope:[main] from main::@1
- [7] return
- to:@return
-main::@2: scope:[main] from main::@1
- [8] *((const byte[$a]) TABLE#0 + (byte) main::i#2) ← (byte) main::i#2
- [9] (byte) main::i#1 ← ++ (byte) main::i#2
- to:main::@1
diff --git a/src/test/ref/platform-asm6502_segments.log b/src/test/ref/platform-asm6502_segments.log
deleted file mode 100644
index 50c87f56a..000000000
--- a/src/test/ref/platform-asm6502_segments.log
+++ /dev/null
@@ -1,350 +0,0 @@
-Culled Empty Block (label) main::@4
-Culled Empty Block (label) main::@3
-Culled Empty Block (label) main::@5
-Culled Empty Block (label) main::@6
-
-CONTROL FLOW GRAPH SSA
-@begin: scope:[] from
- (byte[$a]) TABLE#0 ← { fill( $a, 0) }
- to:@1
-main: scope:[main] from @1
- (byte) main::i#0 ← (number) 0
- to:main::@1
-main::@1: scope:[main] from main main::@2
- (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
- (bool~) main::$0 ← (byte) main::i#2 < (number) $a
- if((bool~) main::$0) goto main::@2
- to:main::@return
-main::@2: scope:[main] from main::@1
- (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 )
- *((byte[$a]) TABLE#0 + (byte) main::i#3) ← (byte) main::i#3
- (byte) main::i#1 ← ++ (byte) main::i#3
- to:main::@1
-main::@return: scope:[main] from main::@1
- return
- to:@return
-@1: scope:[] from @begin
- call main
- to:@2
-@2: scope:[] from @1
- to:@end
-@end: scope:[] from @2
-
-SYMBOL TABLE SSA
-(label) @1
-(label) @2
-(label) @begin
-(label) @end
-(byte[$a]) TABLE
-(byte[$a]) TABLE#0
-(void()) main()
-(bool~) main::$0
-(label) main::@1
-(label) main::@2
-(label) main::@return
-(byte) main::i
-(byte) main::i#0
-(byte) main::i#1
-(byte) main::i#2
-(byte) main::i#3
-
-Adding number conversion cast (unumber) 0 in (byte) main::i#0 ← (number) 0
-Adding number conversion cast (unumber) $a in (bool~) main::$0 ← (byte) main::i#2 < (number) $a
-Successful SSA optimization PassNAddNumberTypeConversions
-Inlining cast (byte) main::i#0 ← (unumber)(number) 0
-Successful SSA optimization Pass2InlineCast
-Simplifying constant integer cast 0
-Simplifying constant integer cast $a
-Successful SSA optimization PassNCastSimplification
-Finalized unsigned number type (byte) 0
-Finalized unsigned number type (byte) $a
-Successful SSA optimization PassNFinalizeNumberTypeConversions
-Alias (byte) main::i#2 = (byte) main::i#3
-Successful SSA optimization Pass2AliasElimination
-Simple Condition (bool~) main::$0 [4] if((byte) main::i#2<(byte) $a) goto main::@2
-Successful SSA optimization Pass2ConditionalJumpSimplification
-Constant right-side identified [0] (byte[$a]) TABLE#0 ← { fill( $a, 0) }
-Successful SSA optimization Pass2ConstantRValueConsolidation
-Constant (const byte[$a]) TABLE#0 = { fill( $a, 0) }
-Constant (const byte) main::i#0 = 0
-Successful SSA optimization Pass2ConstantIdentification
-Inlining constant with var siblings (const byte) main::i#0
-Constant inlined main::i#0 = (byte) 0
-Successful SSA optimization Pass2ConstantInlining
-Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @1
-Adding NOP phi() at start of @2
-Adding NOP phi() at start of @end
-Adding NOP phi() at start of main
-CALL GRAPH
-Calls in [] to main:2
-
-Created 1 initial phi equivalence classes
-Coalesced [11] main::i#4 ← main::i#1
-Coalesced down to 1 phi equivalence classes
-Culled Empty Block (label) @2
-Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @1
-Adding NOP phi() at start of @end
-Adding NOP phi() at start of main
-
-FINAL CONTROL FLOW GRAPH
-@begin: scope:[] from
- [0] phi()
- to:@1
-@1: scope:[] from @begin
- [1] phi()
- [2] call main
- to:@end
-@end: scope:[] from @1
- [3] phi()
-main: scope:[main] from @1
- [4] phi()
- to:main::@1
-main::@1: scope:[main] from main main::@2
- [5] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 )
- [6] if((byte) main::i#2<(byte) $a) goto main::@2
- to:main::@return
-main::@return: scope:[main] from main::@1
- [7] return
- to:@return
-main::@2: scope:[main] from main::@1
- [8] *((const byte[$a]) TABLE#0 + (byte) main::i#2) ← (byte) main::i#2
- [9] (byte) main::i#1 ← ++ (byte) main::i#2
- to:main::@1
-
-
-VARIABLE REGISTER WEIGHTS
-(byte[$a]) TABLE
-(void()) main()
-(byte) main::i
-(byte) main::i#1 22.0
-(byte) main::i#2 18.333333333333332
-
-Initial phi equivalence classes
-[ main::i#2 main::i#1 ]
-Complete equivalence classes
-[ main::i#2 main::i#1 ]
-Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
-
-INITIAL ASM
-Target platform is asm6502_segments
- // File Comments
-// Tests the target platform ASM6502_SEGMENTS
- // Upstart
-.file [ name="platform-asm6502_segments.prg",type="prg",segments="Program" ]
-.segmentdef Program [ segments="Code,Data" ]
-.segmentdef Code [ start=$2000 ]
-.segmentdef Data [ startAfter="Code" ]
-.segment Code
- // Global Constants & labels
- // @begin
-bbegin:
- // [1] phi from @begin to @1 [phi:@begin->@1]
-b1_from_bbegin:
- jmp b1
- // @1
-b1:
- // [2] call main
- // [4] phi from @1 to main [phi:@1->main]
-main_from_b1:
- jsr main
- // [3] phi from @1 to @end [phi:@1->@end]
-bend_from_b1:
- jmp bend
- // @end
-bend:
- // main
-main: {
- .label i = 2
- // [5] phi from main to main::@1 [phi:main->main::@1]
- b1_from_main:
- // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
- lda #0
- sta.z i
- jmp b1
- // main::@1
- b1:
- // [6] if((byte) main::i#2<(byte) $a) goto main::@2 -- vbuz1_lt_vbuc1_then_la1
- lda.z i
- cmp #$a
- bcc b2
- jmp breturn
- // main::@return
- breturn:
- // [7] return
- rts
- // main::@2
- b2:
- // [8] *((const byte[$a]) TABLE#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz1
- ldy.z i
- tya
- sta TABLE,y
- // [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
- inc.z i
- // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
- b1_from_b2:
- // [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy
- jmp b1
-}
- // File Data
-.segment Data
- TABLE: .fill $a, 0
-
-REGISTER UPLIFT POTENTIAL REGISTERS
-Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
-
-REGISTER UPLIFT SCOPES
-Uplift Scope [main] 40.33: zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
-Uplift Scope []
-
-Uplifting [main] best 263 combination reg byte x [ main::i#2 main::i#1 ]
-Uplifting [] best 263 combination
-
-ASSEMBLER BEFORE OPTIMIZATION
- // File Comments
-// Tests the target platform ASM6502_SEGMENTS
- // Upstart
-.file [ name="platform-asm6502_segments.prg",type="prg",segments="Program" ]
-.segmentdef Program [ segments="Code,Data" ]
-.segmentdef Code [ start=$2000 ]
-.segmentdef Data [ startAfter="Code" ]
-.segment Code
- // Global Constants & labels
- // @begin
-bbegin:
- // [1] phi from @begin to @1 [phi:@begin->@1]
-b1_from_bbegin:
- jmp b1
- // @1
-b1:
- // [2] call main
- // [4] phi from @1 to main [phi:@1->main]
-main_from_b1:
- jsr main
- // [3] phi from @1 to @end [phi:@1->@end]
-bend_from_b1:
- jmp bend
- // @end
-bend:
- // main
-main: {
- // [5] phi from main to main::@1 [phi:main->main::@1]
- b1_from_main:
- // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
- ldx #0
- jmp b1
- // main::@1
- b1:
- // [6] if((byte) main::i#2<(byte) $a) goto main::@2 -- vbuxx_lt_vbuc1_then_la1
- cpx #$a
- bcc b2
- jmp breturn
- // main::@return
- breturn:
- // [7] return
- rts
- // main::@2
- b2:
- // [8] *((const byte[$a]) TABLE#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx
- txa
- sta TABLE,x
- // [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
- inx
- // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
- b1_from_b2:
- // [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy
- jmp b1
-}
- // File Data
-.segment Data
- TABLE: .fill $a, 0
-
-ASSEMBLER OPTIMIZATIONS
-Removing instruction jmp b1
-Removing instruction jmp bend
-Removing instruction jmp b1
-Removing instruction jmp breturn
-Succesful ASM optimization Pass5NextJumpElimination
-Removing instruction b1_from_bbegin:
-Removing instruction b1:
-Removing instruction main_from_b1:
-Removing instruction bend_from_b1:
-Succesful ASM optimization Pass5RedundantLabelElimination
-Removing instruction bbegin:
-Removing instruction bend:
-Removing instruction b1_from_main:
-Removing instruction breturn:
-Removing instruction b1_from_b2:
-Succesful ASM optimization Pass5UnusedLabelElimination
-Removing instruction jsr main
-Succesful ASM optimization Pass5SkipBegin
-
-FINAL SYMBOL TABLE
-(label) @1
-(label) @begin
-(label) @end
-(byte[$a]) TABLE
-(const byte[$a]) TABLE#0 TABLE = { fill( $a, 0) }
-(void()) main()
-(label) main::@1
-(label) main::@2
-(label) main::@return
-(byte) main::i
-(byte) main::i#1 reg byte x 22.0
-(byte) main::i#2 reg byte x 18.333333333333332
-
-reg byte x [ main::i#2 main::i#1 ]
-
-
-FINAL ASSEMBLER
-Score: 191
-
- // File Comments
-// Tests the target platform ASM6502_SEGMENTS
- // Upstart
-.file [ name="platform-asm6502_segments.prg",type="prg",segments="Program" ]
-.segmentdef Program [ segments="Code,Data" ]
-.segmentdef Code [ start=$2000 ]
-.segmentdef Data [ startAfter="Code" ]
-.segment Code
- // Global Constants & labels
- // @begin
- // [1] phi from @begin to @1 [phi:@begin->@1]
- // @1
- // [2] call main
- // [4] phi from @1 to main [phi:@1->main]
- // [3] phi from @1 to @end [phi:@1->@end]
- // @end
- // main
-main: {
- // [5] phi from main to main::@1 [phi:main->main::@1]
- // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
- ldx #0
- // main::@1
- b1:
- // for(char i=0;i<10;i++)
- // [6] if((byte) main::i#2<(byte) $a) goto main::@2 -- vbuxx_lt_vbuc1_then_la1
- cpx #$a
- bcc b2
- // main::@return
- // }
- // [7] return
- rts
- // main::@2
- b2:
- // TABLE[i] = i
- // [8] *((const byte[$a]) TABLE#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx
- txa
- sta TABLE,x
- // for(char i=0;i<10;i++)
- // [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
- inx
- // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
- // [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy
- jmp b1
-}
- // File Data
-.segment Data
- TABLE: .fill $a, 0
-
diff --git a/src/test/ref/platform-asm6502_segments.sym b/src/test/ref/platform-asm6502_segments.sym
deleted file mode 100644
index db2f574bf..000000000
--- a/src/test/ref/platform-asm6502_segments.sym
+++ /dev/null
@@ -1,14 +0,0 @@
-(label) @1
-(label) @begin
-(label) @end
-(byte[$a]) TABLE
-(const byte[$a]) TABLE#0 TABLE = { fill( $a, 0) }
-(void()) main()
-(label) main::@1
-(label) main::@2
-(label) main::@return
-(byte) main::i
-(byte) main::i#1 reg byte x 22.0
-(byte) main::i#2 reg byte x 18.333333333333332
-
-reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/platform-c64basic_segments.asm b/src/test/ref/platform-c64basic_segments.asm
deleted file mode 100644
index 06f208794..000000000
--- a/src/test/ref/platform-c64basic_segments.asm
+++ /dev/null
@@ -1,23 +0,0 @@
-// Tests the target platform C64BASIC_SEGMENTS
-.file [ name="platform-c64basic_segments.prg",type="prg",segments="Program" ]
-.segmentdef Program [ segments="Basic,Code,Data" ]
-.segmentdef Basic [ start=$0801 ]
-.segmentdef Code [ start=$80d ]
-.segmentdef Data [ startAfter="Code" ]
-.segment Basic
-:BasicUpstart(main)
-.segment Code
-main: {
- ldx #0
- b1:
- cpx #$a
- bcc b2
- rts
- b2:
- txa
- sta TABLE,x
- inx
- jmp b1
-}
-.segment Data
- TABLE: .fill $a, 0
diff --git a/src/test/ref/platform-c64basic_segments.cfg b/src/test/ref/platform-c64basic_segments.cfg
deleted file mode 100644
index 6d2b8eabe..000000000
--- a/src/test/ref/platform-c64basic_segments.cfg
+++ /dev/null
@@ -1,23 +0,0 @@
-@begin: scope:[] from
- [0] phi()
- to:@1
-@1: scope:[] from @begin
- [1] phi()
- [2] call main
- to:@end
-@end: scope:[] from @1
- [3] phi()
-main: scope:[main] from @1
- [4] phi()
- to:main::@1
-main::@1: scope:[main] from main main::@2
- [5] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 )
- [6] if((byte) main::i#2<(byte) $a) goto main::@2
- to:main::@return
-main::@return: scope:[main] from main::@1
- [7] return
- to:@return
-main::@2: scope:[main] from main::@1
- [8] *((const byte[$a]) TABLE#0 + (byte) main::i#2) ← (byte) main::i#2
- [9] (byte) main::i#1 ← ++ (byte) main::i#2
- to:main::@1
diff --git a/src/test/ref/platform-c64basic_segments.log b/src/test/ref/platform-c64basic_segments.log
deleted file mode 100644
index e432a8335..000000000
--- a/src/test/ref/platform-c64basic_segments.log
+++ /dev/null
@@ -1,361 +0,0 @@
-Culled Empty Block (label) main::@4
-Culled Empty Block (label) main::@3
-Culled Empty Block (label) main::@5
-Culled Empty Block (label) main::@6
-
-CONTROL FLOW GRAPH SSA
-@begin: scope:[] from
- (byte[$a]) TABLE#0 ← { fill( $a, 0) }
- to:@1
-main: scope:[main] from @1
- (byte) main::i#0 ← (number) 0
- to:main::@1
-main::@1: scope:[main] from main main::@2
- (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
- (bool~) main::$0 ← (byte) main::i#2 < (number) $a
- if((bool~) main::$0) goto main::@2
- to:main::@return
-main::@2: scope:[main] from main::@1
- (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 )
- *((byte[$a]) TABLE#0 + (byte) main::i#3) ← (byte) main::i#3
- (byte) main::i#1 ← ++ (byte) main::i#3
- to:main::@1
-main::@return: scope:[main] from main::@1
- return
- to:@return
-@1: scope:[] from @begin
- call main
- to:@2
-@2: scope:[] from @1
- to:@end
-@end: scope:[] from @2
-
-SYMBOL TABLE SSA
-(label) @1
-(label) @2
-(label) @begin
-(label) @end
-(byte[$a]) TABLE
-(byte[$a]) TABLE#0
-(void()) main()
-(bool~) main::$0
-(label) main::@1
-(label) main::@2
-(label) main::@return
-(byte) main::i
-(byte) main::i#0
-(byte) main::i#1
-(byte) main::i#2
-(byte) main::i#3
-
-Adding number conversion cast (unumber) 0 in (byte) main::i#0 ← (number) 0
-Adding number conversion cast (unumber) $a in (bool~) main::$0 ← (byte) main::i#2 < (number) $a
-Successful SSA optimization PassNAddNumberTypeConversions
-Inlining cast (byte) main::i#0 ← (unumber)(number) 0
-Successful SSA optimization Pass2InlineCast
-Simplifying constant integer cast 0
-Simplifying constant integer cast $a
-Successful SSA optimization PassNCastSimplification
-Finalized unsigned number type (byte) 0
-Finalized unsigned number type (byte) $a
-Successful SSA optimization PassNFinalizeNumberTypeConversions
-Alias (byte) main::i#2 = (byte) main::i#3
-Successful SSA optimization Pass2AliasElimination
-Simple Condition (bool~) main::$0 [4] if((byte) main::i#2<(byte) $a) goto main::@2
-Successful SSA optimization Pass2ConditionalJumpSimplification
-Constant right-side identified [0] (byte[$a]) TABLE#0 ← { fill( $a, 0) }
-Successful SSA optimization Pass2ConstantRValueConsolidation
-Constant (const byte[$a]) TABLE#0 = { fill( $a, 0) }
-Constant (const byte) main::i#0 = 0
-Successful SSA optimization Pass2ConstantIdentification
-Inlining constant with var siblings (const byte) main::i#0
-Constant inlined main::i#0 = (byte) 0
-Successful SSA optimization Pass2ConstantInlining
-Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @1
-Adding NOP phi() at start of @2
-Adding NOP phi() at start of @end
-Adding NOP phi() at start of main
-CALL GRAPH
-Calls in [] to main:2
-
-Created 1 initial phi equivalence classes
-Coalesced [11] main::i#4 ← main::i#1
-Coalesced down to 1 phi equivalence classes
-Culled Empty Block (label) @2
-Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @1
-Adding NOP phi() at start of @end
-Adding NOP phi() at start of main
-
-FINAL CONTROL FLOW GRAPH
-@begin: scope:[] from
- [0] phi()
- to:@1
-@1: scope:[] from @begin
- [1] phi()
- [2] call main
- to:@end
-@end: scope:[] from @1
- [3] phi()
-main: scope:[main] from @1
- [4] phi()
- to:main::@1
-main::@1: scope:[main] from main main::@2
- [5] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 )
- [6] if((byte) main::i#2<(byte) $a) goto main::@2
- to:main::@return
-main::@return: scope:[main] from main::@1
- [7] return
- to:@return
-main::@2: scope:[main] from main::@1
- [8] *((const byte[$a]) TABLE#0 + (byte) main::i#2) ← (byte) main::i#2
- [9] (byte) main::i#1 ← ++ (byte) main::i#2
- to:main::@1
-
-
-VARIABLE REGISTER WEIGHTS
-(byte[$a]) TABLE
-(void()) main()
-(byte) main::i
-(byte) main::i#1 22.0
-(byte) main::i#2 18.333333333333332
-
-Initial phi equivalence classes
-[ main::i#2 main::i#1 ]
-Complete equivalence classes
-[ main::i#2 main::i#1 ]
-Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
-
-INITIAL ASM
-Target platform is c64basic_segments
- // File Comments
-// Tests the target platform C64BASIC_SEGMENTS
- // Upstart
-.file [ name="platform-c64basic_segments.prg",type="prg",segments="Program" ]
-.segmentdef Program [ segments="Basic,Code,Data" ]
-.segmentdef Basic [ start=$0801 ]
-.segmentdef Code [ start=$80d ]
-.segmentdef Data [ startAfter="Code" ]
-.segment Basic
-:BasicUpstart(bbegin)
-.segment Code
- // Global Constants & labels
- // @begin
-bbegin:
- // [1] phi from @begin to @1 [phi:@begin->@1]
-b1_from_bbegin:
- jmp b1
- // @1
-b1:
- // [2] call main
- // [4] phi from @1 to main [phi:@1->main]
-main_from_b1:
- jsr main
- // [3] phi from @1 to @end [phi:@1->@end]
-bend_from_b1:
- jmp bend
- // @end
-bend:
- // main
-main: {
- .label i = 2
- // [5] phi from main to main::@1 [phi:main->main::@1]
- b1_from_main:
- // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
- lda #0
- sta.z i
- jmp b1
- // main::@1
- b1:
- // [6] if((byte) main::i#2<(byte) $a) goto main::@2 -- vbuz1_lt_vbuc1_then_la1
- lda.z i
- cmp #$a
- bcc b2
- jmp breturn
- // main::@return
- breturn:
- // [7] return
- rts
- // main::@2
- b2:
- // [8] *((const byte[$a]) TABLE#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz1
- ldy.z i
- tya
- sta TABLE,y
- // [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
- inc.z i
- // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
- b1_from_b2:
- // [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy
- jmp b1
-}
- // File Data
-.segment Data
- TABLE: .fill $a, 0
-
-REGISTER UPLIFT POTENTIAL REGISTERS
-Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
-
-REGISTER UPLIFT SCOPES
-Uplift Scope [main] 40.33: zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
-Uplift Scope []
-
-Uplifting [main] best 263 combination reg byte x [ main::i#2 main::i#1 ]
-Uplifting [] best 263 combination
-
-ASSEMBLER BEFORE OPTIMIZATION
- // File Comments
-// Tests the target platform C64BASIC_SEGMENTS
- // Upstart
-.file [ name="platform-c64basic_segments.prg",type="prg",segments="Program" ]
-.segmentdef Program [ segments="Basic,Code,Data" ]
-.segmentdef Basic [ start=$0801 ]
-.segmentdef Code [ start=$80d ]
-.segmentdef Data [ startAfter="Code" ]
-.segment Basic
-:BasicUpstart(bbegin)
-.segment Code
- // Global Constants & labels
- // @begin
-bbegin:
- // [1] phi from @begin to @1 [phi:@begin->@1]
-b1_from_bbegin:
- jmp b1
- // @1
-b1:
- // [2] call main
- // [4] phi from @1 to main [phi:@1->main]
-main_from_b1:
- jsr main
- // [3] phi from @1 to @end [phi:@1->@end]
-bend_from_b1:
- jmp bend
- // @end
-bend:
- // main
-main: {
- // [5] phi from main to main::@1 [phi:main->main::@1]
- b1_from_main:
- // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
- ldx #0
- jmp b1
- // main::@1
- b1:
- // [6] if((byte) main::i#2<(byte) $a) goto main::@2 -- vbuxx_lt_vbuc1_then_la1
- cpx #$a
- bcc b2
- jmp breturn
- // main::@return
- breturn:
- // [7] return
- rts
- // main::@2
- b2:
- // [8] *((const byte[$a]) TABLE#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx
- txa
- sta TABLE,x
- // [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
- inx
- // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
- b1_from_b2:
- // [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy
- jmp b1
-}
- // File Data
-.segment Data
- TABLE: .fill $a, 0
-
-ASSEMBLER OPTIMIZATIONS
-Removing instruction jmp b1
-Removing instruction jmp bend
-Removing instruction jmp b1
-Removing instruction jmp breturn
-Succesful ASM optimization Pass5NextJumpElimination
-Removing instruction b1_from_bbegin:
-Removing instruction b1:
-Removing instruction main_from_b1:
-Removing instruction bend_from_b1:
-Succesful ASM optimization Pass5RedundantLabelElimination
-Removing instruction bend:
-Removing instruction b1_from_main:
-Removing instruction breturn:
-Removing instruction b1_from_b2:
-Succesful ASM optimization Pass5UnusedLabelElimination
-Updating BasicUpstart to call main directly
-Removing instruction jsr main
-Succesful ASM optimization Pass5SkipBegin
-Removing instruction bbegin:
-Succesful ASM optimization Pass5UnusedLabelElimination
-
-FINAL SYMBOL TABLE
-(label) @1
-(label) @begin
-(label) @end
-(byte[$a]) TABLE
-(const byte[$a]) TABLE#0 TABLE = { fill( $a, 0) }
-(void()) main()
-(label) main::@1
-(label) main::@2
-(label) main::@return
-(byte) main::i
-(byte) main::i#1 reg byte x 22.0
-(byte) main::i#2 reg byte x 18.333333333333332
-
-reg byte x [ main::i#2 main::i#1 ]
-
-
-FINAL ASSEMBLER
-Score: 191
-
- // File Comments
-// Tests the target platform C64BASIC_SEGMENTS
- // Upstart
-.file [ name="platform-c64basic_segments.prg",type="prg",segments="Program" ]
-.segmentdef Program [ segments="Basic,Code,Data" ]
-.segmentdef Basic [ start=$0801 ]
-.segmentdef Code [ start=$80d ]
-.segmentdef Data [ startAfter="Code" ]
-.segment Basic
-:BasicUpstart(main)
-.segment Code
- // Global Constants & labels
- // @begin
- // [1] phi from @begin to @1 [phi:@begin->@1]
- // @1
- // [2] call main
- // [4] phi from @1 to main [phi:@1->main]
- // [3] phi from @1 to @end [phi:@1->@end]
- // @end
- // main
-main: {
- // [5] phi from main to main::@1 [phi:main->main::@1]
- // [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
- ldx #0
- // main::@1
- b1:
- // for(char i=0;i<10;i++)
- // [6] if((byte) main::i#2<(byte) $a) goto main::@2 -- vbuxx_lt_vbuc1_then_la1
- cpx #$a
- bcc b2
- // main::@return
- // }
- // [7] return
- rts
- // main::@2
- b2:
- // TABLE[i] = i
- // [8] *((const byte[$a]) TABLE#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx
- txa
- sta TABLE,x
- // for(char i=0;i<10;i++)
- // [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
- inx
- // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
- // [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy
- jmp b1
-}
- // File Data
-.segment Data
- TABLE: .fill $a, 0
-
diff --git a/src/test/ref/platform-c64basic_segments.sym b/src/test/ref/platform-c64basic_segments.sym
deleted file mode 100644
index db2f574bf..000000000
--- a/src/test/ref/platform-c64basic_segments.sym
+++ /dev/null
@@ -1,14 +0,0 @@
-(label) @1
-(label) @begin
-(label) @end
-(byte[$a]) TABLE
-(const byte[$a]) TABLE#0 TABLE = { fill( $a, 0) }
-(void()) main()
-(label) main::@1
-(label) main::@2
-(label) main::@return
-(byte) main::i
-(byte) main::i#1 reg byte x 22.0
-(byte) main::i#2 reg byte x 18.333333333333332
-
-reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/plus-0.log b/src/test/ref/plus-0.log
index d16f1ee4a..693860182 100644
--- a/src/test/ref/plus-0.log
+++ b/src/test/ref/plus-0.log
@@ -345,7 +345,7 @@ Allocated zp ZP_WORD:6 [ fill::$5 ]
Allocated zp ZP_WORD:8 [ fill::$7 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests elimination of plus 0
// Upstart
diff --git a/src/test/ref/pointer-anding.log b/src/test/ref/pointer-anding.log
index 86c7294fd..da1c0c5b5 100644
--- a/src/test/ref/pointer-anding.log
+++ b/src/test/ref/pointer-anding.log
@@ -198,7 +198,7 @@ Allocated zp ZP_WORD:10 [ main::vram_ptr#1 ]
Allocated zp ZP_BYTE:12 [ main::$4 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test binary ANDing pointers by Clay Cowgill
// Upstart
diff --git a/src/test/ref/pointer-cast-2.log b/src/test/ref/pointer-cast-2.log
index fbc638bdb..7b7eda01a 100644
--- a/src/test/ref/pointer-cast-2.log
+++ b/src/test/ref/pointer-cast-2.log
@@ -160,7 +160,7 @@ Allocated zp ZP_BYTE:2 [ main::ub#0 ]
Allocated zp ZP_BYTE:3 [ main::sb#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests casting pointer types to other pointer types
// Upstart
diff --git a/src/test/ref/pointer-cast-3.log b/src/test/ref/pointer-cast-3.log
index ff75af669..caaf02b7e 100644
--- a/src/test/ref/pointer-cast-3.log
+++ b/src/test/ref/pointer-cast-3.log
@@ -83,7 +83,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests casting pointer types to other pointer types
// Upstart
diff --git a/src/test/ref/pointer-cast-4.log b/src/test/ref/pointer-cast-4.log
index 62a7ad636..9382d8705 100644
--- a/src/test/ref/pointer-cast-4.log
+++ b/src/test/ref/pointer-cast-4.log
@@ -152,7 +152,7 @@ Allocated zp ZP_WORD:3 [ main::$1 ]
Allocated zp ZP_BYTE:5 [ main::$3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests casting pointer types to other pointer types does not produce any ASM code
// Upstart
diff --git a/src/test/ref/pointer-cast.log b/src/test/ref/pointer-cast.log
index ba0421ccd..313374780 100644
--- a/src/test/ref/pointer-cast.log
+++ b/src/test/ref/pointer-cast.log
@@ -435,7 +435,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests casting pointer types to other pointer types
// Upstart
diff --git a/src/test/ref/pointer-plus-0.log b/src/test/ref/pointer-plus-0.log
index 912d37821..07fa8b6d1 100644
--- a/src/test/ref/pointer-plus-0.log
+++ b/src/test/ref/pointer-plus-0.log
@@ -229,7 +229,7 @@ Allocated zp ZP_WORD:8 [ first::return#1 ]
Allocated zp ZP_WORD:10 [ main::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests pointer plus 0 elimination
// Upstart
diff --git a/src/test/ref/pointer-plus-signed-word.log b/src/test/ref/pointer-plus-signed-word.log
index 0fc9dd797..23a4478b1 100644
--- a/src/test/ref/pointer-plus-signed-word.log
+++ b/src/test/ref/pointer-plus-signed-word.log
@@ -139,7 +139,7 @@ Allocated zp ZP_WORD:4 [ main::sc#0 ]
Allocated zp ZP_BYTE:6 [ main::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test adding a signed word to a pointer
// Fragment pbuz1=pbuc1_plus_vwsz1.asm supplied by Richard-William Loerakker
diff --git a/src/test/ref/pointer-pointer-1.log b/src/test/ref/pointer-pointer-1.log
index b9eff724b..f5ec54d71 100644
--- a/src/test/ref/pointer-pointer-1.log
+++ b/src/test/ref/pointer-pointer-1.log
@@ -109,7 +109,7 @@ Allocated zp ZP_BYTE:2 [ main::b#0 ]
Allocated zp ZP_WORD:3 [ main::pb#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests a simple pointer to a pointer
// Upstart
diff --git a/src/test/ref/pointer-pointer-2.log b/src/test/ref/pointer-pointer-2.log
index 07f98ea6f..36cbf7150 100644
--- a/src/test/ref/pointer-pointer-2.log
+++ b/src/test/ref/pointer-pointer-2.log
@@ -381,7 +381,7 @@ Allocated zp ZP_BYTE:7 [ main::i#5 main::i#1 ]
Allocated zp ZP_BYTE:8 [ nexttext::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests pointer to pointer in a more complex setup
// Upstart
diff --git a/src/test/ref/pointer-pointer-3.log b/src/test/ref/pointer-pointer-3.log
index 69806e8b2..d2320596c 100644
--- a/src/test/ref/pointer-pointer-3.log
+++ b/src/test/ref/pointer-pointer-3.log
@@ -197,7 +197,7 @@ Allocated zp ZP_WORD:2 [ setscreen::val#2 ]
Allocated zp ZP_WORD:4 [ screen#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests pointer to pointer in a more complex setup
// Upstart
diff --git a/src/test/ref/pointer-void-0.log b/src/test/ref/pointer-void-0.log
index 1890a4065..6e873abdd 100644
--- a/src/test/ref/pointer-void-0.log
+++ b/src/test/ref/pointer-void-0.log
@@ -116,7 +116,7 @@ Complete equivalence classes
Allocated zp ZP_WORD:2 [ main::w#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test simple void pointer (conversion without casting)
// Upstart
diff --git a/src/test/ref/pointer-void-1.log b/src/test/ref/pointer-void-1.log
index 14aeb7925..51d578f8d 100644
--- a/src/test/ref/pointer-void-1.log
+++ b/src/test/ref/pointer-void-1.log
@@ -301,7 +301,7 @@ Allocated zp ZP_WORD:9 [ main::w#0 ]
Allocated zp ZP_BYTE:11 [ main::b#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test simple void pointer - void pointer function
// Upstart
diff --git a/src/test/ref/pointer-void-2.log b/src/test/ref/pointer-void-2.log
index 09796b182..b89ae97ce 100644
--- a/src/test/ref/pointer-void-2.log
+++ b/src/test/ref/pointer-void-2.log
@@ -282,7 +282,7 @@ Allocated zp ZP_WORD:9 [ main::w#0 ]
Allocated zp ZP_BYTE:11 [ main::b#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test simple void pointer - void pointer function
// Upstart
diff --git a/src/test/ref/pointer-void-3.log b/src/test/ref/pointer-void-3.log
index 1613f1253..ac038dd04 100644
--- a/src/test/ref/pointer-void-3.log
+++ b/src/test/ref/pointer-void-3.log
@@ -250,7 +250,7 @@ Allocated zp ZP_WORD:10 [ main::buf2#0 ]
Allocated zp ZP_WORD:12 [ malloc::return#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test void pointer - issues when assigning returns from malloc()
// Upstart
diff --git a/src/test/ref/print-problem.log b/src/test/ref/print-problem.log
index 3b87ca12f..3a46edfb5 100644
--- a/src/test/ref/print-problem.log
+++ b/src/test/ref/print-problem.log
@@ -254,7 +254,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ line#12 line#13 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/printmsg.log b/src/test/ref/printmsg.log
index b19e1e8a4..f015497a1 100644
--- a/src/test/ref/printmsg.log
+++ b/src/test/ref/printmsg.log
@@ -496,7 +496,7 @@ Allocated zp ZP_WORD:4 [ print_str::str#4 print_str::str#6 print_str::str#0 ]
Allocated zp ZP_WORD:6 [ print_char_cursor#13 print_char_cursor#29 print_char_cursor#31 print_char_cursor#32 print_char_cursor#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/problem-negative-word-const.log b/src/test/ref/problem-negative-word-const.log
index 10825cdc9..f34332c0c 100644
--- a/src/test/ref/problem-negative-word-const.log
+++ b/src/test/ref/problem-negative-word-const.log
@@ -204,7 +204,7 @@ Allocated zp ZP_BYTE:5 [ main::$0 ]
Allocated zp ZP_BYTE:6 [ main::$3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Problem with assigning negative word constant (vwuz1=vbuc1)
// Upstart
diff --git a/src/test/ref/processor-port-test.log b/src/test/ref/processor-port-test.log
index e8657d9ef..e76396a4f 100644
--- a/src/test/ref/processor-port-test.log
+++ b/src/test/ref/processor-port-test.log
@@ -2530,7 +2530,7 @@ Allocated zp ZP_BYTE:15 [ print_byte::$0 ]
Allocated zp ZP_BYTE:16 [ print_byte::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test the functionality of the C64 processor port ($00/$01)
// Tests by setting the value of the processor port - and then printing out values of $00/$01/$a000/$d000/$e000
diff --git a/src/test/ref/ptr-complex.log b/src/test/ref/ptr-complex.log
index a95b26589..aa02f9327 100644
--- a/src/test/ref/ptr-complex.log
+++ b/src/test/ref/ptr-complex.log
@@ -277,7 +277,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::j#2 main::j#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test some complex pointers
// Upstart
diff --git a/src/test/ref/ptrptr-optimize-0.log b/src/test/ref/ptrptr-optimize-0.log
index c211c8189..2923ece18 100644
--- a/src/test/ref/ptrptr-optimize-0.log
+++ b/src/test/ref/ptrptr-optimize-0.log
@@ -91,7 +91,7 @@ Complete equivalence classes
Allocated zp ZP_WORD:2 [ main::screen#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests optimization of constant pointers to pointers
// Upstart
diff --git a/src/test/ref/ptrptr-optimize-1.log b/src/test/ref/ptrptr-optimize-1.log
index 741a46358..4233f0194 100644
--- a/src/test/ref/ptrptr-optimize-1.log
+++ b/src/test/ref/ptrptr-optimize-1.log
@@ -161,7 +161,7 @@ Allocated zp ZP_BYTE:2 [ sub::ch#2 ]
Allocated zp ZP_WORD:3 [ main::screen#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests optimization of constant pointers to pointers
// Upstart
diff --git a/src/test/ref/ptrptr-optimize-2.log b/src/test/ref/ptrptr-optimize-2.log
index 58be39969..e5a02c01a 100644
--- a/src/test/ref/ptrptr-optimize-2.log
+++ b/src/test/ref/ptrptr-optimize-2.log
@@ -161,7 +161,7 @@ Allocated zp ZP_BYTE:2 [ sub::ch#2 ]
Allocated zp ZP_WORD:3 [ main::screen#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests (non-)optimization of constant pointers to pointers
// The two examples of &screen is not detected as identical leading to ASM that could be optimized more
diff --git a/src/test/ref/ptrtest.log b/src/test/ref/ptrtest.log
index 7c42aa6f5..3fc7a6189 100644
--- a/src/test/ref/ptrtest.log
+++ b/src/test/ref/ptrtest.log
@@ -541,7 +541,7 @@ Allocated zp ZP_BYTE:10 [ rvalue::b#3 rvalue::b#1 rvalue::b#2 ]
Allocated zp ZP_BYTE:11 [ lvalue::i#2 lvalue::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test all types of pointers
// Upstart
diff --git a/src/test/ref/ptrtestmin.log b/src/test/ref/ptrtestmin.log
index 88cef3a17..7532dfbd3 100644
--- a/src/test/ref/ptrtestmin.log
+++ b/src/test/ref/ptrtestmin.log
@@ -164,7 +164,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::b#2 main::b#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test all types of pointers
// Upstart
diff --git a/src/test/ref/reserve-zp-global.log b/src/test/ref/reserve-zp-global.log
index 038639d0d..104eaa8d6 100644
--- a/src/test/ref/reserve-zp-global.log
+++ b/src/test/ref/reserve-zp-global.log
@@ -188,7 +188,7 @@ Allocated zp ZP_BYTE:8 [ main::$0 ]
Allocated zp ZP_BYTE:9 [ sub1::return#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates global directive reserving addresses on zeropage
// Upstart
diff --git a/src/test/ref/reserve-zp-procedure-1.log b/src/test/ref/reserve-zp-procedure-1.log
index 38ce22b61..69a6e30d7 100644
--- a/src/test/ref/reserve-zp-procedure-1.log
+++ b/src/test/ref/reserve-zp-procedure-1.log
@@ -188,7 +188,7 @@ Allocated zp ZP_BYTE:8 [ main::$0 ]
Allocated zp ZP_BYTE:9 [ sub1::return#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates a procedure reserving addresses on zeropage
// Upstart
diff --git a/src/test/ref/reserve-zp-procedure-2.log b/src/test/ref/reserve-zp-procedure-2.log
index a9c9805ae..ffd5cf243 100644
--- a/src/test/ref/reserve-zp-procedure-2.log
+++ b/src/test/ref/reserve-zp-procedure-2.log
@@ -280,7 +280,7 @@ Allocated zp ZP_BYTE:16 [ sub2::return#1 ]
Allocated zp ZP_BYTE:17 [ sub1::return#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates a procedure reserving addresses on zeropage
// Upstart
diff --git a/src/test/ref/reserve-zp-procedure-3.log b/src/test/ref/reserve-zp-procedure-3.log
index 4226f0d6b..ca961d117 100644
--- a/src/test/ref/reserve-zp-procedure-3.log
+++ b/src/test/ref/reserve-zp-procedure-3.log
@@ -189,7 +189,7 @@ Allocated zp ZP_BYTE:8 [ main::$0 ]
Allocated zp ZP_BYTE:9 [ sub1::return#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates a procedure reserving addresses on zeropage
// Upstart
diff --git a/src/test/ref/robozzle64-label-problem.log b/src/test/ref/robozzle64-label-problem.log
index 30b243473..bd9e62621 100644
--- a/src/test/ref/robozzle64-label-problem.log
+++ b/src/test/ref/robozzle64-label-problem.log
@@ -446,7 +446,7 @@ Allocated zp ZP_WORD:16 [ main::z2#0 ]
Allocated zp ZP_BYTE:18 [ mul8u::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/roll-sprite-msb.log b/src/test/ref/roll-sprite-msb.log
index 3cf94ce76..690deac0a 100644
--- a/src/test/ref/roll-sprite-msb.log
+++ b/src/test/ref/roll-sprite-msb.log
@@ -332,7 +332,7 @@ Allocated zp ZP_BYTE:11 [ position_sprite::$5 ]
Allocated zp ZP_BYTE:12 [ position_sprite::$6 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests rolling sprite MSB by variable amount
// Upstart
diff --git a/src/test/ref/roll-variable.log b/src/test/ref/roll-variable.log
index d605185ba..6afb90f93 100644
--- a/src/test/ref/roll-variable.log
+++ b/src/test/ref/roll-variable.log
@@ -132,7 +132,7 @@ Allocated zp ZP_BYTE:2 [ main::b#2 main::b#1 ]
Allocated zp ZP_BYTE:3 [ main::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Rolling constants by a variable amount
// Upstart
diff --git a/src/test/ref/runtime-unused-procedure.log b/src/test/ref/runtime-unused-procedure.log
index 44714335f..9d35e161c 100644
--- a/src/test/ref/runtime-unused-procedure.log
+++ b/src/test/ref/runtime-unused-procedure.log
@@ -155,7 +155,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that a procedure that is never called, but requires static analysis is correctly eliminated
// Upstart
diff --git a/src/test/ref/sandbox-ternary-error.log b/src/test/ref/sandbox-ternary-error.log
index 8a4e1cbd7..992b909b1 100644
--- a/src/test/ref/sandbox-ternary-error.log
+++ b/src/test/ref/sandbox-ternary-error.log
@@ -221,7 +221,7 @@ Allocated zp ZP_BYTE:2 [ main::b#2 main::b#1 ]
Allocated zp ZP_BYTE:3 [ main::$7 main::$5 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates error with nested ternary operator
// Upstart
diff --git a/src/test/ref/sandbox.log b/src/test/ref/sandbox.log
index bc1942f09..2c92b2e23 100644
--- a/src/test/ref/sandbox.log
+++ b/src/test/ref/sandbox.log
@@ -4426,7 +4426,7 @@ Allocated zp ZP_WORD:109 [ div10::val#3 ]
Allocated zp ZP_WORD:111 [ div10::return#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/scan-desire-problem.log b/src/test/ref/scan-desire-problem.log
index 15847fe5e..d2b0d4938 100644
--- a/src/test/ref/scan-desire-problem.log
+++ b/src/test/ref/scan-desire-problem.log
@@ -1391,7 +1391,7 @@ Allocated zp ZP_BYTE:46 [ mul8u::$1 ]
Allocated zp ZP_WORD:47 [ memset::end#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates a problem with a missing fragment - pbuc1_derefidx_vwuz1=vbuz2
// Upstart
diff --git a/src/test/ref/screen-center-angle.log b/src/test/ref/screen-center-angle.log
index 0b329456b..8f4a44d3d 100644
--- a/src/test/ref/screen-center-angle.log
+++ b/src/test/ref/screen-center-angle.log
@@ -2736,7 +2736,7 @@ Allocated zp ZP_BYTE:90 [ init_font_hex::$2 ]
Allocated zp ZP_BYTE:91 [ init_font_hex::idx#3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Calculate the angle to the center of the screen - and show it using font-hex
// 4.65 million cycles
diff --git a/src/test/ref/screen-center-distance.log b/src/test/ref/screen-center-distance.log
index a1f2b3438..3c001ba85 100644
--- a/src/test/ref/screen-center-distance.log
+++ b/src/test/ref/screen-center-distance.log
@@ -3230,7 +3230,7 @@ Allocated zp ZP_BYTE:104 [ init_font_hex::$2 ]
Allocated zp ZP_BYTE:105 [ init_font_hex::idx#3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Calculate the distance to the center of the screen - and show it using font-hex
// Upstart
diff --git a/src/test/ref/screen-show-spiral-buckets.log b/src/test/ref/screen-show-spiral-buckets.log
index 9f10bd2b0..656f16ae7 100644
--- a/src/test/ref/screen-show-spiral-buckets.log
+++ b/src/test/ref/screen-show-spiral-buckets.log
@@ -4485,7 +4485,7 @@ Allocated zp ZP_BYTE:172 [ init_squares::$3 ]
Allocated zp ZP_BYTE:173 [ init_squares::$4 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Fill screen using a spiral based on distance-to-center / angle-to-center
// Utilizes a bucket sort for identifying the minimum angle/distance
diff --git a/src/test/ref/screen-show-spiral.log b/src/test/ref/screen-show-spiral.log
index 79c809e4b..87656d77b 100644
--- a/src/test/ref/screen-show-spiral.log
+++ b/src/test/ref/screen-show-spiral.log
@@ -3518,7 +3518,7 @@ Allocated zp ZP_BYTE:125 [ init_squares::$4 ]
Allocated zp ZP_WORD:126 [ malloc::mem#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Fill screen using a spiral based on distance-to-center / angle-to-center
// Upstart
diff --git a/src/test/ref/scroll-clobber.log b/src/test/ref/scroll-clobber.log
index 038315d6c..ddee6f9ad 100644
--- a/src/test/ref/scroll-clobber.log
+++ b/src/test/ref/scroll-clobber.log
@@ -200,7 +200,7 @@ Allocated zp ZP_BYTE:3 [ main::c#2 main::c#0 main::c#1 ]
Allocated zp ZP_WORD:4 [ main::nxt#4 main::nxt#3 main::nxt#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/scrollbig-clobber.log b/src/test/ref/scrollbig-clobber.log
index aae67084e..9ca9bcb37 100644
--- a/src/test/ref/scrollbig-clobber.log
+++ b/src/test/ref/scrollbig-clobber.log
@@ -288,7 +288,7 @@ Allocated zp ZP_BYTE:6 [ next_char::return#0 ]
Allocated zp ZP_BYTE:7 [ main::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Clobber problem in next_char return value
// Upstart
diff --git a/src/test/ref/semi-struct-1.log b/src/test/ref/semi-struct-1.log
index 7ca4d3900..363e1e671 100644
--- a/src/test/ref/semi-struct-1.log
+++ b/src/test/ref/semi-struct-1.log
@@ -1574,7 +1574,7 @@ Allocated zp ZP_WORD:21 [ init_points::getPoint1_return#0 ]
Allocated zp ZP_BYTE:23 [ init_points::pos#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Implementing a semi-struct without the struct keyword by using pointer math and inline functions
//
diff --git a/src/test/ref/semi-struct-2.log b/src/test/ref/semi-struct-2.log
index df5e7cd4f..170b82da7 100644
--- a/src/test/ref/semi-struct-2.log
+++ b/src/test/ref/semi-struct-2.log
@@ -5272,7 +5272,7 @@ Allocated zp ZP_BYTE:65 [ initEntry::$25 ]
Allocated zp ZP_BYTE:66 [ mul8u::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Implementing a semi-struct without the struct keyword by using pointer math and inline functions
//
diff --git a/src/test/ref/sequence-locality-0.log b/src/test/ref/sequence-locality-0.log
index ae92afe70..14a96cf8a 100644
--- a/src/test/ref/sequence-locality-0.log
+++ b/src/test/ref/sequence-locality-0.log
@@ -211,7 +211,7 @@ Allocated zp ZP_BYTE:3 [ main::idx#3 main::idx#6 main::idx#1 main::idx#2 ]
Allocated zp ZP_BYTE:4 [ main::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests statement sequence locality of if(cond) { stmt1; } else { stmt2; }
// Upstart
diff --git a/src/test/ref/sequence-locality-1.log b/src/test/ref/sequence-locality-1.log
index 87c267cf6..fafe2a843 100644
--- a/src/test/ref/sequence-locality-1.log
+++ b/src/test/ref/sequence-locality-1.log
@@ -209,7 +209,7 @@ Allocated zp ZP_BYTE:3 [ main::idx#2 main::idx#1 ]
Allocated zp ZP_BYTE:4 [ main::j#2 main::j#4 main::j#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests statement sequence locality of if(cond) { stmt1; } else { stmt2; }
// Upstart
diff --git a/src/test/ref/sieve-min.log b/src/test/ref/sieve-min.log
index e4f761943..42a2b2134 100644
--- a/src/test/ref/sieve-min.log
+++ b/src/test/ref/sieve-min.log
@@ -1045,7 +1045,7 @@ Allocated zp ZP_BYTE:22 [ print_byte::$0 ]
Allocated zp ZP_BYTE:23 [ print_byte::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/sieve.log b/src/test/ref/sieve.log
index 68d21ba53..8cc0b47ce 100644
--- a/src/test/ref/sieve.log
+++ b/src/test/ref/sieve.log
@@ -4260,7 +4260,7 @@ Allocated zp ZP_DWORD:134 [ clock::return#0 ]
Allocated zp ZP_WORD:138 [ memset::end#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/signed-bytes.log b/src/test/ref/signed-bytes.log
index 940db7768..17a05d950 100644
--- a/src/test/ref/signed-bytes.log
+++ b/src/test/ref/signed-bytes.log
@@ -160,7 +160,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::j#2 main::j#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/signed-indexed-subtract.log b/src/test/ref/signed-indexed-subtract.log
index 88aecd281..68097b888 100644
--- a/src/test/ref/signed-indexed-subtract.log
+++ b/src/test/ref/signed-indexed-subtract.log
@@ -1209,7 +1209,7 @@ Allocated zp ZP_BYTE:20 [ print_byte::$2 ]
Allocated zp ZP_BYTE:21 [ sub::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that signed indexed subtract works as intended
// Upstart
diff --git a/src/test/ref/signed-word-minus-byte-2.log b/src/test/ref/signed-word-minus-byte-2.log
index 772fab414..ff29b71b0 100644
--- a/src/test/ref/signed-word-minus-byte-2.log
+++ b/src/test/ref/signed-word-minus-byte-2.log
@@ -165,7 +165,7 @@ Allocated zp ZP_BYTE:4 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:5 [ main::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests subtracting bytes from signed words
// Upstart
diff --git a/src/test/ref/signed-words.log b/src/test/ref/signed-words.log
index 910312bec..cd2e3b48b 100644
--- a/src/test/ref/signed-words.log
+++ b/src/test/ref/signed-words.log
@@ -970,7 +970,7 @@ Allocated zp ZP_BYTE:24 [ anim::$10 ]
Allocated zp ZP_BYTE:25 [ anim::$11 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/simple-loop.log b/src/test/ref/simple-loop.log
index 11d4c7215..4b9fec424 100644
--- a/src/test/ref/simple-loop.log
+++ b/src/test/ref/simple-loop.log
@@ -143,7 +143,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/sinus-basic.log b/src/test/ref/sinus-basic.log
index ff9aaff11..1f1d7d945 100644
--- a/src/test/ref/sinus-basic.log
+++ b/src/test/ref/sinus-basic.log
@@ -1333,7 +1333,7 @@ Allocated zp ZP_BYTE:27 [ setMEMtoFAC::prepareMEM1_$0#0 ]
Allocated zp ZP_BYTE:28 [ setMEMtoFAC::prepareMEM1_$1#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/sinusgen16.log b/src/test/ref/sinusgen16.log
index 8f182ade3..08b4a87f9 100644
--- a/src/test/ref/sinusgen16.log
+++ b/src/test/ref/sinusgen16.log
@@ -2805,7 +2805,7 @@ Allocated zp ZP_BYTE:131 [ divr16u::$2 ]
Allocated zp ZP_WORD:132 [ rem16u#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Generates a 16-bit signed sinus
// Upstart
diff --git a/src/test/ref/sinusgen16b.log b/src/test/ref/sinusgen16b.log
index 47d6ba003..02fd0965e 100644
--- a/src/test/ref/sinusgen16b.log
+++ b/src/test/ref/sinusgen16b.log
@@ -3677,7 +3677,7 @@ Allocated zp ZP_WORD:186 [ sin16s::x5_128#0 ]
Allocated zp ZP_WORD:188 [ sin16s::usinx#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Generates a 16-bit signed sinus
// Upstart
diff --git a/src/test/ref/sinusgen8.log b/src/test/ref/sinusgen8.log
index 73c3279a0..23a063e0a 100644
--- a/src/test/ref/sinusgen8.log
+++ b/src/test/ref/sinusgen8.log
@@ -2761,7 +2761,7 @@ Allocated zp ZP_BYTE:75 [ divr16u::$1 ]
Allocated zp ZP_BYTE:76 [ divr16u::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/sinusgen8b.log b/src/test/ref/sinusgen8b.log
index 746d746b7..b2c451f23 100644
--- a/src/test/ref/sinusgen8b.log
+++ b/src/test/ref/sinusgen8b.log
@@ -3945,7 +3945,7 @@ Allocated zp ZP_WORD:188 [ divr16u::return#2 ]
Allocated zp ZP_WORD:190 [ div16u::return#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/sinusgenscale8.log b/src/test/ref/sinusgenscale8.log
index 3c00f81e5..fce2fafc9 100644
--- a/src/test/ref/sinusgenscale8.log
+++ b/src/test/ref/sinusgenscale8.log
@@ -3817,7 +3817,7 @@ Allocated zp ZP_BYTE:90 [ divr16u::$1 ]
Allocated zp ZP_BYTE:91 [ divr16u::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/sizeof-arrays.log b/src/test/ref/sizeof-arrays.log
index 33dad4cbc..eb9514b66 100644
--- a/src/test/ref/sizeof-arrays.log
+++ b/src/test/ref/sizeof-arrays.log
@@ -354,7 +354,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests the sizeof() operator on arrays
// Upstart
diff --git a/src/test/ref/sizeof-expr.log b/src/test/ref/sizeof-expr.log
index d64990fbe..c9f0b4b99 100644
--- a/src/test/ref/sizeof-expr.log
+++ b/src/test/ref/sizeof-expr.log
@@ -318,7 +318,7 @@ Allocated zp ZP_BYTE:2 [ main::b#0 ]
Allocated zp ZP_WORD:3 [ main::w#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests the sizeof() operator on values/expressions
// Upstart
diff --git a/src/test/ref/sizeof-struct.log b/src/test/ref/sizeof-struct.log
index dbdae7ad3..9c3eee8cf 100644
--- a/src/test/ref/sizeof-struct.log
+++ b/src/test/ref/sizeof-struct.log
@@ -350,7 +350,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests the sizeof() operator on structs
// Upstart
diff --git a/src/test/ref/sizeof-types.log b/src/test/ref/sizeof-types.log
index 5e8eda89e..5b75012a0 100644
--- a/src/test/ref/sizeof-types.log
+++ b/src/test/ref/sizeof-types.log
@@ -402,7 +402,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests the sizeof() operator on types
// Upstart
diff --git a/src/test/ref/statement-sequence-1.log b/src/test/ref/statement-sequence-1.log
index 856d955b0..0f1ad021b 100644
--- a/src/test/ref/statement-sequence-1.log
+++ b/src/test/ref/statement-sequence-1.log
@@ -217,7 +217,7 @@ Allocated zp ZP_BYTE:3 [ main::c#2 main::c#0 main::c#1 ]
Allocated zp ZP_BYTE:4 [ main::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests statement sequence generation
// Upstart
diff --git a/src/test/ref/string-const-consolidation-noroot.log b/src/test/ref/string-const-consolidation-noroot.log
index 9b160c4b3..8546d8716 100644
--- a/src/test/ref/string-const-consolidation-noroot.log
+++ b/src/test/ref/string-const-consolidation-noroot.log
@@ -264,7 +264,7 @@ Allocated zp ZP_WORD:2 [ screen#18 screen#12 screen#5 ]
Allocated zp ZP_WORD:4 [ print::string#4 print::string#3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that identical strings are consolidated
// Upstart
diff --git a/src/test/ref/string-const-consolidation.log b/src/test/ref/string-const-consolidation.log
index 030922cb0..064da5add 100644
--- a/src/test/ref/string-const-consolidation.log
+++ b/src/test/ref/string-const-consolidation.log
@@ -264,7 +264,7 @@ Allocated zp ZP_WORD:2 [ screen#18 screen#12 screen#5 ]
Allocated zp ZP_WORD:4 [ print::string#4 print::string#3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that identical strings are consolidated
// Upstart
diff --git a/src/test/ref/string-encoding-literals.log b/src/test/ref/string-encoding-literals.log
index f17a7c316..09413e0a5 100644
--- a/src/test/ref/string-encoding-literals.log
+++ b/src/test/ref/string-encoding-literals.log
@@ -227,7 +227,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test string encoding via literals
// Upstart
diff --git a/src/test/ref/string-encoding-pragma.log b/src/test/ref/string-encoding-pragma.log
index f652702ec..243c098b0 100644
--- a/src/test/ref/string-encoding-pragma.log
+++ b/src/test/ref/string-encoding-pragma.log
@@ -212,7 +212,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test string encoding via literals
// Upstart
diff --git a/src/test/ref/string-escapes-0.log b/src/test/ref/string-escapes-0.log
index 8962e57c2..f47e4d138 100644
--- a/src/test/ref/string-escapes-0.log
+++ b/src/test/ref/string-escapes-0.log
@@ -138,7 +138,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test using some simple supported string escapes \r \f \n \' \"
// Upstart
diff --git a/src/test/ref/string-escapes-1.log b/src/test/ref/string-escapes-1.log
index 6e74f3c3e..0171f76f7 100644
--- a/src/test/ref/string-escapes-1.log
+++ b/src/test/ref/string-escapes-1.log
@@ -231,7 +231,7 @@ Allocated zp ZP_WORD:4 [ main::line#2 main::line#5 main::line#8 ]
Allocated zp ZP_WORD:6 [ main::cursor#3 main::cursor#6 main::cursor#1 main::cursor#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test using some simple supported string escape \n in both string and char
// Upstart
diff --git a/src/test/ref/string-escapes-2.log b/src/test/ref/string-escapes-2.log
index 333c3700d..6bd37f739 100644
--- a/src/test/ref/string-escapes-2.log
+++ b/src/test/ref/string-escapes-2.log
@@ -178,7 +178,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ chrout::c#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test using some simple supported string escape characters in PETSCII
// Upstart
diff --git a/src/test/ref/string-escapes-3.log b/src/test/ref/string-escapes-3.log
index 1be4c17e7..401c84eed 100644
--- a/src/test/ref/string-escapes-3.log
+++ b/src/test/ref/string-escapes-3.log
@@ -243,7 +243,7 @@ Allocated zp ZP_WORD:6 [ main::cursor#3 main::cursor#6 main::cursor#1 main::curs
Allocated zp ZP_BYTE:8 [ main::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test using some simple supported string escape \n in both string and char
// Uses encoding PETSCII mixed
diff --git a/src/test/ref/strip.log b/src/test/ref/strip.log
index 35a507cd5..769309f6c 100644
--- a/src/test/ref/strip.log
+++ b/src/test/ref/strip.log
@@ -408,7 +408,7 @@ Allocated zp ZP_WORD:9 [ strip::dest#2 strip::dest#0 strip::dest#4 strip::dest#1
Allocated zp ZP_WORD:11 [ strip::p#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests of strip() function from https://news.ycombinator.com/item?id=12080871
// Upstart
diff --git a/src/test/ref/struct-0.log b/src/test/ref/struct-0.log
index 23d4719de..b201e8779 100644
--- a/src/test/ref/struct-0.log
+++ b/src/test/ref/struct-0.log
@@ -156,7 +156,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - declaration, instantiation and usage
// Upstart
diff --git a/src/test/ref/struct-1.log b/src/test/ref/struct-1.log
index eabca9a60..8b1fc17ae 100644
--- a/src/test/ref/struct-1.log
+++ b/src/test/ref/struct-1.log
@@ -207,7 +207,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - two instances being used.
// Upstart
diff --git a/src/test/ref/struct-10.log b/src/test/ref/struct-10.log
index 4412875e0..c71fceb8d 100644
--- a/src/test/ref/struct-10.log
+++ b/src/test/ref/struct-10.log
@@ -148,7 +148,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates a problem with pointer sizeof()-rewriting for pointers inside structs
// Upstart
diff --git a/src/test/ref/struct-11.log b/src/test/ref/struct-11.log
index eda8748a6..767142e58 100644
--- a/src/test/ref/struct-11.log
+++ b/src/test/ref/struct-11.log
@@ -1508,7 +1508,7 @@ Allocated zp ZP_DWORD:41 [ ultoa_append::sub#0 ]
Allocated zp ZP_DWORD:45 [ ultoa_append::return#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Example of a struct containing an array
// Upstart
diff --git a/src/test/ref/struct-2.log b/src/test/ref/struct-2.log
index 3786f1018..965c4f753 100644
--- a/src/test/ref/struct-2.log
+++ b/src/test/ref/struct-2.log
@@ -228,7 +228,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - two instances being copied (using assignment)
// Upstart
diff --git a/src/test/ref/struct-3.log b/src/test/ref/struct-3.log
index 06777111c..19d52394f 100644
--- a/src/test/ref/struct-3.log
+++ b/src/test/ref/struct-3.log
@@ -280,7 +280,7 @@ Allocated zp ZP_BYTE:3 [ idx#11 idx#12 ]
Allocated zp ZP_BYTE:4 [ idx#4 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - passing struct value parameter
// Upstart
diff --git a/src/test/ref/struct-4.log b/src/test/ref/struct-4.log
index cff3b9a13..6153cb116 100644
--- a/src/test/ref/struct-4.log
+++ b/src/test/ref/struct-4.log
@@ -139,7 +139,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - initializing using a value list
// Upstart
diff --git a/src/test/ref/struct-5.log b/src/test/ref/struct-5.log
index 2ba91e8d8..e07de9fdb 100644
--- a/src/test/ref/struct-5.log
+++ b/src/test/ref/struct-5.log
@@ -243,7 +243,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - struct return value
// Upstart
diff --git a/src/test/ref/struct-6.log b/src/test/ref/struct-6.log
index 443f30af6..88c1959c8 100644
--- a/src/test/ref/struct-6.log
+++ b/src/test/ref/struct-6.log
@@ -161,7 +161,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - nesting structs
// Upstart
diff --git a/src/test/ref/struct-7.log b/src/test/ref/struct-7.log
index 3ed436201..b4d97cf15 100644
--- a/src/test/ref/struct-7.log
+++ b/src/test/ref/struct-7.log
@@ -223,7 +223,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - nesting structs 3 levels
// Upstart
diff --git a/src/test/ref/struct-8.log b/src/test/ref/struct-8.log
index d7fd95dc3..6fd9fc829 100644
--- a/src/test/ref/struct-8.log
+++ b/src/test/ref/struct-8.log
@@ -173,7 +173,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - nested struct where a sub-struct is assigned out
// Upstart
diff --git a/src/test/ref/struct-9.log b/src/test/ref/struct-9.log
index 33dd5caac..95b99bb4b 100644
--- a/src/test/ref/struct-9.log
+++ b/src/test/ref/struct-9.log
@@ -177,7 +177,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - nesting structs
// Upstart
diff --git a/src/test/ref/struct-pos-fill.log b/src/test/ref/struct-pos-fill.log
index 91e645149..d4a9608ba 100644
--- a/src/test/ref/struct-pos-fill.log
+++ b/src/test/ref/struct-pos-fill.log
@@ -453,7 +453,7 @@ Allocated zp ZP_BYTE:6 [ row#12 row#2 ]
Allocated zp ZP_BYTE:7 [ main::$3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Example of structs that can be optimized by going planar
// https://cc65.github.io/mailarchive/2010-09/8593.html?fbclid=IwAR1IF_cTdyWcFeKU93VfL2Un1EuLjkGh7O7dQ4EVj4kpJzJAj01dbmEFQt8
diff --git a/src/test/ref/struct-ptr-0.log b/src/test/ref/struct-ptr-0.log
index 042981484..f80431b48 100644
--- a/src/test/ref/struct-ptr-0.log
+++ b/src/test/ref/struct-ptr-0.log
@@ -268,7 +268,7 @@ Allocated zp ZP_BYTE:5 [ main::$0 ]
Allocated zp ZP_BYTE:6 [ main::$7 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - array of struct
// Upstart
diff --git a/src/test/ref/struct-ptr-1.log b/src/test/ref/struct-ptr-1.log
index 25594b975..588ebb91c 100644
--- a/src/test/ref/struct-ptr-1.log
+++ b/src/test/ref/struct-ptr-1.log
@@ -321,7 +321,7 @@ Allocated zp ZP_BYTE:5 [ main::$8 ]
Allocated zp ZP_BYTE:6 [ main::$17 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - array of struct - near pointer math indexing
// Upstart
diff --git a/src/test/ref/struct-ptr-10.log b/src/test/ref/struct-ptr-10.log
index 413495324..e426744cb 100644
--- a/src/test/ref/struct-ptr-10.log
+++ b/src/test/ref/struct-ptr-10.log
@@ -298,7 +298,7 @@ Allocated zp ZP_WORD:19 [ main::$15 ]
Allocated zp ZP_WORD:21 [ main::$16 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - array with 256+ structs
// Upstart
diff --git a/src/test/ref/struct-ptr-11.log b/src/test/ref/struct-ptr-11.log
index 1d53cd290..bb1f8be42 100644
--- a/src/test/ref/struct-ptr-11.log
+++ b/src/test/ref/struct-ptr-11.log
@@ -306,7 +306,7 @@ Allocated zp ZP_BYTE:7 [ main::$19 ]
Allocated zp ZP_BYTE:8 [ main::$7 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - array of 3-byte structs (required *3)
// Upstart
diff --git a/src/test/ref/struct-ptr-12-ref.log b/src/test/ref/struct-ptr-12-ref.log
index 11dd4e328..8794ab609 100644
--- a/src/test/ref/struct-ptr-12-ref.log
+++ b/src/test/ref/struct-ptr-12-ref.log
@@ -144,7 +144,7 @@ Allocated zp ZP_BYTE:4 [ main::$1 ]
Allocated zp ZP_BYTE:5 [ main::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Reference file for Minimal struct - using address-of
// Upstart
diff --git a/src/test/ref/struct-ptr-12.log b/src/test/ref/struct-ptr-12.log
index fcc121ee6..ed90cb364 100644
--- a/src/test/ref/struct-ptr-12.log
+++ b/src/test/ref/struct-ptr-12.log
@@ -160,7 +160,7 @@ Allocated zp ZP_BYTE:2 [ main::p_x#0 ]
Allocated zp ZP_BYTE:3 [ main::p_y#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - using address-of
// Upstart
diff --git a/src/test/ref/struct-ptr-13.log b/src/test/ref/struct-ptr-13.log
index 7825653bf..9a2c8482d 100644
--- a/src/test/ref/struct-ptr-13.log
+++ b/src/test/ref/struct-ptr-13.log
@@ -159,7 +159,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - modifying pointer to struct in memory using arrow operator
// Upstart
diff --git a/src/test/ref/struct-ptr-14.log b/src/test/ref/struct-ptr-14.log
index cdcb92ae9..c31aa615d 100644
--- a/src/test/ref/struct-ptr-14.log
+++ b/src/test/ref/struct-ptr-14.log
@@ -224,7 +224,7 @@ Allocated zp ZP_BYTE:2 [ main::p_x#0 ]
Allocated zp ZP_BYTE:3 [ main::p_y#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - using address-of and passing it to a function
// Upstart
diff --git a/src/test/ref/struct-ptr-15.log b/src/test/ref/struct-ptr-15.log
index 3b7abedf3..cc4dda6f9 100644
--- a/src/test/ref/struct-ptr-15.log
+++ b/src/test/ref/struct-ptr-15.log
@@ -428,7 +428,7 @@ Allocated zp ZP_BYTE:9 [ main::y#0 ]
Allocated zp ZP_BYTE:10 [ main::idx#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - using pointers to nested structs
// Upstart
diff --git a/src/test/ref/struct-ptr-16.log b/src/test/ref/struct-ptr-16.log
index 9e073056b..8f3ffb74c 100644
--- a/src/test/ref/struct-ptr-16.log
+++ b/src/test/ref/struct-ptr-16.log
@@ -524,7 +524,7 @@ Allocated zp ZP_BYTE:13 [ main::$1_y ]
Allocated zp ZP_BYTE:14 [ main::$3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates problem with returning a dereferenced pointer to a struct
// Upstart
diff --git a/src/test/ref/struct-ptr-17.log b/src/test/ref/struct-ptr-17.log
index c529e2ccf..b56317b55 100644
--- a/src/test/ref/struct-ptr-17.log
+++ b/src/test/ref/struct-ptr-17.log
@@ -371,7 +371,7 @@ Allocated zp ZP_BYTE:7 [ main::$1_x ]
Allocated zp ZP_BYTE:8 [ main::$3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates problem with returning a struct into a dereferenced pointer to a struct
// Upstart
diff --git a/src/test/ref/struct-ptr-18.log b/src/test/ref/struct-ptr-18.log
index eb5c92caa..42dc4d078 100644
--- a/src/test/ref/struct-ptr-18.log
+++ b/src/test/ref/struct-ptr-18.log
@@ -363,7 +363,7 @@ Allocated zp ZP_BYTE:6 [ print::p_y#0 ]
Allocated zp ZP_BYTE:7 [ idx#3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates problem with passing struct array element as parameter to call
// Upstart
diff --git a/src/test/ref/struct-ptr-19.log b/src/test/ref/struct-ptr-19.log
index 216bd3b04..24498848d 100644
--- a/src/test/ref/struct-ptr-19.log
+++ b/src/test/ref/struct-ptr-19.log
@@ -297,7 +297,7 @@ Allocated zp ZP_BYTE:6 [ main::point_y#0 ]
Allocated zp ZP_BYTE:7 [ idx#4 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates problem with passing struct pointer deref as parameter to call
// Upstart
diff --git a/src/test/ref/struct-ptr-2.log b/src/test/ref/struct-ptr-2.log
index 2ae699c23..7e438ddde 100644
--- a/src/test/ref/struct-ptr-2.log
+++ b/src/test/ref/struct-ptr-2.log
@@ -313,7 +313,7 @@ Allocated zp ZP_BYTE:8 [ main::$15 ]
Allocated zp ZP_WORD:9 [ main::point_i1#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - array of struct - far pointer math indexing
// Upstart
diff --git a/src/test/ref/struct-ptr-20.log b/src/test/ref/struct-ptr-20.log
index dccd163fc..f40367e9c 100644
--- a/src/test/ref/struct-ptr-20.log
+++ b/src/test/ref/struct-ptr-20.log
@@ -285,7 +285,7 @@ Allocated zp ZP_WORD:2 [ main::setting#2 main::setting#1 ]
Allocated zp ZP_BYTE:4 [ main::idx#2 main::idx#5 main::idx#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates problem with conditions using negated struct references
// Upstart
diff --git a/src/test/ref/struct-ptr-21.log b/src/test/ref/struct-ptr-21.log
index 5c7cd9708..b659d37d7 100644
--- a/src/test/ref/struct-ptr-21.log
+++ b/src/test/ref/struct-ptr-21.log
@@ -246,7 +246,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::$3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates problem with conditions using negated struct references
// Upstart
diff --git a/src/test/ref/struct-ptr-22.log b/src/test/ref/struct-ptr-22.log
index 0e18c53b3..7af33dfc0 100644
--- a/src/test/ref/struct-ptr-22.log
+++ b/src/test/ref/struct-ptr-22.log
@@ -1011,7 +1011,7 @@ Allocated zp ZP_BYTE:14 [ print_byte::$0 ]
Allocated zp ZP_BYTE:15 [ print_byte::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Demonstrates problem with missing parenthesis in double-dereferencing
// https://gitlab.com/camelot/kickc/issues/270
diff --git a/src/test/ref/struct-ptr-24.log b/src/test/ref/struct-ptr-24.log
index be05a344d..4ce2dabc8 100644
--- a/src/test/ref/struct-ptr-24.log
+++ b/src/test/ref/struct-ptr-24.log
@@ -197,7 +197,7 @@ Allocated zp ZP_WORD:2 [ main::file#2 main::file#1 ]
Allocated zp ZP_WORD:4 [ PrintName::file#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/struct-ptr-25.log b/src/test/ref/struct-ptr-25.log
index 19d82886e..c1d8007e9 100644
--- a/src/test/ref/struct-ptr-25.log
+++ b/src/test/ref/struct-ptr-25.log
@@ -232,7 +232,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/struct-ptr-26.log b/src/test/ref/struct-ptr-26.log
index b1451aa8c..17642d0e8 100644
--- a/src/test/ref/struct-ptr-26.log
+++ b/src/test/ref/struct-ptr-26.log
@@ -472,7 +472,7 @@ Allocated zp ZP_BYTE:10 [ print_byte::$0 ]
Allocated zp ZP_BYTE:11 [ print_byte::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/struct-ptr-3.log b/src/test/ref/struct-ptr-3.log
index e2916dc09..dd5c5f182 100644
--- a/src/test/ref/struct-ptr-3.log
+++ b/src/test/ref/struct-ptr-3.log
@@ -178,7 +178,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - accessing pointer to struct in memory
// Upstart
diff --git a/src/test/ref/struct-ptr-4.log b/src/test/ref/struct-ptr-4.log
index c6b7885af..4dc148b49 100644
--- a/src/test/ref/struct-ptr-4.log
+++ b/src/test/ref/struct-ptr-4.log
@@ -300,7 +300,7 @@ Allocated zp ZP_BYTE:10 [ main::idx#1 ]
Allocated zp ZP_BYTE:11 [ main::idx#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - accessing pointer to struct in memory in a loop
// Upstart
diff --git a/src/test/ref/struct-ptr-5.log b/src/test/ref/struct-ptr-5.log
index 7d101b876..fc7fd82f4 100644
--- a/src/test/ref/struct-ptr-5.log
+++ b/src/test/ref/struct-ptr-5.log
@@ -359,7 +359,7 @@ Allocated zp ZP_BYTE:9 [ main::$4 ]
Allocated zp ZP_BYTE:10 [ main::idx#3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - simple linked list implemented using pointers
// Upstart
diff --git a/src/test/ref/struct-ptr-6.log b/src/test/ref/struct-ptr-6.log
index 163480d9e..991e7f8ce 100644
--- a/src/test/ref/struct-ptr-6.log
+++ b/src/test/ref/struct-ptr-6.log
@@ -178,7 +178,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - accessing pointer to struct in memory using arrow operator
// Upstart
diff --git a/src/test/ref/struct-ptr-7.log b/src/test/ref/struct-ptr-7.log
index 4ee452325..827a7582f 100644
--- a/src/test/ref/struct-ptr-7.log
+++ b/src/test/ref/struct-ptr-7.log
@@ -299,7 +299,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - direct (constant) array access
// Upstart
diff --git a/src/test/ref/struct-ptr-8.log b/src/test/ref/struct-ptr-8.log
index 42d6f66fb..e8357cb11 100644
--- a/src/test/ref/struct-ptr-8.log
+++ b/src/test/ref/struct-ptr-8.log
@@ -311,7 +311,7 @@ Allocated zp ZP_BYTE:9 [ main::idx#1 ]
Allocated zp ZP_BYTE:10 [ main::idx#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - variable array access
// Upstart
diff --git a/src/test/ref/struct-ptr-9.log b/src/test/ref/struct-ptr-9.log
index b9517128b..a167ef6ce 100644
--- a/src/test/ref/struct-ptr-9.log
+++ b/src/test/ref/struct-ptr-9.log
@@ -253,7 +253,7 @@ Allocated zp ZP_BYTE:4 [ main::$2 ]
Allocated zp ZP_BYTE:5 [ main::$3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal struct - array access with struct value copying (and initializing)
// Upstart
diff --git a/src/test/ref/subexpr-optimize-0.log b/src/test/ref/subexpr-optimize-0.log
index 5d246ba31..e44a84eda 100644
--- a/src/test/ref/subexpr-optimize-0.log
+++ b/src/test/ref/subexpr-optimize-0.log
@@ -167,7 +167,7 @@ Allocated zp ZP_BYTE:5 [ main::$1 ]
Allocated zp ZP_WORD:6 [ main::screen#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests optimization of identical sub-expressions
// The two examples of i*2 is detected as identical leading to optimized ASM where *2 is only calculated once
diff --git a/src/test/ref/subexpr-optimize-1.log b/src/test/ref/subexpr-optimize-1.log
index 0b1858e8e..c52688a3a 100644
--- a/src/test/ref/subexpr-optimize-1.log
+++ b/src/test/ref/subexpr-optimize-1.log
@@ -211,7 +211,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// A sub-expression that should not be optimized (+1 to a pointer)
// Upstart
diff --git a/src/test/ref/subexpr-optimize-2.log b/src/test/ref/subexpr-optimize-2.log
index e8c823183..e4e29f82c 100644
--- a/src/test/ref/subexpr-optimize-2.log
+++ b/src/test/ref/subexpr-optimize-2.log
@@ -193,7 +193,7 @@ Allocated zp ZP_BYTE:9 [ main::$2 ]
Allocated zp ZP_BYTE:10 [ main::$3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests optimization of identical sub-expressions
// Upstart
diff --git a/src/test/ref/subexpr-optimize-3.log b/src/test/ref/subexpr-optimize-3.log
index b2d2682d7..9b86ba98e 100644
--- a/src/test/ref/subexpr-optimize-3.log
+++ b/src/test/ref/subexpr-optimize-3.log
@@ -209,7 +209,7 @@ Allocated zp ZP_BYTE:10 [ main::$4 ]
Allocated zp ZP_BYTE:11 [ main::$5 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests optimization of identical sub-expressions
// Upstart
diff --git a/src/test/ref/subexpr-optimize-4.log b/src/test/ref/subexpr-optimize-4.log
index 752b52bf7..b3952ddbe 100644
--- a/src/test/ref/subexpr-optimize-4.log
+++ b/src/test/ref/subexpr-optimize-4.log
@@ -336,7 +336,7 @@ Allocated zp ZP_WORD:8 [ main::screen#1 ]
Allocated zp ZP_BYTE:10 [ main::$6 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests optimization of identical sub-expressions
// Upstart
diff --git a/src/test/ref/summin.log b/src/test/ref/summin.log
index 659a8605e..959aa4375 100644
--- a/src/test/ref/summin.log
+++ b/src/test/ref/summin.log
@@ -297,7 +297,7 @@ Allocated zp ZP_BYTE:11 [ main::s4#0 ]
Allocated zp ZP_BYTE:12 [ sum::return#3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/switch-0.log b/src/test/ref/switch-0.log
index 96d448064..bca153236 100644
--- a/src/test/ref/switch-0.log
+++ b/src/test/ref/switch-0.log
@@ -222,7 +222,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#10 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests simple switch()-statement
// Expected output 'd1444d'
diff --git a/src/test/ref/switch-1.log b/src/test/ref/switch-1.log
index a32370608..4a4b374dd 100644
--- a/src/test/ref/switch-1.log
+++ b/src/test/ref/switch-1.log
@@ -188,7 +188,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests simple switch()-statement - including a continue statement for the enclosing loop
// Expected output 'a1aa1a' (numbers should be inverted)
diff --git a/src/test/ref/switch-2.log b/src/test/ref/switch-2.log
index b74a908a9..20023bdca 100644
--- a/src/test/ref/switch-2.log
+++ b/src/test/ref/switch-2.log
@@ -138,7 +138,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests simple switch()-statement - not inside a loop
// Upstart
diff --git a/src/test/ref/switch-4.log b/src/test/ref/switch-4.log
index 660d26109..0e6bc3e7c 100644
--- a/src/test/ref/switch-4.log
+++ b/src/test/ref/switch-4.log
@@ -174,7 +174,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests simple switch()-statement - switch without default
// Expected output " 1 4 "
diff --git a/src/test/ref/ternary-1.log b/src/test/ref/ternary-1.log
index d0db3d475..055abdea2 100644
--- a/src/test/ref/ternary-1.log
+++ b/src/test/ref/ternary-1.log
@@ -173,7 +173,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::$3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests the ternary operator
// Upstart
diff --git a/src/test/ref/ternary-2.log b/src/test/ref/ternary-2.log
index 9e755a036..629f71f13 100644
--- a/src/test/ref/ternary-2.log
+++ b/src/test/ref/ternary-2.log
@@ -156,7 +156,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests the ternary operator - when the condition is constant
// Upstart
diff --git a/src/test/ref/ternary-3.log b/src/test/ref/ternary-3.log
index e3e3a7962..727391202 100644
--- a/src/test/ref/ternary-3.log
+++ b/src/test/ref/ternary-3.log
@@ -383,7 +383,7 @@ Allocated zp ZP_BYTE:12 [ m2::return#1 ]
Allocated zp ZP_BOOL:13 [ cond::return#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests the ternary operator - when the condition is constant
// Upstart
diff --git a/src/test/ref/ternary-inference.log b/src/test/ref/ternary-inference.log
index 371c7b053..f7197e6c8 100644
--- a/src/test/ref/ternary-inference.log
+++ b/src/test/ref/ternary-inference.log
@@ -194,7 +194,7 @@ Allocated zp ZP_BYTE:3 [ main::$3 ]
Allocated zp ZP_BYTE:4 [ main::$4 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Type inference into the ternary operator
// Upstart
diff --git a/src/test/ref/test-comments-block.log b/src/test/ref/test-comments-block.log
index 7ed38b8ed..0db1d05f9 100644
--- a/src/test/ref/test-comments-block.log
+++ b/src/test/ref/test-comments-block.log
@@ -240,7 +240,7 @@ Allocated zp ZP_BYTE:6 [ main::$0 ]
Allocated zp ZP_BYTE:7 [ sum::return#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
/* Tests that block comments are compiled correctly
* Has a bunch of comments that will be moved into the generated ASM
diff --git a/src/test/ref/test-comments-loop.log b/src/test/ref/test-comments-loop.log
index c07786c04..b9064da1e 100644
--- a/src/test/ref/test-comments-loop.log
+++ b/src/test/ref/test-comments-loop.log
@@ -117,7 +117,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::b#2 main::b#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/test-comments-single.log b/src/test/ref/test-comments-single.log
index 321886fbd..b28f5fa18 100644
--- a/src/test/ref/test-comments-single.log
+++ b/src/test/ref/test-comments-single.log
@@ -240,7 +240,7 @@ Allocated zp ZP_BYTE:6 [ main::$0 ]
Allocated zp ZP_BYTE:7 [ sum::return#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that single-line comments are compiled correctly
// Has a bunch of comments that will be moved into the generated ASM
diff --git a/src/test/ref/test-comments-usage.log b/src/test/ref/test-comments-usage.log
index 0f80ec024..e14de0ea2 100644
--- a/src/test/ref/test-comments-usage.log
+++ b/src/test/ref/test-comments-usage.log
@@ -72,7 +72,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that single-line comments are only included once in the output
// Upstart
diff --git a/src/test/ref/test-comparisons-sword.log b/src/test/ref/test-comparisons-sword.log
index 50e83269c..25b630904 100644
--- a/src/test/ref/test-comparisons-sword.log
+++ b/src/test/ref/test-comparisons-sword.log
@@ -2395,7 +2395,7 @@ Allocated zp ZP_BYTE:34 [ print_byte::$0 ]
Allocated zp ZP_BYTE:35 [ print_byte::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test signed word comparisons
// Upstart
diff --git a/src/test/ref/test-comparisons-word.log b/src/test/ref/test-comparisons-word.log
index 13a773585..f85647452 100644
--- a/src/test/ref/test-comparisons-word.log
+++ b/src/test/ref/test-comparisons-word.log
@@ -2085,7 +2085,7 @@ Allocated zp ZP_BYTE:32 [ print_byte::$0 ]
Allocated zp ZP_BYTE:33 [ print_byte::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/test-comparisons.log b/src/test/ref/test-comparisons.log
index e12c18625..9bc64d34b 100644
--- a/src/test/ref/test-comparisons.log
+++ b/src/test/ref/test-comparisons.log
@@ -3410,7 +3410,7 @@ Allocated zp ZP_BYTE:40 [ print_byte::$0 ]
Allocated zp ZP_BYTE:41 [ print_byte::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/test-division.log b/src/test/ref/test-division.log
index a709f918b..acffa1289 100644
--- a/src/test/ref/test-division.log
+++ b/src/test/ref/test-division.log
@@ -5085,7 +5085,7 @@ Allocated zp ZP_BYTE:122 [ div8u::return#3 ]
Allocated zp ZP_BYTE:123 [ test_8u::res#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test the binary division library
// Upstart
diff --git a/src/test/ref/test-interrupt-notype.log b/src/test/ref/test-interrupt-notype.log
index 367093b3e..b5448c2f8 100644
--- a/src/test/ref/test-interrupt-notype.log
+++ b/src/test/ref/test-interrupt-notype.log
@@ -132,7 +132,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/test-interrupt-volatile-write.log b/src/test/ref/test-interrupt-volatile-write.log
index 3bdd1a849..a30494e71 100644
--- a/src/test/ref/test-interrupt-volatile-write.log
+++ b/src/test/ref/test-interrupt-volatile-write.log
@@ -252,7 +252,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ col#14 col#0 col#1 col#12 col#3 col#4 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that volatile variables can be both read & written inside & outside interrupts
// Currently fails because the modification is optimized away
diff --git a/src/test/ref/test-interrupt-volatile.log b/src/test/ref/test-interrupt-volatile.log
index 4a81b1921..db1110821 100644
--- a/src/test/ref/test-interrupt-volatile.log
+++ b/src/test/ref/test-interrupt-volatile.log
@@ -168,7 +168,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ col#2 col#0 col#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/test-interrupt.log b/src/test/ref/test-interrupt.log
index 367093b3e..b5448c2f8 100644
--- a/src/test/ref/test-interrupt.log
+++ b/src/test/ref/test-interrupt.log
@@ -132,7 +132,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/test-kasm-pc.log b/src/test/ref/test-kasm-pc.log
index 393f51067..ff12ba601 100644
--- a/src/test/ref/test-kasm-pc.log
+++ b/src/test/ref/test-kasm-pc.log
@@ -131,7 +131,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test inline KickAssembler code with PC location specification
// Upstart
diff --git a/src/test/ref/test-kasm.log b/src/test/ref/test-kasm.log
index c276eb8d8..0ad5816d0 100644
--- a/src/test/ref/test-kasm.log
+++ b/src/test/ref/test-kasm.log
@@ -85,7 +85,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test inline KickAssembler code
// Upstart
diff --git a/src/test/ref/test-keyboard-space.log b/src/test/ref/test-keyboard-space.log
index 186590376..830040d3b 100644
--- a/src/test/ref/test-keyboard-space.log
+++ b/src/test/ref/test-keyboard-space.log
@@ -457,7 +457,7 @@ Allocated zp ZP_BYTE:6 [ keyboard_key_pressed::return#0 ]
Allocated zp ZP_BYTE:7 [ keyboard_matrix_read::return#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test keyboard input - test the space bar
// Upstart
diff --git a/src/test/ref/test-keyboard.log b/src/test/ref/test-keyboard.log
index 7d243ac99..4684694dc 100644
--- a/src/test/ref/test-keyboard.log
+++ b/src/test/ref/test-keyboard.log
@@ -1461,7 +1461,7 @@ Allocated zp ZP_BYTE:27 [ keyboard_matrix_read::return#0 ]
Allocated zp ZP_BYTE:28 [ keyboard_get_keycode::return#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test keyboard input - in the keyboard matrix and mapping screen codes to key codes
// Upstart
diff --git a/src/test/ref/test-lohiconst.log b/src/test/ref/test-lohiconst.log
index ca355a7b8..a35f0ef70 100644
--- a/src/test/ref/test-lohiconst.log
+++ b/src/test/ref/test-lohiconst.log
@@ -153,7 +153,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// PI in u[4.28] format
// Upstart
diff --git a/src/test/ref/test-lowhigh.log b/src/test/ref/test-lowhigh.log
index 140734874..a355a7850 100644
--- a/src/test/ref/test-lowhigh.log
+++ b/src/test/ref/test-lowhigh.log
@@ -1361,7 +1361,7 @@ Allocated zp ZP_BYTE:46 [ print_byte::$0 ]
Allocated zp ZP_BYTE:47 [ print_byte::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/test-multiply-16bit.log b/src/test/ref/test-multiply-16bit.log
index cf48df486..02477fb2f 100644
--- a/src/test/ref/test-multiply-16bit.log
+++ b/src/test/ref/test-multiply-16bit.log
@@ -5284,7 +5284,7 @@ Allocated zp ZP_BYTE:228 [ mulf_init::$12 ]
Allocated zp ZP_BYTE:229 [ mulf_init::$13 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test the fast multiplication library
// Upstart
diff --git a/src/test/ref/test-multiply-8bit.log b/src/test/ref/test-multiply-8bit.log
index fc4719064..6fa088f8e 100644
--- a/src/test/ref/test-multiply-8bit.log
+++ b/src/test/ref/test-multiply-8bit.log
@@ -5511,7 +5511,7 @@ Allocated zp ZP_BYTE:134 [ mulf_init::$12 ]
Allocated zp ZP_BYTE:135 [ mulf_init::$13 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test the fast multiplication library
// Upstart
diff --git a/src/test/ref/test-scroll-up.log b/src/test/ref/test-scroll-up.log
index 53be52cca..c34a4604b 100644
--- a/src/test/ref/test-scroll-up.log
+++ b/src/test/ref/test-scroll-up.log
@@ -623,7 +623,7 @@ Allocated zp ZP_WORD:24 [ scrollup1::$5 ]
Allocated zp ZP_WORD:26 [ scrollup1::$6 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests different ways of scrolling up the screen
// Upstart
diff --git a/src/test/ref/test-signed-word-minus-byte.log b/src/test/ref/test-signed-word-minus-byte.log
index ec98b9067..c9aea0bb2 100644
--- a/src/test/ref/test-signed-word-minus-byte.log
+++ b/src/test/ref/test-signed-word-minus-byte.log
@@ -1088,7 +1088,7 @@ Allocated zp ZP_BYTE:19 [ print_byte::$0 ]
Allocated zp ZP_BYTE:20 [ print_byte::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests subtracting bytes from signed words
// Upstart
diff --git a/src/test/ref/test-word-size-arrays.log b/src/test/ref/test-word-size-arrays.log
index 91e45a501..76796491b 100644
--- a/src/test/ref/test-word-size-arrays.log
+++ b/src/test/ref/test-word-size-arrays.log
@@ -314,7 +314,7 @@ Allocated zp ZP_WORD:14 [ main::$7 ]
Allocated zp ZP_WORD:16 [ main::$8 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/tetris-npe.log b/src/test/ref/tetris-npe.log
index dbd0a2987..97b1daf34 100644
--- a/src/test/ref/tetris-npe.log
+++ b/src/test/ref/tetris-npe.log
@@ -251,7 +251,7 @@ Allocated zp ZP_BYTE:2 [ counter#3 counter#1 ]
Allocated zp ZP_BYTE:3 [ ypos#2 ypos#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// NullPointerException using current_movedown_rate in the main loop
// Upstart
diff --git a/src/test/ref/textbox.log b/src/test/ref/textbox.log
index 455823256..56380427e 100644
--- a/src/test/ref/textbox.log
+++ b/src/test/ref/textbox.log
@@ -2000,7 +2000,7 @@ Allocated zp ZP_WORD:89 [ draw_window::$15 ]
Allocated zp ZP_WORD:91 [ draw_window::$28 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
/* Textbox routine with word wrap for KickC by Scan/Desire */
// Upstart
diff --git a/src/test/ref/tod018-problem.log b/src/test/ref/tod018-problem.log
index 5de92cd8c..aa0812123 100644
--- a/src/test/ref/tod018-problem.log
+++ b/src/test/ref/tod018-problem.log
@@ -116,7 +116,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests a problem with tod018 not calculating types correctly
// Upstart
diff --git a/src/test/ref/travis1.log b/src/test/ref/travis1.log
index f3fb5b19e..a613bd3f1 100644
--- a/src/test/ref/travis1.log
+++ b/src/test/ref/travis1.log
@@ -783,7 +783,7 @@ Allocated zp ZP_BOOL:13 [ main::$0 ]
Allocated zp ZP_BOOL:14 [ game_ready::return#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Adding a missing word-fragment for Travis Fisher
// Upstart
diff --git a/src/test/ref/true-inline-words.log b/src/test/ref/true-inline-words.log
index 1853e0dff..c6233bea3 100644
--- a/src/test/ref/true-inline-words.log
+++ b/src/test/ref/true-inline-words.log
@@ -227,7 +227,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/type-inference.log b/src/test/ref/type-inference.log
index 51a518f58..7af96d8de 100644
--- a/src/test/ref/type-inference.log
+++ b/src/test/ref/type-inference.log
@@ -144,7 +144,7 @@ Allocated zp ZP_BYTE:3 [ main::$0 ]
Allocated zp ZP_BYTE:4 [ main::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test inference of integer types in expressions
// Upstart
diff --git a/src/test/ref/type-mix.log b/src/test/ref/type-mix.log
index fb541581a..9dd77fd5f 100644
--- a/src/test/ref/type-mix.log
+++ b/src/test/ref/type-mix.log
@@ -159,7 +159,7 @@ Allocated zp ZP_BYTE:4 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:5 [ main::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests that mixing types can synthesize a fragment correctly
// Upstart
diff --git a/src/test/ref/type-signed.log b/src/test/ref/type-signed.log
index 380053405..67b7b5168 100644
--- a/src/test/ref/type-signed.log
+++ b/src/test/ref/type-signed.log
@@ -845,7 +845,7 @@ Allocated zp ZP_BYTE:17 [ print_byte::$0 ]
Allocated zp ZP_BYTE:18 [ print_byte::$2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests the special "signed" / "unsigned" without a simple type name
// Upstart
diff --git a/src/test/ref/typedef-0.log b/src/test/ref/typedef-0.log
index bbdd91afe..1cf3f70e8 100644
--- a/src/test/ref/typedef-0.log
+++ b/src/test/ref/typedef-0.log
@@ -79,7 +79,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/typedef-1.log b/src/test/ref/typedef-1.log
index 051a8a89a..c0cf198a8 100644
--- a/src/test/ref/typedef-1.log
+++ b/src/test/ref/typedef-1.log
@@ -129,7 +129,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/typedef-2.log b/src/test/ref/typedef-2.log
index 1ae962d79..9f52a57cc 100644
--- a/src/test/ref/typedef-2.log
+++ b/src/test/ref/typedef-2.log
@@ -134,7 +134,7 @@ Complete equivalence classes
Allocated zp ZP_WORD:2 [ ptr#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/typeid-plus-byte-problem.log b/src/test/ref/typeid-plus-byte-problem.log
index 88bf80a11..8ae0af508 100644
--- a/src/test/ref/typeid-plus-byte-problem.log
+++ b/src/test/ref/typeid-plus-byte-problem.log
@@ -107,7 +107,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test that byte+byte creates a byte - even when there is a value overflow
// Upstart
diff --git a/src/test/ref/typeid-plus-bytes.log b/src/test/ref/typeid-plus-bytes.log
index c5570c988..3d2157401 100644
--- a/src/test/ref/typeid-plus-bytes.log
+++ b/src/test/ref/typeid-plus-bytes.log
@@ -1158,7 +1158,7 @@ Allocated zp ZP_BYTE:14 [ testUnsignedVals::$5 ]
Allocated zp ZP_BYTE:15 [ testUnsignedVals::$6 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test that plus creates the expected type for all legal combinations of bytes (signed/unsigned - constant/variable)
// Upstart
diff --git a/src/test/ref/typeid-simple.log b/src/test/ref/typeid-simple.log
index e1f45803c..a419394df 100644
--- a/src/test/ref/typeid-simple.log
+++ b/src/test/ref/typeid-simple.log
@@ -454,7 +454,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test typeid() of the different types
// Upstart
diff --git a/src/test/ref/typeinference-problem.log b/src/test/ref/typeinference-problem.log
index f2c3e4cd2..9e344a65d 100644
--- a/src/test/ref/typeinference-problem.log
+++ b/src/test/ref/typeinference-problem.log
@@ -135,7 +135,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// java.lang.NullPointerException during Pass2TypeInference.java
// Upstart
diff --git a/src/test/ref/uninitialized.log b/src/test/ref/uninitialized.log
index a0c47fd6b..3ba5c3185 100644
--- a/src/test/ref/uninitialized.log
+++ b/src/test/ref/uninitialized.log
@@ -164,7 +164,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests uninitialized values of variables.
// Upstart
diff --git a/src/test/ref/unroll-for-min.log b/src/test/ref/unroll-for-min.log
index c4eda7291..df660a32b 100644
--- a/src/test/ref/unroll-for-min.log
+++ b/src/test/ref/unroll-for-min.log
@@ -170,7 +170,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal unrolled ranged for() loop
// Upstart
diff --git a/src/test/ref/unroll-loop-modifyvar.log b/src/test/ref/unroll-loop-modifyvar.log
index afabc6d30..c925b7b56 100644
--- a/src/test/ref/unroll-loop-modifyvar.log
+++ b/src/test/ref/unroll-loop-modifyvar.log
@@ -387,7 +387,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// An unrolled loop modifying a var used later
// Upstart
diff --git a/src/test/ref/unroll-screenfill-for-double.log b/src/test/ref/unroll-screenfill-for-double.log
index de8d07ac0..3d82f1e29 100644
--- a/src/test/ref/unroll-screenfill-for-double.log
+++ b/src/test/ref/unroll-screenfill-for-double.log
@@ -1331,7 +1331,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Fills the screen using two unrolled ranged for()-loops
// Upstart
diff --git a/src/test/ref/unroll-screenfill-for.log b/src/test/ref/unroll-screenfill-for.log
index d841bbb57..08cf346c5 100644
--- a/src/test/ref/unroll-screenfill-for.log
+++ b/src/test/ref/unroll-screenfill-for.log
@@ -848,7 +848,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::x#4 main::x#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Fills the screen using an unrolled inner ranged for()-loop
// Upstart
diff --git a/src/test/ref/unroll-screenfill-while.log b/src/test/ref/unroll-screenfill-while.log
index b8288dc94..5bddf9d47 100644
--- a/src/test/ref/unroll-screenfill-while.log
+++ b/src/test/ref/unroll-screenfill-while.log
@@ -883,7 +883,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::x#5 main::x#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Fills the screen using an unrolled inner while()-loop
// Upstart
diff --git a/src/test/ref/unroll-while-min.log b/src/test/ref/unroll-while-min.log
index 4272c5f92..c7b0cdde8 100644
--- a/src/test/ref/unroll-while-min.log
+++ b/src/test/ref/unroll-while-min.log
@@ -177,7 +177,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Minimal unrolled while() loop
// Upstart
diff --git a/src/test/ref/unused-irq.log b/src/test/ref/unused-irq.log
index 8a2cdf9a9..2b8b7f2ca 100644
--- a/src/test/ref/unused-irq.log
+++ b/src/test/ref/unused-irq.log
@@ -129,7 +129,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Unused interrupts pointing to each other but never used from main loop - should be optimized away
// Upstart
diff --git a/src/test/ref/unused-method.log b/src/test/ref/unused-method.log
index f91a174be..54a96f743 100644
--- a/src/test/ref/unused-method.log
+++ b/src/test/ref/unused-method.log
@@ -86,7 +86,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/unused-vars.log b/src/test/ref/unused-vars.log
index 3b6f8c758..95b216ae2 100644
--- a/src/test/ref/unused-vars.log
+++ b/src/test/ref/unused-vars.log
@@ -254,7 +254,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// used vars
// Upstart
diff --git a/src/test/ref/unusedblockproblem.log b/src/test/ref/unusedblockproblem.log
index 145ac72dd..e6d321848 100644
--- a/src/test/ref/unusedblockproblem.log
+++ b/src/test/ref/unusedblockproblem.log
@@ -123,7 +123,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Problem with eliminating unused blocks/vars after the infinite loop (symbol line#2 not removed from symbol table)
// Upstart
diff --git a/src/test/ref/useglobal.log b/src/test/ref/useglobal.log
index a9785418c..cc2e7daa9 100644
--- a/src/test/ref/useglobal.log
+++ b/src/test/ref/useglobal.log
@@ -79,7 +79,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests procedures using global variables (should not fail)
// Upstart
diff --git a/src/test/ref/useuninitialized.log b/src/test/ref/useuninitialized.log
index 7f6c456d0..583fe996e 100644
--- a/src/test/ref/useuninitialized.log
+++ b/src/test/ref/useuninitialized.log
@@ -154,7 +154,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Use an uninitialized variable - should use the default value (0)!
// Upstart
diff --git a/src/test/ref/var-export.log b/src/test/ref/var-export.log
index 99f5de060..389748ba9 100644
--- a/src/test/ref/var-export.log
+++ b/src/test/ref/var-export.log
@@ -88,7 +88,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test the export directive usable for ensuring a data variable is always added to the output - even if it is never used
// Upstart
diff --git a/src/test/ref/var-forward-problem.log b/src/test/ref/var-forward-problem.log
index f5303cd43..9835d1a07 100644
--- a/src/test/ref/var-forward-problem.log
+++ b/src/test/ref/var-forward-problem.log
@@ -79,7 +79,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates the problem with variable forward references not working
// Upstart
diff --git a/src/test/ref/var-forward-problem2.log b/src/test/ref/var-forward-problem2.log
index 1259e5ccb..bc20e5186 100644
--- a/src/test/ref/var-forward-problem2.log
+++ b/src/test/ref/var-forward-problem2.log
@@ -114,7 +114,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates the problem with variable forward references not working
// Upstart
diff --git a/src/test/ref/var-init-problem.log b/src/test/ref/var-init-problem.log
index cb9691ef5..62bcdc98b 100644
--- a/src/test/ref/var-init-problem.log
+++ b/src/test/ref/var-init-problem.log
@@ -93,7 +93,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Variables without initialization causes problems when compiling
// Upstart
diff --git a/src/test/ref/var-register-noarg.log b/src/test/ref/var-register-noarg.log
index 922f6b967..8090d2e9f 100644
--- a/src/test/ref/var-register-noarg.log
+++ b/src/test/ref/var-register-noarg.log
@@ -146,7 +146,7 @@ Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::$1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test declaring a variable as register with no information about which register (for compatibility with standard C)
// Upstart
diff --git a/src/test/ref/var-register-zp-3.log b/src/test/ref/var-register-zp-3.log
index 3ccd65ed1..bd24f830d 100644
--- a/src/test/ref/var-register-zp-3.log
+++ b/src/test/ref/var-register-zp-3.log
@@ -305,7 +305,7 @@ Allocated zp ZP_BYTE:2 [ print2::i#2 print2::i#1 ]
Allocated zp ZP_BYTE:3 [ print2::j#2 print2::j#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test declaring a variable as register on a specific ZP address
// Upstart
diff --git a/src/test/ref/var-register-zp.log b/src/test/ref/var-register-zp.log
index bdcfd51e8..7dfd37915 100644
--- a/src/test/ref/var-register-zp.log
+++ b/src/test/ref/var-register-zp.log
@@ -211,7 +211,7 @@ Allocated zp ZP_WORD:8 [ main::k#0 ]
Allocated zp ZP_BYTE:10 [ main::$4 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test declaring a variable as register on a specific ZP address
// Upstart
diff --git a/src/test/ref/var-register.log b/src/test/ref/var-register.log
index a2a336316..afeb89f4a 100644
--- a/src/test/ref/var-register.log
+++ b/src/test/ref/var-register.log
@@ -291,7 +291,7 @@ Allocated zp ZP_BYTE:3 [ main::a#2 main::a#1 ]
Allocated zp ZP_BYTE:4 [ print::val#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/void-parameter.log b/src/test/ref/void-parameter.log
index 29bb22ba5..38ba384e7 100644
--- a/src/test/ref/void-parameter.log
+++ b/src/test/ref/void-parameter.log
@@ -188,7 +188,7 @@ Complete equivalence classes
Allocated zp ZP_BYTE:2 [ idx#12 idx#13 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test that void-parameter works top specify function takes no parameters
// Output is "..." in the top left corner of the screen
diff --git a/src/test/ref/voronoi.log b/src/test/ref/voronoi.log
index 3e47cbcc1..dfcb518d7 100644
--- a/src/test/ref/voronoi.log
+++ b/src/test/ref/voronoi.log
@@ -1333,7 +1333,7 @@ Allocated zp ZP_BYTE:26 [ findcol::$9 ]
Allocated zp ZP_BYTE:27 [ findcol::$11 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// The screen
// Upstart
diff --git a/src/test/ref/wfragment1.log b/src/test/ref/wfragment1.log
index 0a29f57d6..05b5d5df6 100644
--- a/src/test/ref/wfragment1.log
+++ b/src/test/ref/wfragment1.log
@@ -263,7 +263,7 @@ Allocated zp ZP_BYTE:3 [ move_enemy::obj_slot#0 ]
Allocated zp ZP_BYTE:4 [ move_enemy::$0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Adding a missing word-fragment for Travis Fisher
// Upstart
diff --git a/src/test/ref/word-array-0.log b/src/test/ref/word-array-0.log
index 3edf1b8c6..1c5aaff32 100644
--- a/src/test/ref/word-array-0.log
+++ b/src/test/ref/word-array-0.log
@@ -178,7 +178,7 @@ Allocated zp ZP_BYTE:8 [ main::$2 ]
Allocated zp ZP_BYTE:9 [ main::$3 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests a simple word array
// Upstart
diff --git a/src/test/ref/word-array-1.log b/src/test/ref/word-array-1.log
index 08280ac15..984589e10 100644
--- a/src/test/ref/word-array-1.log
+++ b/src/test/ref/word-array-1.log
@@ -207,7 +207,7 @@ Allocated zp ZP_BYTE:9 [ main::$1 ]
Allocated zp ZP_BYTE:10 [ main::idx#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests a simple word array
// Upstart
diff --git a/src/test/ref/word-array-2.log b/src/test/ref/word-array-2.log
index 59ed5cbf3..354d7de0c 100644
--- a/src/test/ref/word-array-2.log
+++ b/src/test/ref/word-array-2.log
@@ -224,7 +224,7 @@ Allocated zp ZP_WORD:11 [ main::$6 ]
Allocated zp ZP_WORD:13 [ main::$9 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests a word-array with 128+ elements
// Upstart
diff --git a/src/test/ref/word-pointer-compound.log b/src/test/ref/word-pointer-compound.log
index 0b2570540..d2a0d0bf8 100644
--- a/src/test/ref/word-pointer-compound.log
+++ b/src/test/ref/word-pointer-compound.log
@@ -307,7 +307,7 @@ Allocated zp ZP_BYTE:8 [ main::$4 ]
Allocated zp ZP_BYTE:9 [ main::$5 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Test word pointer compound assignment
// Upstart
diff --git a/src/test/ref/word-pointer-iteration-0.log b/src/test/ref/word-pointer-iteration-0.log
index eb83f5e6b..0adff3f60 100644
--- a/src/test/ref/word-pointer-iteration-0.log
+++ b/src/test/ref/word-pointer-iteration-0.log
@@ -191,7 +191,7 @@ Allocated zp ZP_BYTE:6 [ main::$4 ]
Allocated zp ZP_BYTE:7 [ main::$5 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests simple word pointer iteration
// Upstart
diff --git a/src/test/ref/word-pointer-iteration.log b/src/test/ref/word-pointer-iteration.log
index 62449ecec..d69678a63 100644
--- a/src/test/ref/word-pointer-iteration.log
+++ b/src/test/ref/word-pointer-iteration.log
@@ -214,7 +214,7 @@ Allocated zp ZP_BYTE:10 [ main::$1 ]
Allocated zp ZP_BYTE:11 [ main::idx#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests simple word pointer iteration
// Upstart
diff --git a/src/test/ref/word-pointer-math-0.log b/src/test/ref/word-pointer-math-0.log
index 5e88a8a36..730d3a729 100644
--- a/src/test/ref/word-pointer-math-0.log
+++ b/src/test/ref/word-pointer-math-0.log
@@ -189,7 +189,7 @@ Allocated zp ZP_BYTE:8 [ main::$4 ]
Allocated zp ZP_BYTE:9 [ main::$5 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests simple word pointer math
// Upstart
diff --git a/src/test/ref/word-pointer-math-1.log b/src/test/ref/word-pointer-math-1.log
index f4c70c269..43a494d96 100644
--- a/src/test/ref/word-pointer-math-1.log
+++ b/src/test/ref/word-pointer-math-1.log
@@ -110,7 +110,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests word pointer math - subtracting two word pointers
// Upstart
diff --git a/src/test/ref/word-pointer-math.log b/src/test/ref/word-pointer-math.log
index ecc98e171..27a5c1df3 100644
--- a/src/test/ref/word-pointer-math.log
+++ b/src/test/ref/word-pointer-math.log
@@ -213,7 +213,7 @@ Allocated zp ZP_BYTE:9 [ main::$2 ]
Allocated zp ZP_BYTE:10 [ main::idx#2 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Tests simple word pointer math
// Upstart
diff --git a/src/test/ref/wordexpr.log b/src/test/ref/wordexpr.log
index 039a8ae1a..b3dac336d 100644
--- a/src/test/ref/wordexpr.log
+++ b/src/test/ref/wordexpr.log
@@ -140,7 +140,7 @@ Allocated zp ZP_WORD:2 [ main::b#2 main::b#1 ]
Allocated zp ZP_BYTE:4 [ main::i#2 main::i#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Expressions based on bytes but resulting in words are as words - eg. b = b + 40*8;
// Upstart
diff --git a/src/test/ref/zeropage-detect-advanced.log b/src/test/ref/zeropage-detect-advanced.log
index 3f855aa31..e008139fb 100644
--- a/src/test/ref/zeropage-detect-advanced.log
+++ b/src/test/ref/zeropage-detect-advanced.log
@@ -107,7 +107,7 @@ Complete equivalence classes
Allocated zp ZP_DWORD:2 [ main::t#0 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Illustrates a problem where absolute addressing is used for zeropage-access
// This is caused by the compiler believing the pointer is into memory" (not knowing the upper part is 0x00 )
diff --git a/src/test/ref/zeropage-sinus.log b/src/test/ref/zeropage-sinus.log
index bed738dd8..3a6a0a68e 100644
--- a/src/test/ref/zeropage-sinus.log
+++ b/src/test/ref/zeropage-sinus.log
@@ -330,7 +330,7 @@ Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Attempt to store and use a sinus on zeropage
// $00/$11 is carefully chosen to be $ff - which plays well with the processor port
diff --git a/src/test/ref/zpparammin.log b/src/test/ref/zpparammin.log
index 8dda41790..6d1b31ef7 100644
--- a/src/test/ref/zpparammin.log
+++ b/src/test/ref/zpparammin.log
@@ -370,7 +370,7 @@ Allocated zp ZP_BYTE:15 [ sum::$0 ]
Allocated zp ZP_BYTE:16 [ sum::return#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"
diff --git a/src/test/ref/zpptr.log b/src/test/ref/zpptr.log
index 57532c837..5e1da538f 100644
--- a/src/test/ref/zpptr.log
+++ b/src/test/ref/zpptr.log
@@ -255,7 +255,7 @@ Allocated zp ZP_WORD:7 [ main::w#0 ]
Allocated zp ZP_WORD:9 [ main::zpptr2#1 ]
INITIAL ASM
-Target platform is c64basic
+Target platform is c64basic / 6502X
// File Comments
// Upstart
.pc = $801 "Basic"