Message ID | 20220804210016.2613403-1-adhemerval.zanella@linaro.org |
---|---|
State | New |
Headers | show |
Series | i386: Use fldt instead of fld on e_logl.S | expand |
On Thu, Aug 4, 2022 at 2:00 PM Adhemerval Zanella <adhemerval.zanella@linaro.org> wrote: > > Clang cannot assemble fldt in the AT&T dialect mode. > --- > sysdeps/i386/i686/fpu/e_logl.S | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/sysdeps/i386/i686/fpu/e_logl.S b/sysdeps/i386/i686/fpu/e_logl.S > index 63183ac544..5d53f3bb22 100644 > --- a/sysdeps/i386/i686/fpu/e_logl.S > +++ b/sysdeps/i386/i686/fpu/e_logl.S > @@ -43,7 +43,7 @@ ENTRY(__ieee754_logl) > fsubl MO(one) // x-1 : x : log(2) > 5: fld %st // x-1 : x-1 : x : log(2) > fabs // |x-1| : x-1 : x : log(2) > - fld MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) > + fldt MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) > fcomip %st(1) // |x-1| : x-1 : x : log(2) > fstp %st(0) // x-1 : x : log(2) > jc 2f > @@ -76,7 +76,7 @@ ENTRY(__logl_finite) > fsubl MO(one) // x-1 : x : log(2) > fld %st // x-1 : x-1 : x : log(2) > fabs // |x-1| : x-1 : x : log(2) > - fld MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) > + fldt MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) > fcomip %st(1) // |x-1| : x-1 : x : log(2) > fstp %st(0) // x-1 : x : log(2) > jc 2b > -- > 2.34.1 > I don't think this is correct since there are .type limit,@object limit: .double 0.29 It should be fldl.
On Thu, Aug 4, 2022 at 2:24 PM H.J. Lu <hjl.tools@gmail.com> wrote: > > On Thu, Aug 4, 2022 at 2:00 PM Adhemerval Zanella > <adhemerval.zanella@linaro.org> wrote: > > > > Clang cannot assemble fldt in the AT&T dialect mode. > > --- > > sysdeps/i386/i686/fpu/e_logl.S | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/sysdeps/i386/i686/fpu/e_logl.S b/sysdeps/i386/i686/fpu/e_logl.S > > index 63183ac544..5d53f3bb22 100644 > > --- a/sysdeps/i386/i686/fpu/e_logl.S > > +++ b/sysdeps/i386/i686/fpu/e_logl.S > > @@ -43,7 +43,7 @@ ENTRY(__ieee754_logl) > > fsubl MO(one) // x-1 : x : log(2) > > 5: fld %st // x-1 : x-1 : x : log(2) > > fabs // |x-1| : x-1 : x : log(2) > > - fld MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) > > + fldt MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) > > fcomip %st(1) // |x-1| : x-1 : x : log(2) > > fstp %st(0) // x-1 : x : log(2) > > jc 2f > > @@ -76,7 +76,7 @@ ENTRY(__logl_finite) > > fsubl MO(one) // x-1 : x : log(2) > > fld %st // x-1 : x-1 : x : log(2) > > fabs // |x-1| : x-1 : x : log(2) > > - fld MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) > > + fldt MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) > > fcomip %st(1) // |x-1| : x-1 : x : log(2) > > fstp %st(0) // x-1 : x : log(2) > > jc 2b > > -- > > 2.34.1 > > > > I don't think this is correct since there are > > .type limit,@object > limit: .double 0.29 > > It should be fldl. > > -- > H.J. If I am not mistaken, the existing fld has a bug as it is treated as flds fld limit@GOTOFF(%edx) # treated as flds flds limit@GOTOFF(%edx) fldl limit@GOTOFF(%edx) fldt limit@GOTOFF(%edx) .section .rodata.cst8,"aM",@progbits,8 .p2align 3 limit: .double 0.29
On Thu, Aug 4, 2022 at 2:31 PM Fangrui Song <maskray@google.com> wrote: > > On Thu, Aug 4, 2022 at 2:24 PM H.J. Lu <hjl.tools@gmail.com> wrote: > > > > On Thu, Aug 4, 2022 at 2:00 PM Adhemerval Zanella > > <adhemerval.zanella@linaro.org> wrote: > > > > > > Clang cannot assemble fldt in the AT&T dialect mode. > > > --- > > > sysdeps/i386/i686/fpu/e_logl.S | 4 ++-- > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > diff --git a/sysdeps/i386/i686/fpu/e_logl.S b/sysdeps/i386/i686/fpu/e_logl.S > > > index 63183ac544..5d53f3bb22 100644 > > > --- a/sysdeps/i386/i686/fpu/e_logl.S > > > +++ b/sysdeps/i386/i686/fpu/e_logl.S > > > @@ -43,7 +43,7 @@ ENTRY(__ieee754_logl) > > > fsubl MO(one) // x-1 : x : log(2) > > > 5: fld %st // x-1 : x-1 : x : log(2) > > > fabs // |x-1| : x-1 : x : log(2) > > > - fld MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) > > > + fldt MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) > > > fcomip %st(1) // |x-1| : x-1 : x : log(2) > > > fstp %st(0) // x-1 : x : log(2) > > > jc 2f > > > @@ -76,7 +76,7 @@ ENTRY(__logl_finite) > > > fsubl MO(one) // x-1 : x : log(2) > > > fld %st // x-1 : x-1 : x : log(2) > > > fabs // |x-1| : x-1 : x : log(2) > > > - fld MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) > > > + fldt MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) > > > fcomip %st(1) // |x-1| : x-1 : x : log(2) > > > fstp %st(0) // x-1 : x : log(2) > > > jc 2b > > > -- > > > 2.34.1 > > > > > > > I don't think this is correct since there are > > > > .type limit,@object > > limit: .double 0.29 > > > > It should be fldl. > > > > -- > > H.J. > > If I am not mistaken, the existing fld has a bug as it is treated as flds True. It doesn't seem to cause any issue. > fld limit@GOTOFF(%edx) # treated as flds > flds limit@GOTOFF(%edx) > fldl limit@GOTOFF(%edx) > fldt limit@GOTOFF(%edx) > > .section .rodata.cst8,"aM",@progbits,8 > .p2align 3 > limit: .double 0.29
On 04/08/22 18:35, H.J. Lu wrote: > On Thu, Aug 4, 2022 at 2:31 PM Fangrui Song <maskray@google.com> wrote: >> >> On Thu, Aug 4, 2022 at 2:24 PM H.J. Lu <hjl.tools@gmail.com> wrote: >>> >>> On Thu, Aug 4, 2022 at 2:00 PM Adhemerval Zanella >>> <adhemerval.zanella@linaro.org> wrote: >>>> >>>> Clang cannot assemble fldt in the AT&T dialect mode. >>>> --- >>>> sysdeps/i386/i686/fpu/e_logl.S | 4 ++-- >>>> 1 file changed, 2 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/sysdeps/i386/i686/fpu/e_logl.S b/sysdeps/i386/i686/fpu/e_logl.S >>>> index 63183ac544..5d53f3bb22 100644 >>>> --- a/sysdeps/i386/i686/fpu/e_logl.S >>>> +++ b/sysdeps/i386/i686/fpu/e_logl.S >>>> @@ -43,7 +43,7 @@ ENTRY(__ieee754_logl) >>>> fsubl MO(one) // x-1 : x : log(2) >>>> 5: fld %st // x-1 : x-1 : x : log(2) >>>> fabs // |x-1| : x-1 : x : log(2) >>>> - fld MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) >>>> + fldt MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) >>>> fcomip %st(1) // |x-1| : x-1 : x : log(2) >>>> fstp %st(0) // x-1 : x : log(2) >>>> jc 2f >>>> @@ -76,7 +76,7 @@ ENTRY(__logl_finite) >>>> fsubl MO(one) // x-1 : x : log(2) >>>> fld %st // x-1 : x-1 : x : log(2) >>>> fabs // |x-1| : x-1 : x : log(2) >>>> - fld MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) >>>> + fldt MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) >>>> fcomip %st(1) // |x-1| : x-1 : x : log(2) >>>> fstp %st(0) // x-1 : x : log(2) >>>> jc 2b >>>> -- >>>> 2.34.1 >>>> >>> >>> I don't think this is correct since there are >>> >>> .type limit,@object >>> limit: .double 0.29 >>> >>> It should be fldl. >>> >>> -- >>> H.J. >> >> If I am not mistaken, the existing fld has a bug as it is treated as flds > > True. It doesn't seem to cause any issue. > >> fld limit@GOTOFF(%edx) # treated as flds >> flds limit@GOTOFF(%edx) >> fldl limit@GOTOFF(%edx) >> fldt limit@GOTOFF(%edx) >> >> .section .rodata.cst8,"aM",@progbits,8 >> .p2align 3 >> limit: .double 0.29 fldl works and it see the best option. Ok with this change?
On Fri, Aug 5, 2022 at 5:28 AM Adhemerval Zanella Netto <adhemerval.zanella@linaro.org> wrote: > > > > On 04/08/22 18:35, H.J. Lu wrote: > > On Thu, Aug 4, 2022 at 2:31 PM Fangrui Song <maskray@google.com> wrote: > >> > >> On Thu, Aug 4, 2022 at 2:24 PM H.J. Lu <hjl.tools@gmail.com> wrote: > >>> > >>> On Thu, Aug 4, 2022 at 2:00 PM Adhemerval Zanella > >>> <adhemerval.zanella@linaro.org> wrote: > >>>> > >>>> Clang cannot assemble fldt in the AT&T dialect mode. > >>>> --- > >>>> sysdeps/i386/i686/fpu/e_logl.S | 4 ++-- > >>>> 1 file changed, 2 insertions(+), 2 deletions(-) > >>>> > >>>> diff --git a/sysdeps/i386/i686/fpu/e_logl.S b/sysdeps/i386/i686/fpu/e_logl.S > >>>> index 63183ac544..5d53f3bb22 100644 > >>>> --- a/sysdeps/i386/i686/fpu/e_logl.S > >>>> +++ b/sysdeps/i386/i686/fpu/e_logl.S > >>>> @@ -43,7 +43,7 @@ ENTRY(__ieee754_logl) > >>>> fsubl MO(one) // x-1 : x : log(2) > >>>> 5: fld %st // x-1 : x-1 : x : log(2) > >>>> fabs // |x-1| : x-1 : x : log(2) > >>>> - fld MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) > >>>> + fldt MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) > >>>> fcomip %st(1) // |x-1| : x-1 : x : log(2) > >>>> fstp %st(0) // x-1 : x : log(2) > >>>> jc 2f > >>>> @@ -76,7 +76,7 @@ ENTRY(__logl_finite) > >>>> fsubl MO(one) // x-1 : x : log(2) > >>>> fld %st // x-1 : x-1 : x : log(2) > >>>> fabs // |x-1| : x-1 : x : log(2) > >>>> - fld MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) > >>>> + fldt MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) > >>>> fcomip %st(1) // |x-1| : x-1 : x : log(2) > >>>> fstp %st(0) // x-1 : x : log(2) > >>>> jc 2b > >>>> -- > >>>> 2.34.1 > >>>> > >>> > >>> I don't think this is correct since there are > >>> > >>> .type limit,@object > >>> limit: .double 0.29 > >>> > >>> It should be fldl. > >>> > >>> -- > >>> H.J. > >> > >> If I am not mistaken, the existing fld has a bug as it is treated as flds > > > > True. It doesn't seem to cause any issue. > > > >> fld limit@GOTOFF(%edx) # treated as flds > >> flds limit@GOTOFF(%edx) > >> fldl limit@GOTOFF(%edx) > >> fldt limit@GOTOFF(%edx) > >> > >> .section .rodata.cst8,"aM",@progbits,8 > >> .p2align 3 > >> limit: .double 0.29 > > fldl works and it see the best option. Ok with this change? Yes. Thanks.
On Aug 04 2022, Adhemerval Zanella via Libc-alpha wrote:
> Clang cannot assemble fldt in the AT&T dialect mode.
s/fldt/fld/
diff --git a/sysdeps/i386/i686/fpu/e_logl.S b/sysdeps/i386/i686/fpu/e_logl.S index 63183ac544..5d53f3bb22 100644 --- a/sysdeps/i386/i686/fpu/e_logl.S +++ b/sysdeps/i386/i686/fpu/e_logl.S @@ -43,7 +43,7 @@ ENTRY(__ieee754_logl) fsubl MO(one) // x-1 : x : log(2) 5: fld %st // x-1 : x-1 : x : log(2) fabs // |x-1| : x-1 : x : log(2) - fld MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) + fldt MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) fcomip %st(1) // |x-1| : x-1 : x : log(2) fstp %st(0) // x-1 : x : log(2) jc 2f @@ -76,7 +76,7 @@ ENTRY(__logl_finite) fsubl MO(one) // x-1 : x : log(2) fld %st // x-1 : x-1 : x : log(2) fabs // |x-1| : x-1 : x : log(2) - fld MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) + fldt MO(limit) // 0.29 : |x-1| : x-1 : x : log(2) fcomip %st(1) // |x-1| : x-1 : x : log(2) fstp %st(0) // x-1 : x : log(2) jc 2b