From 79c6bb5f20c2e2c0033bcd020ea643db3a1b11d0 Mon Sep 17 00:00:00 2001 From: Ganesh Gopalasubramanian Date: Thu, 4 Dec 2014 10:51:54 +0000 Subject: [PATCH] Add prefetch support for aarch64 From-SVN: r218349 --- gcc/ChangeLog | 4 ++++ gcc/config/aarch64/aarch64.md | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 61b1a3026a9..8b7bbda075f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2014-12-04 Ganesh Gopalasubramanian + + * config/aarch64/aarch64.md (define_insn "prefetch"): New. + 2014-12-04 Francois-Xavier Coudert * doc/install.texi: Remove mentions of cloog and ppl. diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 597ff8c2e1e..1b0d3025744 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -375,6 +375,33 @@ [(set_attr "type" "no_insn")] ) +(define_insn "prefetch" + [(prefetch (match_operand:DI 0 "address_operand" "r") + (match_operand:QI 1 "const_int_operand" "") + (match_operand:QI 2 "const_int_operand" ""))] + "" + { + const char * pftype[2][4] = + { + {"prfm\\tPLDL1STRM, %a0", + "prfm\\tPLDL3KEEP, %a0", + "prfm\\tPLDL2KEEP, %a0", + "prfm\\tPLDL1KEEP, %a0"}, + {"prfm\\tPSTL1STRM, %a0", + "prfm\\tPSTL3KEEP, %a0", + "prfm\\tPSTL2KEEP, %a0", + "prfm\\tPSTL1KEEP, %a0"}, + }; + + int locality = INTVAL (operands[2]); + + gcc_assert (IN_RANGE (locality, 0, 3)); + + return pftype[INTVAL(operands[1])][locality]; + } + [(set_attr "type" "load1")] +) + (define_insn "trap" [(trap_if (const_int 1) (const_int 8))] "" -- 2.30.2