|
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