1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +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:
Michael Liao 2012-10-29 17:57:12 +00:00
parent 4609a4241f
commit d26c27ad35
2 changed files with 30 additions and 0 deletions

View File

@ -5850,6 +5850,21 @@ let Predicates = [HasAVX2] in {
def : Pat<(v4i64 (X86vzext (v8i16 VR128:$src))), (VPMOVZXWQYrr 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 {

View 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
}