Add LE/BE SHA1H patterns with a V2SI input.
Add LE/BE SHA1H patterns with a V2SI input. This avoids unnecessary DUPs when using intrinsics like vsha1h_u32 (vgetq_lane_u32 (x, 0)). gcc/ * config/aarch64/aarch64-simd.md (aarch64_crypto_sha1hv4si): New pattern. (aarch64_be_crypto_sha1hv4si): New pattern. From-SVN: r241791
This commit is contained in:
parent
45a6c1e363
commit
5304d04437
|
@ -1,3 +1,9 @@
|
|||
2016-11-26 Wilco Dijkstra <wdijkstr@arm.com>
|
||||
|
||||
* config/aarch64/aarch64-simd.md (aarch64_crypto_sha1hv4si):
|
||||
New pattern.
|
||||
(aarch64_be_crypto_sha1hv4si): New pattern.
|
||||
|
||||
2016-11-02 Wilco Dijkstra <wdijkstr@arm.com>
|
||||
|
||||
* config/aarch64/aarch64.md (add<mode>3): Remove
|
||||
|
|
|
@ -5705,6 +5705,26 @@
|
|||
[(set_attr "type" "crypto_sha1_fast")]
|
||||
)
|
||||
|
||||
(define_insn "aarch64_crypto_sha1hv4si"
|
||||
[(set (match_operand:SI 0 "register_operand" "=w")
|
||||
(unspec:SI [(vec_select:SI (match_operand:V4SI 1 "register_operand" "w")
|
||||
(parallel [(const_int 0)]))]
|
||||
UNSPEC_SHA1H))]
|
||||
"TARGET_SIMD && TARGET_CRYPTO && !BYTES_BIG_ENDIAN"
|
||||
"sha1h\\t%s0, %s1"
|
||||
[(set_attr "type" "crypto_sha1_fast")]
|
||||
)
|
||||
|
||||
(define_insn "aarch64_be_crypto_sha1hv4si"
|
||||
[(set (match_operand:SI 0 "register_operand" "=w")
|
||||
(unspec:SI [(vec_select:SI (match_operand:V4SI 1 "register_operand" "w")
|
||||
(parallel [(const_int 3)]))]
|
||||
UNSPEC_SHA1H))]
|
||||
"TARGET_SIMD && TARGET_CRYPTO && BYTES_BIG_ENDIAN"
|
||||
"sha1h\\t%s0, %s1"
|
||||
[(set_attr "type" "crypto_sha1_fast")]
|
||||
)
|
||||
|
||||
(define_insn "aarch64_crypto_sha1su1v4si"
|
||||
[(set (match_operand:V4SI 0 "register_operand" "=w")
|
||||
(unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0")
|
||||
|
|
Loading…
Reference in New Issue