mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-11 05:35:11 +00:00
[AVX-512] Fix the execution domain for AVX-512 integer broadcasts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296290 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b64325c5da
commit
f46e01bb23
@ -965,6 +965,7 @@ def : Pat<(int_x86_avx512_vbroadcast_sd_512 addr:$src),
|
|||||||
multiclass avx512_int_broadcast_reg<bits<8> opc, X86VectorVTInfo _,
|
multiclass avx512_int_broadcast_reg<bits<8> opc, X86VectorVTInfo _,
|
||||||
SDPatternOperator OpNode,
|
SDPatternOperator OpNode,
|
||||||
RegisterClass SrcRC> {
|
RegisterClass SrcRC> {
|
||||||
|
let ExeDomain = _.ExeDomain in
|
||||||
defm r : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
|
defm r : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
|
||||||
(ins SrcRC:$src),
|
(ins SrcRC:$src),
|
||||||
"vpbroadcast"##_.Suffix, "$src", "$src",
|
"vpbroadcast"##_.Suffix, "$src", "$src",
|
||||||
|
@ -1419,7 +1419,7 @@ define void @isel_crash_4d(i32* %cV_R.addr) {
|
|||||||
; X64-AVX512VL-NEXT: movl (%rdi), %eax
|
; X64-AVX512VL-NEXT: movl (%rdi), %eax
|
||||||
; X64-AVX512VL-NEXT: vpbroadcastd %eax, %xmm1
|
; X64-AVX512VL-NEXT: vpbroadcastd %eax, %xmm1
|
||||||
; X64-AVX512VL-NEXT: vmovaps %xmm0, -{{[0-9]+}}(%rsp)
|
; 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
|
; X64-AVX512VL-NEXT: retq
|
||||||
entry:
|
entry:
|
||||||
%__a.addr.i = alloca <2 x i64>, align 16
|
%__a.addr.i = alloca <2 x i64>, align 16
|
||||||
@ -1523,7 +1523,7 @@ define void @isel_crash_8d(i32* %cV_R.addr) {
|
|||||||
; X64-AVX512VL-NEXT: movl (%rdi), %eax
|
; X64-AVX512VL-NEXT: movl (%rdi), %eax
|
||||||
; X64-AVX512VL-NEXT: vpbroadcastd %eax, %ymm1
|
; X64-AVX512VL-NEXT: vpbroadcastd %eax, %ymm1
|
||||||
; X64-AVX512VL-NEXT: vmovaps %ymm0, {{[0-9]+}}(%rsp)
|
; 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: movq %rbp, %rsp
|
||||||
; X64-AVX512VL-NEXT: popq %rbp
|
; X64-AVX512VL-NEXT: popq %rbp
|
||||||
; X64-AVX512VL-NEXT: retq
|
; 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: movq (%rdi), %rax
|
||||||
; X64-AVX512VL-NEXT: vpbroadcastq %rax, %xmm1
|
; X64-AVX512VL-NEXT: vpbroadcastq %rax, %xmm1
|
||||||
; X64-AVX512VL-NEXT: vmovaps %xmm0, -{{[0-9]+}}(%rsp)
|
; 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
|
; X64-AVX512VL-NEXT: retq
|
||||||
entry:
|
entry:
|
||||||
%__a.addr.i = alloca <2 x i64>, align 16
|
%__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: movq (%rdi), %rax
|
||||||
; X64-AVX512VL-NEXT: vpbroadcastq %rax, %ymm1
|
; X64-AVX512VL-NEXT: vpbroadcastq %rax, %ymm1
|
||||||
; X64-AVX512VL-NEXT: vmovaps %ymm0, {{[0-9]+}}(%rsp)
|
; 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: movq %rbp, %rsp
|
||||||
; X64-AVX512VL-NEXT: popq %rbp
|
; X64-AVX512VL-NEXT: popq %rbp
|
||||||
; X64-AVX512VL-NEXT: retq
|
; X64-AVX512VL-NEXT: retq
|
||||||
|
@ -7,7 +7,7 @@ target triple = "x86_64-apple-macosx10.9.0"
|
|||||||
; loop.
|
; loop.
|
||||||
|
|
||||||
; CHECK-LABEL: f:
|
; CHECK-LABEL: f:
|
||||||
; CHECK: vmovups %zmm{{.}},
|
; CHECK: vmovdqu32 %zmm{{.}},
|
||||||
; CHECK-NOT: %ymm
|
; CHECK-NOT: %ymm
|
||||||
|
|
||||||
define void @f(i32* %a, i32 %n) {
|
define void @f(i32* %a, i32 %n) {
|
||||||
|
Loading…
Reference in New Issue
Block a user