From 915a7cde8fa8d395bc77769ebe3956bb5fa0681d Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 24 Feb 2009 01:53:24 -0500 Subject: [PATCH] Fixed SRCMOD_NEGATE usage when assembling. --- mojoshader_assembler.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/mojoshader_assembler.c b/mojoshader_assembler.c index 85d34ea0..6e044730 100644 --- a/mojoshader_assembler.c +++ b/mojoshader_assembler.c @@ -719,8 +719,14 @@ static int parse_source_token_maybe_relative(Context *ctx, const int relok) int regnum; parse_register_name(ctx, ®type, ®num); - if (ctx->tokenlen > 0) + if (ctx->tokenlen == 0) + { + if (negate) + set_source_mod(ctx, negate, SRCMOD_NONE, SRCMOD_NEGATE, &srcmod); + } // if + else { + assert(ctx->tokenlen > 0); if (check_token_segment(ctx, "_bias")) set_source_mod(ctx, negate, SRCMOD_BIAS, SRCMOD_BIASNEGATE, &srcmod); else if (check_token_segment(ctx, "_bx2")) @@ -735,7 +741,7 @@ static int parse_source_token_maybe_relative(Context *ctx, const int relok) set_source_mod(ctx, negate, SRCMOD_ABS, SRCMOD_ABSNEGATE, &srcmod); else fail(ctx, "Invalid source modifier"); - } // if + } // else uint32 relative = 0; if (nexttoken(ctx) != ((Token) '['))