Merge lp:~ams-codesourcery/gcc-linaro/discourage-neon-on-a8 into lp:gcc-linaro/4.6

Proposed by Andrew Stubbs
Status: Rejected
Rejected by: Andrew Stubbs
Proposed branch: lp:~ams-codesourcery/gcc-linaro/discourage-neon-on-a8
Merge into: lp:gcc-linaro/4.6
Diff against target: 306 lines (+124/-41) (has conflicts)
4 files modified
ChangeLog.linaro (+21/-0)
gcc/config/arm/arm.md (+12/-4)
gcc/config/arm/neon.md (+46/-34)
gcc/config/arm/vfp.md (+45/-3)
Text conflict in ChangeLog.linaro
To merge this branch: bzr merge lp:~ams-codesourcery/gcc-linaro/discourage-neon-on-a8
Reviewer Review Type Date Requested Status
Ramana Radhakrishnan (community) Needs Information
Review via email: mp+56564@code.launchpad.net

This proposal supersedes a proposal from 2011-03-25.

Description of the change

Discourage use of NEON for integer operations on Cortex-A8.

Transfers from NEON/VFP registers to core registers are prohibitively expensive on A8. Modelling this cost is difficult, so simply discourage the use of NEON for integers. (Float values must be transferred anyway, so leave those unaffected.)

This is merged from gcc-linaro/4.5,revno=99353.

To post a comment you must log in.
Revision history for this message
Linaro Toolchain Builder (cbuild) wrote : Posted in a previous version of this proposal

cbuild has taken a snapshot of this branch at r106730 and queued it for
build.

The snapshot is available at:
 http://ex.seabright.co.nz/snapshots/

and named something like gcc-linaro-4.5+bzr106730~ams-codesourcery~discourage-neon-on-a8.*

You can track the build queue at:
 http://ex.seabright.co.nz/helpers/scheduler

cbuild-snapshot: gcc-linaro-4.5+bzr106730~ams-codesourcery~discourage-neon-on-a8
cbuild-state: check

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote : Posted in a previous version of this proposal

cbuild successfully built this on i686-lucid-cbuild93-scorpius-i686r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr106730~ams-codesourcery~discourage-neon-on-a8/logs/i686-lucid-cbuild93-scorpius-i686r1

cbuild-checked: i686-lucid-cbuild93-scorpius-i686r1

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote : Posted in a previous version of this proposal

cbuild successfully built this on armv7l-maverick-cbuild93-ursa1-cortexa8r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr106730~ams-codesourcery~discourage-neon-on-a8/logs/armv7l-maverick-cbuild93-ursa1-cortexa8r1

cbuild-checked: armv7l-maverick-cbuild93-ursa1-cortexa8r1

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote : Posted in a previous version of this proposal

cbuild successfully built this on armv7l-maverick-cbuild93-ursa2-cortexa9r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr106730~ams-codesourcery~discourage-neon-on-a8/logs/armv7l-maverick-cbuild93-ursa2-cortexa9r1

cbuild-checked: armv7l-maverick-cbuild93-ursa2-cortexa9r1

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote : Posted in a previous version of this proposal

cbuild successfully built this on x86_64-maverick-cbuild93-crucis-x86_64r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.5+bzr106730~ams-codesourcery~discourage-neon-on-a8/logs/x86_64-maverick-cbuild93-crucis-x86_64r1

cbuild-checked: x86_64-maverick-cbuild93-crucis-x86_64r1

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :

cbuild has taken a snapshot of this branch at r106730 and queued it for build.

The snapshot is available at:
 http://ex.seabright.co.nz/snapshots/gcc-linaro-4.6+bzr106730~ams-codesourcery~discourage-neon-on-a8.tar.xdelta3.xz

and will be built on the following builders:
 a8-builder a9-builder i686 x86_64

You can track the build queue at:
 http://ex.seabright.co.nz/helpers/scheduler

cbuild-snapshot: gcc-linaro-4.6+bzr106730~ams-codesourcery~discourage-neon-on-a8
cbuild-ancestor: lp:gcc-linaro/4.6+bzr106729
cbuild-state: check

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :

