Message ID | 20211102204459.3405575-1-maskray@google.com |
---|---|
State | New |
Headers | show |
Series | x86-64: Replace movzx with movzbl | expand |
On Tue, Nov 2, 2021 at 1:45 PM Fangrui Song <maskray@google.com> wrote: > > Clang cannot assemble movzx in the AT&T dialect mode. > > ../sysdeps/x86_64/strcmp.S:2232:16: error: invalid operand for instruction > movzx (%rsi), %ecx > ^~~~ > > Change movzx to movzbl, which follows the AT&T dialect and is used > elsewhere in the file. > --- > sysdeps/x86_64/strcmp.S | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/sysdeps/x86_64/strcmp.S b/sysdeps/x86_64/strcmp.S > index c7cbe4042a..bfe83abede 100644 > --- a/sysdeps/x86_64/strcmp.S > +++ b/sysdeps/x86_64/strcmp.S > @@ -2229,8 +2229,8 @@ LABEL(strcmp_exitz): > > .p2align 4 > LABEL(Byte0): > - movzx (%rsi), %ecx > - movzx (%rdi), %eax > + movzbl (%rsi), %ecx > + movzbl (%rdi), %eax > > #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L > leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx > -- > 2.33.1.1089.g2158813163f-goog > LGTM. Reviewed-by: H.J. Lu <hjl.tools@gmail.com> Thanks.
On 2021-11-02, H.J. Lu wrote: >On Tue, Nov 2, 2021 at 1:45 PM Fangrui Song <maskray@google.com> wrote: >> >> Clang cannot assemble movzx in the AT&T dialect mode. >> >> ../sysdeps/x86_64/strcmp.S:2232:16: error: invalid operand for instruction >> movzx (%rsi), %ecx >> ^~~~ >> >> Change movzx to movzbl, which follows the AT&T dialect and is used >> elsewhere in the file. >> --- >> sysdeps/x86_64/strcmp.S | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/sysdeps/x86_64/strcmp.S b/sysdeps/x86_64/strcmp.S >> index c7cbe4042a..bfe83abede 100644 >> --- a/sysdeps/x86_64/strcmp.S >> +++ b/sysdeps/x86_64/strcmp.S >> @@ -2229,8 +2229,8 @@ LABEL(strcmp_exitz): >> >> .p2align 4 >> LABEL(Byte0): >> - movzx (%rsi), %ecx >> - movzx (%rdi), %eax >> + movzbl (%rsi), %ecx >> + movzbl (%rdi), %eax >> >> #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L >> leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx >> -- >> 2.33.1.1089.g2158813163f-goog >> > >LGTM. > >Reviewed-by: H.J. Lu <hjl.tools@gmail.com> > >Thanks. Thanks for the quick review! Just noticed that sysdeps/x86_64/multiarch/strcmp-sse42.S has a similar pattern which needs fixing as well. I'll fix that, too.
On Tue, Nov 2, 2021 at 6:16 PM Fangrui Song via Libc-alpha <libc-alpha@sourceware.org> wrote: > > On 2021-11-02, H.J. Lu wrote: > >On Tue, Nov 2, 2021 at 1:45 PM Fangrui Song <maskray@google.com> wrote: > >> > >> Clang cannot assemble movzx in the AT&T dialect mode. > >> > >> ../sysdeps/x86_64/strcmp.S:2232:16: error: invalid operand for instruction > >> movzx (%rsi), %ecx > >> ^~~~ > >> > >> Change movzx to movzbl, which follows the AT&T dialect and is used > >> elsewhere in the file. > >> --- > >> sysdeps/x86_64/strcmp.S | 4 ++-- > >> 1 file changed, 2 insertions(+), 2 deletions(-) > >> > >> diff --git a/sysdeps/x86_64/strcmp.S b/sysdeps/x86_64/strcmp.S > >> index c7cbe4042a..bfe83abede 100644 > >> --- a/sysdeps/x86_64/strcmp.S > >> +++ b/sysdeps/x86_64/strcmp.S > >> @@ -2229,8 +2229,8 @@ LABEL(strcmp_exitz): > >> > >> .p2align 4 > >> LABEL(Byte0): > >> - movzx (%rsi), %ecx > >> - movzx (%rdi), %eax > >> + movzbl (%rsi), %ecx > >> + movzbl (%rdi), %eax > >> > >> #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L > >> leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx > >> -- > >> 2.33.1.1089.g2158813163f-goog > >> > > > >LGTM. > > > >Reviewed-by: H.J. Lu <hjl.tools@gmail.com> > > > >Thanks. > > Thanks for the quick review! > > Just noticed that sysdeps/x86_64/multiarch/strcmp-sse42.S has a similar > pattern which needs fixing as well. I'll fix that, too. I would like to backport this patch to release branches. Any comments or objections? --Sunil
diff --git a/sysdeps/x86_64/strcmp.S b/sysdeps/x86_64/strcmp.S index c7cbe4042a..bfe83abede 100644 --- a/sysdeps/x86_64/strcmp.S +++ b/sysdeps/x86_64/strcmp.S @@ -2229,8 +2229,8 @@ LABEL(strcmp_exitz): .p2align 4 LABEL(Byte0): - movzx (%rsi), %ecx - movzx (%rdi), %eax + movzbl (%rsi), %ecx + movzbl (%rdi), %eax #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx