diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2013-10-23 21:06:07 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2013-10-23 21:06:07 +0000 |
commit | bb41c75ab51fcfc3ad36d3f8a438652b141e0fc0 (patch) | |
tree | 1bb8f7c09feb260afbdaedf1b4ce48f42c0d3024 /lib/Target/X86/X86InstrSSE.td | |
parent | d7da59004fc9262f33c96ad2736b36ff1235ce7b (diff) | |
download | external_llvm-bb41c75ab51fcfc3ad36d3f8a438652b141e0fc0.zip external_llvm-bb41c75ab51fcfc3ad36d3f8a438652b141e0fc0.tar.gz external_llvm-bb41c75ab51fcfc3ad36d3f8a438652b141e0fc0.tar.bz2 |
X86: Custom lower sext v16i8 to v16i16, and the corresponding truncate.
Also update the cost model.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193270 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86InstrSSE.td')
-rw-r--r-- | lib/Target/X86/X86InstrSSE.td | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/Target/X86/X86InstrSSE.td b/lib/Target/X86/X86InstrSSE.td index 004710b..7cae485 100644 --- a/lib/Target/X86/X86InstrSSE.td +++ b/lib/Target/X86/X86InstrSSE.td @@ -5602,16 +5602,19 @@ let Predicates = [HasAVX2] in { def : Pat<(v4i64 (X86vsmovl (v4i32 VR128:$src))), (VPMOVSXDQYrr VR128:$src)>; def : Pat<(v8i32 (X86vsmovl (v8i16 VR128:$src))), (VPMOVSXWDYrr VR128:$src)>; + def : Pat<(v16i16 (X86vsmovl (v16i8 VR128:$src))), (VPMOVSXBWYrr VR128:$src)>; } let Predicates = [HasAVX] in { def : Pat<(v2i64 (X86vsmovl (v4i32 VR128:$src))), (VPMOVSXDQrr VR128:$src)>; def : Pat<(v4i32 (X86vsmovl (v8i16 VR128:$src))), (VPMOVSXWDrr VR128:$src)>; + def : Pat<(v8i16 (X86vsmovl (v16i8 VR128:$src))), (VPMOVSXBWrr VR128:$src)>; } let Predicates = [UseSSE41] in { def : Pat<(v2i64 (X86vsmovl (v4i32 VR128:$src))), (PMOVSXDQrr VR128:$src)>; def : Pat<(v4i32 (X86vsmovl (v8i16 VR128:$src))), (PMOVSXWDrr VR128:$src)>; + def : Pat<(v8i16 (X86vsmovl (v16i8 VR128:$src))), (PMOVSXBWrr VR128:$src)>; } |