diff options
author | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-02-19 07:23:30 +0000 |
---|---|---|
committer | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-02-19 07:23:30 +0000 |
commit | bd416d7045888febce6af85110eb1e6f395b0295 (patch) | |
tree | 754c035b8aea596403420b9648fca9769f5e4227 | |
parent | 2a5abea14dcda53484187857d4fc33fc741a9dd9 (diff) | |
download | gcc-bd416d7045888febce6af85110eb1e6f395b0295.tar.gz |
PR target/33555
* config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
(*x86_movdicc_0_m1_se): Ditto.
testsuite/ChangeLog:
PR target/33555
* gcc.target/i386/pr33555.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@132414 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 30 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr33555.c | 9 |
4 files changed, 50 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3a23574f768..e023878736e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2008-02-19 Uros Bizjak <ubizjak@gmail.com> + PR target/33555 + * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern. + (*x86_movdicc_0_m1_se): Ditto. + +2008-02-19 Uros Bizjak <ubizjak@gmail.com> + * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef. (CMPtype): Define as __gcc_CMPtype. * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 1724c0df7f5..3c9c2cc8c86 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -19402,6 +19402,21 @@ (set_attr "mode" "DI") (set_attr "length_immediate" "0")]) +(define_insn "*x86_movdicc_0_m1_se" + [(set (match_operand:DI 0 "register_operand" "=r") + (sign_extract:DI (match_operand 1 "ix86_carry_flag_operator" "") + (const_int 1) + (const_int 0))) + (clobber (reg:CC FLAGS_REG))] + "" + "sbb{q}\t%0, %0" + [(set_attr "type" "alu") + (set_attr "pent_pair" "pu") + (set_attr "memory" "none") + (set_attr "imm_disp" "false") + (set_attr "mode" "DI") + (set_attr "length_immediate" "0")]) + (define_insn "*movdicc_c_rex64" [(set (match_operand:DI 0 "register_operand" "=r,r") (if_then_else:DI (match_operator 1 "ix86_comparison_operator" @@ -19445,6 +19460,21 @@ (set_attr "mode" "SI") (set_attr "length_immediate" "0")]) +(define_insn "*x86_movsicc_0_m1_se" + [(set (match_operand:SI 0 "register_operand" "=r") + (sign_extract:SI (match_operand 1 "ix86_carry_flag_operator" "") + (const_int 1) + (const_int 0))) + (clobber (reg:CC FLAGS_REG))] + "" + "sbb{l}\t%0, %0" + [(set_attr "type" "alu") + (set_attr "pent_pair" "pu") + (set_attr "memory" "none") + (set_attr "imm_disp" "false") + (set_attr "mode" "SI") + (set_attr "length_immediate" "0")]) + (define_insn "*movsicc_noc" [(set (match_operand:SI 0 "register_operand" "=r,r") (if_then_else:SI (match_operator 1 "ix86_comparison_operator" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 55715a6da39..db65ae61adc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-02-19 Uros Bizjak <ubizjak@gmail.com> + + PR target/33555 + * gcc.target/i386/pr33555.c: New test. + 2008-02-18 H.J. Lu <hongjiu.lu@intel.com> PR target/35189 diff --git a/gcc/testsuite/gcc.target/i386/pr33555.c b/gcc/testsuite/gcc.target/i386/pr33555.c new file mode 100644 index 00000000000..21c56b7bde3 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr33555.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ +/* { dg-final { scan-assembler "sbbl" } } */ + +int test(unsigned long a, unsigned long b) +{ + return -(a < b); +} + |