[llvm] r251779 - [X86] Don't pass a scale value of 0 to scatter/gather intrinsics. This causes the code emitter to throw an assertion if we try to encode it. Need to add a check to fail isel for this, but for now avoid testing it.

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 2 08:38:11 PST 2015


On Sun, Nov 1, 2015 at 11:24 PM, Craig Topper via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: ctopper
> Date: Mon Nov  2 01:24:37 2015
> New Revision: 251779
>
> URL: http://llvm.org/viewvc/llvm-project?rev=251779&view=rev
> Log:
> [X86] Don't pass a scale value of 0 to scatter/gather intrinsics. This
> causes the code emitter to throw an assertion if we try to encode it. Need
> to add a check to fail isel for this, but for now avoid testing it.
>

Testing and XFAIL wouldn't be too bad - and/or at least having a bug (&
maybe a comment in the test that it should be tested, but isn't)?


>
> Modified:
>     llvm/trunk/test/CodeGen/X86/avx512-gather-scatter-intrin.ll
>
> Modified: llvm/trunk/test/CodeGen/X86/avx512-gather-scatter-intrin.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx512-gather-scatter-intrin.ll?rev=251779&r1=251778&r2=251779&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/avx512-gather-scatter-intrin.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/avx512-gather-scatter-intrin.ll Mon Nov  2
> 01:24:37 2015
> @@ -279,11 +279,11 @@ define <2 x double>@test_int_x86_avx512_
>  ; CHECK-NEXT:    vmovaps %zmm0, %zmm2
>  ; CHECK-NEXT:    vgatherqpd (%rdi,%xmm1,4), %xmm2 {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
> -; CHECK-NEXT:    vgatherqpd (%rdi,%xmm1,0), %xmm0 {%k1}
> +; CHECK-NEXT:    vgatherqpd (%rdi,%xmm1,2), %xmm0 {%k1}
>  ; CHECK-NEXT:    vaddpd %xmm0, %xmm2, %xmm0
>  ; CHECK-NEXT:    retq
>    %res = call <2 x double> @llvm.x86.avx512.gather3div2.df(<2 x double>
> %x0, i8* %x1, <2 x i64> %x2, i8 %x3, i32 4)
> -  %res1 = call <2 x double> @llvm.x86.avx512.gather3div2.df(<2 x double>
> %x0, i8* %x1, <2 x i64> %x2, i8 -1, i32 0)
> +  %res1 = call <2 x double> @llvm.x86.avx512.gather3div2.df(<2 x double>
> %x0, i8* %x1, <2 x i64> %x2, i8 -1, i32 2)
>    %res2 = fadd <2 x double> %res, %res1
>    ret <2 x double> %res2
>  }
> @@ -312,11 +312,11 @@ define <4 x double>@test_int_x86_avx512_
>  ; CHECK-NEXT:    vmovaps %zmm0, %zmm2
>  ; CHECK-NEXT:    vgatherqpd (%rdi,%ymm1,4), %ymm2 {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
> -; CHECK-NEXT:    vgatherqpd (%rdi,%ymm1,0), %ymm0 {%k1}
> +; CHECK-NEXT:    vgatherqpd (%rdi,%ymm1,2), %ymm0 {%k1}
>  ; CHECK-NEXT:    vaddpd %ymm0, %ymm2, %ymm0
>  ; CHECK-NEXT:    retq
>    %res = call <4 x double> @llvm.x86.avx512.gather3div4.df(<4 x double>
> %x0, i8* %x1, <4 x i64> %x2, i8 %x3, i32 4)
> -  %res1 = call <4 x double> @llvm.x86.avx512.gather3div4.df(<4 x double>
> %x0, i8* %x1, <4 x i64> %x2, i8 -1, i32 0)
> +  %res1 = call <4 x double> @llvm.x86.avx512.gather3div4.df(<4 x double>
> %x0, i8* %x1, <4 x i64> %x2, i8 -1, i32 2)
>    %res2 = fadd <4 x double> %res, %res1
>    ret <4 x double> %res2
>  }
> @@ -348,11 +348,11 @@ define <4 x float>@test_int_x86_avx512_g
>  ; CHECK-NEXT:    vmovaps %zmm0, %zmm2
>  ; CHECK-NEXT:    vgatherqps (%rdi,%xmm1,4), %xmm2 {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
> -; CHECK-NEXT:    vgatherqps (%rdi,%xmm1,0), %xmm0 {%k1}
> +; CHECK-NEXT:    vgatherqps (%rdi,%xmm1,2), %xmm0 {%k1}
>  ; CHECK-NEXT:    vaddps %xmm0, %xmm2, %xmm0
>  ; CHECK-NEXT:    retq
>    %res = call <4 x float> @llvm.x86.avx512.gather3div4.sf(<4 x float>
> %x0, i8* %x1, <2 x i64> %x2, i8 %x3, i32 4)
> -  %res1 = call <4 x float> @llvm.x86.avx512.gather3div4.sf(<4 x float>
> %x0, i8* %x1, <2 x i64> %x2, i8 -1, i32 0)
> +  %res1 = call <4 x float> @llvm.x86.avx512.gather3div4.sf(<4 x float>
> %x0, i8* %x1, <2 x i64> %x2, i8 -1, i32 2)
>    %res2 = fadd <4 x float> %res, %res1
>    ret <4 x float> %res2
>  }
> @@ -384,11 +384,11 @@ define <4 x float>@test_int_x86_avx512_g
>  ; CHECK-NEXT:    vmovaps %zmm0, %zmm2
>  ; CHECK-NEXT:    vgatherqps (%rdi,%ymm1,4), %xmm2 {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
> -; CHECK-NEXT:    vgatherqps (%rdi,%ymm1,0), %xmm0 {%k1}
> +; CHECK-NEXT:    vgatherqps (%rdi,%ymm1,2), %xmm0 {%k1}
>  ; CHECK-NEXT:    vaddps %xmm0, %xmm2, %xmm0
>  ; CHECK-NEXT:    retq
>    %res = call <4 x float> @llvm.x86.avx512.gather3div8.sf(<4 x float>
> %x0, i8* %x1, <4 x i64> %x2, i8 %x3, i32 4)
> -  %res1 = call <4 x float> @llvm.x86.avx512.gather3div8.sf(<4 x float>
> %x0, i8* %x1, <4 x i64> %x2, i8 -1, i32 0)
> +  %res1 = call <4 x float> @llvm.x86.avx512.gather3div8.sf(<4 x float>
> %x0, i8* %x1, <4 x i64> %x2, i8 -1, i32 2)
>    %res2 = fadd <4 x float> %res, %res1
>    ret <4 x float> %res2
>  }
> @@ -420,11 +420,11 @@ define <2 x double>@test_int_x86_avx512_
>  ; CHECK-NEXT:    vmovaps %zmm0, %zmm2
>  ; CHECK-NEXT:    vgatherdpd (%rdi,%xmm1,4), %xmm2 {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
> -; CHECK-NEXT:    vgatherdpd (%rdi,%xmm1,0), %xmm0 {%k1}
> +; CHECK-NEXT:    vgatherdpd (%rdi,%xmm1,2), %xmm0 {%k1}
>  ; CHECK-NEXT:    vaddpd %xmm0, %xmm2, %xmm0
>  ; CHECK-NEXT:    retq
>    %res = call <2 x double> @llvm.x86.avx512.gather3siv2.df(<2 x double>
> %x0, i8* %x1, <4 x i32> %x2, i8 %x3, i32 4)
> -  %res1 = call <2 x double> @llvm.x86.avx512.gather3siv2.df(<2 x double>
> %x0, i8* %x1, <4 x i32> %x2, i8 -1, i32 0)
> +  %res1 = call <2 x double> @llvm.x86.avx512.gather3siv2.df(<2 x double>
> %x0, i8* %x1, <4 x i32> %x2, i8 -1, i32 2)
>    %res2 = fadd <2 x double> %res, %res1
>    ret <2 x double> %res2
>  }
> @@ -453,11 +453,11 @@ define <4 x double>@test_int_x86_avx512_
>  ; CHECK-NEXT:    vmovaps %zmm0, %zmm2
>  ; CHECK-NEXT:    vgatherdpd (%rdi,%xmm1,4), %ymm2 {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
> -; CHECK-NEXT:    vgatherdpd (%rdi,%xmm1,0), %ymm0 {%k1}
> +; CHECK-NEXT:    vgatherdpd (%rdi,%xmm1,2), %ymm0 {%k1}
>  ; CHECK-NEXT:    vaddpd %ymm0, %ymm2, %ymm0
>  ; CHECK-NEXT:    retq
>    %res = call <4 x double> @llvm.x86.avx512.gather3siv4.df(<4 x double>
> %x0, i8* %x1, <4 x i32> %x2, i8 %x3, i32 4)
> -  %res1 = call <4 x double> @llvm.x86.avx512.gather3siv4.df(<4 x double>
> %x0, i8* %x1, <4 x i32> %x2, i8 -1, i32 0)
> +  %res1 = call <4 x double> @llvm.x86.avx512.gather3siv4.df(<4 x double>
> %x0, i8* %x1, <4 x i32> %x2, i8 -1, i32 2)
>    %res2 = fadd <4 x double> %res, %res1
>    ret <4 x double> %res2
>  }
> @@ -486,11 +486,11 @@ define <4 x float>@test_int_x86_avx512_g
>  ; CHECK-NEXT:    vmovaps %zmm0, %zmm2
>  ; CHECK-NEXT:    vgatherdps (%rdi,%xmm1,4), %xmm2 {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
> -; CHECK-NEXT:    vgatherdps (%rdi,%xmm1,0), %xmm0 {%k1}
> +; CHECK-NEXT:    vgatherdps (%rdi,%xmm1,2), %xmm0 {%k1}
>  ; CHECK-NEXT:    vaddps %xmm0, %xmm2, %xmm0
>  ; CHECK-NEXT:    retq
>    %res = call <4 x float> @llvm.x86.avx512.gather3siv4.sf(<4 x float>
> %x0, i8* %x1, <4 x i32> %x2, i8 %x3, i32 4)
> -  %res1 = call <4 x float> @llvm.x86.avx512.gather3siv4.sf(<4 x float>
> %x0, i8* %x1, <4 x i32> %x2, i8 -1, i32 0)
> +  %res1 = call <4 x float> @llvm.x86.avx512.gather3siv4.sf(<4 x float>
> %x0, i8* %x1, <4 x i32> %x2, i8 -1, i32 2)
>    %res2 = fadd <4 x float> %res, %res1
>    ret <4 x float> %res2
>  }
> @@ -504,11 +504,11 @@ define <4 x i32>@test_int_x86_avx512_gat
>  ; CHECK-NEXT:    kxnorw %k2, %k2, %k2
>  ; CHECK-NEXT:    vmovaps %zmm0, %zmm2
>  ; CHECK-NEXT:    vpgatherdd (%rdi,%xmm1,4), %xmm2 {%k2}
> -; CHECK-NEXT:    vpgatherdd (%rdi,%xmm1,0), %xmm0 {%k1}
> +; CHECK-NEXT:    vpgatherdd (%rdi,%xmm1,2), %xmm0 {%k1}
>  ; CHECK-NEXT:    vpaddd %xmm0, %xmm2, %xmm0
>  ; CHECK-NEXT:    retq
>    %res = call <4 x i32> @llvm.x86.avx512.gather3siv4.si(<4 x i32> %x0,
> i8* %x1, <4 x i32> %x2, i8 -1, i32 4)
> -  %res1 = call <4 x i32> @llvm.x86.avx512.gather3siv4.si(<4 x i32> %x0,
> i8* %x1, <4 x i32> %x2, i8 %x3, i32 0)
> +  %res1 = call <4 x i32> @llvm.x86.avx512.gather3siv4.si(<4 x i32> %x0,
> i8* %x1, <4 x i32> %x2, i8 %x3, i32 2)
>    %res2 = add <4 x i32> %res, %res1
>    ret <4 x i32> %res2
>  }
> @@ -522,11 +522,11 @@ define <8 x float>@test_int_x86_avx512_g
>  ; CHECK-NEXT:    vmovaps %zmm0, %zmm2
>  ; CHECK-NEXT:    vgatherdps (%rdi,%ymm1,4), %ymm2 {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
> -; CHECK-NEXT:    vgatherdps (%rdi,%ymm1,0), %ymm0 {%k1}
> +; CHECK-NEXT:    vgatherdps (%rdi,%ymm1,2), %ymm0 {%k1}
>  ; CHECK-NEXT:    vaddps %ymm0, %ymm2, %ymm0
>  ; CHECK-NEXT:    retq
>    %res = call <8 x float> @llvm.x86.avx512.gather3siv8.sf(<8 x float>
> %x0, i8* %x1, <8 x i32> %x2, i8 %x3, i32 4)
> -  %res1 = call <8 x float> @llvm.x86.avx512.gather3siv8.sf(<8 x float>
> %x0, i8* %x1, <8 x i32> %x2, i8 -1, i32 0)
> +  %res1 = call <8 x float> @llvm.x86.avx512.gather3siv8.sf(<8 x float>
> %x0, i8* %x1, <8 x i32> %x2, i8 -1, i32 2)
>    %res2 = fadd <8 x float> %res, %res1
>    ret <8 x float> %res2
>  }
> @@ -540,11 +540,11 @@ define <8 x i32>@test_int_x86_avx512_gat
>  ; CHECK-NEXT:    vmovaps %zmm0, %zmm2
>  ; CHECK-NEXT:    kmovw %k1, %k2
>  ; CHECK-NEXT:    vpgatherdd (%rdi,%ymm1,4), %ymm2 {%k2}
> -; CHECK-NEXT:    vpgatherdd (%rdi,%ymm1,0), %ymm0 {%k1}
> +; CHECK-NEXT:    vpgatherdd (%rdi,%ymm1,2), %ymm0 {%k1}
>  ; CHECK-NEXT:    vpaddd %ymm0, %ymm2, %ymm0
>  ; CHECK-NEXT:    retq
>    %res = call <8 x i32> @llvm.x86.avx512.gather3siv8.si(<8 x i32> %x0,
> i8* %x1, <8 x i32> %x2, i8 %x3, i32 4)
> -  %res1 = call <8 x i32> @llvm.x86.avx512.gather3siv8.si(<8 x i32> %x0,
> i8* %x1, <8 x i32> %x2, i8 %x3, i32 0)
> +  %res1 = call <8 x i32> @llvm.x86.avx512.gather3siv8.si(<8 x i32> %x0,
> i8* %x1, <8 x i32> %x2, i8 %x3, i32 2)
>    %res2 = add <8 x i32> %res, %res1
>    ret <8 x i32> %res2
>  }
> @@ -556,10 +556,10 @@ define void at test_int_x86_avx512_scatterd
>  ; CHECK:       ## BB#0:
>  ; CHECK-NEXT:    kmovb %esi, %k1
>  ; CHECK-NEXT:    kxnorw %k2, %k2, %k2
> -; CHECK-NEXT:    vscatterqpd %xmm1, (%rdi,%xmm0,0) {%k2}
> +; CHECK-NEXT:    vscatterqpd %xmm1, (%rdi,%xmm0,2) {%k2}
>  ; CHECK-NEXT:    vscatterqpd %xmm1, (%rdi,%xmm0,4) {%k1}
>  ; CHECK-NEXT:    retq
> -  call void @llvm.x86.avx512.scatterdiv2.df(i8* %x0, i8 -1, <2 x i64>
> %x2, <2 x double> %x3, i32 0)
> +  call void @llvm.x86.avx512.scatterdiv2.df(i8* %x0, i8 -1, <2 x i64>
> %x2, <2 x double> %x3, i32 2)
>    call void @llvm.x86.avx512.scatterdiv2.df(i8* %x0, i8 %x1, <2 x i64>
> %x2, <2 x double> %x3, i32 4)
>    ret void
>  }
> @@ -570,11 +570,11 @@ define void at test_int_x86_avx512_scatterd
>  ; CHECK-LABEL: test_int_x86_avx512_scatterdiv2_di:
>  ; CHECK:       ## BB#0:
>  ; CHECK-NEXT:    kmovb %esi, %k1
> -; CHECK-NEXT:    vpscatterqq %xmm1, (%rdi,%xmm0,0) {%k1}
> +; CHECK-NEXT:    vpscatterqq %xmm1, (%rdi,%xmm0,2) {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
>  ; CHECK-NEXT:    vpscatterqq %xmm1, (%rdi,%xmm0,4) {%k1}
>  ; CHECK-NEXT:    retq
> -  call void @llvm.x86.avx512.scatterdiv2.di(i8* %x0, i8 %x1, <2 x i64>
> %x2, <2 x i64> %x3, i32 0)
> +  call void @llvm.x86.avx512.scatterdiv2.di(i8* %x0, i8 %x1, <2 x i64>
> %x2, <2 x i64> %x3, i32 2)
>    call void @llvm.x86.avx512.scatterdiv2.di(i8* %x0, i8 -1, <2 x i64>
> %x2, <2 x i64> %x3, i32 4)
>    ret void
>  }
> @@ -585,11 +585,11 @@ define void at test_int_x86_avx512_scatterd
>  ; CHECK-LABEL: test_int_x86_avx512_scatterdiv4_df:
>  ; CHECK:       ## BB#0:
>  ; CHECK-NEXT:    kmovb %esi, %k1
> -; CHECK-NEXT:    vscatterqpd %ymm1, (%rdi,%ymm0,0) {%k1}
> +; CHECK-NEXT:    vscatterqpd %ymm1, (%rdi,%ymm0,2) {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
>  ; CHECK-NEXT:    vscatterqpd %ymm1, (%rdi,%ymm0,4) {%k1}
>  ; CHECK-NEXT:    retq
> -  call void @llvm.x86.avx512.scatterdiv4.df(i8* %x0, i8 %x1, <4 x i64>
> %x2, <4 x double> %x3, i32 0)
> +  call void @llvm.x86.avx512.scatterdiv4.df(i8* %x0, i8 %x1, <4 x i64>
> %x2, <4 x double> %x3, i32 2)
>    call void @llvm.x86.avx512.scatterdiv4.df(i8* %x0, i8 -1, <4 x i64>
> %x2, <4 x double> %x3, i32 4)
>    ret void
>  }
> @@ -600,11 +600,11 @@ define void at test_int_x86_avx512_scatterd
>  ; CHECK-LABEL: test_int_x86_avx512_scatterdiv4_di:
>  ; CHECK:       ## BB#0:
>  ; CHECK-NEXT:    kmovb %esi, %k1
> -; CHECK-NEXT:    vpscatterqq %ymm1, (%rdi,%ymm0,0) {%k1}
> +; CHECK-NEXT:    vpscatterqq %ymm1, (%rdi,%ymm0,2) {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
>  ; CHECK-NEXT:    vpscatterqq %ymm1, (%rdi,%ymm0,4) {%k1}
>  ; CHECK-NEXT:    retq
> -  call void @llvm.x86.avx512.scatterdiv4.di(i8* %x0, i8 %x1, <4 x i64>
> %x2, <4 x i64> %x3, i32 0)
> +  call void @llvm.x86.avx512.scatterdiv4.di(i8* %x0, i8 %x1, <4 x i64>
> %x2, <4 x i64> %x3, i32 2)
>    call void @llvm.x86.avx512.scatterdiv4.di(i8* %x0, i8 -1, <4 x i64>
> %x2, <4 x i64> %x3, i32 4)
>    ret void
>  }
> @@ -615,11 +615,11 @@ define void at test_int_x86_avx512_scatterd
>  ; CHECK-LABEL: test_int_x86_avx512_scatterdiv4_sf:
>  ; CHECK:       ## BB#0:
>  ; CHECK-NEXT:    kmovb %esi, %k1
> -; CHECK-NEXT:    vscatterqps %xmm1, (%rdi,%xmm0,0) {%k1}
> +; CHECK-NEXT:    vscatterqps %xmm1, (%rdi,%xmm0,2) {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
>  ; CHECK-NEXT:    vscatterqps %xmm1, (%rdi,%xmm0,4) {%k1}
>  ; CHECK-NEXT:    retq
> -  call void @llvm.x86.avx512.scatterdiv4.sf(i8* %x0, i8 %x1, <2 x i64>
> %x2, <4 x float> %x3, i32 0)
> +  call void @llvm.x86.avx512.scatterdiv4.sf(i8* %x0, i8 %x1, <2 x i64>
> %x2, <4 x float> %x3, i32 2)
>    call void @llvm.x86.avx512.scatterdiv4.sf(i8* %x0, i8 -1, <2 x i64>
> %x2, <4 x float> %x3, i32 4)
>    ret void
>  }
> @@ -631,10 +631,10 @@ define void at test_int_x86_avx512_scatterd
>  ; CHECK:       ## BB#0:
>  ; CHECK-NEXT:    kmovb %esi, %k1
>  ; CHECK-NEXT:    kxnorw %k2, %k2, %k2
> -; CHECK-NEXT:    vpscatterqd %xmm1, (%rdi,%xmm0,0) {%k2}
> +; CHECK-NEXT:    vpscatterqd %xmm1, (%rdi,%xmm0,2) {%k2}
>  ; CHECK-NEXT:    vpscatterqd %xmm1, (%rdi,%xmm0,4) {%k1}
>  ; CHECK-NEXT:    retq
> -  call void @llvm.x86.avx512.scatterdiv4.si(i8* %x0, i8 -1, <2 x i64>
> %x2, <4 x i32> %x3, i32 0)
> +  call void @llvm.x86.avx512.scatterdiv4.si(i8* %x0, i8 -1, <2 x i64>
> %x2, <4 x i32> %x3, i32 2)
>    call void @llvm.x86.avx512.scatterdiv4.si(i8* %x0, i8 %x1, <2 x i64>
> %x2, <4 x i32> %x3, i32 4)
>    ret void
>  }
> @@ -645,11 +645,11 @@ define void at test_int_x86_avx512_scatterd
>  ; CHECK-LABEL: test_int_x86_avx512_scatterdiv8_sf:
>  ; CHECK:       ## BB#0:
>  ; CHECK-NEXT:    kmovb %esi, %k1
> -; CHECK-NEXT:    vscatterqps %xmm1, (%rdi,%ymm0,0) {%k1}
> +; CHECK-NEXT:    vscatterqps %xmm1, (%rdi,%ymm0,2) {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
>  ; CHECK-NEXT:    vscatterqps %xmm1, (%rdi,%ymm0,4) {%k1}
>  ; CHECK-NEXT:    retq
> -  call void @llvm.x86.avx512.scatterdiv8.sf(i8* %x0, i8 %x1, <4 x i64>
> %x2, <4 x float> %x3, i32 0)
> +  call void @llvm.x86.avx512.scatterdiv8.sf(i8* %x0, i8 %x1, <4 x i64>
> %x2, <4 x float> %x3, i32 2)
>    call void @llvm.x86.avx512.scatterdiv8.sf(i8* %x0, i8 -1, <4 x i64>
> %x2, <4 x float> %x3, i32 4)
>    ret void
>  }
> @@ -660,11 +660,11 @@ define void at test_int_x86_avx512_scatterd
>  ; CHECK-LABEL: test_int_x86_avx512_scatterdiv8_si:
>  ; CHECK:       ## BB#0:
>  ; CHECK-NEXT:    kmovb %esi, %k1
> -; CHECK-NEXT:    vpscatterqd %xmm1, (%rdi,%ymm0,0) {%k1}
> +; CHECK-NEXT:    vpscatterqd %xmm1, (%rdi,%ymm0,2) {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
>  ; CHECK-NEXT:    vpscatterqd %xmm1, (%rdi,%ymm0,4) {%k1}
>  ; CHECK-NEXT:    retq
> -  call void @llvm.x86.avx512.scatterdiv8.si(i8* %x0, i8 %x1, <4 x i64>
> %x2, <4 x i32> %x3, i32 0)
> +  call void @llvm.x86.avx512.scatterdiv8.si(i8* %x0, i8 %x1, <4 x i64>
> %x2, <4 x i32> %x3, i32 2)
>    call void @llvm.x86.avx512.scatterdiv8.si(i8* %x0, i8 -1, <4 x i64>
> %x2, <4 x i32> %x3, i32 4)
>    ret void
>  }
> @@ -676,10 +676,10 @@ define void at test_int_x86_avx512_scatters
>  ; CHECK:       ## BB#0:
>  ; CHECK-NEXT:    kmovb %esi, %k1
>  ; CHECK-NEXT:    kxnorw %k2, %k2, %k2
> -; CHECK-NEXT:    vscatterdpd %xmm1, (%rdi,%xmm0,0) {%k2}
> +; CHECK-NEXT:    vscatterdpd %xmm1, (%rdi,%xmm0,2) {%k2}
>  ; CHECK-NEXT:    vscatterdpd %xmm1, (%rdi,%xmm0,4) {%k1}
>  ; CHECK-NEXT:    retq
> -  call void @llvm.x86.avx512.scattersiv2.df(i8* %x0, i8 -1, <4 x i32>
> %x2, <2 x double> %x3, i32 0)
> +  call void @llvm.x86.avx512.scattersiv2.df(i8* %x0, i8 -1, <4 x i32>
> %x2, <2 x double> %x3, i32 2)
>    call void @llvm.x86.avx512.scattersiv2.df(i8* %x0, i8 %x1, <4 x i32>
> %x2, <2 x double> %x3, i32 4)
>    ret void
>  }
> @@ -691,10 +691,10 @@ define void at test_int_x86_avx512_scatters
>  ; CHECK:       ## BB#0:
>  ; CHECK-NEXT:    kmovb %esi, %k1
>  ; CHECK-NEXT:    kxnorw %k2, %k2, %k2
> -; CHECK-NEXT:    vpscatterdq %xmm1, (%rdi,%xmm0,0) {%k2}
> +; CHECK-NEXT:    vpscatterdq %xmm1, (%rdi,%xmm0,2) {%k2}
>  ; CHECK-NEXT:    vpscatterdq %xmm1, (%rdi,%xmm0,4) {%k1}
>  ; CHECK-NEXT:    retq
> -  call void @llvm.x86.avx512.scattersiv2.di(i8* %x0, i8 -1, <4 x i32>
> %x2, <2 x i64> %x3, i32 0)
> +  call void @llvm.x86.avx512.scattersiv2.di(i8* %x0, i8 -1, <4 x i32>
> %x2, <2 x i64> %x3, i32 2)
>    call void @llvm.x86.avx512.scattersiv2.di(i8* %x0, i8 %x1, <4 x i32>
> %x2, <2 x i64> %x3, i32 4)
>    ret void
>  }
> @@ -705,11 +705,11 @@ define void at test_int_x86_avx512_scatters
>  ; CHECK-LABEL: test_int_x86_avx512_scattersiv4_df:
>  ; CHECK:       ## BB#0:
>  ; CHECK-NEXT:    kmovb %esi, %k1
> -; CHECK-NEXT:    vscatterdpd %ymm1, (%rdi,%xmm0,0) {%k1}
> +; CHECK-NEXT:    vscatterdpd %ymm1, (%rdi,%xmm0,2) {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
>  ; CHECK-NEXT:    vscatterdpd %ymm1, (%rdi,%xmm0,4) {%k1}
>  ; CHECK-NEXT:    retq
> -  call void @llvm.x86.avx512.scattersiv4.df(i8* %x0, i8 %x1, <4 x i32>
> %x2, <4 x double> %x3, i32 0)
> +  call void @llvm.x86.avx512.scattersiv4.df(i8* %x0, i8 %x1, <4 x i32>
> %x2, <4 x double> %x3, i32 2)
>    call void @llvm.x86.avx512.scattersiv4.df(i8* %x0, i8 -1, <4 x i32>
> %x2, <4 x double> %x3, i32 4)
>    ret void
>  }
> @@ -721,10 +721,10 @@ define void at test_int_x86_avx512_scatters
>  ; CHECK:       ## BB#0:
>  ; CHECK-NEXT:    kmovb %esi, %k1
>  ; CHECK-NEXT:    kxnorw %k2, %k2, %k2
> -; CHECK-NEXT:    vpscatterdq %ymm1, (%rdi,%xmm0,0) {%k2}
> +; CHECK-NEXT:    vpscatterdq %ymm1, (%rdi,%xmm0,2) {%k2}
>  ; CHECK-NEXT:    vpscatterdq %ymm1, (%rdi,%xmm0,4) {%k1}
>  ; CHECK-NEXT:    retq
> -  call void @llvm.x86.avx512.scattersiv4.di(i8* %x0, i8 -1, <4 x i32>
> %x2, <4 x i64> %x3, i32 0)
> +  call void @llvm.x86.avx512.scattersiv4.di(i8* %x0, i8 -1, <4 x i32>
> %x2, <4 x i64> %x3, i32 2)
>    call void @llvm.x86.avx512.scattersiv4.di(i8* %x0, i8 %x1, <4 x i32>
> %x2, <4 x i64> %x3, i32 4)
>    ret void
>  }
> @@ -735,11 +735,11 @@ define void at test_int_x86_avx512_scatters
>  ; CHECK-LABEL: test_int_x86_avx512_scattersiv4_sf:
>  ; CHECK:       ## BB#0:
>  ; CHECK-NEXT:    kmovb %esi, %k1
> -; CHECK-NEXT:    vscatterdps %xmm1, (%rdi,%xmm0,0) {%k1}
> +; CHECK-NEXT:    vscatterdps %xmm1, (%rdi,%xmm0,2) {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
>  ; CHECK-NEXT:    vscatterdps %xmm1, (%rdi,%xmm0,4) {%k1}
>  ; CHECK-NEXT:    retq
> -  call void @llvm.x86.avx512.scattersiv4.sf(i8* %x0, i8 %x1, <4 x i32>
> %x2, <4 x float> %x3, i32 0)
> +  call void @llvm.x86.avx512.scattersiv4.sf(i8* %x0, i8 %x1, <4 x i32>
> %x2, <4 x float> %x3, i32 2)
>    call void @llvm.x86.avx512.scattersiv4.sf(i8* %x0, i8 -1, <4 x i32>
> %x2, <4 x float> %x3, i32 4)
>    ret void
>  }
> @@ -750,11 +750,11 @@ define void at test_int_x86_avx512_scatters
>  ; CHECK-LABEL: test_int_x86_avx512_scattersiv4_si:
>  ; CHECK:       ## BB#0:
>  ; CHECK-NEXT:    kmovb %esi, %k1
> -; CHECK-NEXT:    vpscatterdd %xmm1, (%rdi,%xmm0,0) {%k1}
> +; CHECK-NEXT:    vpscatterdd %xmm1, (%rdi,%xmm0,2) {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
>  ; CHECK-NEXT:    vpscatterdd %xmm1, (%rdi,%xmm0,4) {%k1}
>  ; CHECK-NEXT:    retq
> -  call void @llvm.x86.avx512.scattersiv4.si(i8* %x0, i8 %x1, <4 x i32>
> %x2, <4 x i32> %x3, i32 0)
> +  call void @llvm.x86.avx512.scattersiv4.si(i8* %x0, i8 %x1, <4 x i32>
> %x2, <4 x i32> %x3, i32 2)
>    call void @llvm.x86.avx512.scattersiv4.si(i8* %x0, i8 -1, <4 x i32>
> %x2, <4 x i32> %x3, i32 4)
>    ret void
>  }
> @@ -765,11 +765,11 @@ define void at test_int_x86_avx512_scatters
>  ; CHECK-LABEL: test_int_x86_avx512_scattersiv8_sf:
>  ; CHECK:       ## BB#0:
>  ; CHECK-NEXT:    kmovb %esi, %k1
> -; CHECK-NEXT:    vscatterdps %ymm1, (%rdi,%ymm0,0) {%k1}
> +; CHECK-NEXT:    vscatterdps %ymm1, (%rdi,%ymm0,2) {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
>  ; CHECK-NEXT:    vscatterdps %ymm1, (%rdi,%ymm0,4) {%k1}
>  ; CHECK-NEXT:    retq
> -  call void @llvm.x86.avx512.scattersiv8.sf(i8* %x0, i8 %x1, <8 x i32>
> %x2, <8 x float> %x3, i32 0)
> +  call void @llvm.x86.avx512.scattersiv8.sf(i8* %x0, i8 %x1, <8 x i32>
> %x2, <8 x float> %x3, i32 2)
>    call void @llvm.x86.avx512.scattersiv8.sf(i8* %x0, i8 -1, <8 x i32>
> %x2, <8 x float> %x3, i32 4)
>    ret void
>  }
> @@ -780,11 +780,11 @@ define void at test_int_x86_avx512_scatters
>  ; CHECK-LABEL: test_int_x86_avx512_scattersiv8_si:
>  ; CHECK:       ## BB#0:
>  ; CHECK-NEXT:    kmovb %esi, %k1
> -; CHECK-NEXT:    vpscatterdd %ymm1, (%rdi,%ymm0,0) {%k1}
> +; CHECK-NEXT:    vpscatterdd %ymm1, (%rdi,%ymm0,2) {%k1}
>  ; CHECK-NEXT:    kxnorw %k1, %k1, %k1
>  ; CHECK-NEXT:    vpscatterdd %ymm1, (%rdi,%ymm0,4) {%k1}
>  ; CHECK-NEXT:    retq
> -  call void @llvm.x86.avx512.scattersiv8.si(i8* %x0, i8 %x1, <8 x i32>
> %x2, <8 x i32> %x3, i32 0)
> +  call void @llvm.x86.avx512.scattersiv8.si(i8* %x0, i8 %x1, <8 x i32>
> %x2, <8 x i32> %x3, i32 2)
>    call void @llvm.x86.avx512.scattersiv8.si(i8* %x0, i8 -1, <8 x i32>
> %x2, <8 x i32> %x3, i32 4)
>    ret void
>  }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151102/e6519d1f/attachment.html>


More information about the llvm-commits mailing list