comparison gcc/config/arm/fpa.md @ 67:f6334be47118

update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
date Tue, 22 Mar 2011 17:18:12 +0900
parents 77e2b8dfacca
children
comparison
equal deleted inserted replaced
65:65488c3d617d 67:f6334be47118
81 (and (eq_attr "fpu" "fpa") 81 (and (eq_attr "fpu" "fpa")
82 (eq_attr "type" "f_2_r")) 82 (eq_attr "type" "f_2_r"))
83 "core+fpa*2") 83 "core+fpa*2")
84 84
85 (define_insn_reservation "f_load" 3 85 (define_insn_reservation "f_load" 3
86 (and (eq_attr "fpu" "fpa") (eq_attr "type" "f_load")) 86 (and (eq_attr "fpu" "fpa") (eq_attr "type" "f_fpa_load"))
87 "fpa_mem+core*3") 87 "fpa_mem+core*3")
88 88
89 (define_insn_reservation "f_store" 4 89 (define_insn_reservation "f_store" 4
90 (and (eq_attr "fpu" "fpa") (eq_attr "type" "f_store")) 90 (and (eq_attr "fpu" "fpa") (eq_attr "type" "f_fpa_store"))
91 "core*4") 91 "core*4")
92 92
93 (define_insn_reservation "r_mem_f" 6 93 (define_insn_reservation "r_mem_f" 6
94 (and (eq_attr "model_wbuf" "no") 94 (and (eq_attr "model_wbuf" "no")
95 (and (eq_attr "fpu" "fpa") (eq_attr "type" "r_mem_f"))) 95 (and (eq_attr "fpu" "fpa") (eq_attr "type" "r_mem_f")))
543 ldr%?\\t%0, %1\\t%@ float 543 ldr%?\\t%0, %1\\t%@ float
544 str%?\\t%1, %0\\t%@ float" 544 str%?\\t%1, %0\\t%@ float"
545 [(set_attr "length" "4,4,4,4,8,8,4,4,4") 545 [(set_attr "length" "4,4,4,4,8,8,4,4,4")
546 (set_attr "predicable" "yes") 546 (set_attr "predicable" "yes")
547 (set_attr "type" 547 (set_attr "type"
548 "ffarith,ffarith,f_load,f_store,r_mem_f,f_mem_r,*,load1,store1") 548 "ffarith,ffarith,f_fpa_load,f_fpa_store,r_mem_f,f_mem_r,*,load1,store1")
549 (set_attr "pool_range" "*,*,1024,*,*,*,*,4096,*") 549 (set_attr "pool_range" "*,*,1024,*,*,*,*,4096,*")
550 (set_attr "neg_pool_range" "*,*,1012,*,*,*,*,4084,*")] 550 (set_attr "neg_pool_range" "*,*,1012,*,*,*,*,4084,*")]
551 ) 551 )
552 552
553 (define_insn "*movdf_fpa" 553 (define_insn "*movdf_fpa"
578 } 578 }
579 " 579 "
580 [(set_attr "length" "4,4,8,8,8,4,4,4,4,8,8") 580 [(set_attr "length" "4,4,8,8,8,4,4,4,4,8,8")
581 (set_attr "predicable" "yes") 581 (set_attr "predicable" "yes")
582 (set_attr "type" 582 (set_attr "type"
583 "load1,store2,*,store2,load1,ffarith,ffarith,f_load,f_store,r_mem_f,f_mem_r") 583 "load1,store2,*,store2,load1,ffarith,ffarith,f_fpa_load,f_fpa_store,r_mem_f,f_mem_r")
584 (set_attr "pool_range" "*,*,*,*,1020,*,*,1024,*,*,*") 584 (set_attr "pool_range" "*,*,*,*,1020,*,*,1024,*,*,*")
585 (set_attr "neg_pool_range" "*,*,*,*,1008,*,*,1008,*,*,*")] 585 (set_attr "neg_pool_range" "*,*,*,*,1008,*,*,1008,*,*,*")]
586 ) 586 )
587 587
588 ;; We treat XFmode as meaning 'internal format'. It's the right size and we 588 ;; We treat XFmode as meaning 'internal format'. It's the right size and we
607 return \"sfm%?\\t%1, 1, %0\"; 607 return \"sfm%?\\t%1, 1, %0\";
608 } 608 }
609 " 609 "
610 [(set_attr "length" "4,4,4") 610 [(set_attr "length" "4,4,4")
611 (set_attr "predicable" "yes") 611 (set_attr "predicable" "yes")
612 (set_attr "type" "ffarith,f_load,f_store")] 612 (set_attr "type" "ffarith,f_fpa_load,f_fpa_store")]
613 ) 613 )
614 614
615 ;; stfs/ldfs always use a conditional infix. This works around the 615 ;; stfs/ldfs always use a conditional infix. This works around the
616 ;; ambiguity between "stf pl s" and "sftp ls". 616 ;; ambiguity between "stf pl s" and "sftp ls".
617 (define_insn "*thumb2_movsf_fpa" 617 (define_insn "*thumb2_movsf_fpa"
633 str%?\\t%1, %0\\t%@ float" 633 str%?\\t%1, %0\\t%@ float"
634 [(set_attr "length" "4,4,4,4,8,8,4,4,4") 634 [(set_attr "length" "4,4,4,4,8,8,4,4,4")
635 (set_attr "ce_count" "1,1,1,1,2,2,1,1,1") 635 (set_attr "ce_count" "1,1,1,1,2,2,1,1,1")
636 (set_attr "predicable" "yes") 636 (set_attr "predicable" "yes")
637 (set_attr "type" 637 (set_attr "type"
638 "ffarith,ffarith,f_load,f_store,r_mem_f,f_mem_r,*,load1,store1") 638 "ffarith,ffarith,f_fpa_load,f_fpa_store,r_mem_f,f_mem_r,*,load1,store1")
639 (set_attr "pool_range" "*,*,1024,*,*,*,*,4096,*") 639 (set_attr "pool_range" "*,*,1024,*,*,*,*,4096,*")
640 (set_attr "neg_pool_range" "*,*,1012,*,*,*,*,0,*")] 640 (set_attr "neg_pool_range" "*,*,1012,*,*,*,*,0,*")]
641 ) 641 )
642 642
643 ;; Not predicable because we don't know the number of instructions. 643 ;; Not predicable because we don't know the number of instructions.
667 } 667 }
668 } 668 }
669 " 669 "
670 [(set_attr "length" "4,4,8,8,8,4,4,4,4,8,8") 670 [(set_attr "length" "4,4,8,8,8,4,4,4,4,8,8")
671 (set_attr "type" 671 (set_attr "type"
672 "load1,store2,*,store2,load1,ffarith,ffarith,f_load,f_store,r_mem_f,f_mem_r") 672 "load1,store2,*,store2,load1,ffarith,ffarith,f_fpa_load,f_fpa_store,r_mem_f,f_mem_r")
673 (set_attr "pool_range" "*,*,*,*,4092,*,*,1024,*,*,*") 673 (set_attr "pool_range" "*,*,*,*,4092,*,*,1024,*,*,*")
674 (set_attr "neg_pool_range" "*,*,*,*,0,*,*,1020,*,*,*")] 674 (set_attr "neg_pool_range" "*,*,*,*,0,*,*,1020,*,*,*")]
675 ) 675 )
676 676
677 ;; Saving and restoring the floating point registers in the prologue should 677 ;; Saving and restoring the floating point registers in the prologue should
696 case 5: return output_mov_long_double_arm_from_fpa (operands); 696 case 5: return output_mov_long_double_arm_from_fpa (operands);
697 case 6: return output_mov_long_double_arm_from_arm (operands); 697 case 6: return output_mov_long_double_arm_from_arm (operands);
698 } 698 }
699 " 699 "
700 [(set_attr "length" "4,4,4,4,8,8,12") 700 [(set_attr "length" "4,4,4,4,8,8,12")
701 (set_attr "type" "ffarith,ffarith,f_load,f_store,r_mem_f,f_mem_r,*") 701 (set_attr "type" "ffarith,ffarith,f_fpa_load,f_fpa_store,r_mem_f,f_mem_r,*")
702 (set_attr "pool_range" "*,*,1024,*,*,*,*") 702 (set_attr "pool_range" "*,*,1024,*,*,*,*")
703 (set_attr "neg_pool_range" "*,*,1004,*,*,*,*")] 703 (set_attr "neg_pool_range" "*,*,1004,*,*,*,*")]
704 ) 704 )
705 705
706 (define_insn "*cmpsf_fpa" 706 (define_insn "*cmpsf_fpa"