Hans Wennborg 8c1eb106bd Revert r313009 "[ARM] Use ADDCARRY / SUBCARRY"
This was causing PR34045 to fire again.

> This is a preparatory step for D34515 and also is being recommitted as its
> first version caused PR34045.
>
> This change:
>  - makes nodes ISD::ADDCARRY and ISD::SUBCARRY legal for i32
>  - lowering is done by first converting the boolean value into the carry flag
>    using (_, C) ← (ARMISD::ADDC R, -1) and converted back to an integer value
>    using (R, _) ← (ARMISD::ADDE 0, 0, C). An ARMISD::ADDE between the two
>    operations does the actual addition.
>  - for subtraction, given that ISD::SUBCARRY second result is actually a
>    borrow, we need to invert the value of the second operand and result before
>    and after using ARMISD::SUBE. We need to invert the carry result of
>    ARMISD::SUBE to preserve the semantics.
>  - given that the generic combiner may lower ISD::ADDCARRY and
>    ISD::SUBCARRYinto ISD::UADDO and ISD::USUBO we need to update their lowering
>    as well otherwise i64 operations now would require branches. This implies
>    updating the corresponding test for unsigned.
>  - add new combiner to remove the redundant conversions from/to carry flags
>    to/from boolean values (ARMISD::ADDC (ARMISD::ADDE 0, 0, C), -1) → C
>  - fixes PR34045
>
> Differential Revision: https://reviews.llvm.org/D35192

Also revert follow-up r313010:

> [ARM] Fix typo when creating ISD::SUB nodes
>
> In D35192, I accidentally introduced a typo when creating ISD::SUB nodes,
> giving them two values instead of one.
>
> This fails when the merge_values combiner finds one of these nodes.
>
> This change fixes PR34564.
>
> Differential Revision: https://reviews.llvm.org/D37690

llvm-svn: 313044
2017-09-12 16:24:17 +00:00
..
2017-02-21 20:17:34 +00:00
2016-01-26 00:03:25 +00:00
2017-08-01 22:20:49 +00:00
2017-08-28 20:20:47 +00:00
2017-04-07 22:01:23 +00:00
2017-04-07 22:01:23 +00:00
2016-06-16 16:09:53 +00:00
2016-01-28 18:59:04 +00:00
2017-08-01 22:20:49 +00:00
2017-08-01 22:20:49 +00:00
2017-08-09 22:22:05 +00:00
2017-08-28 20:20:47 +00:00
2017-07-21 22:48:47 +00:00
2016-06-16 16:09:53 +00:00
2015-10-26 20:49:49 +00:00
2016-06-20 17:45:33 +00:00
2016-12-27 18:35:19 +00:00
2016-01-26 00:03:25 +00:00
2016-04-08 18:15:37 +00:00
2016-10-19 16:58:59 +00:00
2016-06-16 16:09:53 +00:00
2016-03-31 19:42:04 +00:00
2015-12-17 01:29:08 +00:00
2017-08-28 20:20:47 +00:00
2017-08-28 20:20:47 +00:00
2017-08-23 03:17:59 +00:00
2017-08-01 22:20:49 +00:00
2017-08-01 22:20:49 +00:00
2016-12-27 18:35:19 +00:00
2016-12-27 18:35:19 +00:00
2017-09-07 14:52:26 +00:00
2015-08-13 17:28:16 +00:00