Re: [PATCH] Use GET_MODE_BITSIZE to get vector natural alignment
On Mon, Oct 19, 2015 at 4:12 AM, Uros Bizjakwrote: > On Mon, Oct 19, 2015 at 1:12 PM, H.J. Lu wrote: >> On Mon, Oct 19, 2015 at 4:05 AM, Uros Bizjak wrote: >>> On Fri, Oct 16, 2015 at 7:42 PM, H.J. Lu wrote: Since GET_MODE_ALIGNMENT is defined by psABI and the biggest alignment is 4 byte for IA MCU psABI, we should use GET_MODE_BITSIZE to get vector natural alignment to check misaligned vector move. OK for trunk? Thanks. H.J. --- * config/i386/i386.c (ix86_expand_vector_move): Use GET_MODE_BITSIZE to get vector natural alignment. --- gcc/config/i386/i386.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index ebe2b0a..d0e1f4c 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -18650,7 +18650,9 @@ void ix86_expand_vector_move (machine_mode mode, rtx operands[]) { rtx op0 = operands[0], op1 = operands[1]; - unsigned int align = GET_MODE_ALIGNMENT (mode); + /* Use GET_MODE_BITSIZE instead of GET_MODE_ALIGNMENT since the + biggest alignment is 4 byte for IA MCU psABI. */ + unsigned int align = GET_MODE_BITSIZE (mode); >>> >>> How about using TARGET_IAMCU condition here and using bitsize only for >>> TARGET_IAMCU? >>> >> >> Works for me. Is it OK with that change? > > Yes. > This is what I checked in. Thanks. -- H.J. --- [PATCH] Use GET_MODE_BITSIZE to get vector natural alignment Since GET_MODE_ALIGNMENT is defined by psABI and the biggest alignment is 4 byte for IA MCU psABI, we should use GET_MODE_BITSIZE for IA MCU psABI to get vector natural alignment to check misaligned vector move. * config/i386/i386.c (ix86_expand_vector_move): Use GET_MODE_BITSIZE for IA MCU psABI to get vector natural alignment. --- gcc/config/i386/i386.c | 6 +- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 1049455..a4f4b6f 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -18645,7 +18645,11 @@ void ix86_expand_vector_move (machine_mode mode, rtx operands[]) { rtx op0 = operands[0], op1 = operands[1]; - unsigned int align = GET_MODE_ALIGNMENT (mode); + /* Use GET_MODE_BITSIZE instead of GET_MODE_ALIGNMENT for IA MCU + psABI since the biggest alignment is 4 byte for IA MCU psABI. */ + unsigned int align = (TARGET_IAMCU + ? GET_MODE_BITSIZE (mode) + : GET_MODE_ALIGNMENT (mode)); if (push_operand (op0, VOIDmode)) op0 = emit_move_resolve_push (mode, op0); -- 2.4.3
Re: [PATCH] Use GET_MODE_BITSIZE to get vector natural alignment
On Fri, Oct 16, 2015 at 7:42 PM, H.J. Luwrote: > Since GET_MODE_ALIGNMENT is defined by psABI and the biggest alignment > is 4 byte for IA MCU psABI, we should use GET_MODE_BITSIZE to get > vector natural alignment to check misaligned vector move. > > OK for trunk? > > Thanks. > > H.J. > --- > * config/i386/i386.c (ix86_expand_vector_move): Use > GET_MODE_BITSIZE to get vector natural alignment. > --- > gcc/config/i386/i386.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c > index ebe2b0a..d0e1f4c 100644 > --- a/gcc/config/i386/i386.c > +++ b/gcc/config/i386/i386.c > @@ -18650,7 +18650,9 @@ void > ix86_expand_vector_move (machine_mode mode, rtx operands[]) > { >rtx op0 = operands[0], op1 = operands[1]; > - unsigned int align = GET_MODE_ALIGNMENT (mode); > + /* Use GET_MODE_BITSIZE instead of GET_MODE_ALIGNMENT since the > + biggest alignment is 4 byte for IA MCU psABI. */ > + unsigned int align = GET_MODE_BITSIZE (mode); How about using TARGET_IAMCU condition here and using bitsize only for TARGET_IAMCU? Uros. >if (push_operand (op0, VOIDmode)) > op0 = emit_move_resolve_push (mode, op0); > -- > 2.4.3 >
Re: [PATCH] Use GET_MODE_BITSIZE to get vector natural alignment
On Mon, Oct 19, 2015 at 4:05 AM, Uros Bizjakwrote: > On Fri, Oct 16, 2015 at 7:42 PM, H.J. Lu wrote: >> Since GET_MODE_ALIGNMENT is defined by psABI and the biggest alignment >> is 4 byte for IA MCU psABI, we should use GET_MODE_BITSIZE to get >> vector natural alignment to check misaligned vector move. >> >> OK for trunk? >> >> Thanks. >> >> H.J. >> --- >> * config/i386/i386.c (ix86_expand_vector_move): Use >> GET_MODE_BITSIZE to get vector natural alignment. >> --- >> gcc/config/i386/i386.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c >> index ebe2b0a..d0e1f4c 100644 >> --- a/gcc/config/i386/i386.c >> +++ b/gcc/config/i386/i386.c >> @@ -18650,7 +18650,9 @@ void >> ix86_expand_vector_move (machine_mode mode, rtx operands[]) >> { >>rtx op0 = operands[0], op1 = operands[1]; >> - unsigned int align = GET_MODE_ALIGNMENT (mode); >> + /* Use GET_MODE_BITSIZE instead of GET_MODE_ALIGNMENT since the >> + biggest alignment is 4 byte for IA MCU psABI. */ >> + unsigned int align = GET_MODE_BITSIZE (mode); > > How about using TARGET_IAMCU condition here and using bitsize only for > TARGET_IAMCU? > Works for me. Is it OK with that change? -- H.J.
Re: [PATCH] Use GET_MODE_BITSIZE to get vector natural alignment
On Mon, Oct 19, 2015 at 1:12 PM, H.J. Luwrote: > On Mon, Oct 19, 2015 at 4:05 AM, Uros Bizjak wrote: >> On Fri, Oct 16, 2015 at 7:42 PM, H.J. Lu wrote: >>> Since GET_MODE_ALIGNMENT is defined by psABI and the biggest alignment >>> is 4 byte for IA MCU psABI, we should use GET_MODE_BITSIZE to get >>> vector natural alignment to check misaligned vector move. >>> >>> OK for trunk? >>> >>> Thanks. >>> >>> H.J. >>> --- >>> * config/i386/i386.c (ix86_expand_vector_move): Use >>> GET_MODE_BITSIZE to get vector natural alignment. >>> --- >>> gcc/config/i386/i386.c | 4 +++- >>> 1 file changed, 3 insertions(+), 1 deletion(-) >>> >>> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c >>> index ebe2b0a..d0e1f4c 100644 >>> --- a/gcc/config/i386/i386.c >>> +++ b/gcc/config/i386/i386.c >>> @@ -18650,7 +18650,9 @@ void >>> ix86_expand_vector_move (machine_mode mode, rtx operands[]) >>> { >>>rtx op0 = operands[0], op1 = operands[1]; >>> - unsigned int align = GET_MODE_ALIGNMENT (mode); >>> + /* Use GET_MODE_BITSIZE instead of GET_MODE_ALIGNMENT since the >>> + biggest alignment is 4 byte for IA MCU psABI. */ >>> + unsigned int align = GET_MODE_BITSIZE (mode); >> >> How about using TARGET_IAMCU condition here and using bitsize only for >> TARGET_IAMCU? >> > > Works for me. Is it OK with that change? Yes. Thanks, Uros.