]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/arm/crypto.md
Update copyright years in gcc/
[thirdparty/gcc.git] / gcc / config / arm / crypto.md
CommitLineData
021b5e6b 1;; ARMv8-A crypto patterns.
23a5b65a 2;; Copyright (C) 2013-2014 Free Software Foundation, Inc.
021b5e6b
KT
3;; Contributed by ARM Ltd.
4
5;; This file is part of GCC.
6
7;; GCC is free software; you can redistribute it and/or modify it
8;; under the terms of the GNU General Public License as published
9;; by the Free Software Foundation; either version 3, or (at your
10;; option) any later version.
11
12;; GCC is distributed in the hope that it will be useful, but WITHOUT
13;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15;; License for more details.
16
17;; You should have received a copy of the GNU General Public License
18;; along with GCC; see the file COPYING3. If not see
19;; <http://www.gnu.org/licenses/>.
20
21(define_insn "crypto_<crypto_pattern>"
22 [(set (match_operand:<crypto_mode> 0 "register_operand" "=w")
23 (unspec:<crypto_mode> [(match_operand:<crypto_mode> 1
24 "register_operand" "w")]
25 CRYPTO_UNARY))]
26 "TARGET_CRYPTO"
27 "<crypto_pattern>.<crypto_size_sfx>\\t%q0, %q1"
28 [(set_attr "type" "<crypto_type>")]
29)
30
31(define_insn "crypto_<crypto_pattern>"
32 [(set (match_operand:<crypto_mode> 0 "register_operand" "=w")
33 (unspec:<crypto_mode> [(match_operand:<crypto_mode> 1 "register_operand" "0")
34 (match_operand:<crypto_mode> 2 "register_operand" "w")]
35 CRYPTO_BINARY))]
36 "TARGET_CRYPTO"
37 "<crypto_pattern>.<crypto_size_sfx>\\t%q0, %q2"
38 [(set_attr "type" "<crypto_type>")]
39)
40
41(define_insn "crypto_<crypto_pattern>"
42 [(set (match_operand:<crypto_mode> 0 "register_operand" "=w")
43 (unspec:<crypto_mode> [(match_operand:<crypto_mode> 1 "register_operand" "0")
44 (match_operand:<crypto_mode> 2 "register_operand" "w")
45 (match_operand:<crypto_mode> 3 "register_operand" "w")]
46 CRYPTO_TERNARY))]
47 "TARGET_CRYPTO"
48 "<crypto_pattern>.<crypto_size_sfx>\\t%q0, %q2, %q3"
49 [(set_attr "type" "<crypto_type>")]
50)
51
52(define_insn "crypto_sha1h"
53 [(set (match_operand:V4SI 0 "register_operand" "=w")
54 (zero_extend:V4SI
55 (unspec:SI [(vec_select:SI
56 (match_operand:V4SI 1 "register_operand" "w")
57 (parallel [(match_operand:SI 2 "immediate_operand" "i")]))]
58 UNSPEC_SHA1H)))]
59 "TARGET_CRYPTO"
60 "sha1h.32\\t%q0, %q1"
61 [(set_attr "type" "crypto_sha1_fast")]
62)
63
64(define_insn "crypto_vmullp64"
65 [(set (match_operand:TI 0 "register_operand" "=w")
66 (unspec:TI [(match_operand:DI 1 "register_operand" "w")
67 (match_operand:DI 2 "register_operand" "w")]
68 UNSPEC_VMULLP64))]
69 "TARGET_CRYPTO"
70 "vmull.p64\\t%q0, %P1, %P2"
71 [(set_attr "type" "neon_mul_d_long")]
72)
73
74(define_insn "crypto_<crypto_pattern>"
75 [(set (match_operand:V4SI 0 "register_operand" "=w")
76 (unspec:<crypto_mode>
77 [(match_operand:<crypto_mode> 1 "register_operand" "0")
78 (vec_select:SI
79 (match_operand:<crypto_mode> 2 "register_operand" "w")
80 (parallel [(match_operand:SI 4 "immediate_operand" "i")]))
81 (match_operand:<crypto_mode> 3 "register_operand" "w")]
82 CRYPTO_SELECTING))]
83 "TARGET_CRYPTO"
84 "<crypto_pattern>.<crypto_size_sfx>\\t%q0, %q2, %q3"
85 [(set_attr "type" "<crypto_type>")]
86)