Sorry, I have no particular insight.  My commit was reapplied verbatim shortly 
after that and the tests passed, so I’m not sure if there’s any relation.

> On Sep 13, 2017, at 4:16 AM, Tsafrir, Yael <yael.tsaf...@intel.com> wrote:
> 
> Hello Galina,
>  
> I tried to re-create the issue but with no success. I ran the test on 
> versions before and after my commit, using your builder’s cmake properties, 
> and the test passed each time.
> There doesn’t seem to be a connection between my commit’s changes and the 
> failed test.
>  
> We checked the test’s history and the message in 
> https://reviews.llvm.org/rL259715 <https://reviews.llvm.org/rL259715> 
> suggests that the last time this test was modified, there were buildbots 
> failures – could those failures be related or similar to the failures we are 
> seeing now?
>  
> I’ve CC’d Ben Langmuir and Quentin Colombet as they dealt with rL259715.
>  
> Is there anyone who could help or provide more details about the test failure?
>  
> Thanks,
> Yael
>   <>
> From: Galina Kistanova [mailto:gkistan...@gmail.com 
> <mailto:gkistan...@gmail.com>] 
> Sent: Tuesday, September 12, 2017 21:16
> To: Tsafrir, Yael <yael.tsaf...@intel.com <mailto:yael.tsaf...@intel.com>>
> Cc: cfe-commits <cfe-commits@lists.llvm.org 
> <mailto:cfe-commits@lists.llvm.org>>
> Subject: Re: r313011 - [X86] Lower _mm[256|512]_[mask[z]]_avg_epu[8|16] 
> intrinsics to native llvm IR
>  
> Hello Yael,
> 
> It looks like this commit broke one of our builders:
> http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/17121
>  
> <http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/17121>
> 
> . . . 
> Failing Tests (1):
>     Clang :: Modules/builtins.m
> 
> Please have a look?
> 
> Thanks
> 
> Galina
> 
>  
> On Tue, Sep 12, 2017 at 12:46 AM, Yael Tsafrir via cfe-commits 
> <cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>> wrote:
> Author: ytsafrir
> Date: Tue Sep 12 00:46:32 2017
> New Revision: 313011
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=313011&view=rev 
> <http://llvm.org/viewvc/llvm-project?rev=313011&view=rev>
> Log:
> [X86] Lower _mm[256|512]_[mask[z]]_avg_epu[8|16] intrinsics to native llvm IR
> 
> Differential Revision: https://reviews.llvm.org/D37562 
> <https://reviews.llvm.org/D37562>
> 
> Modified:
>     cfe/trunk/include/clang/Basic/BuiltinsX86.def
>     cfe/trunk/lib/Headers/avx2intrin.h
>     cfe/trunk/lib/Headers/avx512bwintrin.h
>     cfe/trunk/lib/Headers/emmintrin.h
>     cfe/trunk/test/CodeGen/avx2-builtins.c
>     cfe/trunk/test/CodeGen/avx512bw-builtins.c
>     cfe/trunk/test/CodeGen/avx512vlbw-builtins.c
>     cfe/trunk/test/CodeGen/builtins-x86.c
>     cfe/trunk/test/CodeGen/sse2-builtins.c
> 
> Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=313011&r1=313010&r2=313011&view=diff
>  
> <http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=313011&r1=313010&r2=313011&view=diff>
> ==============================================================================
> --- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
> +++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Tue Sep 12 00:46:32 2017
> @@ -266,8 +266,6 @@ TARGET_BUILTIN(__builtin_ia32_paddusw128
>  TARGET_BUILTIN(__builtin_ia32_psubusb128, "V16cV16cV16c", "", "sse2")
>  TARGET_BUILTIN(__builtin_ia32_psubusw128, "V8sV8sV8s", "", "sse2")
>  TARGET_BUILTIN(__builtin_ia32_pmulhw128, "V8sV8sV8s", "", "sse2")
> -TARGET_BUILTIN(__builtin_ia32_pavgb128, "V16cV16cV16c", "", "sse2")
> -TARGET_BUILTIN(__builtin_ia32_pavgw128, "V8sV8sV8s", "", "sse2")
>  TARGET_BUILTIN(__builtin_ia32_pmaxub128, "V16cV16cV16c", "", "sse2")
>  TARGET_BUILTIN(__builtin_ia32_pmaxsw128, "V8sV8sV8s", "", "sse2")
>  TARGET_BUILTIN(__builtin_ia32_pminub128, "V16cV16cV16c", "", "sse2")
> @@ -522,8 +520,6 @@ TARGET_BUILTIN(__builtin_ia32_paddusw256
>  TARGET_BUILTIN(__builtin_ia32_psubusb256, "V32cV32cV32c", "", "avx2")
>  TARGET_BUILTIN(__builtin_ia32_psubusw256, "V16sV16sV16s", "", "avx2")
>  TARGET_BUILTIN(__builtin_ia32_palignr256, "V32cV32cV32cIi", "", "avx2")
> -TARGET_BUILTIN(__builtin_ia32_pavgb256, "V32cV32cV32c", "", "avx2")
> -TARGET_BUILTIN(__builtin_ia32_pavgw256, "V16sV16sV16s", "", "avx2")
>  TARGET_BUILTIN(__builtin_ia32_pblendvb256, "V32cV32cV32cV32c", "", "avx2")
>  TARGET_BUILTIN(__builtin_ia32_phaddw256, "V16sV16sV16s", "", "avx2")
>  TARGET_BUILTIN(__builtin_ia32_phaddd256, "V8iV8iV8i", "", "avx2")
> @@ -1075,8 +1071,6 @@ TARGET_BUILTIN(__builtin_ia32_paddsb512_
>  TARGET_BUILTIN(__builtin_ia32_paddsw512_mask, "V32sV32sV32sV32sUi", "", 
> "avx512bw")
>  TARGET_BUILTIN(__builtin_ia32_paddusb512_mask, "V64cV64cV64cV64cULLi", "", 
> "avx512bw")
>  TARGET_BUILTIN(__builtin_ia32_paddusw512_mask, "V32sV32sV32sV32sUi", "", 
> "avx512bw")
> -TARGET_BUILTIN(__builtin_ia32_pavgb512_mask, "V64cV64cV64cV64cULLi", "", 
> "avx512bw")
> -TARGET_BUILTIN(__builtin_ia32_pavgw512_mask, "V32sV32sV32sV32sUi", "", 
> "avx512bw")
>  TARGET_BUILTIN(__builtin_ia32_pmaxsb512_mask, "V64cV64cV64cV64cULLi", "", 
> "avx512bw")
>  TARGET_BUILTIN(__builtin_ia32_pmaxsw512_mask, "V32sV32sV32sV32sUi", "", 
> "avx512bw")
>  TARGET_BUILTIN(__builtin_ia32_pmaxub512_mask, "V64cV64cV64cV64cULLi", "", 
> "avx512bw")
> 
> Modified: cfe/trunk/lib/Headers/avx2intrin.h
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avx2intrin.h?rev=313011&r1=313010&r2=313011&view=diff
>  
> <http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avx2intrin.h?rev=313011&r1=313010&r2=313011&view=diff>
> ==============================================================================
> --- cfe/trunk/lib/Headers/avx2intrin.h (original)
> +++ cfe/trunk/lib/Headers/avx2intrin.h Tue Sep 12 00:46:32 2017
> @@ -145,13 +145,21 @@ _mm256_andnot_si256(__m256i __a, __m256i
>  static __inline__ __m256i __DEFAULT_FN_ATTRS
>  _mm256_avg_epu8(__m256i __a, __m256i __b)
>  {
> -  return (__m256i)__builtin_ia32_pavgb256((__v32qi)__a, (__v32qi)__b);
> +  typedef unsigned short __v32hu __attribute__((__vector_size__(64)));
> +  return (__m256i)__builtin_convertvector(
> +               ((__builtin_convertvector((__v32qu)__a, __v32hu) +
> +                 __builtin_convertvector((__v32qu)__b, __v32hu)) + 1)
> +                 >> 1, __v32qu);
>  }
> 
>  static __inline__ __m256i __DEFAULT_FN_ATTRS
>  _mm256_avg_epu16(__m256i __a, __m256i __b)
>  {
> -  return (__m256i)__builtin_ia32_pavgw256((__v16hi)__a, (__v16hi)__b);
> +  typedef unsigned int __v16su __attribute__((__vector_size__(64)));
> +  return (__m256i)__builtin_convertvector(
> +               ((__builtin_convertvector((__v16hu)__a, __v16su) +
> +                 __builtin_convertvector((__v16hu)__b, __v16su)) + 1)
> +                 >> 1, __v16hu);
>  }
> 
>  static __inline__ __m256i __DEFAULT_FN_ATTRS
> 
> Modified: cfe/trunk/lib/Headers/avx512bwintrin.h
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avx512bwintrin.h?rev=313011&r1=313010&r2=313011&view=diff
>  
> <http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avx512bwintrin.h?rev=313011&r1=313010&r2=313011&view=diff>
> ==============================================================================
> --- cfe/trunk/lib/Headers/avx512bwintrin.h (original)
> +++ cfe/trunk/lib/Headers/avx512bwintrin.h Tue Sep 12 00:46:32 2017
> @@ -706,57 +706,55 @@ _mm512_maskz_adds_epu16 (__mmask32 __U,
>  static __inline__ __m512i __DEFAULT_FN_ATTRS
>  _mm512_avg_epu8 (__m512i __A, __m512i __B)
>  {
> -  return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
> -              (__v64qi) __B,
> -              (__v64qi) _mm512_setzero_qi(),
> -              (__mmask64) -1);
> +  typedef unsigned short __v64hu __attribute__((__vector_size__(128)));
> +  return (__m512i)__builtin_convertvector(
> +              ((__builtin_convertvector((__v64qu) __A, __v64hu) +
> +                __builtin_convertvector((__v64qu) __B, __v64hu)) + 1)
> +                >> 1, __v64qu);
>  }
> 
>  static __inline__ __m512i __DEFAULT_FN_ATTRS
>  _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
>            __m512i __B)
>  {
> -  return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
> -              (__v64qi) __B,
> -              (__v64qi) __W,
> -              (__mmask64) __U);
> +  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
> +              (__v64qi)_mm512_avg_epu8(__A, __B),
> +              (__v64qi)__W);
>  }
> 
>  static __inline__ __m512i __DEFAULT_FN_ATTRS
>  _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
>  {
> -  return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
> -              (__v64qi) __B,
> -              (__v64qi) _mm512_setzero_qi(),
> -              (__mmask64) __U);
> +  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
> +              (__v64qi)_mm512_avg_epu8(__A, __B),
> +              (__v64qi)_mm512_setzero_qi());
>  }
> 
>  static __inline__ __m512i __DEFAULT_FN_ATTRS
>  _mm512_avg_epu16 (__m512i __A, __m512i __B)
>  {
> -  return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
> -              (__v32hi) __B,
> -              (__v32hi) _mm512_setzero_hi(),
> -              (__mmask32) -1);
> +  typedef unsigned int __v32su __attribute__((__vector_size__(128)));
> +  return (__m512i)__builtin_convertvector(
> +              ((__builtin_convertvector((__v32hu) __A, __v32su) +
> +                __builtin_convertvector((__v32hu) __B, __v32su)) + 1)
> +                >> 1, __v32hu);
>  }
> 
>  static __inline__ __m512i __DEFAULT_FN_ATTRS
>  _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
>             __m512i __B)
>  {
> -  return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
> -              (__v32hi) __B,
> -              (__v32hi) __W,
> -              (__mmask32) __U);
> +  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
> +              (__v32hi)_mm512_avg_epu16(__A, __B),
> +              (__v32hi)__W);
>  }
> 
>  static __inline__ __m512i __DEFAULT_FN_ATTRS
>  _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
>  {
> -  return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
> -              (__v32hi) __B,
> -              (__v32hi) _mm512_setzero_hi(),
> -              (__mmask32) __U);
> +  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
> +              (__v32hi)_mm512_avg_epu16(__A, __B),
> +              (__v32hi) _mm512_setzero_hi());
>  }
> 
>  static __inline__ __m512i __DEFAULT_FN_ATTRS
> 
> Modified: cfe/trunk/lib/Headers/emmintrin.h
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/emmintrin.h?rev=313011&r1=313010&r2=313011&view=diff
>  
> <http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/emmintrin.h?rev=313011&r1=313010&r2=313011&view=diff>
> ==============================================================================
> --- cfe/trunk/lib/Headers/emmintrin.h (original)
> +++ cfe/trunk/lib/Headers/emmintrin.h Tue Sep 12 00:46:32 2017
> @@ -2258,7 +2258,11 @@ _mm_adds_epu16(__m128i __a, __m128i __b)
>  static __inline__ __m128i __DEFAULT_FN_ATTRS
>  _mm_avg_epu8(__m128i __a, __m128i __b)
>  {
> -  return (__m128i)__builtin_ia32_pavgb128((__v16qi)__a, (__v16qi)__b);
> +  typedef unsigned short __v16hu __attribute__ ((__vector_size__ (32)));
> +  return (__m128i)__builtin_convertvector(
> +               ((__builtin_convertvector((__v16qu)__a, __v16hu) +
> +                 __builtin_convertvector((__v16qu)__b, __v16hu)) + 1)
> +                 >> 1, __v16qu);
>  }
> 
>  /// \brief Computes the rounded avarages of corresponding elements of two
> @@ -2278,7 +2282,11 @@ _mm_avg_epu8(__m128i __a, __m128i __b)
>  static __inline__ __m128i __DEFAULT_FN_ATTRS
>  _mm_avg_epu16(__m128i __a, __m128i __b)
>  {
> -  return (__m128i)__builtin_ia32_pavgw128((__v8hi)__a, (__v8hi)__b);
> +  typedef unsigned int __v8su __attribute__ ((__vector_size__ (32)));
> +  return (__m128i)__builtin_convertvector(
> +               ((__builtin_convertvector((__v8hu)__a, __v8su) +
> +                 __builtin_convertvector((__v8hu)__b, __v8su)) + 1)
> +                 >> 1, __v8hu);
>  }
> 
>  /// \brief Multiplies the corresponding elements of two 128-bit signed [8 x 
> i16]
> 
> Modified: cfe/trunk/test/CodeGen/avx2-builtins.c
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx2-builtins.c?rev=313011&r1=313010&r2=313011&view=diff
>  
> <http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx2-builtins.c?rev=313011&r1=313010&r2=313011&view=diff>
> ==============================================================================
> --- cfe/trunk/test/CodeGen/avx2-builtins.c (original)
> +++ cfe/trunk/test/CodeGen/avx2-builtins.c Tue Sep 12 00:46:32 2017
> @@ -99,13 +99,25 @@ __m256i test_mm256_andnot_si256(__m256i
> 
>  __m256i test_mm256_avg_epu8(__m256i a, __m256i b) {
>    // CHECK-LABEL: test_mm256_avg_epu8
> -  // CHECK: call <32 x i8> @llvm.x86.avx2.pavg.b(<32 x i8> %{{.*}}, <32 x 
> i8> %{{.*}})
> +  // CHECK-NOT: call <32 x i8> @llvm.x86.avx2.pavg.b(<32 x i8> %{{.*}}, <32 
> x i8> %{{.*}})
> +  // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
> +  // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
> +  // CHECK: add <32 x i16> %{{.*}}, %{{.*}}
> +  // CHECK: add <32 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1>
> +  // CHECK: lshr <32 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1>
> +  // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>
>    return _mm256_avg_epu8(a, b);
>  }
> 
>  __m256i test_mm256_avg_epu16(__m256i a, __m256i b) {
>    // CHECK-LABEL: test_mm256_avg_epu16
> -  // CHECK: call <16 x i16> @llvm.x86.avx2.pavg.w(<16 x i16> %{{.*}}, <16 x 
> i16> %{{.*}})
> +  // CHECK-NOT: call <16 x i16> @llvm.x86.avx2.pavg.w(<16 x i16> %{{.*}}, 
> <16 x i16> %{{.*}})
> +  // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
> +  // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
> +  // CHECK: add <16 x i32> %{{.*}}, %{{.*}}
> +  // CHECK: add <16 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
> +  // CHECK: lshr <16 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
> +  // CHECK: trunc <16 x i32> %{{.*}} to <16 x i16>
>    return _mm256_avg_epu16(a, b);
>  }
> 
> 
> Modified: cfe/trunk/test/CodeGen/avx512bw-builtins.c
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512bw-builtins.c?rev=313011&r1=313010&r2=313011&view=diff
>  
> <http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512bw-builtins.c?rev=313011&r1=313010&r2=313011&view=diff>
> ==============================================================================
> --- cfe/trunk/test/CodeGen/avx512bw-builtins.c (original)
> +++ cfe/trunk/test/CodeGen/avx512bw-builtins.c Tue Sep 12 00:46:32 2017
> @@ -638,32 +638,74 @@ __m512i test_mm512_maskz_adds_epu16(__mm
>  }
>  __m512i test_mm512_avg_epu8(__m512i __A, __m512i __B) {
>    // CHECK-LABEL: @test_mm512_avg_epu8
> -  // CHECK: @llvm.x86.avx512.mask.pavg.b.512
> +  // CHECK-NOT: @llvm.x86.avx512.mask.pavg.b.512
> +  // CHECK: zext <64 x i8> %{{.*}} to <64 x i16>
> +  // CHECK: zext <64 x i8> %{{.*}} to <64 x i16>
> +  // CHECK: add <64 x i16> %{{.*}}, %{{.*}}
> +  // CHECK: add <64 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1>
> +  // CHECK: lshr <64 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1>
> +  // CHECK: trunc <64 x i16> %{{.*}} to <64 x i8>
>    return _mm512_avg_epu8(__A,__B);
>  }
>  __m512i test_mm512_mask_avg_epu8(__m512i __W, __mmask64 __U, __m512i __A, 
> __m512i __B) {
>    // CHECK-LABEL: @test_mm512_mask_avg_epu8
> -  // CHECK: @llvm.x86.avx512.mask.pavg.b.512
> +  // CHECK-NOT: @llvm.x86.avx512.mask.pavg.b.512
> +  // CHECK: zext <64 x i8> %{{.*}} to <64 x i16>
> +  // CHECK: zext <64 x i8> %{{.*}} to <64 x i16>
> +  // CHECK: add <64 x i16> %{{.*}}, %{{.*}}
> +  // CHECK: add <64 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1>
> +  // CHECK: lshr <64 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1>
> +  // CHECK: trunc <64 x i16> %{{.*}} to <64 x i8>
> +  // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
>    return _mm512_mask_avg_epu8(__W,__U,__A,__B);
>  }
>  __m512i test_mm512_maskz_avg_epu8(__mmask64 __U, __m512i __A, __m512i __B) {
>    // CHECK-LABEL: @test_mm512_maskz_avg_epu8
> -  // CHECK: @llvm.x86.avx512.mask.pavg.b.512
> +  // CHECK-NOT: @llvm.x86.avx512.mask.pavg.b.512
> +  // CHECK: zext <64 x i8> %{{.*}} to <64 x i16>
> +  // CHECK: zext <64 x i8> %{{.*}} to <64 x i16>
> +  // CHECK: add <64 x i16> %{{.*}}, %{{.*}}
> +  // CHECK: add <64 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1>
> +  // CHECK: lshr <64 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1>
> +  // CHECK: trunc <64 x i16> %{{.*}} to <64 x i8>
> +  // CHECK: store <64 x i8> zeroinitializer
> +  // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
>    return _mm512_maskz_avg_epu8(__U,__A,__B);
>  }
>  __m512i test_mm512_avg_epu16(__m512i __A, __m512i __B) {
>    // CHECK-LABEL: @test_mm512_avg_epu16
> -  // CHECK: @llvm.x86.avx512.mask.pavg.w.512
> +  // CHECK-NOT: @llvm.x86.avx512.mask.pavg.w.512
> +  // CHECK: zext <32 x i16> %{{.*}} to <32 x i32>
> +  // CHECK: zext <32 x i16> %{{.*}} to <32 x i32>
> +  // CHECK: add <32 x i32> %{{.*}}, %{{.*}}
> +  // CHECK: add <32 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1>
> +  // CHECK: lshr <32 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1>
> +  // CHECK: trunc <32 x i32> %{{.*}} to <32 x i16>
>    return _mm512_avg_epu16(__A,__B);
>  }
>  __m512i test_mm512_mask_avg_epu16(__m512i __W, __mmask32 __U, __m512i __A, 
> __m512i __B) {
>    // CHECK-LABEL: @test_mm512_mask_avg_epu16
> -  // CHECK: @llvm.x86.avx512.mask.pavg.w.512
> +  // CHECK-NOT: @llvm.x86.avx512.mask.pavg.w.512
> +  // CHECK: zext <32 x i16> %{{.*}} to <32 x i32>
> +  // CHECK: zext <32 x i16> %{{.*}} to <32 x i32>
> +  // CHECK: add <32 x i32> %{{.*}}, %{{.*}}
> +  // CHECK: add <32 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1>
> +  // CHECK: lshr <32 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1>
> +  // CHECK: trunc <32 x i32> %{{.*}} to <32 x i16>
> +  // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
>    return _mm512_mask_avg_epu16(__W,__U,__A,__B);
>  }
>  __m512i test_mm512_maskz_avg_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
>    // CHECK-LABEL: @test_mm512_maskz_avg_epu16
> -  // CHECK: @llvm.x86.avx512.mask.pavg.w.512
> +  // CHECK-NOT: @llvm.x86.avx512.mask.pavg.w.512
> +  // CHECK: zext <32 x i16> %{{.*}} to <32 x i32>
> +  // CHECK: zext <32 x i16> %{{.*}} to <32 x i32>
> +  // CHECK: add <32 x i32> %{{.*}}, %{{.*}}
> +  // CHECK: add <32 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1>
> +  // CHECK: lshr <32 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1>
> +  // CHECK: trunc <32 x i32> %{{.*}} to <32 x i16>
> +  // CHECK: store <32 x i16> zeroinitializer
> +  // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
>    return _mm512_maskz_avg_epu16(__U,__A,__B);
>  }
>  __m512i test_mm512_max_epi8(__m512i __A, __m512i __B) {
> 
> Modified: cfe/trunk/test/CodeGen/avx512vlbw-builtins.c
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512vlbw-builtins.c?rev=313011&r1=313010&r2=313011&view=diff
>  
> <http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512vlbw-builtins.c?rev=313011&r1=313010&r2=313011&view=diff>
> ==============================================================================
> --- cfe/trunk/test/CodeGen/avx512vlbw-builtins.c (original)
> +++ cfe/trunk/test/CodeGen/avx512vlbw-builtins.c Tue Sep 12 00:46:32 2017
> @@ -1155,49 +1155,101 @@ __m256i test_mm256_maskz_adds_epu16(__mm
>  }
>  __m128i test_mm_mask_avg_epu8(__m128i __W, __mmask16 __U, __m128i __A,       
> __m128i __B) {
>    // CHECK-LABEL: @test_mm_mask_avg_epu8
> -  // CHECK: @llvm.x86.sse2.pavg.b
> +  // CHECK-NOT: @llvm.x86.sse2.pavg.b
> +  // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
> +  // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
> +  // CHECK: add <16 x i16> %{{.*}}, %{{.*}}
> +  // CHECK: add <16 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
> +  // CHECK: lshr <16 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
> +  // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>
>    // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
>    return _mm_mask_avg_epu8(__W,__U,__A,__B);
>  }
>  __m128i test_mm_maskz_avg_epu8(__mmask16 __U, __m128i __A, __m128i __B) {
>    // CHECK-LABEL: @test_mm_maskz_avg_epu8
> -  // CHECK: @llvm.x86.sse2.pavg.b
> +  // CHECK-NOT: @llvm.x86.sse2.pavg.b
> +  // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
> +  // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
> +  // CHECK: add <16 x i16> %{{.*}}, %{{.*}}
> +  // CHECK: add <16 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
> +  // CHECK: lshr <16 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
> +  // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>
> +  // CHECK: store <2 x i64> zeroinitializer
>    // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
>    return _mm_maskz_avg_epu8(__U,__A,__B);
>  }
>  __m256i test_mm256_mask_avg_epu8(__m256i __W, __mmask32 __U, __m256i __A,    
>       __m256i __B) {
>    // CHECK-LABEL: @test_mm256_mask_avg_epu8
> -  // CHECK: @llvm.x86.avx2.pavg.b
> +  // CHECK-NOT: @llvm.x86.avx2.pavg.b
> +  // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
> +  // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
> +  // CHECK: add <32 x i16> %{{.*}}, %{{.*}}
> +  // CHECK: add <32 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1>
> +  // CHECK: lshr <32 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1>
> +  // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>
>    // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
>    return _mm256_mask_avg_epu8(__W,__U,__A,__B);
>  }
>  __m256i test_mm256_maskz_avg_epu8(__mmask32 __U, __m256i __A, __m256i __B) {
>    // CHECK-LABEL: @test_mm256_maskz_avg_epu8
> -  // CHECK: @llvm.x86.avx2.pavg.b
> +  // CHECK-NOT: @llvm.x86.avx2.pavg.b
> +  // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
> +  // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
> +  // CHECK: add <32 x i16> %{{.*}}, %{{.*}}
> +  // CHECK: add <32 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1>
> +  // CHECK: lshr <32 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1>
> +  // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>
> +  // CHECK: store <4 x i64> zeroinitializer
>    // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
>    return _mm256_maskz_avg_epu8(__U,__A,__B);
>  }
>  __m128i test_mm_mask_avg_epu16(__m128i __W, __mmask8 __U, __m128i __A,       
>  __m128i __B) {
>    // CHECK-LABEL: @test_mm_mask_avg_epu16
> -  // CHECK: @llvm.x86.sse2.pavg.w
> +  // CHECK-NOT: @llvm.x86.sse2.pavg.w
> +  // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>
> +  // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>
> +  // CHECK: add <8 x i32> %{{.*}}, %{{.*}}
> +  // CHECK: add <8 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1>
> +  // CHECK: lshr <8 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1>
> +  // CHECK: trunc <8 x i32> %{{.*}} to <8 x i16>
>    // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
>    return _mm_mask_avg_epu16(__W,__U,__A,__B);
>  }
>  __m128i test_mm_maskz_avg_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
>    // CHECK-LABEL: @test_mm_maskz_avg_epu16
> -  // CHECK: @llvm.x86.sse2.pavg.w
> +  // CHECK-NOT: @llvm.x86.sse2.pavg.w
> +  // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>
> +  // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>
> +  // CHECK: add <8 x i32> %{{.*}}, %{{.*}}
> +  // CHECK: add <8 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1>
> +  // CHECK: lshr <8 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1>
> +  // CHECK: trunc <8 x i32> %{{.*}} to <8 x i16>
> +  // CHECK: store <2 x i64> zeroinitializer
>    // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
>    return _mm_maskz_avg_epu16(__U,__A,__B);
>  }
>  __m256i test_mm256_mask_avg_epu16(__m256i __W, __mmask16 __U, __m256i __A,   
>         __m256i __B) {
>    // CHECK-LABEL: @test_mm256_mask_avg_epu16
> -  // CHECK: @llvm.x86.avx2.pavg.w
> +  // CHECK-NOT: @llvm.x86.avx2.pavg.w
> +  // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
> +  // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
> +  // CHECK: add <16 x i32> %{{.*}}, %{{.*}}
> +  // CHECK: add <16 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
> +  // CHECK: lshr <16 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
> +  // CHECK: trunc <16 x i32> %{{.*}} to <16 x i16>
>    // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
>    return _mm256_mask_avg_epu16(__W,__U,__A,__B);
>  }
>  __m256i test_mm256_maskz_avg_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
>    // CHECK-LABEL: @test_mm256_maskz_avg_epu16
> -  // CHECK: @llvm.x86.avx2.pavg.w
> +  // CHECK-NOT: @llvm.x86.avx2.pavg.w
> +  // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
> +  // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
> +  // CHECK: add <16 x i32> %{{.*}}, %{{.*}}
> +  // CHECK: add <16 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
> +  // CHECK: lshr <16 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
> +  // CHECK: trunc <16 x i32> %{{.*}} to <16 x i16>
> +  // CHECK: store <4 x i64> zeroinitializer
>    // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
>    return _mm256_maskz_avg_epu16(__U,__A,__B);
>  }
> 
> Modified: cfe/trunk/test/CodeGen/builtins-x86.c
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtins-x86.c?rev=313011&r1=313010&r2=313011&view=diff
>  
> <http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtins-x86.c?rev=313011&r1=313010&r2=313011&view=diff>
> ==============================================================================
> --- cfe/trunk/test/CodeGen/builtins-x86.c (original)
> +++ cfe/trunk/test/CodeGen/builtins-x86.c Tue Sep 12 00:46:32 2017
> @@ -160,8 +160,6 @@ void f0() {
>    tmp_V4s = __builtin_ia32_psubusw(tmp_V4s, tmp_V4s);
>    tmp_V4s = __builtin_ia32_pmulhw(tmp_V4s, tmp_V4s);
>    tmp_V4s = __builtin_ia32_pmulhuw(tmp_V4s, tmp_V4s);
> -  tmp_V8c = __builtin_ia32_pavgb(tmp_V8c, tmp_V8c);
> -  tmp_V4s = __builtin_ia32_pavgw(tmp_V4s, tmp_V4s);
>    tmp_V8c = __builtin_ia32_pcmpeqb(tmp_V8c, tmp_V8c);
>    tmp_V4s = __builtin_ia32_pcmpeqw(tmp_V4s, tmp_V4s);
>    tmp_V2i = __builtin_ia32_pcmpeqd(tmp_V2i, tmp_V2i);
> @@ -201,8 +199,6 @@ void f0() {
>    tmp_V16c = __builtin_ia32_psubusb128(tmp_V16c, tmp_V16c);
>    tmp_V8s = __builtin_ia32_psubusw128(tmp_V8s, tmp_V8s);
>    tmp_V8s = __builtin_ia32_pmulhw128(tmp_V8s, tmp_V8s);
> -  tmp_V16c = __builtin_ia32_pavgb128(tmp_V16c, tmp_V16c);
> -  tmp_V8s = __builtin_ia32_pavgw128(tmp_V8s, tmp_V8s);
>    tmp_V16c = __builtin_ia32_pmaxub128(tmp_V16c, tmp_V16c);
>    tmp_V8s = __builtin_ia32_pmaxsw128(tmp_V8s, tmp_V8s);
>    tmp_V16c = __builtin_ia32_pminub128(tmp_V16c, tmp_V16c);
> 
> Modified: cfe/trunk/test/CodeGen/sse2-builtins.c
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/sse2-builtins.c?rev=313011&r1=313010&r2=313011&view=diff
>  
> <http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/sse2-builtins.c?rev=313011&r1=313010&r2=313011&view=diff>
> ==============================================================================
> --- cfe/trunk/test/CodeGen/sse2-builtins.c (original)
> +++ cfe/trunk/test/CodeGen/sse2-builtins.c Tue Sep 12 00:46:32 2017
> @@ -97,13 +97,25 @@ __m128i test_mm_andnot_si128(__m128i A,
> 
>  __m128i test_mm_avg_epu8(__m128i A, __m128i B) {
>    // CHECK-LABEL: test_mm_avg_epu8
> -  // CHECK: call <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8> %{{.*}}, <16 x 
> i8> %{{.*}})
> +  // CHECK-NOT: call <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8> %{{.*}}, <16 
> x i8> %{{.*}})
> +  // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
> +  // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
> +  // CHECK: add <16 x i16> %{{.*}}, %{{.*}}
> +  // CHECK: add <16 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
> +  // CHECK: lshr <16 x i16> %{{.*}}, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 
> 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
> +  // CHECK:trunc <16 x i16> %{{.*}} to <16 x i8>
>    return _mm_avg_epu8(A, B);
>  }
> 
>  __m128i test_mm_avg_epu16(__m128i A, __m128i B) {
>    // CHECK-LABEL: test_mm_avg_epu16
> -  // CHECK: call <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16> %{{.*}}, <8 x 
> i16> %{{.*}})
> +  // CHECK-NOT: call <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16> %{{.*}}, <8 x 
> i16> %{{.*}})
> +  // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>
> +  // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>
> +  // CHECK: add <8 x i32> %{{.*}}, %{{.*}}
> +  // CHECK: add <8 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1>
> +  // CHECK: lshr <8 x i32> %{{.*}}, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 
> 1, i32 1, i32 1>
> +  // CHECK: trunc <8 x i32> %{{.*}} to <8 x i16>
>    return _mm_avg_epu16(A, B);
>  }
> 
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits 
> <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits>
>  
> ---------------------------------------------------------------------
> Intel Israel (74) Limited
> 
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
> 

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to