[PATCH] D142602: [X86] Expand transform (icmp eq/ne (ABS A), C) -> (and/or (icmp eq/ne A, C), (icmp eq/ne A, -C))
Noah Goldstein via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun Feb 12 13:43:02 PST 2023
goldstein.w.n added a comment.
In D142602#4121033 <https://reviews.llvm.org/D142602#4121033>, @RKSimon wrote:
> Also I'm curious how well this could work on pre-SSSE3 codegen - where we don't have PABS instructions at all
Pre `ssse3` abs gets the following codegen:
0000000000000000 <abs_v2i64>:
0: 66 0f 6f c8 movdqa %xmm0,%xmm1
4: 66 0f 72 e1 1f psrad $0x1f,%xmm1
9: 66 0f 70 c9 f5 pshufd $0xf5,%xmm1,%xmm1
e: 66 0f ef c1 pxor %xmm1,%xmm0
12: 66 0f fb c1 psubq %xmm1,%xmm0
16: c3 ret
17: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1)
1e: 00 00
0000000000000020 <abs_v4i32>:
20: 66 0f 6f c8 movdqa %xmm0,%xmm1
24: 66 0f 72 e1 1f psrad $0x1f,%xmm1
29: 66 0f ef c1 pxor %xmm1,%xmm0
2d: 66 0f fa c1 psubd %xmm1,%xmm0
31: c3 ret
32: 66 2e 0f 1f 84 00 00 cs nopw 0x0(%rax,%rax,1)
39: 00 00 00
3c: 0f 1f 40 00 nopl 0x0(%rax)
0000000000000040 <abs_v8i16>:
40: 66 0f ef c9 pxor %xmm1,%xmm1
44: 66 0f f9 c8 psubw %xmm0,%xmm1
48: 66 0f ee c1 pmaxsw %xmm1,%xmm0
4c: c3 ret
4d: 0f 1f 00 nopl (%rax)
0000000000000050 <abs_v16i8>:
50: 66 0f ef c9 pxor %xmm1,%xmm1
54: 66 0f f8 c8 psubb %xmm0,%xmm1
58: 66 0f da c1 pminub %xmm1,%xmm0
5c: c3 ret
Probably makes sense for i64 but for the rest will make this only if the node already exists.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D142602/new/
https://reviews.llvm.org/D142602
More information about the llvm-commits
mailing list