openfl
Version:
A fast, productive library for 2D cross-platform development.
773 lines (757 loc) • 33.6 kB
JavaScript
// Class: openfl.utils.AGALMiniAssembler
var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this
$global.Object.defineProperty(exports, "__esModule", {value: true});
var __map_reserved = {};
// Imports
var $hxClasses = require("./../../hxClasses_stub").default;
var $hxEnums = require("./../../hxEnums_stub").default;
var $import = require("./../../import_stub").default;
function openfl_Lib() {return require("./../../openfl/Lib");}
function openfl_utils_ByteArrayData() {return require("./../../openfl/utils/ByteArrayData");}
function StringTools() {return require("./../../StringTools");}
function EReg() {return require("./../../EReg");}
function HxOverrides() {return require("./../../HxOverrides");}
function lime_utils_Log() {return require("./../../lime/utils/Log");}
function Std() {return require("./../../Std");}
function _$UInt_UInt_$Impl_$() {return require("./../../_UInt/UInt_Impl_");}
function openfl_utils__$ByteArray_ByteArray_$Impl_$() {return require("./../../openfl/utils/_ByteArray/ByteArray_Impl_");}
function openfl_utils__$AGALMiniAssembler_Register() {return require("./../../openfl/utils/_AGALMiniAssembler/Register");}
function haxe_ds_StringMap() {return require("./../../haxe/ds/StringMap");}
function openfl_utils__$AGALMiniAssembler_OpCode() {return require("./../../openfl/utils/_AGALMiniAssembler/OpCode");}
function openfl_utils__$AGALMiniAssembler_Sampler() {return require("./../../openfl/utils/_AGALMiniAssembler/Sampler");}
// Constructor
var AGALMiniAssembler = function(debugging) {
if(debugging == null) {
debugging = false;
}
this.debugEnabled = false;
this.debugEnabled = debugging;
if(!AGALMiniAssembler.initialized) {
AGALMiniAssembler.init();
}
}
// Meta
AGALMiniAssembler.__name__ = "openfl.utils.AGALMiniAssembler";
AGALMiniAssembler.__isInterface__ = false;
AGALMiniAssembler.prototype = {
assemble2: function(context3D,version,vertexSource,fragmentSource) {
var agalVertex = this.assemble("vertex",vertexSource,version);
var agalFragment = this.assemble("fragment",fragmentSource,version);
var program = context3D.createProgram();
program.upload(agalVertex,agalFragment);
return program;
},
assemble: function(mode,source,version,ignoreLimits) {
if(ignoreLimits == null) {
ignoreLimits = false;
}
if(version == null) {
version = 1;
}
var start = (openfl_Lib().default).getTimer();
var this1 = new (openfl_utils_ByteArrayData().default)(0);
this.agalcode = this1;
this.error = "";
var isFrag = false;
if(mode == "fragment") {
isFrag = true;
} else if(mode != "vertex") {
this.error = "ERROR: mode needs to be \"" + "fragment" + "\" or \"" + "vertex" + "\" but is \"" + mode + "\".";
}
this.agalcode.set_endian("littleEndian");
this.agalcode.writeByte(160);
this.agalcode.writeUnsignedInt(version);
this.agalcode.writeByte(161);
this.agalcode.writeByte(isFrag ? 1 : 0);
this.initregmap(version,ignoreLimits);
var lines = (StringTools().default).replace(source,"\r","\n").split("\n");
var nops = 0;
var lng = lines.length;
var reg1 = new (EReg().default)("<.*>","g");
var reg2 = new (EReg().default)("([\\w\\.\\-\\+]+)","gi");
var reg3 = new (EReg().default)("^\\w{3}","ig");
var reg4 = new (EReg().default)("vc\\[([vofi][acostdip]?[d]?)(\\d*)?(\\.[xyzw](\\+\\d{1,3})?)?\\](\\.[xyzw]{1,4})?|([vofi][acostdip]?[d]?)(\\d*)?(\\.[xyzw]{1,4})?","gi");
var reg5 = new (EReg().default)("\\[.*\\]","ig");
var reg6 = new (EReg().default)("^\\b[A-Za-z]{1,3}","ig");
var reg7 = new (EReg().default)("\\d+","");
var reg8 = new (EReg().default)("(\\.[xyzw]{1,4})","");
var reg9 = new (EReg().default)("[A-Za-z]{1,3}","ig");
var reg10 = new (EReg().default)("(\\.[xyzw]{1,1})","");
var reg11 = new (EReg().default)("\\+\\d{1,3}","ig");
var i = 0;
while(i < lng && this.error == "") {
var line = (StringTools().default).trim(lines[i]);
var startcomment = line.indexOf("//");
if(startcomment != -1) {
line = (HxOverrides().default).substr(line,0,startcomment);
}
var optsi = reg1.match(line) ? reg1.matchedPos().pos : -1;
var opts = null;
if(optsi != -1) {
opts = this.match((HxOverrides().default).substr(line,optsi,null),reg2);
line = (HxOverrides().default).substr(line,0,optsi);
}
var opCode = null;
var opFound = null;
if(reg3.match(line)) {
opCode = reg3.matched(0);
opFound = AGALMiniAssembler.OPMAP.get(opCode);
}
if(opFound == null) {
if(line.length >= 3) {
(lime_utils_Log().default).warn("warning: bad line " + i + ": " + lines[i],{ fileName : "../node_modules/openfl-haxelib/src/openfl/utils/AGALMiniAssembler.hx", lineNumber : 262, className : "openfl.utils.AGALMiniAssembler", methodName : "assemble"});
}
++i;
continue;
}
if(this.debugEnabled) {
(lime_utils_Log().default).info(opFound,{ fileName : "../node_modules/openfl-haxelib/src/openfl/utils/AGALMiniAssembler.hx", lineNumber : 272, className : "openfl.utils.AGALMiniAssembler", methodName : "assemble"});
}
if(opFound == null) {
if(line.length >= 3) {
(lime_utils_Log().default).warn("warning: bad line " + i + ": " + lines[i],{ fileName : "../node_modules/openfl-haxelib/src/openfl/utils/AGALMiniAssembler.hx", lineNumber : 279, className : "openfl.utils.AGALMiniAssembler", methodName : "assemble"});
}
++i;
continue;
}
line = (HxOverrides().default).substr(line,line.indexOf(opFound.name) + opFound.name.length,null);
if((opFound.flags & 256) != 0 && version < 2) {
this.error = "error: opcode requires version 2.";
break;
}
if((opFound.flags & 64) != 0 && isFrag) {
this.error = "error: opcode is only allowed in vertex programs.";
break;
}
if((opFound.flags & 32) != 0 && !isFrag) {
this.error = "error: opcode is only allowed in fragment programs.";
break;
}
if(this.verbose) {
(lime_utils_Log().default).info("emit opcode=" + (Std().default).string(opFound),{ fileName : "../node_modules/openfl-haxelib/src/openfl/utils/AGALMiniAssembler.hx", lineNumber : 308, className : "openfl.utils.AGALMiniAssembler", methodName : "assemble"});
}
this.agalcode.writeUnsignedInt(opFound.emitCode);
++nops;
if(nops > 4096) {
this.error = "error: too many opcodes. maximum is " + 4096 + ".";
break;
}
var regs = this.match(line,reg4);
if(regs.length != opFound.numRegister) {
this.error = "error: wrong number of operands. found " + regs.length + " but expected " + opFound.numRegister + ".";
break;
}
var badreg = false;
var pad = 160;
var regLength = regs.length;
var _g = 0;
var _g1 = regLength;
while(_g < _g1) {
var j = _g++;
var isRelative = false;
var relreg = this.match(regs[j],reg5);
if(relreg.length > 0) {
regs[j] = (StringTools().default).replace(regs[j],relreg[0],"0");
if(this.verbose) {
(lime_utils_Log().default).info("IS REL",{ fileName : "../node_modules/openfl-haxelib/src/openfl/utils/AGALMiniAssembler.hx", lineNumber : 344, className : "openfl.utils.AGALMiniAssembler", methodName : "assemble"});
}
isRelative = true;
}
var res = this.match(regs[j],reg6);
if(res.length == 0) {
this.error = "error: could not parse operand " + j + " (" + regs[j] + ").";
badreg = true;
break;
}
var regFound = AGALMiniAssembler.REGMAP.get(res[0]);
if(this.debugEnabled) {
(lime_utils_Log().default).info(regFound,{ fileName : "../node_modules/openfl-haxelib/src/openfl/utils/AGALMiniAssembler.hx", lineNumber : 363, className : "openfl.utils.AGALMiniAssembler", methodName : "assemble"});
}
if(regFound == null) {
this.error = "error: could not find register name for operand " + j + " (" + regs[j] + ").";
badreg = true;
break;
}
if(isFrag) {
if((regFound.flags & 32) == 0) {
this.error = "error: register operand " + j + " (" + regs[j] + ") only allowed in vertex programs.";
badreg = true;
break;
}
if(isRelative) {
this.error = "error: register operand " + j + " (" + regs[j] + ") relative adressing not allowed in fragment programs.";
badreg = true;
break;
}
} else if((regFound.flags & 64) == 0) {
this.error = "error: register operand " + j + " (" + regs[j] + ") only allowed in fragment programs.";
badreg = true;
break;
}
regs[j] = (HxOverrides().default).substr(regs[j],regs[j].indexOf(regFound.name) + regFound.name.length,null);
var idxmatch = isRelative ? this.match(relreg[0],reg7) : this.match(regs[j],reg7);
var regidx = 0;
if(idxmatch.length > 0) {
regidx = (Std().default).parseInt(idxmatch[0]);
}
if((_$UInt_UInt_$Impl_$().default).gt(regidx,regFound.range)) {
var this2 = regFound.range + 1;
this.error = "error: register operand " + j + " (" + regs[j] + ") index exceeds limit of " + (Std().default).string(this2 == null ? null : (_$UInt_UInt_$Impl_$().default).toFloat(this2)) + ".";
badreg = true;
break;
}
var regmask = 0;
var maskmatch = this.match(regs[j],reg8);
var isDest = j == 0 && (opFound.flags & 128) == 0;
var isSampler = j == 2 && (opFound.flags & 8) != 0;
var reltype = 0;
var relsel = 0;
var reloffset = 0;
if(isDest && isRelative) {
this.error = "error: relative can not be destination";
badreg = true;
break;
}
if(maskmatch.length > 0) {
regmask = 0;
var cv = 0;
var maskLength = maskmatch[0].length;
var k = 1;
while(k < maskLength) {
cv = (HxOverrides().default).cca(maskmatch[0],k) - 120;
if((_$UInt_UInt_$Impl_$().default).gt(cv,2)) {
cv = 3;
}
if(isDest) {
regmask |= 1 << cv;
} else {
regmask = regmask | cv << (k - 1 << 1);
}
++k;
}
if(!isDest) {
while(k <= 4) {
regmask = regmask | cv << (k - 1 << 1);
++k;
}
}
} else {
regmask = isDest ? 15 : 228;
}
if(isRelative) {
var relname = this.match(relreg[0],reg9);
var regFoundRel = AGALMiniAssembler.REGMAP.get(relname[0]);
if(regFoundRel == null) {
this.error = "error: bad index register";
badreg = true;
break;
}
reltype = regFoundRel.emitCode;
var selmatch = this.match(relreg[0],reg10);
if(selmatch.length == 0) {
this.error = "error: bad index register select";
badreg = true;
break;
}
relsel = (HxOverrides().default).cca(selmatch[0],1) - 120;
if((_$UInt_UInt_$Impl_$().default).gt(relsel,2)) {
relsel = 3;
}
var relofs = this.match(relreg[0],reg11);
if(relofs.length > 0) {
reloffset = (Std().default).parseInt(relofs[0]);
}
if(reloffset < 0 || reloffset > 255) {
this.error = "error: index offset " + reloffset + " out of bounds. [0..255]";
badreg = true;
break;
}
if(this.verbose) {
(lime_utils_Log().default).info("RELATIVE: type=" + reltype + "==" + relname[0] + " sel=" + (Std().default).string(relsel == null ? null : (_$UInt_UInt_$Impl_$().default).toFloat(relsel)) + "==" + selmatch[0] + " idx=" + (Std().default).string(regidx == null ? null : (_$UInt_UInt_$Impl_$().default).toFloat(regidx)) + " offset=" + reloffset,{ fileName : "../node_modules/openfl-haxelib/src/openfl/utils/AGALMiniAssembler.hx", lineNumber : 518, className : "openfl.utils.AGALMiniAssembler", methodName : "assemble"});
}
}
if(this.verbose) {
(lime_utils_Log().default).info(" emit argcode=" + (Std().default).string(regFound) + "[" + (Std().default).string(regidx == null ? null : (_$UInt_UInt_$Impl_$().default).toFloat(regidx)) + "][" + regmask + "]",{ fileName : "../node_modules/openfl-haxelib/src/openfl/utils/AGALMiniAssembler.hx", lineNumber : 525, className : "openfl.utils.AGALMiniAssembler", methodName : "assemble"});
}
if(isDest) {
this.agalcode.writeShort(regidx);
this.agalcode.writeByte(regmask);
this.agalcode.writeByte(regFound.emitCode);
pad -= 32;
} else if(isSampler) {
if(this.verbose) {
(lime_utils_Log().default).info(" emit sampler",{ fileName : "../node_modules/openfl-haxelib/src/openfl/utils/AGALMiniAssembler.hx", lineNumber : 541, className : "openfl.utils.AGALMiniAssembler", methodName : "assemble"});
}
var samplerbits = 5;
var optsLength = opts == null ? 0 : opts.length;
var bias = 0.0;
var _g2 = 0;
var _g11 = optsLength;
while(_g2 < _g11) {
var k1 = _g2++;
if(this.verbose) {
(lime_utils_Log().default).info(" opt: " + opts[k1],{ fileName : "../node_modules/openfl-haxelib/src/openfl/utils/AGALMiniAssembler.hx", lineNumber : 552, className : "openfl.utils.AGALMiniAssembler", methodName : "assemble"});
}
var optfound = AGALMiniAssembler.SAMPLEMAP.get(opts[k1]);
if(optfound == null) {
bias = (Std().default).parseFloat(opts[k1]);
if(this.verbose) {
(lime_utils_Log().default).info(" bias: " + bias,{ fileName : "../node_modules/openfl-haxelib/src/openfl/utils/AGALMiniAssembler.hx", lineNumber : 565, className : "openfl.utils.AGALMiniAssembler", methodName : "assemble"});
}
} else {
if(optfound.flag != 16) {
samplerbits &= ~(15 << optfound.flag);
}
samplerbits = samplerbits | optfound.mask << optfound.flag;
}
}
this.agalcode.writeShort(regidx);
this.agalcode.writeByte((Std().default).int(bias * 8.0));
this.agalcode.writeByte(0);
this.agalcode.writeUnsignedInt(samplerbits);
if(this.verbose) {
(lime_utils_Log().default).info(" bits: " + (samplerbits - 5),{ fileName : "../node_modules/openfl-haxelib/src/openfl/utils/AGALMiniAssembler.hx", lineNumber : 586, className : "openfl.utils.AGALMiniAssembler", methodName : "assemble"});
}
pad -= 64;
} else {
if(j == 0) {
this.agalcode.writeUnsignedInt(0);
pad -= 32;
}
this.agalcode.writeShort(regidx);
this.agalcode.writeByte(reloffset);
this.agalcode.writeByte(regmask);
this.agalcode.writeByte(regFound.emitCode);
this.agalcode.writeByte(reltype);
this.agalcode.writeShort(isRelative ? relsel | 32768 : 0);
pad -= 64;
}
}
var j1 = 0;
while(j1 < pad) {
this.agalcode.writeByte(0);
j1 += 8;
}
if(badreg) {
break;
}
++i;
}
if(this.error != "") {
this.error += "\n at line " + i + " " + lines[i];
(openfl_utils__$ByteArray_ByteArray_$Impl_$().default).set_length(this.agalcode,0);
(lime_utils_Log().default).info(this.error,{ fileName : "../node_modules/openfl-haxelib/src/openfl/utils/AGALMiniAssembler.hx", lineNumber : 631, className : "openfl.utils.AGALMiniAssembler", methodName : "assemble"});
}
if(this.debugEnabled) {
var dbgLine = "generated bytecode:";
var agalLength = (openfl_utils__$ByteArray_ByteArray_$Impl_$().default).get_length(this.agalcode);
var _g3 = 0;
var _g12 = agalLength;
while(_g3 < _g12) {
var index = _g3++;
if(index % 16 == 0) {
dbgLine += "\n";
}
if(index % 4 == 0) {
dbgLine += " ";
}
var byteStr = (StringTools().default).hex(this.agalcode.get(index),2);
if(byteStr.length < 2) {
byteStr = "0" + byteStr;
}
dbgLine += byteStr;
}
(lime_utils_Log().default).info(dbgLine,{ fileName : "../node_modules/openfl-haxelib/src/openfl/utils/AGALMiniAssembler.hx", lineNumber : 662, className : "openfl.utils.AGALMiniAssembler", methodName : "assemble"});
}
if(this.verbose) {
(lime_utils_Log().default).info("AGALMiniAssembler.assemble time: " + ((openfl_Lib().default).getTimer() - start) / 1000 + "s",{ fileName : "../node_modules/openfl-haxelib/src/openfl/utils/AGALMiniAssembler.hx", lineNumber : 667, className : "openfl.utils.AGALMiniAssembler", methodName : "assemble"});
}
return this.agalcode;
},
initregmap: function(version,ignorelimits) {
var this1 = AGALMiniAssembler.REGMAP;
var v = new (openfl_utils__$AGALMiniAssembler_Register().default)("va","vertex attribute",0,ignorelimits ? 1024 : version == 1 || version == 2 ? 7 : 15,66);
this1.set("va",v);
var this2 = AGALMiniAssembler.REGMAP;
var v1 = new (openfl_utils__$AGALMiniAssembler_Register().default)("vc","vertex constant",1,ignorelimits ? 1024 : version == 1 ? 127 : 249,66);
this2.set("vc",v1);
var this3 = AGALMiniAssembler.REGMAP;
var v2 = new (openfl_utils__$AGALMiniAssembler_Register().default)("vt","vertex temporary",2,ignorelimits ? 1024 : version == 1 ? 7 : 25,67);
this3.set("vt",v2);
var this4 = AGALMiniAssembler.REGMAP;
var v3 = new (openfl_utils__$AGALMiniAssembler_Register().default)("vo","vertex output",3,ignorelimits ? 1024 : 0,65);
this4.set("vo",v3);
var this5 = AGALMiniAssembler.REGMAP;
var v4 = new (openfl_utils__$AGALMiniAssembler_Register().default)("vi","varying",4,ignorelimits ? 1024 : version == 1 ? 7 : 9,99);
this5.set("vi",v4);
var this6 = AGALMiniAssembler.REGMAP;
var v5 = new (openfl_utils__$AGALMiniAssembler_Register().default)("fc","fragment constant",1,ignorelimits ? 1024 : version == 1 ? 27 : version == 2 ? 63 : 199,34);
this6.set("fc",v5);
var this7 = AGALMiniAssembler.REGMAP;
var v6 = new (openfl_utils__$AGALMiniAssembler_Register().default)("ft","fragment temporary",2,ignorelimits ? 1024 : version == 1 ? 7 : 25,35);
this7.set("ft",v6);
var this8 = AGALMiniAssembler.REGMAP;
var v7 = new (openfl_utils__$AGALMiniAssembler_Register().default)("fs","texture sampler",5,ignorelimits ? 1024 : 7,34);
this8.set("fs",v7);
var this9 = AGALMiniAssembler.REGMAP;
var v8 = new (openfl_utils__$AGALMiniAssembler_Register().default)("fo","fragment output",3,ignorelimits ? 1024 : version == 1 ? 0 : 3,33);
this9.set("fo",v8);
var this10 = AGALMiniAssembler.REGMAP;
var v9 = new (openfl_utils__$AGALMiniAssembler_Register().default)("fd","fragment depth output",6,ignorelimits ? 1024 : version == 1 ? -1 : 0,33);
this10.set("fd",v9);
var this11 = AGALMiniAssembler.REGMAP;
var v10 = new (openfl_utils__$AGALMiniAssembler_Register().default)("iid","instance id",7,ignorelimits ? 1024 : 0,66);
this11.set("iid",v10);
var this12 = AGALMiniAssembler.REGMAP;
var v11 = AGALMiniAssembler.REGMAP.get("vo");
this12.set("op",v11);
var this13 = AGALMiniAssembler.REGMAP;
var v12 = AGALMiniAssembler.REGMAP.get("vi");
this13.set("i",v12);
var this14 = AGALMiniAssembler.REGMAP;
var v13 = AGALMiniAssembler.REGMAP.get("vi");
this14.set("v",v13);
var this15 = AGALMiniAssembler.REGMAP;
var v14 = AGALMiniAssembler.REGMAP.get("fo");
this15.set("oc",v14);
var this16 = AGALMiniAssembler.REGMAP;
var v15 = AGALMiniAssembler.REGMAP.get("fd");
this16.set("od",v15);
var this17 = AGALMiniAssembler.REGMAP;
var v16 = AGALMiniAssembler.REGMAP.get("vi");
this17.set("fi",v16);
},
match: function(value,reg) {
var matches = [];
var index = 0;
var match;
while(reg.matchSub(value,index)) {
match = reg.matched(0);
matches.push(match);
index = reg.matchedPos().pos + match.length;
}
return matches;
}
};
AGALMiniAssembler.prototype.__class__ = AGALMiniAssembler.prototype.constructor = $hxClasses["openfl.utils.AGALMiniAssembler"] = AGALMiniAssembler;
// Init
// Statics
AGALMiniAssembler.init = function() {
AGALMiniAssembler.initialized = true;
var this1 = AGALMiniAssembler.OPMAP;
var v = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("mov",2,0,0);
this1.set("mov",v);
var this2 = AGALMiniAssembler.OPMAP;
var v1 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("add",3,1,0);
this2.set("add",v1);
var this3 = AGALMiniAssembler.OPMAP;
var v2 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("sub",3,2,0);
this3.set("sub",v2);
var this4 = AGALMiniAssembler.OPMAP;
var v3 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("mul",3,3,0);
this4.set("mul",v3);
var this5 = AGALMiniAssembler.OPMAP;
var v4 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("div",3,4,0);
this5.set("div",v4);
var this6 = AGALMiniAssembler.OPMAP;
var v5 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("rcp",2,5,0);
this6.set("rcp",v5);
var this7 = AGALMiniAssembler.OPMAP;
var v6 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("min",3,6,0);
this7.set("min",v6);
var this8 = AGALMiniAssembler.OPMAP;
var v7 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("max",3,7,0);
this8.set("max",v7);
var this9 = AGALMiniAssembler.OPMAP;
var v8 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("frc",2,8,0);
this9.set("frc",v8);
var this10 = AGALMiniAssembler.OPMAP;
var v9 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("sqt",2,9,0);
this10.set("sqt",v9);
var this11 = AGALMiniAssembler.OPMAP;
var v10 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("rsq",2,10,0);
this11.set("rsq",v10);
var this12 = AGALMiniAssembler.OPMAP;
var v11 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("pow",3,11,0);
this12.set("pow",v11);
var this13 = AGALMiniAssembler.OPMAP;
var v12 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("log",2,12,0);
this13.set("log",v12);
var this14 = AGALMiniAssembler.OPMAP;
var v13 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("exp",2,13,0);
this14.set("exp",v13);
var this15 = AGALMiniAssembler.OPMAP;
var v14 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("nrm",2,14,0);
this15.set("nrm",v14);
var this16 = AGALMiniAssembler.OPMAP;
var v15 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("sin",2,15,0);
this16.set("sin",v15);
var this17 = AGALMiniAssembler.OPMAP;
var v16 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("cos",2,16,0);
this17.set("cos",v16);
var this18 = AGALMiniAssembler.OPMAP;
var v17 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("crs",3,17,0);
this18.set("crs",v17);
var this19 = AGALMiniAssembler.OPMAP;
var v18 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("dp3",3,18,0);
this19.set("dp3",v18);
var this20 = AGALMiniAssembler.OPMAP;
var v19 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("dp4",3,19,0);
this20.set("dp4",v19);
var this21 = AGALMiniAssembler.OPMAP;
var v20 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("abs",2,20,0);
this21.set("abs",v20);
var this22 = AGALMiniAssembler.OPMAP;
var v21 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("neg",2,21,0);
this22.set("neg",v21);
var this23 = AGALMiniAssembler.OPMAP;
var v22 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("sat",2,22,0);
this23.set("sat",v22);
var this24 = AGALMiniAssembler.OPMAP;
var v23 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("m33",3,23,16);
this24.set("m33",v23);
var this25 = AGALMiniAssembler.OPMAP;
var v24 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("m44",3,24,16);
this25.set("m44",v24);
var this26 = AGALMiniAssembler.OPMAP;
var v25 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("m34",3,25,16);
this26.set("m34",v25);
var this27 = AGALMiniAssembler.OPMAP;
var v26 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("ddx",2,26,288);
this27.set("ddx",v26);
var this28 = AGALMiniAssembler.OPMAP;
var v27 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("ddy",2,27,288);
this28.set("ddy",v27);
var this29 = AGALMiniAssembler.OPMAP;
var v28 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("ife",2,28,897);
this29.set("ife",v28);
var this30 = AGALMiniAssembler.OPMAP;
var v29 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("ine",2,29,897);
this30.set("ine",v29);
var this31 = AGALMiniAssembler.OPMAP;
var v30 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("ifg",2,30,897);
this31.set("ifg",v30);
var this32 = AGALMiniAssembler.OPMAP;
var v31 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("ifl",2,31,897);
this32.set("ifl",v31);
var this33 = AGALMiniAssembler.OPMAP;
var v32 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("els",0,32,1921);
this33.set("els",v32);
var this34 = AGALMiniAssembler.OPMAP;
var v33 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("eif",0,33,1409);
this34.set("eif",v33);
var this35 = AGALMiniAssembler.OPMAP;
var v34 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("kil",1,39,160);
this35.set("kil",v34);
var this36 = AGALMiniAssembler.OPMAP;
var v35 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("tex",3,40,40);
this36.set("tex",v35);
var this37 = AGALMiniAssembler.OPMAP;
var v36 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("sge",3,41,0);
this37.set("sge",v36);
var this38 = AGALMiniAssembler.OPMAP;
var v37 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("slt",3,42,0);
this38.set("slt",v37);
var this39 = AGALMiniAssembler.OPMAP;
var v38 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("sgn",2,43,0);
this39.set("sgn",v38);
var this40 = AGALMiniAssembler.OPMAP;
var v39 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("seq",3,44,0);
this40.set("seq",v39);
var this41 = AGALMiniAssembler.OPMAP;
var v40 = new (openfl_utils__$AGALMiniAssembler_OpCode().default)("sne",3,45,0);
this41.set("sne",v40);
var this42 = AGALMiniAssembler.SAMPLEMAP;
var v41 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("rgba",8,0);
this42.set("rgba",v41);
var this43 = AGALMiniAssembler.SAMPLEMAP;
var v42 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("compressed",8,1);
this43.set("compressed",v42);
var this44 = AGALMiniAssembler.SAMPLEMAP;
var v43 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("compressedalpha",8,2);
this44.set("compressedalpha",v43);
var this45 = AGALMiniAssembler.SAMPLEMAP;
var v44 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("dxt1",8,1);
this45.set("dxt1",v44);
var this46 = AGALMiniAssembler.SAMPLEMAP;
var v45 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("dxt5",8,2);
this46.set("dxt5",v45);
var this47 = AGALMiniAssembler.SAMPLEMAP;
var v46 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("video",8,3);
this47.set("video",v46);
var this48 = AGALMiniAssembler.SAMPLEMAP;
var v47 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("2d",12,0);
this48.set("2d",v47);
var this49 = AGALMiniAssembler.SAMPLEMAP;
var v48 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("3d",12,2);
this49.set("3d",v48);
var this50 = AGALMiniAssembler.SAMPLEMAP;
var v49 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("cube",12,1);
this50.set("cube",v49);
var this51 = AGALMiniAssembler.SAMPLEMAP;
var v50 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("mipnearest",24,1);
this51.set("mipnearest",v50);
var this52 = AGALMiniAssembler.SAMPLEMAP;
var v51 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("miplinear",24,2);
this52.set("miplinear",v51);
var this53 = AGALMiniAssembler.SAMPLEMAP;
var v52 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("mipnone",24,0);
this53.set("mipnone",v52);
var this54 = AGALMiniAssembler.SAMPLEMAP;
var v53 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("nomip",24,0);
this54.set("nomip",v53);
var this55 = AGALMiniAssembler.SAMPLEMAP;
var v54 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("nearest",28,0);
this55.set("nearest",v54);
var this56 = AGALMiniAssembler.SAMPLEMAP;
var v55 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("linear",28,1);
this56.set("linear",v55);
var this57 = AGALMiniAssembler.SAMPLEMAP;
var v56 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("anisotropic2x",28,2);
this57.set("anisotropic2x",v56);
var this58 = AGALMiniAssembler.SAMPLEMAP;
var v57 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("anisotropic4x",28,3);
this58.set("anisotropic4x",v57);
var this59 = AGALMiniAssembler.SAMPLEMAP;
var v58 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("anisotropic8x",28,4);
this59.set("anisotropic8x",v58);
var this60 = AGALMiniAssembler.SAMPLEMAP;
var v59 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("anisotropic16x",28,5);
this60.set("anisotropic16x",v59);
var this61 = AGALMiniAssembler.SAMPLEMAP;
var v60 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("centroid",16,1);
this61.set("centroid",v60);
var this62 = AGALMiniAssembler.SAMPLEMAP;
var v61 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("single",16,2);
this62.set("single",v61);
var this63 = AGALMiniAssembler.SAMPLEMAP;
var v62 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("ignoresampler",16,4);
this63.set("ignoresampler",v62);
var this64 = AGALMiniAssembler.SAMPLEMAP;
var v63 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("repeat",20,1);
this64.set("repeat",v63);
var this65 = AGALMiniAssembler.SAMPLEMAP;
var v64 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("wrap",20,1);
this65.set("wrap",v64);
var this66 = AGALMiniAssembler.SAMPLEMAP;
var v65 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("clamp",20,0);
this66.set("clamp",v65);
var this67 = AGALMiniAssembler.SAMPLEMAP;
var v66 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("clamp_u_repeat_v",20,2);
this67.set("clamp_u_repeat_v",v66);
var this68 = AGALMiniAssembler.SAMPLEMAP;
var v67 = new (openfl_utils__$AGALMiniAssembler_Sampler().default)("repeat_u_clamp_v",20,3);
this68.set("repeat_u_clamp_v",v67);
}
AGALMiniAssembler.__meta__ = { obj : { SuppressWarnings : [["checkstyle:ConstantName","checkstyle:FieldDocComment"]]}}
AGALMiniAssembler.OPMAP = new (haxe_ds_StringMap().default)()
AGALMiniAssembler.REGMAP = new (haxe_ds_StringMap().default)()
AGALMiniAssembler.SAMPLEMAP = new (haxe_ds_StringMap().default)()
AGALMiniAssembler.MAX_NESTING = 4
AGALMiniAssembler.MAX_OPCODES = 4096
AGALMiniAssembler.FRAGMENT = "fragment"
AGALMiniAssembler.VERTEX = "vertex"
AGALMiniAssembler.SAMPLER_TYPE_SHIFT = 8
AGALMiniAssembler.SAMPLER_DIM_SHIFT = 12
AGALMiniAssembler.SAMPLER_SPECIAL_SHIFT = 16
AGALMiniAssembler.SAMPLER_REPEAT_SHIFT = 20
AGALMiniAssembler.SAMPLER_MIPMAP_SHIFT = 24
AGALMiniAssembler.SAMPLER_FILTER_SHIFT = 28
AGALMiniAssembler.REG_WRITE = 1
AGALMiniAssembler.REG_READ = 2
AGALMiniAssembler.REG_FRAG = 32
AGALMiniAssembler.REG_VERT = 64
AGALMiniAssembler.OP_SCALAR = 1
AGALMiniAssembler.OP_SPECIAL_TEX = 8
AGALMiniAssembler.OP_SPECIAL_MATRIX = 16
AGALMiniAssembler.OP_FRAG_ONLY = 32
AGALMiniAssembler.OP_VERT_ONLY = 64
AGALMiniAssembler.OP_NO_DEST = 128
AGALMiniAssembler.OP_VERSION2 = 256
AGALMiniAssembler.OP_INCNEST = 512
AGALMiniAssembler.OP_DECNEST = 1024
AGALMiniAssembler.MOV = "mov"
AGALMiniAssembler.ADD = "add"
AGALMiniAssembler.SUB = "sub"
AGALMiniAssembler.MUL = "mul"
AGALMiniAssembler.DIV = "div"
AGALMiniAssembler.RCP = "rcp"
AGALMiniAssembler.MIN = "min"
AGALMiniAssembler.MAX = "max"
AGALMiniAssembler.FRC = "frc"
AGALMiniAssembler.SQT = "sqt"
AGALMiniAssembler.RSQ = "rsq"
AGALMiniAssembler.POW = "pow"
AGALMiniAssembler.LOG = "log"
AGALMiniAssembler.EXP = "exp"
AGALMiniAssembler.NRM = "nrm"
AGALMiniAssembler.SIN = "sin"
AGALMiniAssembler.COS = "cos"
AGALMiniAssembler.CRS = "crs"
AGALMiniAssembler.DP3 = "dp3"
AGALMiniAssembler.DP4 = "dp4"
AGALMiniAssembler.ABS = "abs"
AGALMiniAssembler.NEG = "neg"
AGALMiniAssembler.SAT = "sat"
AGALMiniAssembler.M33 = "m33"
AGALMiniAssembler.M44 = "m44"
AGALMiniAssembler.M34 = "m34"
AGALMiniAssembler.DDX = "ddx"
AGALMiniAssembler.DDY = "ddy"
AGALMiniAssembler.IFE = "ife"
AGALMiniAssembler.INE = "ine"
AGALMiniAssembler.IFG = "ifg"
AGALMiniAssembler.IFL = "ifl"
AGALMiniAssembler.IEG = "ieg"
AGALMiniAssembler.IEL = "iel"
AGALMiniAssembler.ELS = "els"
AGALMiniAssembler.EIF = "eif"
AGALMiniAssembler.TED = "ted"
AGALMiniAssembler.KIL = "kil"
AGALMiniAssembler.TEX = "tex"
AGALMiniAssembler.SGE = "sge"
AGALMiniAssembler.SLT = "slt"
AGALMiniAssembler.SGN = "sgn"
AGALMiniAssembler.SEQ = "seq"
AGALMiniAssembler.SNE = "sne"
AGALMiniAssembler.VA = "va"
AGALMiniAssembler.VC = "vc"
AGALMiniAssembler.VT = "vt"
AGALMiniAssembler.VO = "vo"
AGALMiniAssembler.VI = "vi"
AGALMiniAssembler.FC = "fc"
AGALMiniAssembler.FT = "ft"
AGALMiniAssembler.FS = "fs"
AGALMiniAssembler.FO = "fo"
AGALMiniAssembler.FD = "fd"
AGALMiniAssembler.IID = "iid"
AGALMiniAssembler.D2 = "2d"
AGALMiniAssembler.D3 = "3d"
AGALMiniAssembler.CUBE = "cube"
AGALMiniAssembler.MIPNEAREST = "mipnearest"
AGALMiniAssembler.MIPLINEAR = "miplinear"
AGALMiniAssembler.MIPNONE = "mipnone"
AGALMiniAssembler.NOMIP = "nomip"
AGALMiniAssembler.NEAREST = "nearest"
AGALMiniAssembler.LINEAR = "linear"
AGALMiniAssembler.ANISOTROPIC2X = "anisotropic2x"
AGALMiniAssembler.ANISOTROPIC4X = "anisotropic4x"
AGALMiniAssembler.ANISOTROPIC8X = "anisotropic8x"
AGALMiniAssembler.ANISOTROPIC16X = "anisotropic16x"
AGALMiniAssembler.CENTROID = "centroid"
AGALMiniAssembler.SINGLE = "single"
AGALMiniAssembler.IGNORESAMPLER = "ignoresampler"
AGALMiniAssembler.REPEAT = "repeat"
AGALMiniAssembler.WRAP = "wrap"
AGALMiniAssembler.CLAMP = "clamp"
AGALMiniAssembler.REPEAT_U_CLAMP_V = "repeat_u_clamp_v"
AGALMiniAssembler.CLAMP_U_REPEAT_V = "clamp_u_repeat_v"
AGALMiniAssembler.RGBA = "rgba"
AGALMiniAssembler.COMPRESSED = "compressed"
AGALMiniAssembler.COMPRESSEDALPHA = "compressedalpha"
AGALMiniAssembler.DXT1 = "dxt1"
AGALMiniAssembler.DXT5 = "dxt5"
AGALMiniAssembler.VIDEO = "video"
AGALMiniAssembler.initialized = false
// Export
exports.default = AGALMiniAssembler;