For the included test case, visitCONCAT_VECTORS would attempt to
create a v2i32 vector for a v9i8 concat_vector. Bail out to avoid
creating a bitcast with mismatching sizes later on.
Details
Diff Detail
Event Timeline
lib/CodeGen/SelectionDAG/DAGCombiner.cpp | ||
---|---|---|
15191 | "Bail out if the output vector size is not a multiple of the input vector size." Shouldn't this be pulled out to near the top of the method? FoldCONCAT_VECTORS actually treats this as an assert - is there anyway that you can cause it to fire there? |
lib/CodeGen/SelectionDAG/DAGCombiner.cpp | ||
---|---|---|
15191 | Not sure if "input vector size" is correct here; we want the output vector size to be a multiple of the scalar size that we input to scalar_to_vector. We only know the scalar size around this point in the code (after deciding whether to look through the trunc). The concat_vector in itself is fine; which assert in FoldCONCAT_VECTORS do you expect to fire? |
"Bail out if the output vector size is not a multiple of the input vector size."
Shouldn't this be pulled out to near the top of the method?
FoldCONCAT_VECTORS actually treats this as an assert - is there anyway that you can cause it to fire there?