On Wed, Aug 26, 2015 at 02:46:53PM +0100, Alan Lawrence wrote: > aarch64_st<VSTRUCT:nregs><VDC:mode> and > aarch64_ld<VSTRUCT:nregs><VDC:mode> expanders back onto 12 insns > aarch64_{ld,st}{2,3,4}<mode>_dreg (for VD and DX modes), using the > VSTRUCT_DREG iterator over TI/EI/OI modes to represent the block of memory > transferred. Instead, use BLKmode for all memory transfers, explicitly setting > mem_size.
OK. Thanks, James > Bootstrapped and check-gcc on aarch64-none-linux-gnu. > > gcc/ChangeLog: > > * config/aarch64/aarch64-simd.md > (aarch64_ld2<mode>_dreg VD & DX, aarch64_st2<mode>_dreg VD & DX ): > Change all TImode operands to BLKmode. > (aarch64_ld3<mode>_dreg VD & DX, aarch64_st3<mode>_dreg VD & DX): > Change all EImode operands to BLKmode. > (aarch64_ld4<mode>_dreg VD & DX, aarch64_st4<mode>_dreg VD & DX): > Change all OImode operands to BLKmode. > > (aarch64_ld<VSTRUCT:nregs><VDC:mode>, > aarch64_st<VSTRUCT:nregs><VDC:mode>): Generate MEM rtx with BLKmode > and call set_mem_size. > > * config/aarch64/iterators.md (VSTRUCT_DREG): Remove.