[LLVMbugs] [Bug 15283] New: DAGCombiner: Fold pointless truncate, bitcast, buildvector series
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Fri Feb 15 14:18:14 PST 2013
http://llvm.org/bugs/show_bug.cgi?id=15283
Bug ID: 15283
Summary: DAGCombiner: Fold pointless truncate, bitcast,
buildvector series
Product: tools
Version: trunk
Hardware: PC
OS: All
Status: NEW
Severity: enhancement
Priority: P
Component: llc
Assignee: unassignedbugs at nondot.org
Reporter: aschwaighofer at apple.com
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
Compile the following code with a recent clang/llvm (r175057/r175054) for NEON
at -O3, something like "clang -arch armv7 -mcpu=swift -isysroot
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/$IPHONESDK
-O3 -fvectorize":
define TYPE double
#define N 1024
TYPE A[N];
TYPE B[N];
void test_double_compare_to_double() {
int i;
for(i=0;i<N;i++)
A[i] = (TYPE)(A[i] < B[i]);
}
Because the vector type of the setcc olt 2xdouble is legalized to 2xi64 (later
a buildvector of 2 x 2 select_cc extract elements) which in turn gets
truncated back to 2xi32 before it is zero extended we generate:
vmov.i32 d16, #0x1
vdup.32 d0, d0[0]
vdup.32 d1, d1[0]
vmovn.i64 d17, q0
vand d16, d17, d16
If we would fold the truncate, bitcast, buildvector series
(2xi32) (truncate ((2xi64) bitcast (buildvector i32 a, i32 x, i32 b, i32
y)))
can be folded into a (2xi32) (buildvector i32 a, i32 b)
we would not be generating unnecessary vmovn and vdups.
Part of the optimized vector-legalized selection DAG:
0x7fb7a4030010:f64 = extract_vector_elt 0x7fb7a402fd10, 0x7fb7a402fa10
0x7fb7a4800b10:i32 = select_cc 0x7fb7a402ff10, 0x7fb7a4030010, 0x7fb7a4800110,
0x7fb7a402fa10, 0x7fb7a402fe10
0x7fb7a4801510:v4i32 = BUILD_VECTOR 0x7fb7a4800b10, 0x7fb7a4800b10,
0x7fb7a4800610, 0x7fb7a4800610
0x7fb7a4801610:v2i64 = bitcast 0x7fb7a4801510
0x7fb7a4800210:v2i32 = truncate 0x7fb7a4801610
0x7fb7a4800310:v2i32 = BUILD_VECTOR 0x7fb7a4800010, 0x7fb7a4800010
0x7fb7a4800410:v2i32 = and 0x7fb7a4800210, 0x7fb7a4800310
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20130215/1da3e048/attachment.html>
More information about the llvm-bugs
mailing list