]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Work around clang assembler bug with expressions in .if
authorStan Shebs <stanshebs@google.com>
Wed, 7 Feb 2018 20:53:40 +0000 (12:53 -0800)
committerStan Shebs <stanshebs@google.com>
Wed, 7 Feb 2018 20:53:40 +0000 (12:53 -0800)
13 files changed:
sysdeps/x86_64/fpu/svml_d_exp_data.S
sysdeps/x86_64/fpu/svml_d_exp_data.h
sysdeps/x86_64/fpu/svml_d_log_data.S
sysdeps/x86_64/fpu/svml_d_log_data.h
sysdeps/x86_64/fpu/svml_d_pow_data.S
sysdeps/x86_64/fpu/svml_d_pow_data.h
sysdeps/x86_64/fpu/svml_d_trig_data.h
sysdeps/x86_64/fpu/svml_s_expf_data.h
sysdeps/x86_64/fpu/svml_s_logf_data.S
sysdeps/x86_64/fpu/svml_s_logf_data.h
sysdeps/x86_64/fpu/svml_s_powf_data.S
sysdeps/x86_64/fpu/svml_s_powf_data.h
sysdeps/x86_64/fpu/svml_s_trig_data.h

index 5e229c9bccda937c135f663354d4203806c8d5af..ec04297ce375c15ee87e2019f613b7dd9cc1ebb4 100644 (file)
 __svml_dexp_data:
 
 /* Lookup table of 2^(j/2^K): */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_dexp_data != __dbT
 .err
 .endif
+#endif
        .quad   0x3ff0000000000000
        .quad   0x3ff002c605e2e8cf
        .quad   0x3ff0058c86da1c0a
index a3721ce1375de296f52034a638987661f74178f8..d87e9f26f153ef8f68489b1f3edc45712a1e6594 100644 (file)
 #define __iDomainRange                 8768
 
 .macro double_vector offset value
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_dexp_data != \offset
 .err
 .endif
+#endif
 .rept 8
 .quad \value
 .endr
 .endm
 
 .macro float_vector offset value
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_dexp_data != \offset
 .err
 .endif
+#endif
 .rept 16
 .long \value
 .endr
index 0514551ccf742858449e0e93ff210fcc9d1f9965..bd0e29750507414be03d335d692b80a14acc2619 100644 (file)
@@ -30,9 +30,12 @@ __svml_dlog_data:
 
 /* Lookup table in high+low parts and 9-bit index for
    -log(mRcp), where mRcp is mantissa of 1/x 9-bit accurate reciprocal:  */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_dlog_data != _Log_HA_table
 .err
 .endif
+#endif
        .quad   0xc086232bdd7a8300
        .quad   0xbe1ce91eef3fb100
        .quad   0xc086232fdc7ad828
@@ -1066,9 +1069,12 @@ __svml_dlog_data:
 /* Lookup table with 9-bit index for
    -log(mRcp), where mRcp is mantissa of 1/x 9-bit accurate reciprocal:
  */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_dlog_data != _Log_LA_table
 .err
 .endif
+#endif
        .quad   0x8000000000000000
        .quad   0xbf5ff802a9ab10e6
        .quad   0xbf6ff00aa2b10bc0
@@ -1630,9 +1636,12 @@ double_vector _L2 0x3fe62e42fefa39ef
 
 /* General purpose constants:
    DP infinities, +/-  */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_dlog_data != _dInfs
 .err
 .endif
+#endif
        .quad   0x7ff0000000000000
        .quad   0xfff0000000000000
        .rept   48
@@ -1640,9 +1649,12 @@ double_vector _L2 0x3fe62e42fefa39ef
        .endr
 
 /* DP 1.0, +/- */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_dlog_data != _dOnes
 .err
 .endif
+#endif
        .quad   0x3ff0000000000000
        .quad   0xbff0000000000000
        .rept   48
@@ -1650,9 +1662,12 @@ double_vector _L2 0x3fe62e42fefa39ef
        .endr
 
 /* DP 0.0, +/- */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_dlog_data != _dZeros
 .err
 .endif
