|
5 | 5 | ;; 1. trunc(abs(sub(sext(a),sext(b)))) -> abds(a,b) or abdu(a,b) |
6 | 6 | ;; 2. abs(sub_nsw(x, y)) -> abds(a,b) |
7 | 7 | ;; 3. sub(smax(a,b),smin(a,b)) -> abds(a,b) or abdu(a,b) |
8 | | -;; 4. select(icmp(a,b),sub(a,b),sub(b,a)) -> abds(a,b) or abdu(a,b) |
| 8 | +;; 4. select(icmp(a,b, slt|ult),sub(a,b),sub(b,a)) -> abds(a,b) or abdu(a,b) |
9 | 9 | ;; 5. sub(select(icmp(a,b),a,b),select(icmp(a,b),b,a)) -> abds(a,b) or abdu(a,b) |
10 | 10 | ;; |
11 | | -;; abds / abdu can be lower to xvabsd.{b/h/w/d} / xvabsd.{b/h/w/d}u instruction. |
| 11 | +;; abds / abdu can be lowered to xvabsd.{b/h/w/d} / xvabsd.{b/h/w/d}u instruction. |
12 | 12 | ;; |
13 | 13 | ;; Later patch will address it. |
14 | 14 |
|
@@ -300,7 +300,7 @@ define <32 x i8> @maxmin_bu_com1(<32 x i8> %0, <32 x i8> %1) { |
300 | 300 | ret <32 x i8> %sub |
301 | 301 | } |
302 | 302 |
|
303 | | -;; select(icmp(a,b),sub(a,b),sub(b,a)) -> abds(a,b) |
| 303 | +;; select(icmp(a,b, slt),sub(a,b),sub(b,a)) -> abds(a,b) |
304 | 304 | define <32 x i8> @xvabsd_b_cmp(<32 x i8> %a, <32 x i8> %b) nounwind { |
305 | 305 | ; CHECK-LABEL: xvabsd_b_cmp: |
306 | 306 | ; CHECK: # %bb.0: |
@@ -413,7 +413,7 @@ define <4 x i64> @xvabsd_du_cmp(<4 x i64> %a, <4 x i64> %b) nounwind { |
413 | 413 | ret <4 x i64> %sel |
414 | 414 | } |
415 | 415 |
|
416 | | -;; sub(select(icmp(a,b),a,b),select(icmp(a,b),b,a)) -> abds(a,b) |
| 416 | +;; sub(select(icmp(a,b, slt),a,b),select(icmp(a,b, slt),b,a)) -> abds(a,b) |
417 | 417 | define <32 x i8> @xvabsd_b_select(<32 x i8> %a, <32 x i8> %b) nounwind { |
418 | 418 | ; CHECK-LABEL: xvabsd_b_select: |
419 | 419 | ; CHECK: # %bb.0: |
|
0 commit comments