[Bug target/97437] builtins subcarry and addcarry still not generate the right code. Not get optimized to immediate value

2020-10-15 Thread segher at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97437 --- Comment #10 from Segher Boessenkool --- Not even an alternative SELECT_CC_MODE; just add an argument to it, giving the original mode? We already have that in combine, so we can trivially pass it. Will that work for x86 here?

[Bug target/97437] builtins subcarry and addcarry still not generate the right code. Not get optimized to immediate value

2020-10-15 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97437 --- Comment #9 from Jakub Jelinek --- I don't think it is really possible, because there is nothing magic about the operands of the comparison, it can be done in both CCmode or CCCmode. The problem is that during simplification combiner takes th

[Bug target/97437] builtins subcarry and addcarry still not generate the right code. Not get optimized to immediate value

2020-10-15 Thread segher at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97437 --- Comment #8 from Segher Boessenkool --- So is that something than can/should be improved in ix86_cc_mode?

[Bug target/97437] builtins subcarry and addcarry still not generate the right code. Not get optimized to immediate value

2020-10-15 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97437 --- Comment #7 from Jakub Jelinek --- (In reply to Segher Boessenkool from comment #5) > Trying 7 -> 9: > 7: r97:SI=0x2a > 9: {flags:CCC=cmp(r97:SI+r98:SI,r97:SI);r99:SI=r97:SI+r98:SI;} > REG_DEAD r98:SI > REG_DEAD r97:SI > Fa

[Bug target/97437] builtins subcarry and addcarry still not generate the right code. Not get optimized to immediate value

2020-10-15 Thread segher at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97437 --- Comment #6 from Segher Boessenkool --- I forgot to add: subtract immediate is the same as add immediate for us, we don't change the sense of the carry bit to a "borrow bit" (and instead, we have a subtract-from-immediate). But this doesn't c

[Bug target/97437] builtins subcarry and addcarry still not generate the right code. Not get optimized to immediate value

2020-10-15 Thread segher at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97437 --- Comment #5 from Segher Boessenkool --- Trying 7 -> 9: 7: r97:SI=0x2a 9: {flags:CCC=cmp(r97:SI+r98:SI,r97:SI);r99:SI=r97:SI+r98:SI;} REG_DEAD r98:SI REG_DEAD r97:SI Failed to match this instruction: (parallel [ (set

[Bug target/97437] builtins subcarry and addcarry still not generate the right code. Not get optimized to immediate value

2020-10-15 Thread euloanty at live dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97437 --- Comment #4 from fdlbxtqi --- (In reply to Jakub Jelinek from comment #1) > I don't see anything undesirable on that. The 0 aka %rax is used in 7 > different instructions later on besides the move, so either we just clear > %ecx (can't use xo

[Bug target/97437] builtins subcarry and addcarry still not generate the right code. Not get optimized to immediate value

2020-10-15 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97437 --- Comment #3 from Jakub Jelinek --- And fwprop that perhaps wouldn't "simplify" them that much punts on these because the instructions are multiple sets. It is unclear why, I mean, sure, it can't be adding REG_EQUAL notes in that case, but oth

[Bug target/97437] builtins subcarry and addcarry still not generate the right code. Not get optimized to immediate value

2020-10-15 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97437 --- Comment #2 from Jakub Jelinek --- Anyway, #include void foo (unsigned int a[4], unsigned int b[4]) { unsigned char carry = 0; carry = _addcarry_u32 (carry, 42, b[0], &a[0]); carry = _addcarry_u32 (carry, b[1], 43, &a[1]); carry = _a

[Bug target/97437] builtins subcarry and addcarry still not generate the right code. Not get optimized to immediate value

2020-10-15 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97437 --- Comment #1 from Jakub Jelinek --- I don't see anything undesirable on that. The 0 aka %rax is used in 7 different instructions later on besides the move, so either we just clear %ecx (can't use xorl for that as the flags register needs to be