From: Haochen Gui Date: Mon, 19 Aug 2024 02:35:47 +0000 (+0800) Subject: aarch64: Implement 16-byte vector mode const0 store by TImode X-Git-Tag: basepoints/gcc-16~6540 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8d6c6fbc5271dde433998c09407b30e2cf195420;p=thirdparty%2Fgcc.git aarch64: Implement 16-byte vector mode const0 store by TImode gcc/ * config/aarch64/aarch64-simd.md (mov for VSTRUCT_QD): Expand 16-byte vector mode const0 store by TImode. --- diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 475f19766c3..23c03a96371 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -7809,7 +7809,16 @@ (match_operand:VSTRUCT_QD 1 "general_operand"))] "TARGET_FLOAT" { - if (can_create_pseudo_p ()) + if (known_eq (GET_MODE_SIZE (mode), 16) + && operands[1] == CONST0_RTX (mode) + && MEM_P (operands[0]) + && (can_create_pseudo_p () + || memory_address_p (TImode, XEXP (operands[0], 0)))) + { + operands[0] = adjust_address (operands[0], TImode, 0); + operands[1] = CONST0_RTX (TImode); + } + else if (can_create_pseudo_p ()) { if (GET_CODE (operands[0]) != REG) operands[1] = force_reg (mode, operands[1]);