Hi, The vector versions of lroundmn2, lfloormn2, lceilmn2 convert from mode m to mode n. The current implementation has this backwards. For correctness, this patch swaps the n and m parameters.
There is no need to backport this patch as a bug fix, as nothing uses this name for expansion in 4.8. Regression tested on aarch64-none-elf with no regressions. Thanks, James Greenhalgh --- gcc/ 3013-04-26 James Greenhalgh <james.greenha...@arm.com> * config/aarch64/aarch64-simd.md (l<fcvt_pattern><su_optab><fcvt_target><VDQF:mode>2): Rename to... (l<fcvt_pattern><su_optab><VDQF:mode><fcvt_target>2): ... This.
diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 5f14cc6..b716fbe 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -1257,7 +1257,7 @@ ;; Vector versions of the fcvt standard patterns. ;; Expands to lbtrunc, lround, lceil, lfloor -(define_expand "l<fcvt_pattern><su_optab><fcvt_target><VDQF:mode>2" +(define_expand "l<fcvt_pattern><su_optab><VDQF:mode><fcvt_target>2" [(set (match_operand:<FCVT_TARGET> 0 "register_operand") (FIXUORS:<FCVT_TARGET> (unspec:<FCVT_TARGET> [(match_operand:VDQF 1 "register_operand")]