summaryrefslogtreecommitdiff
path: root/libcxx/include/__iterator
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@sifive.com>2021-08-12 09:39:55 -0700
committerCraig Topper <craig.topper@sifive.com>2021-08-12 10:05:27 -0700
commit79fbddbea0c6940587acf5353af4557ee9524bbe (patch)
tree96d466509d6398e02768150fa027e038d8901576 /libcxx/include/__iterator
parentf66ba5fcef19ff03532d993ac4af1362a89b833f (diff)
downloadllvm-79fbddbea0c6940587acf5353af4557ee9524bbe.tar.gz
[RISCV] Teach vsetvli insertion pass that it doesn't need to insert vsetvli for unit-stride or strided loads/stores in some cases.
For unit-stride and strided load/stores we set the SEW operand of the pseudo instruction equal the EEW in the opcode. The LMUL of the pseudo instruction is the LMUL we want. These instructions calculate EMUL=(EEW/SEW) * LMUL. We can use this to avoid changing vtype if the SEW/LMUL of the previous vtype matches the EEW/EMUL ratio we need for the instruction. Due to how the global analysis works, we can only do this optimization when the previous vsetvli was produced in the block containing the store. We need to know in the first phase if the vsetvli will be inserted so we can propagate information to the successors in the second phase correctly. This means we can't depend on predecessors. Reviewed By: rogfer01 Differential Revision: https://reviews.llvm.org/D106601
Diffstat (limited to 'libcxx/include/__iterator')
0 files changed, 0 insertions, 0 deletions