> -----Original Message----- > From: Richard Sandiford [mailto:richard.sandif...@arm.com] > Sent: Friday, August 21, 2020 5:02 PM > To: xiezhiheng <xiezhih...@huawei.com> > Cc: Richard Biener <richard.guent...@gmail.com>; gcc-patches@gcc.gnu.org > Subject: Re: [PATCH PR94442] [AArch64] Redundant ldp/stp instructions > emitted at -O3
Cut... > Looks like the saturating intrinsics might need a bit more thought. > Would you mind submitting the patch with just the other parts? > Those were uncontroversial and it would be a shame to hold them > up over this. Okay, I reorganized the existing patch and finished the first half of the intrinsics except saturating intrinsics and load intrinsics. Bootstrapped and tested on aarch64 Linux platform. For load intrinsics, I have one problem when I set FLAG_READ_MEMORY for them, some test cases like gcc.target/aarch64/advsimd-intrinsics/vld2_lane_p8_indices_1.c #include <arm_neon.h> /* { dg-do compile } */ /* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */ poly8x8x2_t f_vld2_lane_p8 (poly8_t * p, poly8x8x2_t v) { poly8x8x2_t res; /* { dg-error "lane 8 out of range 0 - 7" "" { target *-*-* } 0 } */ res = vld2_lane_p8 (p, v, 8); /* { dg-error "lane -1 out of range 0 - 7" "" { target *-*-* } 0 } */ res = vld2_lane_p8 (p, v, -1); return res; } would fail in regression. Because the first statement res = vld2_lane_p8 (p, v, 8); would be eliminated as dead code in gimple phase but the error message is generated in expand pass. So I am going to replace the second statement res = vld2_lane_p8 (p, v, -1); with res = vld2_lane_p8 (p, res, -1); or do you have any other suggestions? And for test case gcc.target/aarch64/arg-type-diagnostics-1.c, I return the result to prevent the statement result = vrsra_n_s32 (arg1, arg2, a); from being eliminated by treated as dead code. Thanks, Xie Zhiheng diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7a71b4367d4..217344d7d1f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2020-08-25 Zhiheng Xie <xiezhih...@huawei.com> + + * config/aarch64/aarch64-simd-builtins.def: Add proper FLAGS + for intrinsic functions. + diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b9562e67883..e10bcc9b28a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-08-25 Zhiheng Xie <xiezhih...@huawei.com> + + * gcc.target/aarch64/arg-type-diagnostics-1.c: Return result + to prevent statement from being eliminated. +
pr94442-v1.patch
Description: pr94442-v1.patch