浏览代码

added limited discard support

Nicolas Cannasse 11 年之前
父节点
当前提交
833a2036d1
共有 1 个文件被更改,包括 15 次插入0 次删除
  1. 15 0
      hxsl/AgalOut.hx

+ 15 - 0
hxsl/AgalOut.hx

@@ -285,6 +285,21 @@ class AgalOut {
 		case TSwiz(e, regs):
 			var r = expr(e);
 			return swiz(r, [for( r in regs ) COMPS[r.getIndex()]]);
+		case TIf( cond, { e : TDiscard }, null ):
+			switch( cond.e ) {
+			case TBinop(bop = OpLt | OpGt, e1, e2) if( e1.t == TFloat ):
+				if( bop == OpGt ) {
+					var tmp = e1;
+					e1 = e2;
+					e2 = e1;
+				}
+				var r = allocReg(TFloat);
+				op(OSub(r, expr(e1), expr(e2)));
+				op(OKil(r));
+				return nullReg;
+			default:
+				throw "Discard cond not supported " + e.e;
+			}
 		default:
 			throw "TODO " + e.e;
 		}