OSDN Git Service

Add -m8bit-idiv for x86.
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 16 Sep 2010 18:05:37 +0000 (18:05 +0000)
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 16 Sep 2010 18:05:37 +0000 (18:05 +0000)
commitcd07aff7ba0c4e1158a7767770cc76c88138fabf
tree797fdd065c3e3f1f6265ea61cbd86e2a5fb0ec03
parentc688a9e852437fd01fa4e86a9d8135ca5fb46983
Add -m8bit-idiv for x86.

gcc/

2010-09-16  H.J. Lu  <hongjiu.lu@intel.com>

* config/i386/i386-protos.h (ix86_split_idivmod): New prototype.

* config/i386/i386.c (predict_jump): Add prototype.
(flag_opts): Add -m8bit-idiv.
(ix86_split_idivmod): New.

* config/i386/i386.md (UNSPEC_DIV_ALREADY_SPLIT): New.
Add 2 splitters for SI/DI mode divide.
(divmod<mode>4_1): New pattern.
(udivmod<mode>4_1): Likewise.
(testdi_ccno_1): Likewise.

* config/i386/i386.opt (m8bit-idiv): New.

* doc/invoke.texi: Document -m8bit-idiv.

gcc/testsuite/

2010-09-16  H.J. Lu  <hongjiu.lu@intel.com>

* gcc.target/i386/divmod-1.c: New.
* gcc.target/i386/divmod-2.c: Likewise.
* gcc.target/i386/divmod-3.c: Likewise.
* gcc.target/i386/divmod-4.c: Likewise.
* gcc.target/i386/divmod-4a.c: Likewise.
* gcc.target/i386/divmod-5.c: Likewise.
* gcc.target/i386/divmod-6.c: Likewise.
* gcc.target/i386/divmod-7.c: Likewise.
* gcc.target/i386/divmod-8.c: Likewise.
* gcc.target/i386/udivmod-1.c: Likewise.
* gcc.target/i386/udivmod-2.c: Likewise.
* gcc.target/i386/udivmod-3.c: Likewise.
* gcc.target/i386/udivmod-4.c: Likewise.
* gcc.target/i386/udivmod-4a.c: Likewise.
* gcc.target/i386/udivmod-5.c: Likewise.
* gcc.target/i386/udivmod-6.c: Likewise.
* gcc.target/i386/udivmod-7.c: Likewise.
* gcc.target/i386/udivmod-8.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164346 138bc75d-0d04-0410-961f-82ee72b054a4
25 files changed:
gcc/ChangeLog
gcc/config/i386/i386-protos.h
gcc/config/i386/i386.c
gcc/config/i386/i386.md
gcc/config/i386/i386.opt
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/divmod-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/divmod-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/divmod-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/divmod-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/divmod-4a.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/divmod-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/divmod-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/divmod-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/divmod-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/udivmod-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/udivmod-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/udivmod-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/udivmod-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/udivmod-4a.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/udivmod-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/udivmod-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/udivmod-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/udivmod-8.c [new file with mode: 0644]