+#endif
        .quad   0x0000000000000000
        .quad   0x8000000000000000
        .rept   48
index a317c7b84502230886cad924b8cc46d40b2f4433..a6ae64f68096e4b0fad119350a8fc3e9a73d258e 100644 (file)
 #define _dZeros                        13568
 
 .macro double_vector offset value
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_dlog_data != \offset
 .err
 .endif
+#endif
 .rept 8
 .quad \value
 .endr
index 9e5f99c25e11956b02d00641e43f8eaf76484dbc..b2de746a62f98e22cc5b8548c6cb0c00213eb93b 100644 (file)
 __svml_dpow_data:
 
 /* Lookup log(2) table (for HSW): */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_dpow_data != _hsw_log2_table
 .err
 .endif
+#endif
        .quad   0xc08ff00000000000
        .quad   0x0000000000000000
        .quad   0xc08ff005c3e0ffc2
@@ -1064,9 +1067,12 @@ __svml_dpow_data:
        .endr
 
 /* Lookup exp(2) table (for HSW): */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_dpow_data != _hsw_dTe
 .err
 .endif
+#endif
        .quad   0x3ff0000000000000
        .quad   0x3ff00b1afa5abcbf
        .quad   0x3ff0163da9fb3335
@@ -1395,9 +1401,12 @@ double_vector _hsw_dce2 0x3fcebfbdff82c54d
 double_vector _hsw_dce1 0x3fe62e42fefa39b9
 
 /* Reciprocal lookup table for log part (non HSW): */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_dpow_data != _rcp_t1
 .err
 .endif
+#endif
        .quad   0x3ff7154740000000
        .quad   0x3ff70f8340000000
        .quad   0x3ff709c240000000
@@ -2429,9 +2438,12 @@ double_vector _hsw_dce1 0x3fe62e42fefa39b9
        .endr
 
 /* Log(2) lookup table for log part (non HSW): */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_dpow_data != _log2_t1
 .err
 .endif
+#endif
        .rept   2
        .quad   0x0000000000000000
        .endr
@@ -4489,9 +4501,12 @@ double_vector _hsw_dce1 0x3fe62e42fefa39b9
        .endr
 
 /* Exp(2) lookup table for exp part (non HSW) */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_dpow_data != _exp2_tbl
 .err
 .endif
+#endif
        .quad   0x3ff0000000000000
        .quad   0x0000000000000000
        .quad   0x3ff0163da9fb3335
index 55b573b2a7b01aa45ba62085c89e1c21a5dbe15c..4d02c825f42ddfd751445819400fdae99fd76d8c 100644 (file)
 #define _jIndexMask                    40704
 
 .macro double_vector offset value
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_dpow_data != \offset
 .err
 .endif
+#endif
 .rept 8
 .quad \value
 .endr
 .endm
 
 .macro float_vector offset value
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_dpow_data != \offset
 .err
 .endif
+#endif
 .rept 16
 .long \value
 .endr
index b9bb5dc6afadee35f3768cb669a2bdc962bef121..ca3697fc9c842e2541b75b1fed9c1b20d8c03de5 100644 (file)
 #define __dSignMask             __lNZero
 
 .macro double_vector offset value
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_d_trig_data != \offset
 .err
 .endif
+#endif
+.short 0x1234
+.long .-__svml_d_trig_data
+.short 0x4321
 .rept 8
 .quad \value
 .endr
index 56a1d8bdf6fe330154dcfdfc68dcb792cfbb07c4..62c4df68407bbfb7b642a9b62301d27e9fb54124 100644 (file)
 #define __iDomainRange                 768
 
 .macro float_vector offset value
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_sexp_data != \offset
 .err
 .endif
+#endif
 .rept 16
 .long \value
 .endr
index 154f98c2e0cde120b54cc42d9047c2703b107645..bbc5aadbc58be4d36637d3ad3523720cb0109431 100644 (file)
@@ -70,9 +70,12 @@ float_vector _sOne 0x3f800000
 float_vector _sLn2 0x3f317218
 
 /* SP infinity, +/- */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_slog_data != _sInfs
 .err
 .endif
+#endif
        .long   0x7f800000
        .long   0xff800000
        .rept   56
