summaryrefslogtreecommitdiff
path: root/assembler
diff options
context:
space:
mode:
authorXiang, Haihao <haihao.xiang@intel.com>2013-02-22 11:14:07 +0800
committerBen Widawsky <benjamin.widawsky@intel.com>2013-11-06 09:39:41 -0800
commit9d0287c252cb634db6edef990192cf77d2e120e6 (patch)
treeab0571b3fb108ad9e02e9071a89ff34fb22417c5 /assembler
parent216163b44d2285705d1af1db405be94d69a27fef (diff)
assembler/bdw: Set thread switch for multiple branch instructions
Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com> Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Diffstat (limited to 'assembler')
-rw-r--r--assembler/gram.y10
1 files changed, 8 insertions, 2 deletions
diff --git a/assembler/gram.y b/assembler/gram.y
index f8483d3d..5659e317 100644
--- a/assembler/gram.y
+++ b/assembler/gram.y
@@ -940,7 +940,10 @@ multibranchinstruction:
memset(&$$, 0, sizeof($$));
set_instruction_predicate(&$$, &$1);
set_instruction_opcode(&$$, $2);
- GEN(&$$)->header.thread_control |= BRW_THREAD_SWITCH;
+ if (IS_GENp(8))
+ gen8_set_thread_control(GEN8(&$$), gen8_thread_control(GEN8(&$$)) | BRW_THREAD_SWITCH);
+ else
+ GEN(&$$)->header.thread_control |= BRW_THREAD_SWITCH;
$$.reloc.first_reloc_target = $4.reloc_target;
$$.reloc.first_reloc_offset = $4.imm32;
dst_null_reg.width = $3;
@@ -952,7 +955,10 @@ multibranchinstruction:
memset(&$$, 0, sizeof($$));
set_instruction_predicate(&$$, &$1);
set_instruction_opcode(&$$, $2);
- GEN(&$$)->header.thread_control |= BRW_THREAD_SWITCH;
+ if (IS_GENp(8))
+ gen8_set_thread_control(GEN8(&$$), gen8_thread_control(GEN8(&$$)) | BRW_THREAD_SWITCH);
+ else
+ GEN(&$$)->header.thread_control |= BRW_THREAD_SWITCH;
$$.reloc.first_reloc_target = $4.reloc_target;
$$.reloc.first_reloc_offset = $4.imm32;
$$.reloc.second_reloc_target = $5.reloc_target;