cbuild successfully built this on i686-lucid-cbuild102-scorpius-i686r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106730~ams-codesourcery~discourage-neon-on-a8/logs/i686-lucid-cbuild102-scorpius-i686r1

The test suite results were unchanged compared to the branch point lp:gcc-linaro/4.6+bzr106729.

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106730~ams-codesourcery~discourage-neon-on-a8/logs/i686-lucid-cbuild102-scorpius-i686r1/gcc-testsuite.txt

cbuild-checked: i686-lucid-cbuild102-scorpius-i686r1

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :

cbuild successfully built this on x86_64-maverick-cbuild104-crucis-x86_64r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106730~ams-codesourcery~discourage-neon-on-a8/logs/x86_64-maverick-cbuild104-crucis-x86_64r1

The test suite results were unchanged compared to the branch point lp:gcc-linaro/4.6+bzr106729.

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106730~ams-codesourcery~discourage-neon-on-a8/logs/x86_64-maverick-cbuild104-crucis-x86_64r1/gcc-testsuite.txt

cbuild-checked: x86_64-maverick-cbuild104-crucis-x86_64r1

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :

cbuild successfully built this on armv7l-maverick-cbuild104-ursa4-cortexa8r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106730~ams-codesourcery~discourage-neon-on-a8/logs/armv7l-maverick-cbuild104-ursa4-cortexa8r1

The test suite was not checked as the branch point lp:gcc-linaro/4.6+bzr106729 has nothing to compare against.

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106730~ams-codesourcery~discourage-neon-on-a8/logs/armv7l-maverick-cbuild104-ursa4-cortexa8r1/gcc-testsuite.txt

cbuild-checked: armv7l-maverick-cbuild104-ursa4-cortexa8r1

Revision history for this message
Ramana Radhakrishnan (ramana) wrote :

I have marked this as needs information as the cbuild run didn't seem to have a baseline to compare the test results with .

I would think this is largely ok because this has been approved upstream into trunk.

http://patchwork.ozlabs.org/patch/87927/

cheers
Ramana

review: Needs Information
Revision history for this message
Ira Rosen (irar) wrote :

I am out of the office until 17/04/2011.

Note: This is an automated response to your message "Re: [Merge]
lp:~ams-codesourcery/gcc-linaro/discourage-neon-on-a8 into
lp:gcc-linaro/4.6" sent on 12/4/11 15:49:29.

This is the only notification you will receive while this person is away.

Unmerged revisions

106730. By Andrew Stubbs

Discourage use of NEON on Cortex-A8.

