extern unsigned aarch64_data_alignment (const_tree exp, unsigned align);
extern unsigned aarch64_stack_alignment (const_tree exp, unsigned align);
+extern rtx aarch64_gen_compare_zero_and_branch (rtx_code code, rtx x,
+ rtx_code_label *label);
+
#endif /* GCC_AARCH64_PROTOS_H */
auto label = gen_label_rtx ();
auto tpidr2 = gen_rtx_REG (DImode, R16_REGNUM);
emit_insn (gen_aarch64_read_tpidr2 (tpidr2));
- auto jump = emit_likely_jump_insn (gen_aarch64_cbznedi1 (tpidr2, label));
+ auto pat = aarch64_gen_compare_zero_and_branch (NE, tpidr2, label);
+ auto jump = emit_likely_jump_insn (pat);
JUMP_LABEL (jump) = label;
aarch64_restore_za (operands[0]);
/* Generate conditional branch to LABEL, comparing X to 0 using CODE.
Return the jump instruction. */
-static rtx
+rtx
aarch64_gen_compare_zero_and_branch (rtx_code code, rtx x,
rtx_code_label *label)
{
)
;; For an EQ/NE comparison against zero, emit `CBZ`/`CBNZ`
-(define_insn "aarch64_cbz<optab><mode>1"
+(define_insn "*aarch64_cbz<optab><mode>"
[(set (pc) (if_then_else (EQL (match_operand:GPI 0 "register_operand" "r")
(const_int 0))
(label_ref (match_operand 1))