From ef5d2d76506ad18d6d62b6ab67fbc3604395f209 Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Wed, 17 May 2023 20:34:35 +0000 Subject: Add clear_cache expander. 2023-05-17 John David Anglin gcc/ChangeLog: * config/pa/pa.md (clear_cache): New. --- gcc/config/pa/pa.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index 7b7d7f776c7..726e12768f8 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -9940,6 +9940,23 @@ add,l %2,%3,%3\;bv,n %%r0(%3)" [(set_attr "type" "multi") (set_attr "length" "52")]) +(define_expand "clear_cache" + [(match_operand 0 "pmode_register_operand") + (match_operand 1 "pmode_register_operand")] + "" +{ + rtx line_length = gen_reg_rtx (Pmode); + + emit_move_insn (line_length, GEN_INT (MIN_CACHELINE_SIZE)); + if (TARGET_64BIT) + emit_insn (gen_icacheflushdi (operands[0], operands[1], line_length, + gen_reg_rtx (Pmode), gen_reg_rtx (Pmode))); + else + emit_insn (gen_icacheflushsi (operands[0], operands[1], line_length, + gen_reg_rtx (Pmode), gen_reg_rtx (Pmode))); + DONE; +}) + ;; An out-of-line prologue. (define_insn "outline_prologue_call" [(unspec_volatile [(const_int 0)] UNSPECV_OPC) -- cgit v1.2.1