[PATCH] D26149: [DAGCombiner] Match load by bytes idiom and fold it into a single load
Artur Pilipenko via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 16 03:19:59 PST 2016
apilipenko added inline comments.
================
Comment at: test/CodeGen/X86/load-combine.ll:213
+; (i64) p[0] | ((i64) p[1] << 8) | ((i64) p[2] << 16) | ((i64) p[3] << 24) | ((i64) p[4] << 32) | ((i64) p[5] << 40) | ((i64) p[6] << 48) | ((i64) p[7] << 56)
+define i64 @load_i64_by_i8(i64*) {
+; CHECK-LABEL: load_i64_by_i8:
----------------
RKSimon wrote:
> What is preventing the 32-bit target doing anything here?
This patch can only handle situations when all the bits of the value are available and can be loaded in a single load. In this pattern individual bytes are extended to i64 and all the computation are done with i64 values. So we have no chance to combine i32 halves of the pattern. I'm going to send a follow up patch to add support for partially available loads once this patch is in.
================
Comment at: test/CodeGen/X86/load-combine.ll:299
+; ((i64) p[0] << 56) | ((i64) p[1] << 48) | ((i64) p[2] << 40) | ((i64) p[3] << 32) | ((i64) p[4] << 24) | ((i64) p[5] << 16) | ((i64) p[6] << 8) | (i64) p[7]
+define i64 @load_i64_by_i8_bswap(i64*) {
+; CHECK-LABEL: load_i64_by_i8_bswap:
----------------
RKSimon wrote:
> What is preventing the 32-bit target doing anything here?
The same as above.
https://reviews.llvm.org/D26149
More information about the llvm-commits
mailing list