i386-options.c (ix86_omp_device_kind_arch_isa): Don't change sse4.2 to sse4_2 and...
authorJakub Jelinek <jakub@redhat.com>
Thu, 14 Nov 2019 08:15:31 +0000 (09:15 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 14 Nov 2019 08:15:31 +0000 (09:15 +0100)
* config/i386/i386-options.c (ix86_omp_device_kind_arch_isa): Don't
change sse4.2 to sse4_2 and sse4.1 to sse4.1.
* config/i386/t-omp-device (omp-device-properties-i386): Likewise.

* c-c++-common/gomp/declare-variant-11.c: Add "sse4.2" and "sse4.1"
test.

From-SVN: r278205

gcc/ChangeLog
gcc/config/i386/i386-options.c
gcc/config/i386/t-omp-device
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/gomp/declare-variant-11.c

index 7da3e6df487b15ca9c2eddbc4cd5f7844dca0101..4a23dfc2ac20ae265102c72dd7d22c1d5bd03252 100644 (file)
@@ -1,5 +1,9 @@
 2019-11-14  Jakub Jelinek  <jakub@redhat.com>
 
+       * config/i386/i386-options.c (ix86_omp_device_kind_arch_isa): Don't
+       change sse4.2 to sse4_2 and sse4.1 to sse4.1.
+       * config/i386/t-omp-device (omp-device-properties-i386): Likewise.
+
        * omp-general.c (omp_context_name_list_prop): New function.
        (omp_context_selector_matches): Use it.  Return 0 if it returns
        NULL.
index b082228ebf22f7e9e6b7b661617def83af7956ca..7470013437fcfc105a53bc510ab305d47c80ff0e 100644 (file)
@@ -316,19 +316,13 @@ ix86_omp_device_kind_arch_isa (enum omp_device_kind_arch_isa trait,
          HOST_WIDE_INT mask = i ? ix86_isa_flags2 : ix86_isa_flags;
          for (size_t n = 0; n < nopts; n++)
            {
-             const char *option = opts[n].option + 2;
-             /* -msse4.2 and -msse4.1 options contain dot, which is not valid
-                in identifiers.  Use underscore instead, and handle sse4
-                as an alias to sse4_2.  */
+             /* Handle sse4 as an alias to sse4.2.  */
              if (opts[n].mask == OPTION_MASK_ISA_SSE4_2)
                {
-                 option = "sse4_2";
                  if (strcmp (name, "sse4") == 0)
                    return (mask & opts[n].mask) != 0 ? 1 : -1;
                }
-             else if (opts[n].mask == OPTION_MASK_ISA_SSE4_1)
-               option = "sse4_1";
-             if (strcmp (name, option) == 0)
+             if (strcmp (name, opts[n].option + 2) == 0)
                return (mask & opts[n].mask) != 0 ? 1 : -1;
            }
        }
index 26de162b54b29e57d0e4a35d355cae7c0c819e1c..037ae5e112d9d832ce733c6a5358a3439ec56a01 100644 (file)
@@ -3,4 +3,4 @@ omp-device-properties-i386: $(srcdir)/config/i386/i386-options.c
        echo arch: x86 x86_64 i386 i486 i586 i686 ia32 >> $@
        echo isa: sse4 `sed -n '/^static struct ix86_target_opts isa2\?_opts\[\] =/,/^};/p' \
          $(srcdir)/config/i386/i386-options.c | \
-         sed -n 's/",.*$$//;s/\./_/;s/^  { "-m//p'` >> $@
+         sed -n 's/",.*$$//;s/^  { "-m//p'` >> $@
index b94cac2b50bf04531229be54e72c9a585c60145d..19aaa423bfc26b72374930b2a83b30156218ba16 100644 (file)
@@ -1,5 +1,8 @@
 2019-11-14  Jakub Jelinek  <jakub@redhat.com>
 
+       * c-c++-common/gomp/declare-variant-11.c: Add "sse4.2" and "sse4.1"
+       test.
+
        * c-c++-common/gomp/declare-variant-2.c: Add test for non-integral
        score and for negative score.
        * c-c++-common/gomp/declare-variant-3.c: Add test for zero score.
index 9589948a0f762ff0723f3462f244530db917ead7..50a3132869c1d24db9be942877ae356a96865a24 100644 (file)
@@ -14,7 +14,7 @@ void f05 (void);
 void f06 (void);
 void f07 (void);
 void f08 (void);
-#pragma omp declare variant (f07) match (device={isa(sse4,sse3,"avx")})
+#pragma omp declare variant (f07) match (device={isa(sse4,"sse4.1","sse4.2",sse3,"avx")})
 #pragma omp declare variant (f08) match (device={isa("avx",sse3)})
 void f09 (void);
 void f10 (void);