@@ -80,9 +83,12 @@ float_vector _sLn2 0x3f317218
        .endr
 
 /* SP one, +/- */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_slog_data != _sOnes
 .err
 .endif
+#endif
        .long   0x3f800000
        .long   0xbf800000
        .rept   56
@@ -90,9 +96,12 @@ float_vector _sLn2 0x3f317218
        .endr
 
 /* SP zero +/- */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_slog_data != _sZeros
 .err
 .endif
+#endif
        .long   0x00000000
        .long   0x80000000
        .rept   56
index 82a9903b1000cea280865dd9f43d3bf02601c79c..fc5d5a9f0cb3793a067de8618dad40112a4f17dd 100644 (file)
 #define _sZeros                        960
 
 .macro float_vector offset value
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_slog_data != \offset
 .err
 .endif
+#endif
 .rept 16
 .long \value
 .endr
index 74a31abd1ec0ae7d4d2edb80e5b49bfc3503bd42..855185c6f92e6c6e5133c994b4d66043ad635897 100644 (file)
@@ -46,9 +46,12 @@ float_vector _ABSMASK 0x7fffffff
 float_vector _DOMAINRANGE 0x42ae9a00
 
 /* Log(2) lookup High+Low table for logarithmic part */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_spow_data != _Log_HA_table
 .err
 .endif
+#endif
        .quad   0xc086232bdd7a8300
        .quad   0xbe1ce91eef3fb100
        .quad   0xc086232fdc7ad828
@@ -1080,9 +1083,12 @@ float_vector _DOMAINRANGE 0x42ae9a00
        .endr
 
 /* Log(2) lookup table for logarithmic part */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_spow_data != _Log_LA_table
 .err
 .endif
+#endif
        .quad   0x8000000000000000
        .quad   0xbf5ff802a9ab10e6
        .quad   0xbf6ff00aa2b10bc0
@@ -1650,9 +1656,12 @@ double_vector _Bias1 0x408ff00000000000
 double_vector _L2 0x3fe62e42fefa39ef
 
 /* dInfs = DP infinity, +/- == */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_spow_data != _dInfs
 .err
 .endif
+#endif
        .quad   0x7ff0000000000000
        .quad   0xfff0000000000000
        .rept   48
@@ -1660,9 +1669,12 @@ double_vector _L2 0x3fe62e42fefa39ef
        .endr
 
 /* dOnes = DP one, +/- == */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_spow_data != _dOnes
 .err
 .endif
+#endif
        .quad   0x3ff0000000000000
        .quad   0xbff0000000000000
        .rept   48
@@ -1670,17 +1682,23 @@ double_vector _L2 0x3fe62e42fefa39ef
        .endr
 
 /* dZeros = DP zero +/- == */
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_spow_data != _dZeros
 .err
 .endif
+#endif
        .quad   0x0000000000000000
        .quad   0x8000000000000000
        .rept   48
        .byte   0
        .endr
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_spow_data != __dbT
 .err
 .endif
+#endif
        .quad   0x3feffffffc27dd9e
        .quad   0x3ff00162f1a4047d
        .quad   0x3ff002c603f68252
index 5d3270cf27815af0420ac95690508a39a6caf96c..78384f2af69e8c5282a5d1be5eeb54678ac4e09b 100644 (file)
 #define __iDomainRange                 30784
 
 .macro double_vector offset value
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_spow_data != \offset
 .err
 .endif
+#endif
 .rept 8
 .quad \value
 .endr
 .endm
 
 .macro float_vector offset value
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_spow_data != \offset
 .err
 .endif
+#endif
 .rept 16
 .long \value
 .endr
index 0faf161c08a71cd41014df17dc6e0eae65c1cafb..a584cf5edfce369c56bc8afe428cf908564d075d 100644 (file)
 #define S_TRIG_DATA_H
 
 .macro float_vector offset value
+/* clang integrated assembler doesn't think subtract yields an absolute, skip.  */
+#if !defined(__clang__)
 .if .-__svml_s_trig_data != \offset
 .err
 .endif
+#endif
 .rept 16
 .long \value
 .endr