This patch series allows the gather/scatter to support 64-bit offsets, in addition to the 32-bit offsets already supported.
64-bit offsets are not natively supported by the hardware instructions, but the vector of addresses can be precomputed, so we can make it work. If the middle-end can use SImode offsets then that would be generally better, but allowing DImode is better than allowing the vectorizers to simply fail when it encounters complex access patterns. When combined with vect_partial_vector_usage=1, this patch gives a good speed-up on the SPEC HPC lbm benchmark. Andrew Stubbs (3): amdgcn: add more insn patterns using vec_duplicate amdgcn: Add ashlvNm, mulvNm macros amdgcn: add DImode offsets for gather/scatter gcc/config/gcn/gcn-valu.md | 262 ++++++++++++++++++++++++++++++++++++- gcc/config/gcn/gcn.cc | 106 +++++++++------ 2 files changed, 323 insertions(+), 45 deletions(-) -- 2.50.0