From 7f04876a3196c0aa5021676f0f3345e553145bd4 Mon Sep 17 00:00:00 2001 From: Homer Hsing Date: Fri, 19 Oct 2012 11:18:23 +0800 Subject: Fix Gen7 JMPI compilation Gen7 JMPI Restrictions in bspec: The JIP data type must be Signed DWord --- src/brw_structs.h | 2 +- src/main.c | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/brw_structs.h b/src/brw_structs.h index cd81e78..d93c39f 100644 --- a/src/brw_structs.h +++ b/src/brw_structs.h @@ -1319,7 +1319,7 @@ struct brw_instruction GLint UIP:16; } branch_2_offset; /* for Gen6, Gen7 2-offsets branch; for Gen7 1-offset branch */ - GLint JIP; /* used by Gen6 CALL instructions */ + GLint JIP; /* used by Gen6 CALL instructions; Gen7 JMPI */ struct { GLuint function:4; diff --git a/src/main.c b/src/main.c index b897ad4..ba411a5 100644 --- a/src/main.c +++ b/src/main.c @@ -430,8 +430,16 @@ int main(int argc, char **argv) entry->instruction.bits3.JIP = offset; // for CALL, JMPI else entry->instruction.bits1.branch.JIP = offset; // for CASE,ELSE,FORK,IF,WHILE - } else if(gen_level >= 7) - entry->instruction.bits3.branch_2_offset.JIP = offset; + } else if(gen_level >= 7) { + int opcode = entry->instruction.header.opcode; + /* Gen7 JMPI Restrictions in bspec: + * The JIP data type must be Signed DWord + */ + if(opcode == BRW_OPCODE_JMPI) + entry->instruction.bits3.JIP = offset; + else + entry->instruction.bits3.branch_2_offset.JIP = offset; + } } } -- cgit v1.2.3