Hi David, Thanks for your review comments.
在 2023/10/9 23:42, David Edelsohn 写道: > #define MOVE_MAX (! TARGET_POWERPC64 ? 4 : 8) > #define MAX_MOVE_MAX 8 > +#define MOVE_MAX_PIECES (!TARGET_POWERPC64 ? 4 : 16) > +#define COMPARE_MAX_PIECES (!TARGET_POWERPC64 ? 4 : 16) > > > How are the definitions of MOVE_MAX_PIECES and COMPARE_MAX_PIECES determined? > The email does not provide any explanation for the implementation. The rest > of the patch is related to vector support, but vector support is not > dependent on TARGET_POWERPC64. By default, MOVE_MAX_PIECES and COMPARE_MAX_PIECES is set the same value as MOVE_MAX. The move and compare instructions are required in compare_by_pieces, those macros are set to 16 byte when supporting vector mode (V16QImode). The problem is rs6000 hasn't supported TImode for "-m32". We discussed it in issue 1307. TImode will be used for move when MOVE_MAX_PIECES is set to 16. But TImode isn't supported with "-m32" which might cause ICE. So MOVE_MAX_PIECES and COMPARE_MAX_PIECES is set to 4 for 32 bit target in this patch. They could be changed to 16 after rs6000 supports TImode with "-m32". Thanks Gui Haochen