mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
Fix PR14204
- Add missing pattern on X86ISD::VZEXT from VR256 to VR256 when AVX2 is enabled. llvm-svn: 166947
This commit is contained in:
parent
4609a4241f
commit
d26c27ad35
@ -5850,6 +5850,21 @@ let Predicates = [HasAVX2] in {
|
|||||||
def : Pat<(v4i64 (X86vzext (v8i16 VR128:$src))), (VPMOVZXWQYrr VR128:$src)>;
|
def : Pat<(v4i64 (X86vzext (v8i16 VR128:$src))), (VPMOVZXWQYrr VR128:$src)>;
|
||||||
|
|
||||||
def : Pat<(v4i64 (X86vzext (v4i32 VR128:$src))), (VPMOVZXDQYrr VR128:$src)>;
|
def : Pat<(v4i64 (X86vzext (v4i32 VR128:$src))), (VPMOVZXDQYrr VR128:$src)>;
|
||||||
|
|
||||||
|
def : Pat<(v16i16 (X86vzext (v32i8 VR256:$src))),
|
||||||
|
(VPMOVZXBWYrr (EXTRACT_SUBREG VR256:$src, sub_xmm))>;
|
||||||
|
def : Pat<(v8i32 (X86vzext (v32i8 VR256:$src))),
|
||||||
|
(VPMOVZXBDYrr (EXTRACT_SUBREG VR256:$src, sub_xmm))>;
|
||||||
|
def : Pat<(v4i64 (X86vzext (v32i8 VR256:$src))),
|
||||||
|
(VPMOVZXBQYrr (EXTRACT_SUBREG VR256:$src, sub_xmm))>;
|
||||||
|
|
||||||
|
def : Pat<(v8i32 (X86vzext (v16i16 VR256:$src))),
|
||||||
|
(VPMOVZXWDYrr (EXTRACT_SUBREG VR256:$src, sub_xmm))>;
|
||||||
|
def : Pat<(v4i64 (X86vzext (v16i16 VR256:$src))),
|
||||||
|
(VPMOVZXWQYrr (EXTRACT_SUBREG VR256:$src, sub_xmm))>;
|
||||||
|
|
||||||
|
def : Pat<(v4i64 (X86vzext (v8i32 VR256:$src))),
|
||||||
|
(VPMOVZXDQYrr (EXTRACT_SUBREG VR256:$src, sub_xmm))>;
|
||||||
}
|
}
|
||||||
|
|
||||||
let Predicates = [HasAVX] in {
|
let Predicates = [HasAVX] in {
|
||||||
|
15
test/CodeGen/X86/pr14204.ll
Normal file
15
test/CodeGen/X86/pr14204.ll
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
; RUN: llc < %s -mtriple=x86_64-linux-pc -mcpu=core-avx2 | FileCheck %s
|
||||||
|
|
||||||
|
; FIXME: vpmovsxwd should be generated instead of vpmovzxwd followed by
|
||||||
|
; SLL/SRA.
|
||||||
|
|
||||||
|
define <8 x i32> @foo(<8 x i1> %bar) nounwind readnone {
|
||||||
|
entry:
|
||||||
|
%s = sext <8 x i1> %bar to <8 x i32>
|
||||||
|
ret <8 x i32> %s
|
||||||
|
; CHECK: foo
|
||||||
|
; CHECK: vpmovzxwd
|
||||||
|
; CHECK: vpslld
|
||||||
|
; CHECK: vpsrad
|
||||||
|
; CHECK: ret
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user