diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2008-09-05 23:07:03 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2008-09-05 23:07:03 +0000 |
commit | a9c52c82194df21c7975bae3455d483cad87725d (patch) | |
tree | e541a8652dd274e866bbbd5c5fcb1fc6e9823099 /llvm/lib | |
parent | f17a2f360283a539ef8310d1b380b2a3bb6c1227 (diff) | |
download | bcm5719-llvm-a9c52c82194df21c7975bae3455d483cad87725d.tar.gz bcm5719-llvm-a9c52c82194df21c7975bae3455d483cad87725d.zip |
Fix for PR2687: Add patterns to match sint_to_fp and fp_to_sint for <2 x
i32>. This is a little messy, but it works.
We should really get rid of the intrinsics, though, since they map
perfectly well to standard LLVM instructions.
llvm-svn: 55864
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/X86InstrSSE.td | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86InstrSSE.td b/llvm/lib/Target/X86/X86InstrSSE.td index 3c1d7c77c8a..06641446d6e 100644 --- a/llvm/lib/Target/X86/X86InstrSSE.td +++ b/llvm/lib/Target/X86/X86InstrSSE.td @@ -3080,6 +3080,10 @@ def : Pat<(v4f32 (sint_to_fp (v4i32 VR128:$src))), (Int_CVTDQ2PSrr VR128:$src)>, Requires<[HasSSE2]>; def : Pat<(v4i32 (fp_to_sint (v4f32 VR128:$src))), (Int_CVTTPS2DQrr VR128:$src)>, Requires<[HasSSE2]>; +def : Pat<(v2f64 (sint_to_fp (v2i32 VR64:$src))), + (Int_CVTPI2PDrr VR64:$src)>, Requires<[HasSSE2]>; +def : Pat<(v2i32 (fp_to_sint (v2f64 VR128:$src))), + (Int_CVTTPD2PIrr VR128:$src)>, Requires<[HasSSE2]>; // Use movaps / movups for SSE integer load / store (one byte shorter). def : Pat<(alignedloadv4i32 addr:$src), |