IsBranch
I(SrcMem | NearBranch | IsBranch | ShadowStack, em_call_near_abs),
I(SrcMemFAddr | ImplicitOps | IsBranch | ShadowStack, em_call_far),
I(SrcMem | NearBranch | IsBranch, em_jmp_abs),
I(SrcMemFAddr | ImplicitOps | IsBranch, em_jmp_far),
X16(D(SrcImmByte | NearBranch | IsBranch)),
I(SrcImmFAddr | No64 | IsBranch | ShadowStack, em_call_far), N,
I(ImplicitOps | NearBranch | SrcImmU16 | IsBranch | ShadowStack, em_ret_near_imm),
I(ImplicitOps | NearBranch | IsBranch | ShadowStack, em_ret),
I(ImplicitOps | SrcImmU16 | IsBranch | ShadowStack, em_ret_far_imm),
I(ImplicitOps | IsBranch | ShadowStack, em_ret_far),
D(ImplicitOps | IsBranch), DI(SrcImmByte | IsBranch | ShadowStack, intn),
D(ImplicitOps | No64 | IsBranch),
II(ImplicitOps | IsBranch | ShadowStack, em_iret, iret),
X3(I(SrcImmByte | NearBranch | IsBranch, em_loop)),
I(SrcImmByte | NearBranch | IsBranch, em_jcxz),
I(SrcImm | NearBranch | IsBranch | ShadowStack, em_call),
D(SrcImm | ImplicitOps | NearBranch | IsBranch),
I(SrcImmFAddr | No64 | IsBranch, em_jmp_far),
D(SrcImmByte | ImplicitOps | NearBranch | IsBranch),
N, I(ImplicitOps | EmulateOnUD | IsBranch | ShadowStack, em_syscall),
I(ImplicitOps | EmulateOnUD | IsBranch | ShadowStack, em_sysenter),
I(ImplicitOps | Priv | EmulateOnUD | IsBranch | ShadowStack, em_sysexit),
X16(D(SrcImm | NearBranch | IsBranch)),
if (!(flags & IsBranch))
ctxt->is_branch = opcode.flags & IsBranch;