https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96357
Bug ID: 96357 Summary: [10/11 Regression] could not split insn UNSPEC_COND_FSUB with AArch64 SVE Product: gcc Version: unknown Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: ktkachov at gcc dot gnu.org Target Milestone: --- The reduced testcase: typedef int a; int d; void e(char f, char *g, char *h, char *l, char * n) { double i = d, j = 1.0 - f, k = j ? d : j; if (k == 1.0) i = 0.0; *g = *h = i * 0.5; *l = *n = 0; } void o() { int a, m, c = o; for (; c; c--) { char b = a++; e(b, m, m + 1, m + 2, m + 3); m += 4; } } ICEs with -w -O3 -march=arvm8.2-a+sve reduced.c: In function ‘o’: reduced.c:18:1: error: could not split insn 18 | } | ^ (insn 145 401 149 (set (reg:VNx2DF 39 v7 [orig:145 _127 ] [145]) (unspec:VNx2DF [ (reg:VNx2BI 69 p1 [318]) (unspec:VNx2DF [ (reg:VNx2BI 78 p10 [318]) (const_int 1 [0x1]) (const_vector:VNx2DF [ (const_double:DF 1.0e+0 [0x0.8p+1]) ]) (reg:VNx2DF 37 v5 [orig:152 vect__27.15 ] [152]) ] UNSPEC_COND_FSUB) (reg:VNx2DF 48 v16 [orig:140 vect_i_26.13 ] [140]) ] UNSPEC_SEL)) 5775 {*cond_subvnx2df_any_const} (expr_list:REG_DEAD (reg:VNx2BI 78 p10 [318]) (expr_list:REG_DEAD (reg:VNx2BI 69 p1 [318]) (expr_list:REG_DEAD (reg:VNx2DF 37 v5 [orig:152 vect__27.15 ] [152]) (nil))))) during RTL pass: final