diff --git a/lib/Target/X86/X86InstrAVX512.td b/lib/Target/X86/X86InstrAVX512.td index 3f5433de423..a66908a41ac 100644 --- a/lib/Target/X86/X86InstrAVX512.td +++ b/lib/Target/X86/X86InstrAVX512.td @@ -965,6 +965,7 @@ def : Pat<(int_x86_avx512_vbroadcast_sd_512 addr:$src), multiclass avx512_int_broadcast_reg opc, X86VectorVTInfo _, SDPatternOperator OpNode, RegisterClass SrcRC> { + let ExeDomain = _.ExeDomain in defm r : AVX512_maskable, align 16 @@ -1523,7 +1523,7 @@ define void @isel_crash_8d(i32* %cV_R.addr) { ; X64-AVX512VL-NEXT: movl (%rdi), %eax ; X64-AVX512VL-NEXT: vpbroadcastd %eax, %ymm1 ; X64-AVX512VL-NEXT: vmovaps %ymm0, {{[0-9]+}}(%rsp) -; X64-AVX512VL-NEXT: vmovaps %ymm1, {{[0-9]+}}(%rsp) +; X64-AVX512VL-NEXT: vmovdqa %ymm1, {{[0-9]+}}(%rsp) ; X64-AVX512VL-NEXT: movq %rbp, %rsp ; X64-AVX512VL-NEXT: popq %rbp ; X64-AVX512VL-NEXT: retq @@ -1580,7 +1580,7 @@ define void @isel_crash_2q(i64* %cV_R.addr) { ; X64-AVX512VL-NEXT: movq (%rdi), %rax ; X64-AVX512VL-NEXT: vpbroadcastq %rax, %xmm1 ; X64-AVX512VL-NEXT: vmovaps %xmm0, -{{[0-9]+}}(%rsp) -; X64-AVX512VL-NEXT: vmovaps %xmm1, -{{[0-9]+}}(%rsp) +; X64-AVX512VL-NEXT: vmovdqa %xmm1, -{{[0-9]+}}(%rsp) ; X64-AVX512VL-NEXT: retq entry: %__a.addr.i = alloca <2 x i64>, align 16 @@ -1695,7 +1695,7 @@ define void @isel_crash_4q(i64* %cV_R.addr) { ; X64-AVX512VL-NEXT: movq (%rdi), %rax ; X64-AVX512VL-NEXT: vpbroadcastq %rax, %ymm1 ; X64-AVX512VL-NEXT: vmovaps %ymm0, {{[0-9]+}}(%rsp) -; X64-AVX512VL-NEXT: vmovaps %ymm1, {{[0-9]+}}(%rsp) +; X64-AVX512VL-NEXT: vmovdqa %ymm1, {{[0-9]+}}(%rsp) ; X64-AVX512VL-NEXT: movq %rbp, %rsp ; X64-AVX512VL-NEXT: popq %rbp ; X64-AVX512VL-NEXT: retq diff --git a/test/Transforms/LoopVectorize/X86/avx512.ll b/test/Transforms/LoopVectorize/X86/avx512.ll index fb01454c253..1eb1cd3f5d7 100644 --- a/test/Transforms/LoopVectorize/X86/avx512.ll +++ b/test/Transforms/LoopVectorize/X86/avx512.ll @@ -7,7 +7,7 @@ target triple = "x86_64-apple-macosx10.9.0" ; loop. ; CHECK-LABEL: f: -; CHECK: vmovups %zmm{{.}}, +; CHECK: vmovdqu32 %zmm{{.}}, ; CHECK-NOT: %ymm define void @f(i32* %a, i32 %n) {