mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-12 07:37:34 +00:00
Add additional documentation to the extract-and-trunc dagcombine optimization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149823 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d52d9cd038
commit
cc870a8f93
@ -4985,9 +4985,14 @@ SDValue DAGCombiner::visitTRUNCATE(SDNode *N) {
|
||||
return N0.getOperand(0);
|
||||
}
|
||||
|
||||
// Fold Extract-and-trunc into a narrow extract:
|
||||
// trunc(extract(x)) -> extract(bitcast(x))
|
||||
// We only run this optimization after type legalization (which often
|
||||
// Fold extract-and-trunc into a narrow extract. For example:
|
||||
// i64 x = EXTRACT_VECTOR_ELT(v2i64 val, i32 1)
|
||||
// i32 y = TRUNCATE(i64 x)
|
||||
// -- becomes --
|
||||
// v16i8 b = BITCAST (v2i64 val)
|
||||
// i8 x = EXTRACT_VECTOR_ELT(v16i8 b, i32 8)
|
||||
//
|
||||
// Note: We only run this optimization after type legalization (which often
|
||||
// creates this pattern) and before operation legalization after which
|
||||
// we need to be more careful about the vector instructions that we generate.
|
||||
if (N0.getOpcode() == ISD::EXTRACT_VECTOR_ELT &&
|
||||
|
Loading…
x
Reference in New Issue
Block a user