Richard Sandiford <richard.sandif...@arm.com> writes:
> [...]
>   /* Perform a shift right by CRC_SIZE as an extraction of lane 1.  */
>   machine_mode crc_vmode = aarch64_vq_mode (crc_mode).require ();
>   a0 = (crc_size > data_size ? gen_reg_rtx (crc_mode) : operands[0]);
>   emit_insn (gen_aarch64_get_lane (crc_vmode, a0,
>                                  gen_lowpart (crc_vmode, clmul_res),
>                                  aarch64_endian_lane_rtx (crc_vmode, 1)));

Sorry, I forgot to say that I'd locally patched:

diff --git a/gcc/config/aarch64/aarch64-simd.md 
b/gcc/config/aarch64/aarch64-simd.md
index 816f499e963..af7beecb735 100644
--- a/gcc/config/aarch64/aarch64-simd.md
+++ b/gcc/config/aarch64/aarch64-simd.md
@@ -4301,7 +4301,7 @@ (define_insn 
"*aarch64_get_lane_zero_extend<GPI:mode><VDQQH:mode>"
 ;; RTL uses GCC vector extension indices throughout so flip only for assembly.
 ;; Extracting lane zero is split into a simple move when it is between SIMD
 ;; registers or a store.
-(define_insn_and_split "aarch64_get_lane<mode>"
+(define_insn_and_split "@aarch64_get_lane<mode>"
   [(set (match_operand:<VEL> 0 "aarch64_simd_nonimmediate_operand" "=?r, w, 
Utv")
        (vec_select:<VEL>
          (match_operand:VALL_F16 1 "register_operand" "w, w, w")

Richard

Reply via email to