;; Patterns for the Intel Wireless MMX technology architecture.
-;; Copyright (C) 2003-2013 Free Software Foundation, Inc.
+;; Copyright (C) 2003-2020 Free Software Foundation, Inc.
;; Contributed by Red Hat.
;; This file is part of GCC.
;; along with GCC; see the file COPYING3. If not see
;; <http://www.gnu.org/licenses/>.
-;; Register numbers
+;; Register numbers. Need to sync with FIRST_IWMMXT_GR_REGNUM in arm.h
(define_constants
- [(WCGR0 43)
- (WCGR1 44)
- (WCGR2 45)
- (WCGR3 46)
+ [(WCGR0 96)
+ (WCGR1 97)
+ (WCGR2 98)
+ (WCGR3 99)
]
)
"TARGET_REALLY_IWMMXT"
"tbcstb%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "tbcst")]
+ (set_attr "type" "wmmx_tbcst")]
)
(define_insn "tbcstv4hi"
"TARGET_REALLY_IWMMXT"
"tbcsth%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "tbcst")]
+ (set_attr "type" "wmmx_tbcst")]
)
(define_insn "tbcstv2si"
"TARGET_REALLY_IWMMXT"
"tbcstw%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "tbcst")]
+ (set_attr "type" "wmmx_tbcst")]
)
(define_insn "iwmmxt_iordi3"
- [(set (match_operand:DI 0 "register_operand" "=y,?&r,?&r")
- (ior:DI (match_operand:DI 1 "register_operand" "%y,0,r")
- (match_operand:DI 2 "register_operand" "y,r,r")))]
+ [(set (match_operand:DI 0 "register_operand" "=y")
+ (ior:DI (match_operand:DI 1 "register_operand" "%y")
+ (match_operand:DI 2 "register_operand" "y")))]
"TARGET_REALLY_IWMMXT"
- "@
- wor%?\\t%0, %1, %2
- #
- #"
+ "wor%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "length" "4,8,8")
- (set_attr "wtype" "wor,none,none")]
+ (set_attr "length" "4")
+ (set_attr "type" "wmmx_wor")]
)
(define_insn "iwmmxt_xordi3"
- [(set (match_operand:DI 0 "register_operand" "=y,?&r,?&r")
- (xor:DI (match_operand:DI 1 "register_operand" "%y,0,r")
- (match_operand:DI 2 "register_operand" "y,r,r")))]
+ [(set (match_operand:DI 0 "register_operand" "=y")
+ (xor:DI (match_operand:DI 1 "register_operand" "%y")
+ (match_operand:DI 2 "register_operand" "y")))]
"TARGET_REALLY_IWMMXT"
- "@
- wxor%?\\t%0, %1, %2
- #
- #"
+ "wxor%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "length" "4,8,8")
- (set_attr "wtype" "wxor,none,none")]
+ (set_attr "length" "4")
+ (set_attr "type" "wmmx_wxor")]
)
(define_insn "iwmmxt_anddi3"
- [(set (match_operand:DI 0 "register_operand" "=y,?&r,?&r")
- (and:DI (match_operand:DI 1 "register_operand" "%y,0,r")
- (match_operand:DI 2 "register_operand" "y,r,r")))]
+ [(set (match_operand:DI 0 "register_operand" "=y")
+ (and:DI (match_operand:DI 1 "register_operand" "%y")
+ (match_operand:DI 2 "register_operand" "y")))]
"TARGET_REALLY_IWMMXT"
- "@
- wand%?\\t%0, %1, %2
- #
- #"
+ "wand%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "length" "4,8,8")
- (set_attr "wtype" "wand,none,none")]
+ (set_attr "length" "4")
+ (set_attr "type" "wmmx_wand")]
)
(define_insn "iwmmxt_nanddi3"
"TARGET_REALLY_IWMMXT"
"wandn%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wandn")]
+ (set_attr "type" "wmmx_wandn")]
)
(define_insn "*iwmmxt_arm_movdi"
- [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, r, r, m,y,y,yr,y,yrUy,*w, r,*w,*w, *Uv")
- (match_operand:DI 1 "di_operand" "rDa,Db,Dc,mi,r,y,yr,y,yrUy,y, r,*w,*w,*Uvi,*w"))]
+ [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, r, r, m,y,y,r, y,Uy,*w, r,*w,*w, *Uv")
+ (match_operand:DI 1 "di_operand" "rDa,Db,Dc,mi,r,y,r,y,Uy,y, r,*w,*w,*Uvi,*w"))]
"TARGET_REALLY_IWMMXT
&& ( register_operand (operands[0], DImode)
|| register_operand (operands[1], DImode))"
(const_int 8)
(const_int 4))]
(const_int 4)))
- (set_attr "type" "*,*,*,load2,store2,*,*,*,*,*,r_2_f,f_2_r,ffarithd,f_loadd,f_stored")
+ (set_attr "type" "*,*,*,load_8,store_8,*,*,*,*,*,f_mcrr,f_mrrc,\
+ ffarithd,f_loadd,f_stored")
(set_attr "arm_pool_range" "*,*,*,1020,*,*,*,*,*,*,*,*,*,1020,*")
- (set_attr "arm_neg_pool_range" "*,*,*,1008,*,*,*,*,*,*,*,*,*,1008,*")
- (set_attr "wtype" "*,*,*,*,*,wmov,tmcrr,tmrrc,wldr,wstr,*,*,*,*,*")]
+ (set_attr "arm_neg_pool_range" "*,*,*,1008,*,*,*,*,*,*,*,*,*,1008,*")]
)
(define_insn "*iwmmxt_movsi_insn"
default:
gcc_unreachable ();
}"
- [(set_attr "type" "*,*,*,*,load1,store1,*,*,*,*,r_2_f,f_2_r,fcpys,f_loads,f_stores")
+ [(set_attr "type" "*,*,*,*,load_4,store_4,*,*,*,*,f_mcr,f_mrc,\
+ fmov,f_loads,f_stores")
(set_attr "length" "*,*,*,*,*, *,*,*, 16, *,*,*,*,*,*")
(set_attr "pool_range" "*,*,*,*,4096, *,*,*,1024, *,*,*,*,1020,*")
(set_attr "neg_pool_range" "*,*,*,*,4084, *,*,*, *, 1012,*,*,*,1008,*")
;; Also - we have to pretend that these insns clobber the condition code
;; bits as otherwise arm_final_prescan_insn() will try to conditionalize
;; them.
- (set_attr "conds" "clob")
- (set_attr "wtype" "*,*,*,*,*,*,tmcr,tmrc,wldr,wstr,*,*,*,*,*")]
+ (set_attr "conds" "clob")]
)
;; Because iwmmxt_movsi_insn is not predicable, we provide the
case 4: return \"tmcr%?\\t%0, %1\";
default: return \"tmrc%?\\t%0, %1\";
}"
- [(set_attr "type" "*,*,load1,store1,*,*")
+ [(set_attr "type" "*,*,load_4,store_4,*,*")
(set_attr "pool_range" "*,*,4096, *,*,*")
(set_attr "neg_pool_range" "*,*,4084, *,*,*")]
)
}"
[(set_attr "predicable" "yes")
(set_attr "length" "4, 4, 4,4,4,8, 8,8")
- (set_attr "type" "*,*,*,*,*,*,load1,store1")
+ (set_attr "type" "wmmx_wmov,wmmx_wstr,wmmx_wldr,wmmx_tmrrc,wmmx_tmcrr,*,load_4,store_4")
(set_attr "pool_range" "*, *, 256,*,*,*, 256,*")
- (set_attr "neg_pool_range" "*, *, 244,*,*,*, 244,*")
- (set_attr "wtype" "wmov,wstr,wldr,tmrrc,tmcrr,*,*,*")]
+ (set_attr "neg_pool_range" "*, *, 244,*,*,*, 244,*")]
)
(define_expand "iwmmxt_setwcgr0"
[(set (reg:SI WCGR0)
- (match_operand:SI 0 "register_operand" ""))]
+ (match_operand:SI 0 "register_operand"))]
"TARGET_REALLY_IWMMXT"
{}
)
(define_expand "iwmmxt_setwcgr1"
[(set (reg:SI WCGR1)
- (match_operand:SI 0 "register_operand" ""))]
+ (match_operand:SI 0 "register_operand"))]
"TARGET_REALLY_IWMMXT"
{}
)
(define_expand "iwmmxt_setwcgr2"
[(set (reg:SI WCGR2)
- (match_operand:SI 0 "register_operand" ""))]
+ (match_operand:SI 0 "register_operand"))]
"TARGET_REALLY_IWMMXT"
{}
)
(define_expand "iwmmxt_setwcgr3"
[(set (reg:SI WCGR3)
- (match_operand:SI 0 "register_operand" ""))]
+ (match_operand:SI 0 "register_operand"))]
"TARGET_REALLY_IWMMXT"
{}
)
(define_expand "iwmmxt_getwcgr0"
- [(set (match_operand:SI 0 "register_operand" "")
+ [(set (match_operand:SI 0 "register_operand")
(reg:SI WCGR0))]
"TARGET_REALLY_IWMMXT"
{}
)
(define_expand "iwmmxt_getwcgr1"
- [(set (match_operand:SI 0 "register_operand" "")
+ [(set (match_operand:SI 0 "register_operand")
(reg:SI WCGR1))]
"TARGET_REALLY_IWMMXT"
{}
)
(define_expand "iwmmxt_getwcgr2"
- [(set (match_operand:SI 0 "register_operand" "")
+ [(set (match_operand:SI 0 "register_operand")
(reg:SI WCGR2))]
"TARGET_REALLY_IWMMXT"
{}
)
(define_expand "iwmmxt_getwcgr3"
- [(set (match_operand:SI 0 "register_operand" "")
+ [(set (match_operand:SI 0 "register_operand")
(reg:SI WCGR3))]
"TARGET_REALLY_IWMMXT"
{}
"TARGET_REALLY_IWMMXT"
"wand\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wand")]
+ (set_attr "type" "wmmx_wand")]
)
(define_insn "*ior<mode>3_iwmmxt"
"TARGET_REALLY_IWMMXT"
"wor\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wor")]
+ (set_attr "type" "wmmx_wor")]
)
(define_insn "*xor<mode>3_iwmmxt"
"TARGET_REALLY_IWMMXT"
"wxor\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wxor")]
+ (set_attr "type" "wmmx_wxor")]
)
"TARGET_REALLY_IWMMXT"
"wadd<MMX_char>%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wadd")]
+ (set_attr "type" "wmmx_wadd")]
)
(define_insn "ssaddv8qi3"
"TARGET_REALLY_IWMMXT"
"waddbss%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wadd")]
+ (set_attr "type" "wmmx_wadd")]
)
(define_insn "ssaddv4hi3"
"TARGET_REALLY_IWMMXT"
"waddhss%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wadd")]
+ (set_attr "type" "wmmx_wadd")]
)
(define_insn "ssaddv2si3"
"TARGET_REALLY_IWMMXT"
"waddwss%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wadd")]
+ (set_attr "type" "wmmx_wadd")]
)
(define_insn "usaddv8qi3"
"TARGET_REALLY_IWMMXT"
"waddbus%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wadd")]
+ (set_attr "type" "wmmx_wadd")]
)
(define_insn "usaddv4hi3"
"TARGET_REALLY_IWMMXT"
"waddhus%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wadd")]
+ (set_attr "type" "wmmx_wadd")]
)
(define_insn "usaddv2si3"
"TARGET_REALLY_IWMMXT"
"waddwus%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wadd")]
+ (set_attr "type" "wmmx_wadd")]
)
(define_insn "*sub<mode>3_iwmmxt"
"TARGET_REALLY_IWMMXT"
"wsub<MMX_char>%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wsub")]
+ (set_attr "type" "wmmx_wsub")]
)
(define_insn "sssubv8qi3"
"TARGET_REALLY_IWMMXT"
"wsubbss%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wsub")]
+ (set_attr "type" "wmmx_wsub")]
)
(define_insn "sssubv4hi3"
"TARGET_REALLY_IWMMXT"
"wsubhss%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wsub")]
+ (set_attr "type" "wmmx_wsub")]
)
(define_insn "sssubv2si3"
"TARGET_REALLY_IWMMXT"
"wsubwss%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wsub")]
+ (set_attr "type" "wmmx_wsub")]
)
(define_insn "ussubv8qi3"
"TARGET_REALLY_IWMMXT"
"wsubbus%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wsub")]
+ (set_attr "type" "wmmx_wsub")]
)
(define_insn "ussubv4hi3"
"TARGET_REALLY_IWMMXT"
"wsubhus%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wsub")]
+ (set_attr "type" "wmmx_wsub")]
)
(define_insn "ussubv2si3"
"TARGET_REALLY_IWMMXT"
"wsubwus%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wsub")]
+ (set_attr "type" "wmmx_wsub")]
)
(define_insn "*mulv4hi3_iwmmxt"
"TARGET_REALLY_IWMMXT"
"wmulul%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wmul")]
+ (set_attr "type" "wmmx_wmul")]
)
(define_insn "smulv4hi3_highpart"
"TARGET_REALLY_IWMMXT"
"wmulsm%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wmul")]
+ (set_attr "type" "wmmx_wmul")]
)
(define_insn "umulv4hi3_highpart"
"TARGET_REALLY_IWMMXT"
"wmulum%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wmul")]
+ (set_attr "type" "wmmx_wmul")]
)
(define_insn "iwmmxt_wmacs"
"TARGET_REALLY_IWMMXT"
"wmacs%?\\t%0, %2, %3"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wmac")]
+ (set_attr "type" "wmmx_wmac")]
)
(define_insn "iwmmxt_wmacsz"
"TARGET_REALLY_IWMMXT"
"wmacsz%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wmac")]
+ (set_attr "type" "wmmx_wmac")]
)
(define_insn "iwmmxt_wmacu"
"TARGET_REALLY_IWMMXT"
"wmacu%?\\t%0, %2, %3"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wmac")]
+ (set_attr "type" "wmmx_wmac")]
)
(define_insn "iwmmxt_wmacuz"
"TARGET_REALLY_IWMMXT"
"wmacuz%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wmac")]
+ (set_attr "type" "wmmx_wmac")]
)
;; Same as xordi3, but don't show input operands so that we don't think
"TARGET_REALLY_IWMMXT"
"wxor%?\\t%0, %0, %0"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wxor")]
+ (set_attr "type" "wmmx_wxor")]
)
;; Seems like cse likes to generate these, so we have to support them.
"TARGET_REALLY_IWMMXT"
"wxor%?\\t%0, %0, %0"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wxor")]
+ (set_attr "type" "wmmx_wxor")]
)
(define_insn "iwmmxt_clrv4hi"
"TARGET_REALLY_IWMMXT"
"wxor%?\\t%0, %0, %0"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wxor")]
+ (set_attr "type" "wmmx_wxor")]
)
(define_insn "iwmmxt_clrv2si"
"TARGET_REALLY_IWMMXT"
"wxor%?\\t%0, %0, %0"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wxor")]
+ (set_attr "type" "wmmx_wxor")]
)
;; Unsigned averages/sum of absolute differences
"TARGET_REALLY_IWMMXT"
"wavg2br%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wavg2")]
+ (set_attr "type" "wmmx_wavg2")]
)
(define_insn "iwmmxt_uavgrndv4hi3"
"TARGET_REALLY_IWMMXT"
"wavg2hr%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wavg2")]
+ (set_attr "type" "wmmx_wavg2")]
)
(define_insn "iwmmxt_uavgv8qi3"
"TARGET_REALLY_IWMMXT"
"wavg2b%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wavg2")]
+ (set_attr "type" "wmmx_wavg2")]
)
(define_insn "iwmmxt_uavgv4hi3"
"TARGET_REALLY_IWMMXT"
"wavg2h%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wavg2")]
+ (set_attr "type" "wmmx_wavg2")]
)
;; Insert/extract/shuffle
}
"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "tinsr")]
+ (set_attr "type" "wmmx_tinsr")]
)
(define_insn "iwmmxt_tinsrh"
}
"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "tinsr")]
+ (set_attr "type" "wmmx_tinsr")]
)
(define_insn "iwmmxt_tinsrw"
}
"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "tinsr")]
+ (set_attr "type" "wmmx_tinsr")]
)
(define_insn "iwmmxt_textrmub"
"TARGET_REALLY_IWMMXT"
"textrmub%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "textrm")]
+ (set_attr "type" "wmmx_textrm")]
)
(define_insn "iwmmxt_textrmsb"
"TARGET_REALLY_IWMMXT"
"textrmsb%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "textrm")]
+ (set_attr "type" "wmmx_textrm")]
)
(define_insn "iwmmxt_textrmuh"
"TARGET_REALLY_IWMMXT"
"textrmuh%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "textrm")]
+ (set_attr "type" "wmmx_textrm")]
)
(define_insn "iwmmxt_textrmsh"
"TARGET_REALLY_IWMMXT"
"textrmsh%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "textrm")]
+ (set_attr "type" "wmmx_textrm")]
)
;; There are signed/unsigned variants of this instruction, but they are
"TARGET_REALLY_IWMMXT"
"textrmsw%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "textrm")]
+ (set_attr "type" "wmmx_textrm")]
)
(define_insn "iwmmxt_wshufh"
"TARGET_REALLY_IWMMXT"
"wshufh%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wshufh")]
+ (set_attr "type" "wmmx_wshufh")]
)
;; Mask-generating comparisons
"TARGET_REALLY_IWMMXT"
"wcmpeqb%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wcmpeq")]
+ (set_attr "type" "wmmx_wcmpeq")]
)
(define_insn "eqv4hi3"
"TARGET_REALLY_IWMMXT"
"wcmpeqh%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wcmpeq")]
+ (set_attr "type" "wmmx_wcmpeq")]
)
(define_insn "eqv2si3"
"TARGET_REALLY_IWMMXT"
"wcmpeqw%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wcmpeq")]
+ (set_attr "type" "wmmx_wcmpeq")]
)
(define_insn "gtuv8qi3"
"TARGET_REALLY_IWMMXT"
"wcmpgtub%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wcmpgt")]
+ (set_attr "type" "wmmx_wcmpgt")]
)
(define_insn "gtuv4hi3"
"TARGET_REALLY_IWMMXT"
"wcmpgtuh%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wcmpgt")]
+ (set_attr "type" "wmmx_wcmpgt")]
)
(define_insn "gtuv2si3"
"TARGET_REALLY_IWMMXT"
"wcmpgtuw%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wcmpgt")]
+ (set_attr "type" "wmmx_wcmpgt")]
)
(define_insn "gtv8qi3"
"TARGET_REALLY_IWMMXT"
"wcmpgtsb%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wcmpgt")]
+ (set_attr "type" "wmmx_wcmpgt")]
)
(define_insn "gtv4hi3"
"TARGET_REALLY_IWMMXT"
"wcmpgtsh%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wcmpgt")]
+ (set_attr "type" "wmmx_wcmpgt")]
)
(define_insn "gtv2si3"
"TARGET_REALLY_IWMMXT"
"wcmpgtsw%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wcmpgt")]
+ (set_attr "type" "wmmx_wcmpgt")]
)
;; Max/min insns
"TARGET_REALLY_IWMMXT"
"wmaxs<MMX_char>%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wmax")]
+ (set_attr "type" "wmmx_wmax")]
)
(define_insn "*umax<mode>3_iwmmxt"
"TARGET_REALLY_IWMMXT"
"wmaxu<MMX_char>%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wmax")]
+ (set_attr "type" "wmmx_wmax")]
)
(define_insn "*smin<mode>3_iwmmxt"
"TARGET_REALLY_IWMMXT"
"wmins<MMX_char>%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wmin")]
+ (set_attr "type" "wmmx_wmin")]
)
(define_insn "*umin<mode>3_iwmmxt"
"TARGET_REALLY_IWMMXT"
"wminu<MMX_char>%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wmin")]
+ (set_attr "type" "wmmx_wmin")]
)
;; Pack/unpack insns.
"TARGET_REALLY_IWMMXT"
"wpackhss%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wpack")]
+ (set_attr "type" "wmmx_wpack")]
)
(define_insn "iwmmxt_wpackwss"
"TARGET_REALLY_IWMMXT"
"wpackwss%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wpack")]
+ (set_attr "type" "wmmx_wpack")]
)
(define_insn "iwmmxt_wpackdss"
"TARGET_REALLY_IWMMXT"
"wpackdss%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wpack")]
+ (set_attr "type" "wmmx_wpack")]
)
(define_insn "iwmmxt_wpackhus"
"TARGET_REALLY_IWMMXT"
"wpackhus%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wpack")]
+ (set_attr "type" "wmmx_wpack")]
)
(define_insn "iwmmxt_wpackwus"
"TARGET_REALLY_IWMMXT"
"wpackwus%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wpack")]
+ (set_attr "type" "wmmx_wpack")]
)
(define_insn "iwmmxt_wpackdus"
"TARGET_REALLY_IWMMXT"
"wpackdus%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wpack")]
+ (set_attr "type" "wmmx_wpack")]
)
(define_insn "iwmmxt_wunpckihb"
"TARGET_REALLY_IWMMXT"
"wunpckihb%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckih")]
+ (set_attr "type" "wmmx_wunpckih")]
)
(define_insn "iwmmxt_wunpckihh"
"TARGET_REALLY_IWMMXT"
"wunpckihh%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckih")]
+ (set_attr "type" "wmmx_wunpckih")]
)
(define_insn "iwmmxt_wunpckihw"
"TARGET_REALLY_IWMMXT"
"wunpckihw%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckih")]
+ (set_attr "type" "wmmx_wunpckih")]
)
(define_insn "iwmmxt_wunpckilb"
"TARGET_REALLY_IWMMXT"
"wunpckilb%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckil")]
+ (set_attr "type" "wmmx_wunpckil")]
)
(define_insn "iwmmxt_wunpckilh"
"TARGET_REALLY_IWMMXT"
"wunpckilh%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckil")]
+ (set_attr "type" "wmmx_wunpckil")]
)
(define_insn "iwmmxt_wunpckilw"
"TARGET_REALLY_IWMMXT"
"wunpckilw%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckil")]
+ (set_attr "type" "wmmx_wunpckil")]
)
(define_insn "iwmmxt_wunpckehub"
"TARGET_REALLY_IWMMXT"
"wunpckehub%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckeh")]
+ (set_attr "type" "wmmx_wunpckeh")]
)
(define_insn "iwmmxt_wunpckehuh"
"TARGET_REALLY_IWMMXT"
"wunpckehuh%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckeh")]
+ (set_attr "type" "wmmx_wunpckeh")]
)
(define_insn "iwmmxt_wunpckehuw"
"TARGET_REALLY_IWMMXT"
"wunpckehuw%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckeh")]
+ (set_attr "type" "wmmx_wunpckeh")]
)
(define_insn "iwmmxt_wunpckehsb"
"TARGET_REALLY_IWMMXT"
"wunpckehsb%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckeh")]
+ (set_attr "type" "wmmx_wunpckeh")]
)
(define_insn "iwmmxt_wunpckehsh"
"TARGET_REALLY_IWMMXT"
"wunpckehsh%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckeh")]
+ (set_attr "type" "wmmx_wunpckeh")]
)
(define_insn "iwmmxt_wunpckehsw"
"TARGET_REALLY_IWMMXT"
"wunpckehsw%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckeh")]
+ (set_attr "type" "wmmx_wunpckeh")]
)
(define_insn "iwmmxt_wunpckelub"
"TARGET_REALLY_IWMMXT"
"wunpckelub%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckel")]
+ (set_attr "type" "wmmx_wunpckel")]
)
(define_insn "iwmmxt_wunpckeluh"
"TARGET_REALLY_IWMMXT"
"wunpckeluh%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckel")]
+ (set_attr "type" "wmmx_wunpckel")]
)
(define_insn "iwmmxt_wunpckeluw"
"TARGET_REALLY_IWMMXT"
"wunpckeluw%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckel")]
+ (set_attr "type" "wmmx_wunpckel")]
)
(define_insn "iwmmxt_wunpckelsb"
"TARGET_REALLY_IWMMXT"
"wunpckelsb%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckel")]
+ (set_attr "type" "wmmx_wunpckel")]
)
(define_insn "iwmmxt_wunpckelsh"
"TARGET_REALLY_IWMMXT"
"wunpckelsh%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckel")]
+ (set_attr "type" "wmmx_wunpckel")]
)
(define_insn "iwmmxt_wunpckelsw"
"TARGET_REALLY_IWMMXT"
"wunpckelsw%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wunpckel")]
+ (set_attr "type" "wmmx_wunpckel")]
)
;; Shifts
"
[(set_attr "predicable" "yes")
(set_attr "arch" "*, iwmmxt2")
- (set_attr "wtype" "wror, wror")]
+ (set_attr "type" "wmmx_wror, wmmx_wror")]
)
(define_insn "ashr<mode>3_iwmmxt"
"
[(set_attr "predicable" "yes")
(set_attr "arch" "*, iwmmxt2")
- (set_attr "wtype" "wsra, wsra")]
+ (set_attr "type" "wmmx_wsra, wmmx_wsra")]
)
(define_insn "lshr<mode>3_iwmmxt"
"
[(set_attr "predicable" "yes")
(set_attr "arch" "*, iwmmxt2")
- (set_attr "wtype" "wsrl, wsrl")]
+ (set_attr "type" "wmmx_wsrl, wmmx_wsrl")]
)
(define_insn "ashl<mode>3_iwmmxt"
"
[(set_attr "predicable" "yes")
(set_attr "arch" "*, iwmmxt2")
- (set_attr "wtype" "wsll, wsll")]
+ (set_attr "type" "wmmx_wsll, wmmx_wsll")]
)
(define_insn "ror<mode>3_di"
"
[(set_attr "predicable" "yes")
(set_attr "arch" "*, iwmmxt2")
- (set_attr "wtype" "wror, wror")]
+ (set_attr "type" "wmmx_wror, wmmx_wror")]
)
(define_insn "ashr<mode>3_di"
"
[(set_attr "predicable" "yes")
(set_attr "arch" "*, iwmmxt2")
- (set_attr "wtype" "wsra, wsra")]
+ (set_attr "type" "wmmx_wsra, wmmx_wsra")]
)
(define_insn "lshr<mode>3_di"
"
[(set_attr "predicable" "yes")
(set_attr "arch" "*, iwmmxt2")
- (set_attr "wtype" "wsrl, wsrl")]
+ (set_attr "type" "wmmx_wsrl, wmmx_wsrl")]
)
(define_insn "ashl<mode>3_di"
"
[(set_attr "predicable" "yes")
(set_attr "arch" "*, iwmmxt2")
- (set_attr "wtype" "wsll, wsll")]
+ (set_attr "type" "wmmx_wsll, wmmx_wsll")]
)
(define_insn "iwmmxt_wmadds"
"TARGET_REALLY_IWMMXT"
"wmadds%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wmadd")]
+ (set_attr "type" "wmmx_wmadd")]
)
(define_insn "iwmmxt_wmaddu"
"TARGET_REALLY_IWMMXT"
"wmaddu%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wmadd")]
+ (set_attr "type" "wmmx_wmadd")]
)
(define_insn "iwmmxt_tmia"
"TARGET_REALLY_IWMMXT"
"tmia%?\\t%0, %2, %3"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "tmia")]
+ (set_attr "type" "wmmx_tmia")]
)
(define_insn "iwmmxt_tmiaph"
"TARGET_REALLY_IWMMXT"
"tmiaph%?\\t%0, %2, %3"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "tmiaph")]
+ (set_attr "type" "wmmx_tmiaph")]
)
(define_insn "iwmmxt_tmiabb"
"TARGET_REALLY_IWMMXT"
"tmiabb%?\\t%0, %2, %3"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "tmiaxy")]
+ (set_attr "type" "wmmx_tmiaxy")]
)
(define_insn "iwmmxt_tmiatb"
"TARGET_REALLY_IWMMXT"
"tmiatb%?\\t%0, %2, %3"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "tmiaxy")]
+ (set_attr "type" "wmmx_tmiaxy")]
)
(define_insn "iwmmxt_tmiabt"
"TARGET_REALLY_IWMMXT"
"tmiabt%?\\t%0, %2, %3"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "tmiaxy")]
+ (set_attr "type" "wmmx_tmiaxy")]
)
(define_insn "iwmmxt_tmiatt"
"TARGET_REALLY_IWMMXT"
"tmiatt%?\\t%0, %2, %3"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "tmiaxy")]
+ (set_attr "type" "wmmx_tmiaxy")]
)
(define_insn "iwmmxt_tmovmskb"
"TARGET_REALLY_IWMMXT"
"tmovmskb%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "tmovmsk")]
+ (set_attr "type" "wmmx_tmovmsk")]
)
(define_insn "iwmmxt_tmovmskh"
"TARGET_REALLY_IWMMXT"
"tmovmskh%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "tmovmsk")]
+ (set_attr "type" "wmmx_tmovmsk")]
)
(define_insn "iwmmxt_tmovmskw"
"TARGET_REALLY_IWMMXT"
"tmovmskw%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "tmovmsk")]
+ (set_attr "type" "wmmx_tmovmsk")]
)
(define_insn "iwmmxt_waccb"
"TARGET_REALLY_IWMMXT"
"waccb%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wacc")]
+ (set_attr "type" "wmmx_wacc")]
)
(define_insn "iwmmxt_wacch"
"TARGET_REALLY_IWMMXT"
"wacch%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wacc")]
+ (set_attr "type" "wmmx_wacc")]
)
(define_insn "iwmmxt_waccw"
"TARGET_REALLY_IWMMXT"
"waccw%?\\t%0, %1"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wacc")]
+ (set_attr "type" "wmmx_wacc")]
)
;; use unspec here to prevent 8 * imm to be optimized by cse
"TARGET_REALLY_IWMMXT"
"waligni%?\\t%0, %1, %2, %3"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "waligni")]
+ (set_attr "type" "wmmx_waligni")]
)
(define_insn "iwmmxt_walignr"
"TARGET_REALLY_IWMMXT"
"walignr%U3%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "walignr")]
+ (set_attr "type" "wmmx_walignr")]
)
(define_insn "iwmmxt_walignr0"
"TARGET_REALLY_IWMMXT"
"walignr0%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "walignr")]
+ (set_attr "type" "wmmx_walignr")]
)
(define_insn "iwmmxt_walignr1"
"TARGET_REALLY_IWMMXT"
"walignr1%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "walignr")]
+ (set_attr "type" "wmmx_walignr")]
)
(define_insn "iwmmxt_walignr2"
"TARGET_REALLY_IWMMXT"
"walignr2%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "walignr")]
+ (set_attr "type" "wmmx_walignr")]
)
(define_insn "iwmmxt_walignr3"
"TARGET_REALLY_IWMMXT"
"walignr3%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "walignr")]
+ (set_attr "type" "wmmx_walignr")]
)
(define_insn "iwmmxt_wsadb"
"TARGET_REALLY_IWMMXT"
"wsadb%?\\t%0, %2, %3"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wsad")]
+ (set_attr "type" "wmmx_wsad")]
)
(define_insn "iwmmxt_wsadh"
"TARGET_REALLY_IWMMXT"
"wsadh%?\\t%0, %2, %3"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wsad")]
+ (set_attr "type" "wmmx_wsad")]
)
(define_insn "iwmmxt_wsadbz"
"TARGET_REALLY_IWMMXT"
"wsadbz%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wsad")]
+ (set_attr "type" "wmmx_wsad")]
)
(define_insn "iwmmxt_wsadhz"
"TARGET_REALLY_IWMMXT"
"wsadhz%?\\t%0, %1, %2"
[(set_attr "predicable" "yes")
- (set_attr "wtype" "wsad")]
+ (set_attr "type" "wmmx_wsad")]
)
(include "iwmmxt2.md")