Backport from FSF.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'ChangeLog.linaro'
--- ChangeLog.linaro 2011-04-05 16:18:11 +0000
+++ ChangeLog.linaro 2011-04-06 13:23:50 +0000
@@ -1,3 +1,4 @@
1<<<<<<< TREE
12011-03-23 Andrew Stubbs <ams@codesourcery.com>22011-03-23 Andrew Stubbs <ams@codesourcery.com>
23
3 Backport from FSF:4 Backport from FSF:
@@ -12,6 +13,26 @@
1213
13 Merge from FSF GCC 4.6 (svn branches/gcc-4_6-branch 171336).14 Merge from FSF GCC 4.6 (svn branches/gcc-4_6-branch 171336).
1415
16=======
172011-03-25 Andrew Stubbs <ams@codesourcery.com>
18
19 Backport from FSF:
20
21 2011-03-25 Bernd Schmidt <bernds@codesourcery.com>
22 Andrew Stubbs <ams@codesourcery.com>
23
24 gcc/
25 * config/arm/vfp.md (arm_movdi_vfp): Enable only when not tuning
26 for Cortex-A8.
27 (arm_movdi_vfp_cortexa8): New pattern.
28 * config/arm/neon.md (adddi3_neon, subdi3_neon, anddi3_neon,
29 iordi3_neon, xordi3_neon): Add alternatives to discourage Neon
30 instructions when tuning for Cortex-A8. Set attribute "arch".
31 * config/arm/arm.md: Move include arm-tune.md up a bit.
32 (define_attr "arch"): Add "onlya8" and "nota8" values.
33 (define_attr "arch_enabled"): Handle "onlya8" and "nota8".
34
35>>>>>>> MERGE-SOURCE
152011-03-22 Andrew Stubbs <ams@codesourcery.com>362011-03-22 Andrew Stubbs <ams@codesourcery.com>
1637
17 Backport from FSF:38 Backport from FSF:
1839
=== modified file 'gcc/config/arm/arm.md'
--- gcc/config/arm/arm.md 2011-03-15 19:59:25 +0000
+++ gcc/config/arm/arm.md 2011-04-06 13:23:50 +0000
@@ -149,6 +149,9 @@
149;;---------------------------------------------------------------------------149;;---------------------------------------------------------------------------
150;; Attributes150;; Attributes
151151
152;; Processor type. This is created automatically from arm-cores.def.
153(include "arm-tune.md")
154
152; IS_THUMB is set to 'yes' when we are generating Thumb code, and 'no' when155; IS_THUMB is set to 'yes' when we are generating Thumb code, and 'no' when
153; generating ARM code. This is used to control the length of some insn156; generating ARM code. This is used to control the length of some insn
154; patterns that share the same RTL in both ARM and Thumb code.157; patterns that share the same RTL in both ARM and Thumb code.
@@ -192,7 +195,7 @@
192; for ARM or Thumb-2 with arm_arch6, and nov6 for ARM without195; for ARM or Thumb-2 with arm_arch6, and nov6 for ARM without
193; arm_arch6. This attribute is used to compute attribute "enabled",196; arm_arch6. This attribute is used to compute attribute "enabled",
194; use type "any" to enable an alternative in all cases.197; use type "any" to enable an alternative in all cases.
195(define_attr "arch" "any,a,t,32,t1,t2,v6,nov6"198(define_attr "arch" "any,a,t,32,t1,t2,v6,nov6,onlya8,nota8"
196 (const_string "any"))199 (const_string "any"))
197200
198(define_attr "arch_enabled" "no,yes"201(define_attr "arch_enabled" "no,yes"
@@ -225,6 +228,14 @@
225228
226 (and (eq_attr "arch" "nov6")229 (and (eq_attr "arch" "nov6")
227 (ne (symbol_ref "(TARGET_32BIT && !arm_arch6)") (const_int 0)))230 (ne (symbol_ref "(TARGET_32BIT && !arm_arch6)") (const_int 0)))
231 (const_string "yes")
232
233 (and (eq_attr "arch" "onlya8")
234 (eq_attr "tune" "cortexa8"))
235 (const_string "yes")
236
237 (and (eq_attr "arch" "nota8")
238 (not (eq_attr "tune" "cortexa8")))
228 (const_string "yes")]239 (const_string "yes")]
229 (const_string "no")))240 (const_string "no")))
230241
@@ -485,9 +496,6 @@
485;;---------------------------------------------------------------------------496;;---------------------------------------------------------------------------
486;; Pipeline descriptions497;; Pipeline descriptions
487498
488;; Processor type. This is created automatically from arm-cores.def.
489(include "arm-tune.md")
490
491(define_attr "tune_cortexr4" "yes,no"499(define_attr "tune_cortexr4" "yes,no"
492 (const (if_then_else500 (const (if_then_else
493 (eq_attr "tune" "cortexr4,cortexr4f")501 (eq_attr "tune" "cortexr4,cortexr4f")
494502
=== modified file 'gcc/config/arm/neon.md'
--- gcc/config/arm/neon.md 2011-01-03 20:52:22 +0000
+++ gcc/config/arm/neon.md 2011-04-06 13:23:50 +0000
@@ -583,23 +583,25 @@
583)583)
584584
585(define_insn "adddi3_neon"585(define_insn "adddi3_neon"
586 [(set (match_operand:DI 0 "s_register_operand" "=w,?&r,?&r")586 [(set (match_operand:DI 0 "s_register_operand" "=w,?&r,?&r,?w")
587 (plus:DI (match_operand:DI 1 "s_register_operand" "%w,0,0")587 (plus:DI (match_operand:DI 1 "s_register_operand" "%w,0,0,w")
588 (match_operand:DI 2 "s_register_operand" "w,r,0")))588 (match_operand:DI 2 "s_register_operand" "w,r,0,w")))
589 (clobber (reg:CC CC_REGNUM))]589 (clobber (reg:CC CC_REGNUM))]
590 "TARGET_NEON"590 "TARGET_NEON"
591{591{
592 switch (which_alternative)592 switch (which_alternative)
593 {593 {
594 case 0: return "vadd.i64\t%P0, %P1, %P2";594 case 0: /* fall through */
595 case 3: return "vadd.i64\t%P0, %P1, %P2";
595 case 1: return "#";596 case 1: return "#";
596 case 2: return "#";597 case 2: return "#";
597 default: gcc_unreachable ();598 default: gcc_unreachable ();
598 }599 }
599}600}
600 [(set_attr "neon_type" "neon_int_1,*,*")601 [(set_attr "neon_type" "neon_int_1,*,*,neon_int_1")
601 (set_attr "conds" "*,clob,clob")602 (set_attr "conds" "*,clob,clob,*")
602 (set_attr "length" "*,8,8")]603 (set_attr "length" "*,8,8,*")
604 (set_attr "arch" "nota8,*,*,onlya8")]
603)605)
604606
605(define_insn "*sub<mode>3_neon"607(define_insn "*sub<mode>3_neon"
@@ -617,24 +619,26 @@
617)619)
618620
619(define_insn "subdi3_neon"621(define_insn "subdi3_neon"
620 [(set (match_operand:DI 0 "s_register_operand" "=w,?&r,?&r,?&r")622 [(set (match_operand:DI 0 "s_register_operand" "=w,?&r,?&r,?&r,?w")
621 (minus:DI (match_operand:DI 1 "s_register_operand" "w,0,r,0")623 (minus:DI (match_operand:DI 1 "s_register_operand" "w,0,r,0,w")
622 (match_operand:DI 2 "s_register_operand" "w,r,0,0")))624 (match_operand:DI 2 "s_register_operand" "w,r,0,0,w")))
623 (clobber (reg:CC CC_REGNUM))]625 (clobber (reg:CC CC_REGNUM))]
624 "TARGET_NEON"626 "TARGET_NEON"
625{627{
626 switch (which_alternative)628 switch (which_alternative)
627 {629 {
628 case 0: return "vsub.i64\t%P0, %P1, %P2";630 case 0: /* fall through */
631 case 4: return "vsub.i64\t%P0, %P1, %P2";
629 case 1: /* fall through */ 632 case 1: /* fall through */
630 case 2: /* fall through */633 case 2: /* fall through */
631 case 3: return "subs\\t%Q0, %Q1, %Q2\;sbc\\t%R0, %R1, %R2";634 case 3: return "subs\\t%Q0, %Q1, %Q2\;sbc\\t%R0, %R1, %R2";
632 default: gcc_unreachable ();635 default: gcc_unreachable ();
633 }636 }
634}637}
635 [(set_attr "neon_type" "neon_int_2,*,*,*")638 [(set_attr "neon_type" "neon_int_2,*,*,*,neon_int_2")
636 (set_attr "conds" "*,clob,clob,clob")639 (set_attr "conds" "*,clob,clob,clob,*")
637 (set_attr "length" "*,8,8,8")]640 (set_attr "length" "*,8,8,8,*")
641 (set_attr "arch" "nota8,*,*,*,onlya8")]
638)642)
639643
640(define_insn "*mul<mode>3_neon"644(define_insn "*mul<mode>3_neon"
@@ -720,23 +724,26 @@
720)724)
721725
722(define_insn "iordi3_neon"726(define_insn "iordi3_neon"
723 [(set (match_operand:DI 0 "s_register_operand" "=w,w,?&r,?&r")727 [(set (match_operand:DI 0 "s_register_operand" "=w,w,?&r,?&r,?w,?w")
724 (ior:DI (match_operand:DI 1 "s_register_operand" "%w,0,0,r")728 (ior:DI (match_operand:DI 1 "s_register_operand" "%w,0,0,r,w,0")
725 (match_operand:DI 2 "neon_logic_op2" "w,Dl,r,r")))]729 (match_operand:DI 2 "neon_logic_op2" "w,Dl,r,r,w,Dl")))]
726 "TARGET_NEON"730 "TARGET_NEON"
727{731{
728 switch (which_alternative)732 switch (which_alternative)
729 {733 {
730 case 0: return "vorr\t%P0, %P1, %P2";734 case 0: /* fall through */
731 case 1: return neon_output_logic_immediate ("vorr", &operands[2],735 case 4: return "vorr\t%P0, %P1, %P2";
736 case 1: /* fall through */
737 case 5: return neon_output_logic_immediate ("vorr", &operands[2],
732 DImode, 0, VALID_NEON_QREG_MODE (DImode));738 DImode, 0, VALID_NEON_QREG_MODE (DImode));
733 case 2: return "#";739 case 2: return "#";
734 case 3: return "#";740 case 3: return "#";
735 default: gcc_unreachable ();741 default: gcc_unreachable ();
736 }742 }
737}743}
738 [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*")744 [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*,neon_int_1,neon_int_1")
739 (set_attr "length" "*,*,8,8")]745 (set_attr "length" "*,*,8,8,*,*")
746 (set_attr "arch" "nota8,nota8,*,*,onlya8,onlya8")]
740)747)
741748
742;; The concrete forms of the Neon immediate-logic instructions are vbic and749;; The concrete forms of the Neon immediate-logic instructions are vbic and
@@ -762,23 +769,26 @@
762)769)
763770
764(define_insn "anddi3_neon"771(define_insn "anddi3_neon"
765 [(set (match_operand:DI 0 "s_register_operand" "=w,w,?&r,?&r")772 [(set (match_operand:DI 0 "s_register_operand" "=w,w,?&r,?&r,?w,?w")
766 (and:DI (match_operand:DI 1 "s_register_operand" "%w,0,0,r")773 (and:DI (match_operand:DI 1 "s_register_operand" "%w,0,0,r,w,0")
767 (match_operand:DI 2 "neon_inv_logic_op2" "w,DL,r,r")))]774 (match_operand:DI 2 "neon_inv_logic_op2" "w,DL,r,r,w,DL")))]
768 "TARGET_NEON"775 "TARGET_NEON"
769{776{
770 switch (which_alternative)777 switch (which_alternative)
771 {778 {
772 case 0: return "vand\t%P0, %P1, %P2";779 case 0: /* fall through */
773 case 1: return neon_output_logic_immediate ("vand", &operands[2],780 case 4: return "vand\t%P0, %P1, %P2";
781 case 1: /* fall through */
782 case 5: return neon_output_logic_immediate ("vand", &operands[2],
774 DImode, 1, VALID_NEON_QREG_MODE (DImode));783 DImode, 1, VALID_NEON_QREG_MODE (DImode));
775 case 2: return "#";784 case 2: return "#";
776 case 3: return "#";785 case 3: return "#";
777 default: gcc_unreachable ();786 default: gcc_unreachable ();
778 }787 }
779}788}
780 [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*")789 [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*,neon_int_1,neon_int_1")
781 (set_attr "length" "*,*,8,8")]790 (set_attr "length" "*,*,8,8,*,*")
791 (set_attr "arch" "nota8,nota8,*,*,onlya8,onlya8")]
782)792)
783793
784(define_insn "orn<mode>3_neon"794(define_insn "orn<mode>3_neon"
@@ -836,16 +846,18 @@
836)846)
837847
838(define_insn "xordi3_neon"848(define_insn "xordi3_neon"
839 [(set (match_operand:DI 0 "s_register_operand" "=w,?&r,?&r")849 [(set (match_operand:DI 0 "s_register_operand" "=w,?&r,?&r,?w")
840 (xor:DI (match_operand:DI 1 "s_register_operand" "%w,0,r")850 (xor:DI (match_operand:DI 1 "s_register_operand" "%w,0,r,w")
841 (match_operand:DI 2 "s_register_operand" "w,r,r")))]851 (match_operand:DI 2 "s_register_operand" "w,r,r,w")))]
842 "TARGET_NEON"852 "TARGET_NEON"
843 "@853 "@
844 veor\t%P0, %P1, %P2854 veor\t%P0, %P1, %P2
845 #855 #
846 #"856 #
847 [(set_attr "neon_type" "neon_int_1,*,*")857 veor\t%P0, %P1, %P2"
848 (set_attr "length" "*,8,8")]858 [(set_attr "neon_type" "neon_int_1,*,*,neon_int_1")
859 (set_attr "length" "*,8,8,*")
860 (set_attr "arch" "nota8,*,*,onlya8")]
849)861)
850862
851(define_insn "one_cmpl<mode>2"863(define_insn "one_cmpl<mode>2"
852864
=== modified file 'gcc/config/arm/vfp.md'
--- gcc/config/arm/vfp.md 2011-01-20 22:03:29 +0000
+++ gcc/config/arm/vfp.md 2011-04-06 13:23:50 +0000
@@ -134,9 +134,51 @@
134;; DImode moves134;; DImode moves
135135
136(define_insn "*arm_movdi_vfp"136(define_insn "*arm_movdi_vfp"
137 [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r,m,w,r,w,w, Uv")137 [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, m,w,r,w,w, Uv")
138 (match_operand:DI 1 "di_operand" "rIK,mi,r,r,w,w,Uvi,w"))]138 (match_operand:DI 1 "di_operand" "rIK,mi,r,r,w,w,Uvi,w"))]
139 "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP139 "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP && arm_tune != cortexa8
140 && ( register_operand (operands[0], DImode)
141 || register_operand (operands[1], DImode))"
142 "*
143 switch (which_alternative)
144 {
145 case 0:
146 return \"#\";
147 case 1:
148 case 2:
149 return output_move_double (operands);
150 case 3:
151 return \"fmdrr%?\\t%P0, %Q1, %R1\\t%@ int\";
152 case 4:
153 return \"fmrrd%?\\t%Q0, %R0, %P1\\t%@ int\";
154 case 5:
155 if (TARGET_VFP_SINGLE)
156 return \"fcpys%?\\t%0, %1\\t%@ int\;fcpys%?\\t%p0, %p1\\t%@ int\";
157 else
158 return \"fcpyd%?\\t%P0, %P1\\t%@ int\";
159 case 6: case 7:
160 return output_move_vfp (operands);
161 default:
162 gcc_unreachable ();
163 }
164 "
165 [(set_attr "type" "*,load2,store2,r_2_f,f_2_r,ffarithd,f_loadd,f_stored")
166 (set_attr "neon_type" "*,*,*,neon_mcr_2_mcrr,neon_mrrc,neon_vmov,*,*")
167 (set (attr "length") (cond [(eq_attr "alternative" "0,1,2") (const_int 8)
168 (eq_attr "alternative" "5")
169 (if_then_else
170 (eq (symbol_ref "TARGET_VFP_SINGLE") (const_int 1))
171 (const_int 8)
172 (const_int 4))]
173 (const_int 4)))
174 (set_attr "pool_range" "*,1020,*,*,*,*,1020,*")
175 (set_attr "neg_pool_range" "*,1008,*,*,*,*,1008,*")]
176)
177
178(define_insn "*arm_movdi_vfp_cortexa8"
179 [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r,m,w,!r,w,w, Uv")
180 (match_operand:DI 1 "di_operand" "rIK,mi,r,r,w,w,Uvi,w"))]
181 "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP && arm_tune == cortexa8
140 && ( register_operand (operands[0], DImode)182 && ( register_operand (operands[0], DImode)
141 || register_operand (operands[1], DImode))"183 || register_operand (operands[1], DImode))"
142 "*184 "*

Subscribers

People subscribed via source and target branches