Commit 5304d044 by Wilco Dijkstra Committed by Wilco Dijkstra

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
parent 45a6c1e3
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> 2016-11-02 Wilco Dijkstra <wdijkstr@arm.com>
* config/aarch64/aarch64.md (add<mode>3): Remove * config/aarch64/aarch64.md (add<mode>3): Remove
...@@ -5705,6 +5705,26 @@ ...@@ -5705,6 +5705,26 @@
[(set_attr "type" "crypto_sha1_fast")] [(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" (define_insn "aarch64_crypto_sha1su1v4si"
[(set (match_operand:V4SI 0 "register_operand" "=w") [(set (match_operand:V4SI 0 "register_operand" "=w")
(unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0") (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment