From 5ce64001b2b3da6e0efe2db99f89f67a3be1d2ac Mon Sep 17 00:00:00 2001 From: gganesh Date: Thu, 4 Dec 2014 10:51:54 +0000 Subject: [PATCH] Add prefetch support for aarch64 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218349 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/config/aarch64/aarch64.md | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 61b1a3026a9f..8b7bbda075f9 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 597ff8c2e1ef..1b0d30257444 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.47.3