]> git.proxmox.com Git - mirror_qemu.git/commit - target/hexagon/macros.h
Hexagon (target/hexagon) Reduce manipulation of slot_cancelled
authorTaylor Simpson <tsimpson@quicinc.com>
Tue, 7 Mar 2023 02:58:27 +0000 (18:58 -0800)
committerTaylor Simpson <tsimpson@quicinc.com>
Tue, 7 Mar 2023 04:47:12 +0000 (20:47 -0800)
commit7b84fd04bda9aab5735cdf359c2c8e39f0a31713
tree5e4ea7fcaaa70395ccdd45f575b7c5621dc01616
parente28b77a6b46bfec17ffb1f9764713b2c97418fb3
Hexagon (target/hexagon) Reduce manipulation of slot_cancelled

We only need to track slot for predicated stores and predicated HVX
instructions.

Add arguments to the probe helper functions to indicate if the slot
is predicated.

Here is a simple example of the differences in the TCG code generated:

IN:
0x00400094:  0xf900c102 {       if (P0) R2 = and(R0,R1) }

BEFORE
 ---- 00400094
 mov_i32 slot_cancelled,$0x0
 mov_i32 new_r2,r2
 and_i32 tmp0,p0,$0x1
 brcond_i32 tmp0,$0x0,eq,$L1
 and_i32 tmp0,r0,r1
 mov_i32 new_r2,tmp0
 br $L2
 set_label $L1
 or_i32 slot_cancelled,slot_cancelled,$0x8
 set_label $L2
 mov_i32 r2,new_r2

AFTER
 ---- 00400094
 mov_i32 new_r2,r2
 and_i32 tmp0,p0,$0x1
 brcond_i32 tmp0,$0x0,eq,$L1
 and_i32 tmp0,r0,r1
 mov_i32 new_r2,tmp0
 br $L2
 set_label $L1
 set_label $L2
 mov_i32 r2,new_r2

Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230307025828.1612809-14-tsimpson@quicinc.com>
target/hexagon/idef-parser/idef-parser.lex
target/hexagon/idef-parser/idef-parser.y
target/hexagon/idef-parser/parser-helpers.c
target/hexagon/macros.h
target/hexagon/op_helper.c
target/hexagon/op_helper.h
target/hexagon/translate.c
target/hexagon/translate.h