diff options
| author | Benjamin Kramer <benny.kra@googlemail.com> | 2014-04-18 10:45:33 +0000 |
|---|---|---|
| committer | Benjamin Kramer <benny.kra@googlemail.com> | 2014-04-18 10:45:33 +0000 |
| commit | e6c821ef4c55dda76cd0da37d7f5aa72d39ccbab (patch) | |
| tree | dc549ff61a88cc48ba65cea2ca7f0d4daf415128 /llvm/lib | |
| parent | 10d4b14a1601844149d717689652038346ee6759 (diff) | |
| download | bcm5719-llvm-e6c821ef4c55dda76cd0da37d7f5aa72d39ccbab.tar.gz bcm5719-llvm-e6c821ef4c55dda76cd0da37d7f5aa72d39ccbab.zip | |
X86: Pattern match scalar loads + vcvtph2ps into just vcvtph2ps.
vcvtph2ps only reads the lower 64 bits of the address passed to the
intrinsic.
llvm-svn: 206579
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/X86InstrSSE.td | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86InstrSSE.td b/llvm/lib/Target/X86/X86InstrSSE.td index 72a18e7d794..c49777516da 100644 --- a/llvm/lib/Target/X86/X86InstrSSE.td +++ b/llvm/lib/Target/X86/X86InstrSSE.td @@ -8304,6 +8304,12 @@ let Predicates = [HasF16C] in { defm VCVTPH2PSY : f16c_ph2ps<VR256, f128mem, int_x86_vcvtph2ps_256>, VEX_L; defm VCVTPS2PH : f16c_ps2ph<VR128, f64mem, int_x86_vcvtps2ph_128>; defm VCVTPS2PHY : f16c_ps2ph<VR256, f128mem, int_x86_vcvtps2ph_256>, VEX_L; + + // Pattern match vcvtph2ps of a scalar i64 load. + def : Pat<(int_x86_vcvtph2ps_128 (vzmovl_v2i64 addr:$src)), + (VCVTPH2PSrm addr:$src)>; + def : Pat<(int_x86_vcvtph2ps_128 (vzload_v2i64 addr:$src)), + (VCVTPH2PSrm addr:$src)>; } //===----------------------------------------------------------------------===// |

