diff options
author | Jan Hubicka <jh@suse.cz> | 2003-03-18 17:32:12 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2003-03-18 16:32:12 +0000 |
commit | 8dfa3bb06ec4c13b185595beefbacf4455979d1f (patch) | |
tree | 96da835e1fcc5008f6951eb668fa2713473ba0ff | |
parent | 1e78888716719edb9b1ba19dd92086ed70fb3613 (diff) | |
download | gcc-8dfa3bb06ec4c13b185595beefbacf4455979d1f.zip gcc-8dfa3bb06ec4c13b185595beefbacf4455979d1f.tar.gz gcc-8dfa3bb06ec4c13b185595beefbacf4455979d1f.tar.bz2 |
* i386.md (cvtts?2si peep2): New.
From-SVN: r64537
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 40 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/i386-cvt-1.c | 12 |
4 files changed, 60 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dadb5d8..46daf27 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Tue Mar 18 13:15:08 CET 2003 Jan Hubicka <jh@suse.cz> + + * i386.md (cvtts?2si peep2): New. + 2003-03-18 Kazu Hirata <kazu@cs.umass.edu> * config/h8300/h8300.md (*iorsi3_two_qi_zext): New. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 39b8f6a..22b6a14 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -4516,6 +4516,16 @@ (set (match_dup 0) (fix:DI (match_dup 2)))] "") +;; Avoid vector decoded form of the instruction. +(define_peephole2 + [(match_scratch:SF 2 "x") + (set (match_operand:DI 0 "register_operand" "") + (fix:DI (match_operand:SF 1 "memory_operand" "")))] + "TARGET_K8 && !optimize_size" + [(set (match_dup 2) (match_dup 1)) + (set (match_dup 0) (fix:DI (match_dup 2)))] + "") + (define_insn "fix_truncdfdi_sse" [(set (match_operand:DI 0 "register_operand" "=r,r") (fix:DI (match_operand:DF 1 "nonimmediate_operand" "Y,Ym")))] @@ -4534,6 +4544,16 @@ (set (match_dup 0) (fix:DI (match_dup 2)))] "") +;; Avoid vector decoded form of the instruction. +(define_peephole2 + [(match_scratch:DF 2 "Y") + (set (match_operand:DI 0 "register_operand" "") + (fix:DI (match_operand:DF 1 "memory_operand" "")))] + "TARGET_K8 && !optimize_size" + [(set (match_dup 2) (match_dup 1)) + (set (match_dup 0) (fix:DI (match_dup 2)))] + "") + ;; Signed conversion to SImode. (define_expand "fix_truncxfsi2" @@ -4647,6 +4667,16 @@ (set (match_dup 0) (fix:SI (match_dup 2)))] "") +;; Avoid vector decoded form of the instruction. +(define_peephole2 + [(match_scratch:SF 2 "x") + (set (match_operand:SI 0 "register_operand" "") + (fix:SI (match_operand:SF 1 "memory_operand" "")))] + "TARGET_K8 && !optimize_size" + [(set (match_dup 2) (match_dup 1)) + (set (match_dup 0) (fix:SI (match_dup 2)))] + "") + (define_insn "fix_truncdfsi_sse" [(set (match_operand:SI 0 "register_operand" "=r,r") (fix:SI (match_operand:DF 1 "nonimmediate_operand" "Y,Ym")))] @@ -4659,6 +4689,16 @@ (define_peephole2 [(match_scratch:DF 2 "Y") (set (match_operand:SI 0 "register_operand" "") + (fix:SI (match_operand:DF 1 "memory_operand" "")))] + "TARGET_K8 && !optimize_size" + [(set (match_dup 2) (match_dup 1)) + (set (match_dup 0) (fix:SI (match_dup 2)))] + "") + +;; Avoid vector decoded form of the instruction. +(define_peephole2 + [(match_scratch:DF 2 "Y") + (set (match_operand:SI 0 "register_operand" "") (fix:SI (match_operand:DF 1 "nonimmediate_operand" "")))] "TARGET_K8 && !optimize_size" [(set (match_dup 2) (match_dup 1)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 54ffa10..08fa15b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +Tue Mar 18 13:14:05 CET 2003 Jan Hubicka <jh@suse.cz> + + * gcc.dg/i386-cvt-1.c: New test. + 2003-03-17 Zack Weinberg <zack@codesourcery.com> * objc.dg/naming-1.m: Use "(parse|syntax) error". diff --git a/gcc/testsuite/gcc.dg/i386-cvt-1.c b/gcc/testsuite/gcc.dg/i386-cvt-1.c new file mode 100644 index 0000000..c4558d7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/i386-cvt-1.c @@ -0,0 +1,12 @@ +/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ +/* { dg-options "-O2 -march=k8 -mfpmath=sse" } */ +/* { dg-final { scan-assembler "cvttsd2si.*xmm" } } */ +/* { dg-final { scan-assembler "cvttss2si.*xmm" } } */ +int a,a1; +double b; +float b1; +t() +{ + a=b; + a1=b1; +} |