public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Jakub Jelinek <jakub@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/gcc] rhel-f41-base: 7.0.1-0.11
Date: Mon, 29 Jun 2026 12:27:24 GMT	[thread overview]
Message-ID: <178273604488.1.16389297822312103878.rpms-gcc-88ff65fe514a@fedoraproject.org> (raw)

A new commit has been pushed.

Repo   : rpms/gcc
Branch : rhel-f41-base
Commit : 88ff65fe514a834d7741c689674dcdd5ac27968a
Author : Jakub Jelinek <jakub@redhat.com>
Date   : 2017-03-08T19:02:18+01:00
Stats  : +2010/-6 in 8 file(s)
URL    : https://src.fedoraproject.org/rpms/gcc/c/88ff65fe514a834d7741c689674dcdd5ac27968a?branch=rhel-f41-base

Log:
7.0.1-0.11

---
diff --git a/.gitignore b/.gitignore
index 29f4e35..ea7b0d5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,4 @@
 /gcc-7.0.1-20170211.tar.bz2
 /gcc-7.0.1-20170219.tar.bz2
 /gcc-7.0.1-20170225.tar.bz2
+/gcc-7.0.1-20170308.tar.bz2

diff --git a/gcc.spec b/gcc.spec
index 7e5aeef..2413868 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,10 +1,10 @@
-%global DATE 20170225
-%global SVNREV 245736
+%global DATE 20170308
+%global SVNREV 245981
 %global gcc_version 7.0.1
 %global gcc_major 7
 # Note, gcc_release must be integer, if you want to add suffixes to
 # %{release}, append them after %{gcc_release} on Release: line.
-%global gcc_release 0.10
+%global gcc_release 0.11
 %global nvptx_tools_gitrev c28050f60193b3b95a18866a96f03334e874e78f
 %global nvptx_newlib_gitrev aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24
 %global _unpackaged_files_terminate_build 0
@@ -232,6 +232,10 @@ Patch8: gcc7-no-add-needed.patch
 Patch9: gcc7-aarch64-async-unw-tables.patch
 Patch10: gcc7-foffload-default.patch
 Patch11: gcc7-Wno-format-security.patch
+Patch12: gcc7-pr79932-1.patch
+Patch13: gcc7-pr79932-2.patch
+Patch14: gcc7-pr79941.patch
+Patch15: gcc7-pr79944.patch
 
 Patch1000: nvptx-tools-no-ptxas.patch
 Patch1001: nvptx-tools-build.patch
@@ -820,6 +824,10 @@ package or when debugging this package.
 %patch9 -p0 -b .aarch64-async-unw-tables~
 %patch10 -p0 -b .foffload-default~
 %patch11 -p0 -b .Wno-format-security~
+%patch12 -p0 -b .pr79932-1~
+%patch13 -p0 -b .pr79932-2~
+%patch14 -p0 -b .pr79941~
+%patch15 -p0 -b .pr79944~
 
 cd nvptx-tools-%{nvptx_tools_gitrev}
 %patch1000 -p1 -b .nvptx-tools-no-ptxas~
@@ -3236,6 +3244,37 @@ fi
 %endif
 
 %changelog
+* Wed Mar  8 2017 Jakub Jelinek <jakub@redhat.com> 7.0.1-0.11
+- update from the trunk
+  - PRs ada/79903, ada/79945, c++/42000, c++/64574, c++/70266, c++/71568,
+	c++/79414, c++/79681, c++/79746, c++/79782, c++/79791, c++/79796,
+	c++/79821, c++/79822, c++/79825, c/79756, c/79758, c/79834, c/79836,
+	c/79837, c/79847, c/79855, c/79940, demangler/67264, demangler/70909,
+	fortran/51119, fortran/78379, fortran/79739, fortran/79841,
+	fortran/79894, libstdc++/79789, libstdc++/79798, lto/78140, lto/79625,
+	lto/79760, middle-end/68270, middle-end/79692, middle-end/79721,
+	middle-end/79731, middle-end/79805, middle-end/79809,
+	middle-end/79818, rtl-optimization/79571, rtl-optimization/79584,
+	rtl-optimization/79780, rtl-optimization/79901, sanitize/79783,
+	sanitizer/79897, sanitizer/79904, target/43763, target/68739,
+	target/79395, target/79439, target/79514, target/79544, target/79729,
+	target/79742, target/79749, target/79752, target/79793, target/79807,
+	target/79812, tree-optimization/45397, tree-optimization/66768,
+	tree-optimization/77536, tree-optimization/79345,
+	tree-optimization/79690, tree-optimization/79691,
+	tree-optimization/79699, tree-optimization/79723,
+	tree-optimization/79732, tree-optimization/79734,
+	tree-optimization/79737, tree-optimization/79740,
+	tree-optimization/79777, tree-optimization/79803,
+	tree-optimization/79824, tree-optimization/79894,
+	tree-optimization/79920, tree-optimization/79943,
+	tree-optimization/79955
+- fix 64 avx512vl and 6 avx512bw intrinsics that were not available with -O0
+  (PR target/79932)
+- temporarily disable incorrect folding of Altivec vmul[oe]u[bh] intrinsics
+  (#1429961, PR middle-end/79941)
+- fix -fsanitize=address with some atomic/sync builtins (PR sanitizer/79944)
+
 * Sat Feb 25 2017 Jakub Jelinek <jakub@redhat.com> 7.0.1-0.10
 - update from the trunk
   - PRs c++/17729, c++/41727, c++/50308, c++/69523, c++/78139, c++/78282,

diff --git a/gcc7-pr79932-1.patch b/gcc7-pr79932-1.patch
new file mode 100644
index 0000000..2d822f7
--- /dev/null
+++ b/gcc7-pr79932-1.patch
@@ -0,0 +1,181 @@
+2017-03-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/79932
+	* config/i386/avx512bwintrin.h (_mm512_packs_epi32,
+	_mm512_maskz_packs_epi32, _mm512_mask_packs_epi32,
+	_mm512_packus_epi32, _mm512_maskz_packus_epi32,
+	_mm512_mask_packus_epi32): Move definitions outside of __OPTIMIZE__
+	guarded section.
+
+	* gcc.target/i386/pr79932-1.c: New test.
+
+--- gcc/config/i386/avx512bwintrin.h.jj	2017-01-23 18:09:48.000000000 +0100
++++ gcc/config/i386/avx512bwintrin.h	2017-03-07 07:47:28.900049849 +0100
+@@ -2656,6 +2656,72 @@ _mm512_cmple_epi16_mask (__m512i __X, __
+ 						  (__mmask32) -1);
+ }
+ 
++extern __inline __m512i
++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm512_packs_epi32 (__m512i __A, __m512i __B)
++{
++  return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
++						    (__v16si) __B,
++						    (__v32hi)
++						    _mm512_setzero_si512 (),
++						    (__mmask32) -1);
++}
++
++extern __inline __m512i
++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
++{
++  return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
++						    (__v16si) __B,
++						    (__v32hi)
++						    _mm512_setzero_si512 (),
++						    __M);
++}
++
++extern __inline __m512i
++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
++			 __m512i __B)
++{
++  return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
++						    (__v16si) __B,
++						    (__v32hi) __W,
++						    __M);
++}
++
++extern __inline __m512i
++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm512_packus_epi32 (__m512i __A, __m512i __B)
++{
++  return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
++						    (__v16si) __B,
++						    (__v32hi)
++						    _mm512_setzero_si512 (),
++						    (__mmask32) -1);
++}
++
++extern __inline __m512i
++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
++{
++  return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
++						    (__v16si) __B,
++						    (__v32hi)
++						    _mm512_setzero_si512 (),
++						    __M);
++}
++
++extern __inline __m512i
++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
++			  __m512i __B)
++{
++  return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
++						    (__v16si) __B,
++						    (__v32hi) __W,
++						    __M);
++}
++
+ #ifdef __OPTIMIZE__
+ extern __inline __mmask32
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+@@ -3012,72 +3078,6 @@ _mm512_cmp_epu8_mask (__m512i __X, __m51
+ }
+ 
+ extern __inline __m512i
+-__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm512_packs_epi32 (__m512i __A, __m512i __B)
+-{
+-  return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
+-						    (__v16si) __B,
+-						    (__v32hi)
+-						    _mm512_setzero_si512 (),
+-						    (__mmask32) -1);
+-}
+-
+-extern __inline __m512i
+-__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
+-{
+-  return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
+-						    (__v16si) __B,
+-						    (__v32hi)
+-						    _mm512_setzero_si512 (),
+-						    __M);
+-}
+-
+-extern __inline __m512i
+-__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
+-			 __m512i __B)
+-{
+-  return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
+-						    (__v16si) __B,
+-						    (__v32hi) __W,
+-						    __M);
+-}
+-
+-extern __inline __m512i
+-__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm512_packus_epi32 (__m512i __A, __m512i __B)
+-{
+-  return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
+-						    (__v16si) __B,
+-						    (__v32hi)
+-						    _mm512_setzero_si512 (),
+-						    (__mmask32) -1);
+-}
+-
+-extern __inline __m512i
+-__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
+-{
+-  return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
+-						    (__v16si) __B,
+-						    (__v32hi)
+-						    _mm512_setzero_si512 (),
+-						    __M);
+-}
+-
+-extern __inline __m512i
+-__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
+-			  __m512i __B)
+-{
+-  return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
+-						    (__v16si) __B,
+-						    (__v32hi) __W,
+-						    __M);
+-}
+-
+-extern __inline __m512i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_bslli_epi128 (__m512i __A, const int __N)
+ {
+--- gcc/testsuite/gcc.target/i386/pr79932-1.c.jj	2017-03-07 07:54:45.181339418 +0100
++++ gcc/testsuite/gcc.target/i386/pr79932-1.c	2017-03-07 07:54:24.000000000 +0100
+@@ -0,0 +1,19 @@
++/* PR target/79932 */
++/* { dg-do compile } */
++/* { dg-options "-O0 -mavx512bw" } */
++
++#include <x86intrin.h>
++
++__m512i a, b, c, d, e, f, g, h, i;
++__mmask32 m;
++
++void
++foo (void)
++{
++  d = _mm512_packs_epi32 (a, b);
++  e = _mm512_maskz_packs_epi32 (m, a, b);
++  f = _mm512_mask_packs_epi32 (c, m, a, b);
++  g = _mm512_packus_epi32 (a, b);
++  h = _mm512_maskz_packus_epi32 (m, a, b);
++  i = _mm512_mask_packus_epi32 (c, m, a, b);
++}

diff --git a/gcc7-pr79932-2.patch b/gcc7-pr79932-2.patch
new file mode 100644
index 0000000..93d3b7b
--- /dev/null
+++ b/gcc7-pr79932-2.patch
@@ -0,0 +1,1286 @@
+2017-03-07  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/79932
+	* config/i386/avx512vlintrin.h (_mm256_cmpge_epi32_mask,
+	_mm256_cmpge_epi64_mask, _mm256_cmpge_epu32_mask,
+	_mm256_cmpge_epu64_mask, _mm256_cmple_epi32_mask,
+	_mm256_cmple_epi64_mask, _mm256_cmple_epu32_mask,
+	_mm256_cmple_epu64_mask, _mm256_cmplt_epi32_mask,
+	_mm256_cmplt_epi64_mask, _mm256_cmplt_epu32_mask,
+	_mm256_cmplt_epu64_mask, _mm256_cmpneq_epi32_mask,
+	_mm256_cmpneq_epi64_mask, _mm256_cmpneq_epu32_mask,
+	_mm256_cmpneq_epu64_mask, _mm256_mask_cmpge_epi32_mask,
+	_mm256_mask_cmpge_epi64_mask, _mm256_mask_cmpge_epu32_mask,
+	_mm256_mask_cmpge_epu64_mask, _mm256_mask_cmple_epi32_mask,
+	_mm256_mask_cmple_epi64_mask, _mm256_mask_cmple_epu32_mask,
+	_mm256_mask_cmple_epu64_mask, _mm256_mask_cmplt_epi32_mask,
+	_mm256_mask_cmplt_epi64_mask, _mm256_mask_cmplt_epu32_mask,
+	_mm256_mask_cmplt_epu64_mask, _mm256_mask_cmpneq_epi32_mask,
+	_mm256_mask_cmpneq_epi64_mask, _mm256_mask_cmpneq_epu32_mask,
+	_mm256_mask_cmpneq_epu64_mask, _mm_cmpge_epi32_mask,
+	_mm_cmpge_epi64_mask, _mm_cmpge_epu32_mask, _mm_cmpge_epu64_mask,
+	_mm_cmple_epi32_mask, _mm_cmple_epi64_mask, _mm_cmple_epu32_mask,
+	_mm_cmple_epu64_mask, _mm_cmplt_epi32_mask, _mm_cmplt_epi64_mask,
+	_mm_cmplt_epu32_mask, _mm_cmplt_epu64_mask, _mm_cmpneq_epi32_mask,
+	_mm_cmpneq_epi64_mask, _mm_cmpneq_epu32_mask, _mm_cmpneq_epu64_mask,
+	_mm_mask_cmpge_epi32_mask, _mm_mask_cmpge_epi64_mask,
+	_mm_mask_cmpge_epu32_mask, _mm_mask_cmpge_epu64_mask,
+	_mm_mask_cmple_epi32_mask, _mm_mask_cmple_epi64_mask,
+	_mm_mask_cmple_epu32_mask, _mm_mask_cmple_epu64_mask,
+	_mm_mask_cmplt_epi32_mask, _mm_mask_cmplt_epi64_mask,
+	_mm_mask_cmplt_epu32_mask, _mm_mask_cmplt_epu64_mask,
+	_mm_mask_cmpneq_epi32_mask, _mm_mask_cmpneq_epi64_mask,
+	_mm_mask_cmpneq_epu32_mask, _mm_mask_cmpneq_epu64_mask): Move
+	definitions outside of __OPTIMIZE__ guarded section.
+
+	* gcc.target/i386/pr79932-2.c: New test.
+
+--- gcc/config/i386/avx512vlintrin.h.jj	2017-01-17 18:40:59.000000000 +0100
++++ gcc/config/i386/avx512vlintrin.h	2017-03-07 08:27:31.071641043 +0100
+@@ -9172,6 +9172,582 @@ _mm256_mask_permutexvar_epi32 (__m256i _
+ 						     __M);
+ }
+ 
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_mask_cmpneq_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
++						  (__v8si) __Y, 4,
++						  (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_cmpneq_epu32_mask (__m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
++						  (__v8si) __Y, 4,
++						  (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_mask_cmplt_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
++						  (__v8si) __Y, 1,
++						  (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_cmplt_epu32_mask (__m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
++						  (__v8si) __Y, 1,
++						  (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_mask_cmpge_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
++						  (__v8si) __Y, 5,
++						  (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_cmpge_epu32_mask (__m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
++						  (__v8si) __Y, 5,
++						  (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_mask_cmple_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
++						  (__v8si) __Y, 2,
++						  (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_cmple_epu32_mask (__m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
++						  (__v8si) __Y, 2,
++						  (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_mask_cmpneq_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
++						  (__v4di) __Y, 4,
++						  (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_cmpneq_epu64_mask (__m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
++						  (__v4di) __Y, 4,
++						  (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_mask_cmplt_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
++						  (__v4di) __Y, 1,
++						  (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_cmplt_epu64_mask (__m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
++						  (__v4di) __Y, 1,
++						  (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_mask_cmpge_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
++						  (__v4di) __Y, 5,
++						  (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_cmpge_epu64_mask (__m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
++						  (__v4di) __Y, 5,
++						  (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_mask_cmple_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
++						  (__v4di) __Y, 2,
++						  (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_cmple_epu64_mask (__m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
++						  (__v4di) __Y, 2,
++						  (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_mask_cmpneq_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
++						 (__v8si) __Y, 4,
++						 (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_cmpneq_epi32_mask (__m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
++						 (__v8si) __Y, 4,
++						 (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_mask_cmplt_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
++						 (__v8si) __Y, 1,
++						 (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_cmplt_epi32_mask (__m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
++						 (__v8si) __Y, 1,
++						 (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_mask_cmpge_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
++						 (__v8si) __Y, 5,
++						 (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_cmpge_epi32_mask (__m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
++						 (__v8si) __Y, 5,
++						 (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_mask_cmple_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
++						 (__v8si) __Y, 2,
++						 (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_cmple_epi32_mask (__m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
++						 (__v8si) __Y, 2,
++						 (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_mask_cmpneq_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
++						 (__v4di) __Y, 4,
++						 (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_cmpneq_epi64_mask (__m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
++						 (__v4di) __Y, 4,
++						 (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_mask_cmplt_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
++						 (__v4di) __Y, 1,
++						 (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_cmplt_epi64_mask (__m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
++						 (__v4di) __Y, 1,
++						 (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_mask_cmpge_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
++						 (__v4di) __Y, 5,
++						 (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_cmpge_epi64_mask (__m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
++						 (__v4di) __Y, 5,
++						 (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_mask_cmple_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
++						 (__v4di) __Y, 2,
++						 (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm256_cmple_epi64_mask (__m256i __X, __m256i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
++						 (__v4di) __Y, 2,
++						 (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_mask_cmpneq_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
++						  (__v4si) __Y, 4,
++						  (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_cmpneq_epu32_mask (__m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
++						  (__v4si) __Y, 4,
++						  (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_mask_cmplt_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
++						  (__v4si) __Y, 1,
++						  (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_cmplt_epu32_mask (__m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
++						  (__v4si) __Y, 1,
++						  (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_mask_cmpge_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
++						  (__v4si) __Y, 5,
++						  (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_cmpge_epu32_mask (__m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
++						  (__v4si) __Y, 5,
++						  (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_mask_cmple_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
++						  (__v4si) __Y, 2,
++						  (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_cmple_epu32_mask (__m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
++						  (__v4si) __Y, 2,
++						  (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_mask_cmpneq_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
++						  (__v2di) __Y, 4,
++						  (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_cmpneq_epu64_mask (__m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
++						  (__v2di) __Y, 4,
++						  (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_mask_cmplt_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
++						  (__v2di) __Y, 1,
++						  (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_cmplt_epu64_mask (__m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
++						  (__v2di) __Y, 1,
++						  (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_mask_cmpge_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
++						  (__v2di) __Y, 5,
++						  (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_cmpge_epu64_mask (__m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
++						  (__v2di) __Y, 5,
++						  (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_mask_cmple_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
++						  (__v2di) __Y, 2,
++						  (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_cmple_epu64_mask (__m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
++						  (__v2di) __Y, 2,
++						  (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_mask_cmpneq_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
++						 (__v4si) __Y, 4,
++						 (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_cmpneq_epi32_mask (__m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
++						 (__v4si) __Y, 4,
++						 (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_mask_cmplt_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
++						 (__v4si) __Y, 1,
++						 (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_cmplt_epi32_mask (__m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
++						 (__v4si) __Y, 1,
++						 (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_mask_cmpge_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
++						 (__v4si) __Y, 5,
++						 (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_cmpge_epi32_mask (__m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
++						 (__v4si) __Y, 5,
++						 (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_mask_cmple_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
++						 (__v4si) __Y, 2,
++						 (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_cmple_epi32_mask (__m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
++						 (__v4si) __Y, 2,
++						 (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_mask_cmpneq_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
++						 (__v2di) __Y, 4,
++						 (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_cmpneq_epi64_mask (__m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
++						 (__v2di) __Y, 4,
++						 (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_mask_cmplt_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
++						 (__v2di) __Y, 1,
++						 (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_cmplt_epi64_mask (__m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
++						 (__v2di) __Y, 1,
++						 (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_mask_cmpge_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
++						 (__v2di) __Y, 5,
++						 (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_cmpge_epi64_mask (__m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
++						 (__v2di) __Y, 5,
++						 (__mmask8) -1);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_mask_cmple_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
++						 (__v2di) __Y, 2,
++						 (__mmask8) __M);
++}
++
++extern __inline __mmask8
++  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm_cmple_epi64_mask (__m128i __X, __m128i __Y)
++{
++  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
++						 (__v2di) __Y, 2,
++						 (__mmask8) -1);
++}
++
+ #ifdef __OPTIMIZE__
+ extern __inline __m256i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+@@ -11784,582 +12360,6 @@ _mm256_permutex_pd (__m256d __X, const i
+ 						  (__mmask8) -1);
+ }
+ 
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_mask_cmpneq_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+-						  (__v8si) __Y, 4,
+-						  (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_cmpneq_epu32_mask (__m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+-						  (__v8si) __Y, 4,
+-						  (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_mask_cmplt_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+-						  (__v8si) __Y, 1,
+-						  (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_cmplt_epu32_mask (__m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+-						  (__v8si) __Y, 1,
+-						  (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_mask_cmpge_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+-						  (__v8si) __Y, 5,
+-						  (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_cmpge_epu32_mask (__m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+-						  (__v8si) __Y, 5,
+-						  (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_mask_cmple_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+-						  (__v8si) __Y, 2,
+-						  (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_cmple_epu32_mask (__m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+-						  (__v8si) __Y, 2,
+-						  (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_mask_cmpneq_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+-						  (__v4di) __Y, 4,
+-						  (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_cmpneq_epu64_mask (__m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+-						  (__v4di) __Y, 4,
+-						  (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_mask_cmplt_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+-						  (__v4di) __Y, 1,
+-						  (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_cmplt_epu64_mask (__m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+-						  (__v4di) __Y, 1,
+-						  (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_mask_cmpge_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+-						  (__v4di) __Y, 5,
+-						  (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_cmpge_epu64_mask (__m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+-						  (__v4di) __Y, 5,
+-						  (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_mask_cmple_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+-						  (__v4di) __Y, 2,
+-						  (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_cmple_epu64_mask (__m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+-						  (__v4di) __Y, 2,
+-						  (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_mask_cmpneq_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+-						 (__v8si) __Y, 4,
+-						 (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_cmpneq_epi32_mask (__m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+-						 (__v8si) __Y, 4,
+-						 (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_mask_cmplt_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+-						 (__v8si) __Y, 1,
+-						 (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_cmplt_epi32_mask (__m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+-						 (__v8si) __Y, 1,
+-						 (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_mask_cmpge_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+-						 (__v8si) __Y, 5,
+-						 (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_cmpge_epi32_mask (__m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+-						 (__v8si) __Y, 5,
+-						 (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_mask_cmple_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+-						 (__v8si) __Y, 2,
+-						 (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_cmple_epi32_mask (__m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+-						 (__v8si) __Y, 2,
+-						 (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_mask_cmpneq_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+-						 (__v4di) __Y, 4,
+-						 (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_cmpneq_epi64_mask (__m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+-						 (__v4di) __Y, 4,
+-						 (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_mask_cmplt_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+-						 (__v4di) __Y, 1,
+-						 (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_cmplt_epi64_mask (__m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+-						 (__v4di) __Y, 1,
+-						 (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_mask_cmpge_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+-						 (__v4di) __Y, 5,
+-						 (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_cmpge_epi64_mask (__m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+-						 (__v4di) __Y, 5,
+-						 (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_mask_cmple_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+-						 (__v4di) __Y, 2,
+-						 (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm256_cmple_epi64_mask (__m256i __X, __m256i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+-						 (__v4di) __Y, 2,
+-						 (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_mask_cmpneq_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+-						  (__v4si) __Y, 4,
+-						  (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_cmpneq_epu32_mask (__m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+-						  (__v4si) __Y, 4,
+-						  (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_mask_cmplt_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+-						  (__v4si) __Y, 1,
+-						  (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_cmplt_epu32_mask (__m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+-						  (__v4si) __Y, 1,
+-						  (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_mask_cmpge_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+-						  (__v4si) __Y, 5,
+-						  (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_cmpge_epu32_mask (__m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+-						  (__v4si) __Y, 5,
+-						  (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_mask_cmple_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+-						  (__v4si) __Y, 2,
+-						  (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_cmple_epu32_mask (__m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+-						  (__v4si) __Y, 2,
+-						  (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_mask_cmpneq_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+-						  (__v2di) __Y, 4,
+-						  (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_cmpneq_epu64_mask (__m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+-						  (__v2di) __Y, 4,
+-						  (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_mask_cmplt_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+-						  (__v2di) __Y, 1,
+-						  (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_cmplt_epu64_mask (__m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+-						  (__v2di) __Y, 1,
+-						  (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_mask_cmpge_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+-						  (__v2di) __Y, 5,
+-						  (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_cmpge_epu64_mask (__m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+-						  (__v2di) __Y, 5,
+-						  (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_mask_cmple_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+-						  (__v2di) __Y, 2,
+-						  (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_cmple_epu64_mask (__m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+-						  (__v2di) __Y, 2,
+-						  (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_mask_cmpneq_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+-						 (__v4si) __Y, 4,
+-						 (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_cmpneq_epi32_mask (__m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+-						 (__v4si) __Y, 4,
+-						 (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_mask_cmplt_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+-						 (__v4si) __Y, 1,
+-						 (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_cmplt_epi32_mask (__m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+-						 (__v4si) __Y, 1,
+-						 (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_mask_cmpge_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+-						 (__v4si) __Y, 5,
+-						 (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_cmpge_epi32_mask (__m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+-						 (__v4si) __Y, 5,
+-						 (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_mask_cmple_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+-						 (__v4si) __Y, 2,
+-						 (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_cmple_epi32_mask (__m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+-						 (__v4si) __Y, 2,
+-						 (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_mask_cmpneq_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+-						 (__v2di) __Y, 4,
+-						 (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_cmpneq_epi64_mask (__m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+-						 (__v2di) __Y, 4,
+-						 (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_mask_cmplt_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+-						 (__v2di) __Y, 1,
+-						 (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_cmplt_epi64_mask (__m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+-						 (__v2di) __Y, 1,
+-						 (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_mask_cmpge_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+-						 (__v2di) __Y, 5,
+-						 (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_cmpge_epi64_mask (__m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+-						 (__v2di) __Y, 5,
+-						 (__mmask8) -1);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_mask_cmple_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+-						 (__v2di) __Y, 2,
+-						 (__mmask8) __M);
+-}
+-
+-extern __inline __mmask8
+-  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+-_mm_cmple_epi64_mask (__m128i __X, __m128i __Y)
+-{
+-  return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+-						 (__v2di) __Y, 2,
+-						 (__mmask8) -1);
+-}
+-
+ #else
+ #define _mm256_permutex_pd(X, M)						\
+   ((__m256d) __builtin_ia32_permdf256_mask ((__v4df)(__m256d)(X), (int)(M),	\
+--- gcc/testsuite/gcc.target/i386/pr79932-2.c.jj	2017-03-07 08:37:10.835990732 +0100
++++ gcc/testsuite/gcc.target/i386/pr79932-2.c	2017-03-07 08:36:13.000000000 +0100
+@@ -0,0 +1,78 @@
++/* PR target/79932 */
++/* { dg-do compile } */
++/* { dg-options "-O0 -mavx512vl" } */
++
++#include <x86intrin.h>
++
++__m256i a, b;
++__m128i c, d;
++__mmask32 e, f[64];
++
++void
++foo (void)
++{
++  f[0] = _mm256_cmpge_epi32_mask (a, b);
++  f[1] = _mm256_cmpge_epi64_mask (a, b);
++  f[2] = _mm256_cmpge_epu32_mask (a, b);
++  f[3] = _mm256_cmpge_epu64_mask (a, b);
++  f[4] = _mm256_cmple_epi32_mask (a, b);
++  f[5] = _mm256_cmple_epi64_mask (a, b);
++  f[6] = _mm256_cmple_epu32_mask (a, b);
++  f[7] = _mm256_cmple_epu64_mask (a, b);
++  f[8] = _mm256_cmplt_epi32_mask (a, b);
++  f[9] = _mm256_cmplt_epi64_mask (a, b);
++  f[10] = _mm256_cmplt_epu32_mask (a, b);
++  f[11] = _mm256_cmplt_epu64_mask (a, b);
++  f[12] = _mm256_cmpneq_epi32_mask (a, b);
++  f[13] = _mm256_cmpneq_epi64_mask (a, b);
++  f[14] = _mm256_cmpneq_epu32_mask (a, b);
++  f[15] = _mm256_cmpneq_epu64_mask (a, b);
++  f[16] = _mm256_mask_cmpge_epi32_mask (e, a, b);
++  f[17] = _mm256_mask_cmpge_epi64_mask (e, a, b);
++  f[18] = _mm256_mask_cmpge_epu32_mask (e, a, b);
++  f[19] = _mm256_mask_cmpge_epu64_mask (e, a, b);
++  f[20] = _mm256_mask_cmple_epi32_mask (e, a, b);
++  f[21] = _mm256_mask_cmple_epi64_mask (e, a, b);
++  f[22] = _mm256_mask_cmple_epu32_mask (e, a, b);
++  f[23] = _mm256_mask_cmple_epu64_mask (e, a, b);
++  f[24] = _mm256_mask_cmplt_epi32_mask (e, a, b);
++  f[25] = _mm256_mask_cmplt_epi64_mask (e, a, b);
++  f[26] = _mm256_mask_cmplt_epu32_mask (e, a, b);
++  f[27] = _mm256_mask_cmplt_epu64_mask (e, a, b);
++  f[28] = _mm256_mask_cmpneq_epi32_mask (e, a, b);
++  f[29] = _mm256_mask_cmpneq_epi64_mask (e, a, b);
++  f[30] = _mm256_mask_cmpneq_epu32_mask (e, a, b);
++  f[31] = _mm256_mask_cmpneq_epu64_mask (e, a, b);
++  f[32] = _mm_cmpge_epi32_mask (c, d);
++  f[33] = _mm_cmpge_epi64_mask (c, d);
++  f[34] = _mm_cmpge_epu32_mask (c, d);
++  f[35] = _mm_cmpge_epu64_mask (c, d);
++  f[36] = _mm_cmple_epi32_mask (c, d);
++  f[37] = _mm_cmple_epi64_mask (c, d);
++  f[38] = _mm_cmple_epu32_mask (c, d);
++  f[39] = _mm_cmple_epu64_mask (c, d);
++  f[40] = _mm_cmplt_epi32_mask (c, d);
++  f[41] = _mm_cmplt_epi64_mask (c, d);
++  f[42] = _mm_cmplt_epu32_mask (c, d);
++  f[43] = _mm_cmplt_epu64_mask (c, d);
++  f[44] = _mm_cmpneq_epi32_mask (c, d);
++  f[45] = _mm_cmpneq_epi64_mask (c, d);
++  f[46] = _mm_cmpneq_epu32_mask (c, d);
++  f[47] = _mm_cmpneq_epu64_mask (c, d);
++  f[48] = _mm_mask_cmpge_epi32_mask (e, c, d);
++  f[49] = _mm_mask_cmpge_epi64_mask (e, c, d);
++  f[50] = _mm_mask_cmpge_epu32_mask (e, c, d);
++  f[51] = _mm_mask_cmpge_epu64_mask (e, c, d);
++  f[52] = _mm_mask_cmple_epi32_mask (e, c, d);
++  f[53] = _mm_mask_cmple_epi64_mask (e, c, d);
++  f[54] = _mm_mask_cmple_epu32_mask (e, c, d);
++  f[55] = _mm_mask_cmple_epu64_mask (e, c, d);
++  f[56] = _mm_mask_cmplt_epi32_mask (e, c, d);
++  f[57] = _mm_mask_cmplt_epi64_mask (e, c, d);
++  f[58] = _mm_mask_cmplt_epu32_mask (e, c, d);
++  f[59] = _mm_mask_cmplt_epu64_mask (e, c, d);
++  f[60] = _mm_mask_cmpneq_epi32_mask (e, c, d);
++  f[61] = _mm_mask_cmpneq_epi64_mask (e, c, d);
++  f[62] = _mm_mask_cmpneq_epu32_mask (e, c, d);
++  f[63] = _mm_mask_cmpneq_epu64_mask (e, c, d);
++}

diff --git a/gcc7-pr79941.patch b/gcc7-pr79941.patch
new file mode 100644
index 0000000..24e4216
--- /dev/null
+++ b/gcc7-pr79941.patch
@@ -0,0 +1,92 @@
+2017-03-07  Will Schmidt  <will_schmidt@vnet.ibm.com>
+
+	PR middle-end/79941
+	* config/rs6000/rs6000.c (gimplify_init_constructor): Remove multiply
+	even and multiply odd unsigned (vmule/vmulo) intrinsics from the
+	multiply folding sequence.
+
+	* gcc.target/powerpc/fold-vec-mult-even_odd_misc.c: New test.
+
+--- gcc/config/rs6000/rs6000.c	2017-03-03 20:31:01.000000000 +0100
++++ gcc/config/rs6000/rs6000.c	2017-03-08 18:52:48.409967121 +0100
+@@ -16855,9 +16855,6 @@ rs6000_gimple_fold_builtin (gimple_stmt_
+     /* Even element flavors of vec_mul (signed). */
+     case ALTIVEC_BUILTIN_VMULESB:
+     case ALTIVEC_BUILTIN_VMULESH:
+-    /* Even element flavors of vec_mul (unsigned).  */
+-    case ALTIVEC_BUILTIN_VMULEUB:
+-    case ALTIVEC_BUILTIN_VMULEUH:
+       {
+ 	arg0 = gimple_call_arg (stmt, 0);
+ 	arg1 = gimple_call_arg (stmt, 1);
+@@ -16870,9 +16867,6 @@ rs6000_gimple_fold_builtin (gimple_stmt_
+     /* Odd element flavors of vec_mul (signed).  */
+     case ALTIVEC_BUILTIN_VMULOSB:
+     case ALTIVEC_BUILTIN_VMULOSH:
+-    /* Odd element flavors of vec_mul (unsigned). */
+-    case ALTIVEC_BUILTIN_VMULOUB:
+-    case ALTIVEC_BUILTIN_VMULOUH:
+       {
+ 	arg0 = gimple_call_arg (stmt, 0);
+ 	arg1 = gimple_call_arg (stmt, 1);
+--- gcc/testsuite/gcc.target/powerpc/fold-vec-mult-even_odd_misc.c
++++ gcc/testsuite/gcc.target/powerpc/fold-vec-mult-even_odd_misc.c
+@@ -0,0 +1,58 @@
++
++/* { dg-do run } */
++/* { dg-require-effective-target powerpc_vsx_ok } */
++/* { dg-options "-maltivec -mvsx -O2 -save-temps" } */
++
++#include <altivec.h>
++
++__attribute__((noinline)) void 
++test_eub_char ()
++{
++  vector unsigned char v0 = {1, 0, 0, 0, 0, 0, 0, 0};
++  vector unsigned char v1 = {0xff, 0, 0, 0, 0, 0, 0, 0};
++  vector unsigned short res = vec_vmuleub (v0, v1);
++  if (res[0] != (unsigned short)v0[0] * (unsigned short)v1[0])
++    __builtin_abort ();
++}
++__attribute__((noinline)) void 
++test_oub_char ()
++{
++  vector unsigned char v0 = {0, 1, 0, 0, 0, 0, 0, 0};
++  vector unsigned char v1 = {0, 0xff, 0, 0, 0, 0, 0, 0};
++  vector unsigned short res = vec_vmuloub (v0, v1);
++  if (res[0] != (unsigned short)v0[1] * (unsigned short)v1[1])
++    __builtin_abort ();
++}
++
++__attribute__((noinline)) void 
++test_euh_short ()
++{
++  vector unsigned short v0 = {1, 0, 0, 0};
++  vector unsigned short v1 = {0xff, 0, 0, 0};
++  vector unsigned int res = vec_vmuleuh (v0, v1);
++  if (res[0] != (unsigned int)v0[0] * (unsigned int)v1[0])
++    __builtin_abort ();
++}
++__attribute__((noinline)) void 
++test_ouh_short ()
++{
++  vector unsigned short v0 = {0, 1, 0, 0};
++  vector unsigned short v1 = {0, 0xff, 0, 0};
++  vector unsigned int res = vec_vmulouh (v0, v1);
++  if (res[0] != (unsigned int)v0[1] * (unsigned int)v1[1])
++    __builtin_abort ();
++}
++
++int main ()
++{
++  test_eub_char();
++  test_oub_char();
++  test_euh_short();
++  test_ouh_short();
++}
++
++/* { dg-final { scan-assembler-times "vmuleub" 1 } } */
++/* { dg-final { scan-assembler-times "vmuloub" 1 } } */
++/* { dg-final { scan-assembler-times "vmuleuh" 1 } } */
++/* { dg-final { scan-assembler-times "vmulouh" 1 } } */
++

diff --git a/gcc7-pr79944.patch b/gcc7-pr79944.patch
new file mode 100644
index 0000000..ffcc829
--- /dev/null
+++ b/gcc7-pr79944.patch
@@ -0,0 +1,406 @@
+2017-03-08  Jakub Jelinek  <jakub@redhat.com>
+
+	PR sanitizer/79944
+	* asan.c (get_mem_refs_of_builtin_call): For BUILT_IN_ATOMIC* and
+	BUILT_IN_SYNC*, determine the access type from the size suffix and
+	always build a MEM_REF with that type.  Handle forgotten
+	BUILT_IN_SYNC_FETCH_AND_NAND_16 and BUILT_IN_SYNC_NAND_AND_FETCH_16.
+
+	* c-c++-common/asan/pr79944.c: New test.
+
+--- gcc/asan.c.jj	2017-03-06 12:32:28.000000000 +0100
++++ gcc/asan.c	2017-03-08 12:24:11.151353229 +0100
+@@ -603,218 +603,208 @@ get_mem_refs_of_builtin_call (const gcal
+     case BUILT_IN_STRLEN:
+       source0 = gimple_call_arg (call, 0);
+       len = gimple_call_lhs (call);
+-      break ;
++      break;
+ 
+     /* And now the __atomic* and __sync builtins.
+        These are handled differently from the classical memory memory
+        access builtins above.  */
+ 
+     case BUILT_IN_ATOMIC_LOAD_1:
+-    case BUILT_IN_ATOMIC_LOAD_2:
+-    case BUILT_IN_ATOMIC_LOAD_4:
+-    case BUILT_IN_ATOMIC_LOAD_8:
+-    case BUILT_IN_ATOMIC_LOAD_16:
+       is_store = false;
+-      /* fall through.  */
+-
++      /* FALLTHRU */
+     case BUILT_IN_SYNC_FETCH_AND_ADD_1:
+-    case BUILT_IN_SYNC_FETCH_AND_ADD_2:
+-    case BUILT_IN_SYNC_FETCH_AND_ADD_4:
+-    case BUILT_IN_SYNC_FETCH_AND_ADD_8:
+-    case BUILT_IN_SYNC_FETCH_AND_ADD_16:
+-
+     case BUILT_IN_SYNC_FETCH_AND_SUB_1:
+-    case BUILT_IN_SYNC_FETCH_AND_SUB_2:
+-    case BUILT_IN_SYNC_FETCH_AND_SUB_4:
+-    case BUILT_IN_SYNC_FETCH_AND_SUB_8:
+-    case BUILT_IN_SYNC_FETCH_AND_SUB_16:
+-
+     case BUILT_IN_SYNC_FETCH_AND_OR_1:
+-    case BUILT_IN_SYNC_FETCH_AND_OR_2:
+-    case BUILT_IN_SYNC_FETCH_AND_OR_4:
+-    case BUILT_IN_SYNC_FETCH_AND_OR_8:
+-    case BUILT_IN_SYNC_FETCH_AND_OR_16:
+-
+     case BUILT_IN_SYNC_FETCH_AND_AND_1:
+-    case BUILT_IN_SYNC_FETCH_AND_AND_2:
+-    case BUILT_IN_SYNC_FETCH_AND_AND_4:
+-    case BUILT_IN_SYNC_FETCH_AND_AND_8:
+-    case BUILT_IN_SYNC_FETCH_AND_AND_16:
+-
+     case BUILT_IN_SYNC_FETCH_AND_XOR_1:
+-    case BUILT_IN_SYNC_FETCH_AND_XOR_2:
+-    case BUILT_IN_SYNC_FETCH_AND_XOR_4:
+-    case BUILT_IN_SYNC_FETCH_AND_XOR_8:
+-    case BUILT_IN_SYNC_FETCH_AND_XOR_16:
+-
+     case BUILT_IN_SYNC_FETCH_AND_NAND_1:
+-    case BUILT_IN_SYNC_FETCH_AND_NAND_2:
+-    case BUILT_IN_SYNC_FETCH_AND_NAND_4:
+-    case BUILT_IN_SYNC_FETCH_AND_NAND_8:
+-
+     case BUILT_IN_SYNC_ADD_AND_FETCH_1:
+-    case BUILT_IN_SYNC_ADD_AND_FETCH_2:
+-    case BUILT_IN_SYNC_ADD_AND_FETCH_4:
+-    case BUILT_IN_SYNC_ADD_AND_FETCH_8:
+-    case BUILT_IN_SYNC_ADD_AND_FETCH_16:
+-
+     case BUILT_IN_SYNC_SUB_AND_FETCH_1:
+-    case BUILT_IN_SYNC_SUB_AND_FETCH_2:
+-    case BUILT_IN_SYNC_SUB_AND_FETCH_4:
+-    case BUILT_IN_SYNC_SUB_AND_FETCH_8:
+-    case BUILT_IN_SYNC_SUB_AND_FETCH_16:
+-
+     case BUILT_IN_SYNC_OR_AND_FETCH_1:
+-    case BUILT_IN_SYNC_OR_AND_FETCH_2:
+-    case BUILT_IN_SYNC_OR_AND_FETCH_4:
+-    case BUILT_IN_SYNC_OR_AND_FETCH_8:
+-    case BUILT_IN_SYNC_OR_AND_FETCH_16:
+-
+     case BUILT_IN_SYNC_AND_AND_FETCH_1:
+-    case BUILT_IN_SYNC_AND_AND_FETCH_2:
+-    case BUILT_IN_SYNC_AND_AND_FETCH_4:
+-    case BUILT_IN_SYNC_AND_AND_FETCH_8:
+-    case BUILT_IN_SYNC_AND_AND_FETCH_16:
+-
+     case BUILT_IN_SYNC_XOR_AND_FETCH_1:
+-    case BUILT_IN_SYNC_XOR_AND_FETCH_2:
+-    case BUILT_IN_SYNC_XOR_AND_FETCH_4:
+-    case BUILT_IN_SYNC_XOR_AND_FETCH_8:
+-    case BUILT_IN_SYNC_XOR_AND_FETCH_16:
+-
+     case BUILT_IN_SYNC_NAND_AND_FETCH_1:
+-    case BUILT_IN_SYNC_NAND_AND_FETCH_2:
+-    case BUILT_IN_SYNC_NAND_AND_FETCH_4:
+-    case BUILT_IN_SYNC_NAND_AND_FETCH_8:
+-
+     case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_1:
+-    case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_2:
+-    case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_4:
+-    case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_8:
+-    case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_16:
+-
+     case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_1:
+-    case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_2:
+-    case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_4:
+-    case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_8:
+-    case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_16:
+-
+     case BUILT_IN_SYNC_LOCK_TEST_AND_SET_1:
+-    case BUILT_IN_SYNC_LOCK_TEST_AND_SET_2:
+-    case BUILT_IN_SYNC_LOCK_TEST_AND_SET_4:
+-    case BUILT_IN_SYNC_LOCK_TEST_AND_SET_8:
+-    case BUILT_IN_SYNC_LOCK_TEST_AND_SET_16:
+-
+     case BUILT_IN_SYNC_LOCK_RELEASE_1:
+-    case BUILT_IN_SYNC_LOCK_RELEASE_2:
+-    case BUILT_IN_SYNC_LOCK_RELEASE_4:
+-    case BUILT_IN_SYNC_LOCK_RELEASE_8:
+-    case BUILT_IN_SYNC_LOCK_RELEASE_16:
+-
+     case BUILT_IN_ATOMIC_EXCHANGE_1:
+-    case BUILT_IN_ATOMIC_EXCHANGE_2:
+-    case BUILT_IN_ATOMIC_EXCHANGE_4:
+-    case BUILT_IN_ATOMIC_EXCHANGE_8:
+-    case BUILT_IN_ATOMIC_EXCHANGE_16:
+-
+     case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_1:
+-    case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_2:
+-    case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_4:
+-    case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_8:
+-    case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_16:
+-
+     case BUILT_IN_ATOMIC_STORE_1:
+-    case BUILT_IN_ATOMIC_STORE_2:
+-    case BUILT_IN_ATOMIC_STORE_4:
+-    case BUILT_IN_ATOMIC_STORE_8:
+-    case BUILT_IN_ATOMIC_STORE_16:
+-
+     case BUILT_IN_ATOMIC_ADD_FETCH_1:
+-    case BUILT_IN_ATOMIC_ADD_FETCH_2:
+-    case BUILT_IN_ATOMIC_ADD_FETCH_4:
+-    case BUILT_IN_ATOMIC_ADD_FETCH_8:
+-    case BUILT_IN_ATOMIC_ADD_FETCH_16:
+-
+     case BUILT_IN_ATOMIC_SUB_FETCH_1:
+-    case BUILT_IN_ATOMIC_SUB_FETCH_2:
+-    case BUILT_IN_ATOMIC_SUB_FETCH_4:
+-    case BUILT_IN_ATOMIC_SUB_FETCH_8:
+-    case BUILT_IN_ATOMIC_SUB_FETCH_16:
+-
+     case BUILT_IN_ATOMIC_AND_FETCH_1:
+-    case BUILT_IN_ATOMIC_AND_FETCH_2:
+-    case BUILT_IN_ATOMIC_AND_FETCH_4:
+-    case BUILT_IN_ATOMIC_AND_FETCH_8:
+-    case BUILT_IN_ATOMIC_AND_FETCH_16:
+-
+     case BUILT_IN_ATOMIC_NAND_FETCH_1:
+-    case BUILT_IN_ATOMIC_NAND_FETCH_2:
+-    case BUILT_IN_ATOMIC_NAND_FETCH_4:
+-    case BUILT_IN_ATOMIC_NAND_FETCH_8:
+-    case BUILT_IN_ATOMIC_NAND_FETCH_16:
+-
+     case BUILT_IN_ATOMIC_XOR_FETCH_1:
+-    case BUILT_IN_ATOMIC_XOR_FETCH_2:
+-    case BUILT_IN_ATOMIC_XOR_FETCH_4:
+-    case BUILT_IN_ATOMIC_XOR_FETCH_8:
+-    case BUILT_IN_ATOMIC_XOR_FETCH_16:
+-
+     case BUILT_IN_ATOMIC_OR_FETCH_1:
+-    case BUILT_IN_ATOMIC_OR_FETCH_2:
+-    case BUILT_IN_ATOMIC_OR_FETCH_4:
+-    case BUILT_IN_ATOMIC_OR_FETCH_8:
+-    case BUILT_IN_ATOMIC_OR_FETCH_16:
+-
+     case BUILT_IN_ATOMIC_FETCH_ADD_1:
+-    case BUILT_IN_ATOMIC_FETCH_ADD_2:
+-    case BUILT_IN_ATOMIC_FETCH_ADD_4:
+-    case BUILT_IN_ATOMIC_FETCH_ADD_8:
+-    case BUILT_IN_ATOMIC_FETCH_ADD_16:
+-
+     case BUILT_IN_ATOMIC_FETCH_SUB_1:
+-    case BUILT_IN_ATOMIC_FETCH_SUB_2:
+-    case BUILT_IN_ATOMIC_FETCH_SUB_4:
+-    case BUILT_IN_ATOMIC_FETCH_SUB_8:
+-    case BUILT_IN_ATOMIC_FETCH_SUB_16:
+-
+     case BUILT_IN_ATOMIC_FETCH_AND_1:
+-    case BUILT_IN_ATOMIC_FETCH_AND_2:
+-    case BUILT_IN_ATOMIC_FETCH_AND_4:
+-    case BUILT_IN_ATOMIC_FETCH_AND_8:
+-    case BUILT_IN_ATOMIC_FETCH_AND_16:
+-
+     case BUILT_IN_ATOMIC_FETCH_NAND_1:
+-    case BUILT_IN_ATOMIC_FETCH_NAND_2:
+-    case BUILT_IN_ATOMIC_FETCH_NAND_4:
+-    case BUILT_IN_ATOMIC_FETCH_NAND_8:
+-    case BUILT_IN_ATOMIC_FETCH_NAND_16:
+-
+     case BUILT_IN_ATOMIC_FETCH_XOR_1:
+-    case BUILT_IN_ATOMIC_FETCH_XOR_2:
+-    case BUILT_IN_ATOMIC_FETCH_XOR_4:
+-    case BUILT_IN_ATOMIC_FETCH_XOR_8:
+-    case BUILT_IN_ATOMIC_FETCH_XOR_16:
+-
+     case BUILT_IN_ATOMIC_FETCH_OR_1:
++      access_size = 1;
++      goto do_atomic;
++
++    case BUILT_IN_ATOMIC_LOAD_2:
++      is_store = false;
++      /* FALLTHRU */
++    case BUILT_IN_SYNC_FETCH_AND_ADD_2:
++    case BUILT_IN_SYNC_FETCH_AND_SUB_2:
++    case BUILT_IN_SYNC_FETCH_AND_OR_2:
++    case BUILT_IN_SYNC_FETCH_AND_AND_2:
++    case BUILT_IN_SYNC_FETCH_AND_XOR_2:
++    case BUILT_IN_SYNC_FETCH_AND_NAND_2:
++    case BUILT_IN_SYNC_ADD_AND_FETCH_2:
++    case BUILT_IN_SYNC_SUB_AND_FETCH_2:
++    case BUILT_IN_SYNC_OR_AND_FETCH_2:
++    case BUILT_IN_SYNC_AND_AND_FETCH_2:
++    case BUILT_IN_SYNC_XOR_AND_FETCH_2:
++    case BUILT_IN_SYNC_NAND_AND_FETCH_2:
++    case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_2:
++    case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_2:
++    case BUILT_IN_SYNC_LOCK_TEST_AND_SET_2:
++    case BUILT_IN_SYNC_LOCK_RELEASE_2:
++    case BUILT_IN_ATOMIC_EXCHANGE_2:
++    case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_2:
++    case BUILT_IN_ATOMIC_STORE_2:
++    case BUILT_IN_ATOMIC_ADD_FETCH_2:
++    case BUILT_IN_ATOMIC_SUB_FETCH_2:
++    case BUILT_IN_ATOMIC_AND_FETCH_2:
++    case BUILT_IN_ATOMIC_NAND_FETCH_2:
++    case BUILT_IN_ATOMIC_XOR_FETCH_2:
++    case BUILT_IN_ATOMIC_OR_FETCH_2:
++    case BUILT_IN_ATOMIC_FETCH_ADD_2:
++    case BUILT_IN_ATOMIC_FETCH_SUB_2:
++    case BUILT_IN_ATOMIC_FETCH_AND_2:
++    case BUILT_IN_ATOMIC_FETCH_NAND_2:
++    case BUILT_IN_ATOMIC_FETCH_XOR_2:
+     case BUILT_IN_ATOMIC_FETCH_OR_2:
++      access_size = 2;
++      goto do_atomic;
++
++    case BUILT_IN_ATOMIC_LOAD_4:
++      is_store = false;
++      /* FALLTHRU */
++    case BUILT_IN_SYNC_FETCH_AND_ADD_4:
++    case BUILT_IN_SYNC_FETCH_AND_SUB_4:
++    case BUILT_IN_SYNC_FETCH_AND_OR_4:
++    case BUILT_IN_SYNC_FETCH_AND_AND_4:
++    case BUILT_IN_SYNC_FETCH_AND_XOR_4:
++    case BUILT_IN_SYNC_FETCH_AND_NAND_4:
++    case BUILT_IN_SYNC_ADD_AND_FETCH_4:
++    case BUILT_IN_SYNC_SUB_AND_FETCH_4:
++    case BUILT_IN_SYNC_OR_AND_FETCH_4:
++    case BUILT_IN_SYNC_AND_AND_FETCH_4:
++    case BUILT_IN_SYNC_XOR_AND_FETCH_4:
++    case BUILT_IN_SYNC_NAND_AND_FETCH_4:
++    case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_4:
++    case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_4:
++    case BUILT_IN_SYNC_LOCK_TEST_AND_SET_4:
++    case BUILT_IN_SYNC_LOCK_RELEASE_4:
++    case BUILT_IN_ATOMIC_EXCHANGE_4:
++    case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_4:
++    case BUILT_IN_ATOMIC_STORE_4:
++    case BUILT_IN_ATOMIC_ADD_FETCH_4:
++    case BUILT_IN_ATOMIC_SUB_FETCH_4:
++    case BUILT_IN_ATOMIC_AND_FETCH_4:
++    case BUILT_IN_ATOMIC_NAND_FETCH_4:
++    case BUILT_IN_ATOMIC_XOR_FETCH_4:
++    case BUILT_IN_ATOMIC_OR_FETCH_4:
++    case BUILT_IN_ATOMIC_FETCH_ADD_4:
++    case BUILT_IN_ATOMIC_FETCH_SUB_4:
++    case BUILT_IN_ATOMIC_FETCH_AND_4:
++    case BUILT_IN_ATOMIC_FETCH_NAND_4:
++    case BUILT_IN_ATOMIC_FETCH_XOR_4:
+     case BUILT_IN_ATOMIC_FETCH_OR_4:
++      access_size = 4;
++      goto do_atomic;
++
++    case BUILT_IN_ATOMIC_LOAD_8:
++      is_store = false;
++      /* FALLTHRU */
++    case BUILT_IN_SYNC_FETCH_AND_ADD_8:
++    case BUILT_IN_SYNC_FETCH_AND_SUB_8:
++    case BUILT_IN_SYNC_FETCH_AND_OR_8:
++    case BUILT_IN_SYNC_FETCH_AND_AND_8:
++    case BUILT_IN_SYNC_FETCH_AND_XOR_8:
++    case BUILT_IN_SYNC_FETCH_AND_NAND_8:
++    case BUILT_IN_SYNC_ADD_AND_FETCH_8:
++    case BUILT_IN_SYNC_SUB_AND_FETCH_8:
++    case BUILT_IN_SYNC_OR_AND_FETCH_8:
++    case BUILT_IN_SYNC_AND_AND_FETCH_8:
++    case BUILT_IN_SYNC_XOR_AND_FETCH_8:
++    case BUILT_IN_SYNC_NAND_AND_FETCH_8:
++    case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_8:
++    case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_8:
++    case BUILT_IN_SYNC_LOCK_TEST_AND_SET_8:
++    case BUILT_IN_SYNC_LOCK_RELEASE_8:
++    case BUILT_IN_ATOMIC_EXCHANGE_8:
++    case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_8:
++    case BUILT_IN_ATOMIC_STORE_8:
++    case BUILT_IN_ATOMIC_ADD_FETCH_8:
++    case BUILT_IN_ATOMIC_SUB_FETCH_8:
++    case BUILT_IN_ATOMIC_AND_FETCH_8:
++    case BUILT_IN_ATOMIC_NAND_FETCH_8:
++    case BUILT_IN_ATOMIC_XOR_FETCH_8:
++    case BUILT_IN_ATOMIC_OR_FETCH_8:
++    case BUILT_IN_ATOMIC_FETCH_ADD_8:
++    case BUILT_IN_ATOMIC_FETCH_SUB_8:
++    case BUILT_IN_ATOMIC_FETCH_AND_8:
++    case BUILT_IN_ATOMIC_FETCH_NAND_8:
++    case BUILT_IN_ATOMIC_FETCH_XOR_8:
+     case BUILT_IN_ATOMIC_FETCH_OR_8:
++      access_size = 8;
++      goto do_atomic;
++
++    case BUILT_IN_ATOMIC_LOAD_16:
++      is_store = false;
++      /* FALLTHRU */
++    case BUILT_IN_SYNC_FETCH_AND_ADD_16:
++    case BUILT_IN_SYNC_FETCH_AND_SUB_16:
++    case BUILT_IN_SYNC_FETCH_AND_OR_16:
++    case BUILT_IN_SYNC_FETCH_AND_AND_16:
++    case BUILT_IN_SYNC_FETCH_AND_XOR_16:
++    case BUILT_IN_SYNC_FETCH_AND_NAND_16:
++    case BUILT_IN_SYNC_ADD_AND_FETCH_16:
++    case BUILT_IN_SYNC_SUB_AND_FETCH_16:
++    case BUILT_IN_SYNC_OR_AND_FETCH_16:
++    case BUILT_IN_SYNC_AND_AND_FETCH_16:
++    case BUILT_IN_SYNC_XOR_AND_FETCH_16:
++    case BUILT_IN_SYNC_NAND_AND_FETCH_16:
++    case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_16:
++    case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_16:
++    case BUILT_IN_SYNC_LOCK_TEST_AND_SET_16:
++    case BUILT_IN_SYNC_LOCK_RELEASE_16:
++    case BUILT_IN_ATOMIC_EXCHANGE_16:
++    case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_16:
++    case BUILT_IN_ATOMIC_STORE_16:
++    case BUILT_IN_ATOMIC_ADD_FETCH_16:
++    case BUILT_IN_ATOMIC_SUB_FETCH_16:
++    case BUILT_IN_ATOMIC_AND_FETCH_16:
++    case BUILT_IN_ATOMIC_NAND_FETCH_16:
++    case BUILT_IN_ATOMIC_XOR_FETCH_16:
++    case BUILT_IN_ATOMIC_OR_FETCH_16:
++    case BUILT_IN_ATOMIC_FETCH_ADD_16:
++    case BUILT_IN_ATOMIC_FETCH_SUB_16:
++    case BUILT_IN_ATOMIC_FETCH_AND_16:
++    case BUILT_IN_ATOMIC_FETCH_NAND_16:
++    case BUILT_IN_ATOMIC_FETCH_XOR_16:
+     case BUILT_IN_ATOMIC_FETCH_OR_16:
++      access_size = 16;
++      /* FALLTHRU */
++    do_atomic:
+       {
+ 	dest = gimple_call_arg (call, 0);
+ 	/* DEST represents the address of a memory location.
+ 	   instrument_derefs wants the memory location, so lets
+ 	   dereference the address DEST before handing it to
+ 	   instrument_derefs.  */
+-	if (TREE_CODE (dest) == ADDR_EXPR)
+-	  dest = TREE_OPERAND (dest, 0);
+-	else if (TREE_CODE (dest) == SSA_NAME || TREE_CODE (dest) == INTEGER_CST)
+-	  dest = build2 (MEM_REF, TREE_TYPE (TREE_TYPE (dest)),
+-			 dest, build_int_cst (TREE_TYPE (dest), 0));
+-	else
+-	  gcc_unreachable ();
+-
+-	access_size = int_size_in_bytes (TREE_TYPE (dest));
++	tree type = build_nonstandard_integer_type (access_size
++						    * BITS_PER_UNIT, 1);
++	dest = build2 (MEM_REF, type, dest,
++		       build_int_cst (build_pointer_type (char_type_node), 0));
++	break;
+       }
+ 
+     default:
+--- gcc/testsuite/c-c++-common/asan/pr79944.c.jj	2017-03-08 12:50:40.428617273 +0100
++++ gcc/testsuite/c-c++-common/asan/pr79944.c	2017-03-08 12:34:47.000000000 +0100
+@@ -0,0 +1,18 @@
++/* PR sanitizer/79944 */
++/* { dg-do run } */
++
++struct S { int i; char p[1024]; };
++
++int
++main ()
++{
++  struct S *p = (struct S *) __builtin_malloc (__builtin_offsetof (struct S, p) + 64);
++  p->i = 5;
++  asm volatile ("" : "+r" (p) : : "memory");
++  __atomic_fetch_add ((int *) p, 5, __ATOMIC_RELAXED);
++  asm volatile ("" : "+r" (p) : : "memory");
++  if (p->i != 10)
++    __builtin_abort ();
++  __builtin_free (p);
++  return 0;
++}

diff --git a/nvptx-tools-no-ptxas.patch b/nvptx-tools-no-ptxas.patch
index f3bd5ed..28bc597 100644
--- a/nvptx-tools-no-ptxas.patch
+++ b/nvptx-tools-no-ptxas.patch
@@ -211,13 +211,12 @@
  	  break;
  	case 'v':
  	  verbose = true;
-@@ -948,7 +1071,9 @@ Usage: nvptx-none-as [option...] [asmfile]\n\
+@@ -948,7 +1071,8 @@ Usage: nvptx-none-as [option...] [asmfile]\n\
  Options:\n\
    -o FILE               Write output to FILE\n\
    -v                    Be verbose\n\
 +  --verify              Do verify output is acceptable to ptxas\n\
    --no-verify           Do not verify output is acceptable to ptxas\n\
-+  --verify              Do verify output is acceptable to ptxas\n\
    --help                Print this help and exit\n\
    --version             Print version number and exit\n\
  \n\

diff --git a/sources b/sources
index 0c3d927..fc2bdf0 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
-SHA512 (gcc-7.0.1-20170225.tar.bz2) = de6413101567ede96422f49d007c4072314ace58bf09886949858c315df54e8480289967cdf70636a4469a21705c6cddced9ff85c950eef6fd9e6fcad2533be0
+SHA512 (gcc-7.0.1-20170308.tar.bz2) = 8fdadf218ac0d50107516cd9ea72ac03606b79db44f7a3d1fe665d1f1c51b7a54c5f37df3f6af9ab070de1b3990989745762ce4d3c2a4aa4d12bdfe29fe00dcd
 SHA512 (nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.bz2) = 38f97c9297ad108568352a4d28277455a3c01fd8b7864e798037e5006b6f757022e874bbf3f165775fe3b873781bc108137bbeb42dd5ed3c7d3e6747746fa918
 SHA512 (nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.bz2) = 95b577a06a93bb044dbc8033e550cb36bcf2ab2687da030a7318cdc90e7467ed49665e247dcafb5ff4a7e92cdc264291d19728bd17fab902fb64b22491269330

                 reply	other threads:[~2026-06-29 12:27 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178273604488.1.16389297822312103878.rpms-gcc-88ff65fe514a@fedoraproject.org \
    --to=jakub@redhat.com \
    --cc=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox