Home | History | Annotate | Line # | Download | only in alpha
alpha.md revision 1.1.1.1.8.2
      1  1.1.1.1.8.2  tls ;; Machine description for DEC Alpha for GNU C compiler
      2  1.1.1.1.8.2  tls ;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
      3  1.1.1.1.8.2  tls ;; 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
      4  1.1.1.1.8.2  tls ;; Free Software Foundation, Inc.
      5  1.1.1.1.8.2  tls ;; Contributed by Richard Kenner (kenner (a] vlsi1.ultra.nyu.edu)
      6  1.1.1.1.8.2  tls ;;
      7  1.1.1.1.8.2  tls ;; This file is part of GCC.
      8  1.1.1.1.8.2  tls ;;
      9  1.1.1.1.8.2  tls ;; GCC is free software; you can redistribute it and/or modify
     10  1.1.1.1.8.2  tls ;; it under the terms of the GNU General Public License as published by
     11  1.1.1.1.8.2  tls ;; the Free Software Foundation; either version 3, or (at your option)
     12  1.1.1.1.8.2  tls ;; any later version.
     13  1.1.1.1.8.2  tls ;;
     14  1.1.1.1.8.2  tls ;; GCC is distributed in the hope that it will be useful,
     15  1.1.1.1.8.2  tls ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
     16  1.1.1.1.8.2  tls ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     17  1.1.1.1.8.2  tls ;; GNU General Public License for more details.
     18  1.1.1.1.8.2  tls ;;
     19  1.1.1.1.8.2  tls ;; You should have received a copy of the GNU General Public License
     20  1.1.1.1.8.2  tls ;; along with GCC; see the file COPYING3.  If not see
     21  1.1.1.1.8.2  tls ;; <http://www.gnu.org/licenses/>.
     22  1.1.1.1.8.2  tls 
     23  1.1.1.1.8.2  tls ;;- See file "rtl.def" for documentation on define_insn, match_*, et. al.
     24  1.1.1.1.8.2  tls 
     25  1.1.1.1.8.2  tls ;; Uses of UNSPEC in this file:
     26  1.1.1.1.8.2  tls 
     27  1.1.1.1.8.2  tls (define_constants
     28  1.1.1.1.8.2  tls   [(UNSPEC_ARG_HOME	0)
     29  1.1.1.1.8.2  tls    (UNSPEC_LDGP1	1)
     30  1.1.1.1.8.2  tls    (UNSPEC_INSXH	2)
     31  1.1.1.1.8.2  tls    (UNSPEC_MSKXH	3)
     32  1.1.1.1.8.2  tls    (UNSPEC_CVTQL	4)
     33  1.1.1.1.8.2  tls    (UNSPEC_CVTLQ	5)
     34  1.1.1.1.8.2  tls    (UNSPEC_UMK_LAUM	6)
     35  1.1.1.1.8.2  tls    (UNSPEC_UMK_LALM	7)
     36  1.1.1.1.8.2  tls    (UNSPEC_UMK_LAL	8)
     37  1.1.1.1.8.2  tls    (UNSPEC_UMK_LOAD_CIW	9)
     38  1.1.1.1.8.2  tls    (UNSPEC_LDGP2	10)
     39  1.1.1.1.8.2  tls    (UNSPEC_LITERAL	11)
     40  1.1.1.1.8.2  tls    (UNSPEC_LITUSE	12)
     41  1.1.1.1.8.2  tls    (UNSPEC_SIBCALL	13)
     42  1.1.1.1.8.2  tls    (UNSPEC_SYMBOL	14)
     43  1.1.1.1.8.2  tls 
     44  1.1.1.1.8.2  tls    ;; TLS Support
     45  1.1.1.1.8.2  tls    (UNSPEC_TLSGD_CALL	15)
     46  1.1.1.1.8.2  tls    (UNSPEC_TLSLDM_CALL	16)
     47  1.1.1.1.8.2  tls    (UNSPEC_TLSGD	17)
     48  1.1.1.1.8.2  tls    (UNSPEC_TLSLDM	18)
     49  1.1.1.1.8.2  tls    (UNSPEC_DTPREL	19)
     50  1.1.1.1.8.2  tls    (UNSPEC_TPREL	20)
     51  1.1.1.1.8.2  tls    (UNSPEC_TP		21)
     52  1.1.1.1.8.2  tls 
     53  1.1.1.1.8.2  tls    ;; Builtins
     54  1.1.1.1.8.2  tls    (UNSPEC_CMPBGE	22)
     55  1.1.1.1.8.2  tls    (UNSPEC_ZAP		23)
     56  1.1.1.1.8.2  tls    (UNSPEC_AMASK	24)
     57  1.1.1.1.8.2  tls    (UNSPEC_IMPLVER	25)
     58  1.1.1.1.8.2  tls    (UNSPEC_PERR		26)
     59  1.1.1.1.8.2  tls    (UNSPEC_COPYSIGN     27)
     60  1.1.1.1.8.2  tls 
     61  1.1.1.1.8.2  tls    ;; Atomic operations
     62  1.1.1.1.8.2  tls    (UNSPEC_MB		28)
     63  1.1.1.1.8.2  tls    (UNSPEC_ATOMIC	31)
     64  1.1.1.1.8.2  tls    (UNSPEC_CMPXCHG	32)
     65  1.1.1.1.8.2  tls    (UNSPEC_XCHG		33)
     66  1.1.1.1.8.2  tls   ])
     67  1.1.1.1.8.2  tls 
     68  1.1.1.1.8.2  tls ;; UNSPEC_VOLATILE:
     69  1.1.1.1.8.2  tls 
     70  1.1.1.1.8.2  tls (define_constants
     71  1.1.1.1.8.2  tls   [(UNSPECV_IMB		0)
     72  1.1.1.1.8.2  tls    (UNSPECV_BLOCKAGE	1)
     73  1.1.1.1.8.2  tls    (UNSPECV_SETJMPR	2)	; builtin_setjmp_receiver
     74  1.1.1.1.8.2  tls    (UNSPECV_LONGJMP	3)	; builtin_longjmp
     75  1.1.1.1.8.2  tls    (UNSPECV_TRAPB	4)
     76  1.1.1.1.8.2  tls    (UNSPECV_PSPL	5)	; prologue_stack_probe_loop
     77  1.1.1.1.8.2  tls    (UNSPECV_REALIGN	6)
     78  1.1.1.1.8.2  tls    (UNSPECV_EHR		7)	; exception_receiver
     79  1.1.1.1.8.2  tls    (UNSPECV_MCOUNT	8)
     80  1.1.1.1.8.2  tls    (UNSPECV_FORCE_MOV	9)
     81  1.1.1.1.8.2  tls    (UNSPECV_LDGP1	10)
     82  1.1.1.1.8.2  tls    (UNSPECV_PLDGP2	11)	; prologue ldgp
     83  1.1.1.1.8.2  tls    (UNSPECV_SET_TP	12)
     84  1.1.1.1.8.2  tls    (UNSPECV_RPCC	13)
     85  1.1.1.1.8.2  tls    (UNSPECV_SETJMPR_ER	14)	; builtin_setjmp_receiver fragment
     86  1.1.1.1.8.2  tls    (UNSPECV_LL		15)	; load-locked
     87  1.1.1.1.8.2  tls    (UNSPECV_SC		16)	; store-conditional
     88  1.1.1.1.8.2  tls   ])
     89  1.1.1.1.8.2  tls 
     90  1.1.1.1.8.2  tls ;; On non-BWX targets, CQImode must be handled the similarly to HImode
     91  1.1.1.1.8.2  tls ;; when generating reloads.
     92  1.1.1.1.8.2  tls (define_mode_iterator RELOAD12 [QI HI CQI])
     93  1.1.1.1.8.2  tls (define_mode_attr reloadmode [(QI "qi") (HI "hi") (CQI "hi")])
     94  1.1.1.1.8.2  tls 
     95  1.1.1.1.8.2  tls ;; Other mode iterators
     96  1.1.1.1.8.2  tls (define_mode_iterator I12MODE [QI HI])
     97  1.1.1.1.8.2  tls (define_mode_iterator I48MODE [SI DI])
     98  1.1.1.1.8.2  tls (define_mode_attr modesuffix [(SI "l") (DI "q")])
     99  1.1.1.1.8.2  tls 
    100  1.1.1.1.8.2  tls ;; Where necessary, the suffixes _le and _be are used to distinguish between
    101  1.1.1.1.8.2  tls ;; little-endian and big-endian patterns.
    102  1.1.1.1.8.2  tls ;;
    103  1.1.1.1.8.2  tls ;; Note that the Unicos/Mk assembler does not support the following
    104  1.1.1.1.8.2  tls ;; opcodes: mov, fmov, nop, fnop, unop.
    105  1.1.1.1.8.2  tls 
    107  1.1.1.1.8.2  tls ;; Processor type -- this attribute must exactly match the processor_type
    108  1.1.1.1.8.2  tls ;; enumeration in alpha.h.
    109  1.1.1.1.8.2  tls 
    110  1.1.1.1.8.2  tls (define_attr "tune" "ev4,ev5,ev6"
    111  1.1.1.1.8.2  tls   (const (symbol_ref "((enum attr_tune) alpha_tune)")))
    112  1.1.1.1.8.2  tls 
    113  1.1.1.1.8.2  tls ;; Define an insn type attribute.  This is used in function unit delay
    114  1.1.1.1.8.2  tls ;; computations, among other purposes.  For the most part, we use the names
    115  1.1.1.1.8.2  tls ;; defined in the EV4 documentation, but add a few that we have to know about
    116  1.1.1.1.8.2  tls ;; separately.
    117  1.1.1.1.8.2  tls 
    118  1.1.1.1.8.2  tls (define_attr "type"
    119  1.1.1.1.8.2  tls   "ild,fld,ldsym,ist,fst,ibr,callpal,fbr,jsr,iadd,ilog,shift,icmov,fcmov,
    120  1.1.1.1.8.2  tls    icmp,imul,fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,mb,ld_l,st_c,
    121  1.1.1.1.8.2  tls    multi,none"
    122  1.1.1.1.8.2  tls   (const_string "iadd"))
    123  1.1.1.1.8.2  tls 
    124  1.1.1.1.8.2  tls ;; Describe a user's asm statement.
    125  1.1.1.1.8.2  tls (define_asm_attributes
    126  1.1.1.1.8.2  tls   [(set_attr "type" "multi")])
    127  1.1.1.1.8.2  tls 
    128  1.1.1.1.8.2  tls ;; Define the operand size an insn operates on.  Used primarily by mul
    129  1.1.1.1.8.2  tls ;; and div operations that have size dependent timings.
    130  1.1.1.1.8.2  tls 
    131  1.1.1.1.8.2  tls (define_attr "opsize" "si,di,udi"
    132  1.1.1.1.8.2  tls   (const_string "di"))
    133  1.1.1.1.8.2  tls 
    134  1.1.1.1.8.2  tls ;; The TRAP attribute marks instructions that may generate traps
    135  1.1.1.1.8.2  tls ;; (which are imprecise and may need a trapb if software completion
    136  1.1.1.1.8.2  tls ;; is desired).
    137  1.1.1.1.8.2  tls 
    138  1.1.1.1.8.2  tls (define_attr "trap" "no,yes"
    139  1.1.1.1.8.2  tls   (const_string "no"))
    140  1.1.1.1.8.2  tls 
    141  1.1.1.1.8.2  tls ;; The ROUND_SUFFIX attribute marks which instructions require a
    142  1.1.1.1.8.2  tls ;; rounding-mode suffix.  The value NONE indicates no suffix,
    143  1.1.1.1.8.2  tls ;; the value NORMAL indicates a suffix controlled by alpha_fprm.
    144  1.1.1.1.8.2  tls 
    145  1.1.1.1.8.2  tls (define_attr "round_suffix" "none,normal,c"
    146  1.1.1.1.8.2  tls   (const_string "none"))
    147  1.1.1.1.8.2  tls 
    148  1.1.1.1.8.2  tls ;; The TRAP_SUFFIX attribute marks instructions requiring a trap-mode suffix:
    149  1.1.1.1.8.2  tls ;;   NONE	no suffix
    150  1.1.1.1.8.2  tls ;;   SU		accepts only /su (cmpt et al)
    151  1.1.1.1.8.2  tls ;;   SUI	accepts only /sui (cvtqt and cvtqs)
    152  1.1.1.1.8.2  tls ;;   V_SV	accepts /v and /sv (cvtql only)
    153  1.1.1.1.8.2  tls ;;   V_SV_SVI	accepts /v, /sv and /svi (cvttq only)
    154  1.1.1.1.8.2  tls ;;   U_SU_SUI	accepts /u, /su and /sui (most fp instructions)
    155  1.1.1.1.8.2  tls ;;
    156  1.1.1.1.8.2  tls ;; The actual suffix emitted is controlled by alpha_fptm.
    157  1.1.1.1.8.2  tls 
    158  1.1.1.1.8.2  tls (define_attr "trap_suffix" "none,su,sui,v_sv,v_sv_svi,u_su_sui"
    159  1.1.1.1.8.2  tls   (const_string "none"))
    160  1.1.1.1.8.2  tls 
    161  1.1.1.1.8.2  tls ;; The length of an instruction sequence in bytes.
    162  1.1.1.1.8.2  tls 
    163  1.1.1.1.8.2  tls (define_attr "length" ""
    164  1.1.1.1.8.2  tls   (const_int 4))
    165  1.1.1.1.8.2  tls 
    166  1.1.1.1.8.2  tls ;; The USEGP attribute marks instructions that have relocations that use
    167  1.1.1.1.8.2  tls ;; the GP.
    168  1.1.1.1.8.2  tls 
    169  1.1.1.1.8.2  tls (define_attr "usegp" "no,yes"
    170  1.1.1.1.8.2  tls   (cond [(eq_attr "type" "ldsym,jsr")
    171  1.1.1.1.8.2  tls 	   (const_string "yes")
    172  1.1.1.1.8.2  tls 	 (eq_attr "type" "ild,fld,ist,fst")
    173  1.1.1.1.8.2  tls 	   (symbol_ref "((enum attr_usegp) alpha_find_lo_sum_using_gp (insn))")
    174  1.1.1.1.8.2  tls 	]
    175  1.1.1.1.8.2  tls 	(const_string "no")))
    176  1.1.1.1.8.2  tls 
    177  1.1.1.1.8.2  tls ;; The CANNOT_COPY attribute marks instructions with relocations that
    178  1.1.1.1.8.2  tls ;; cannot easily be duplicated.  This includes insns with gpdisp relocs
    179  1.1.1.1.8.2  tls ;; since they have to stay in 1-1 correspondence with one another.  This
    180  1.1.1.1.8.2  tls ;; also includes jsr insns, since they must stay in correspondence with
    181  1.1.1.1.8.2  tls ;; the immediately following gpdisp instructions.
    182  1.1.1.1.8.2  tls 
    183  1.1.1.1.8.2  tls (define_attr "cannot_copy" "false,true"
    184  1.1.1.1.8.2  tls   (const_string "false"))
    185  1.1.1.1.8.2  tls 
    187  1.1.1.1.8.2  tls ;; Include scheduling descriptions.
    188  1.1.1.1.8.2  tls   
    189  1.1.1.1.8.2  tls (include "ev4.md")
    190  1.1.1.1.8.2  tls (include "ev5.md")
    191  1.1.1.1.8.2  tls (include "ev6.md")
    192  1.1.1.1.8.2  tls 
    193  1.1.1.1.8.2  tls 
    195  1.1.1.1.8.2  tls ;; Operand and operator predicates and constraints
    196  1.1.1.1.8.2  tls 
    197  1.1.1.1.8.2  tls (include "predicates.md")
    198  1.1.1.1.8.2  tls (include "constraints.md")
    199  1.1.1.1.8.2  tls 
    200  1.1.1.1.8.2  tls 
    202  1.1.1.1.8.2  tls ;; First define the arithmetic insns.  Note that the 32-bit forms also
    203  1.1.1.1.8.2  tls ;; sign-extend.
    204  1.1.1.1.8.2  tls 
    205  1.1.1.1.8.2  tls ;; Handle 32-64 bit extension from memory to a floating point register
    206  1.1.1.1.8.2  tls ;; specially, since this occurs frequently in int->double conversions.
    207  1.1.1.1.8.2  tls ;;
    208  1.1.1.1.8.2  tls ;; Note that while we must retain the =f case in the insn for reload's
    209  1.1.1.1.8.2  tls ;; benefit, it should be eliminated after reload, so we should never emit
    210  1.1.1.1.8.2  tls ;; code for that case.  But we don't reject the possibility.
    211  1.1.1.1.8.2  tls 
    212  1.1.1.1.8.2  tls (define_expand "extendsidi2"
    213  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
    214  1.1.1.1.8.2  tls 	(sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "")))]
    215  1.1.1.1.8.2  tls   ""
    216  1.1.1.1.8.2  tls   "")
    217  1.1.1.1.8.2  tls 
    218  1.1.1.1.8.2  tls (define_insn "*cvtlq"
    219  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=f")
    220  1.1.1.1.8.2  tls 	(unspec:DI [(match_operand:SF 1 "reg_or_0_operand" "fG")]
    221  1.1.1.1.8.2  tls 		   UNSPEC_CVTLQ))]
    222  1.1.1.1.8.2  tls   ""
    223  1.1.1.1.8.2  tls   "cvtlq %1,%0"
    224  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")])
    225  1.1.1.1.8.2  tls 
    226  1.1.1.1.8.2  tls (define_insn "*extendsidi2_1"
    227  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r,!*f")
    228  1.1.1.1.8.2  tls 	(sign_extend:DI
    229  1.1.1.1.8.2  tls 	  (match_operand:SI 1 "nonimmediate_operand" "r,m,m")))]
    230  1.1.1.1.8.2  tls   ""
    231  1.1.1.1.8.2  tls   "@
    232  1.1.1.1.8.2  tls    addl $31,%1,%0
    233  1.1.1.1.8.2  tls    ldl %0,%1
    234  1.1.1.1.8.2  tls    lds %0,%1\;cvtlq %0,%0"
    235  1.1.1.1.8.2  tls   [(set_attr "type" "iadd,ild,fld")
    236  1.1.1.1.8.2  tls    (set_attr "length" "*,*,8")])
    237  1.1.1.1.8.2  tls 
    238  1.1.1.1.8.2  tls (define_split
    239  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "hard_fp_register_operand" "")
    240  1.1.1.1.8.2  tls 	(sign_extend:DI (match_operand:SI 1 "memory_operand" "")))]
    241  1.1.1.1.8.2  tls   "reload_completed"
    242  1.1.1.1.8.2  tls   [(set (match_dup 2) (match_dup 1))
    243  1.1.1.1.8.2  tls    (set (match_dup 0) (unspec:DI [(match_dup 2)] UNSPEC_CVTLQ))]
    244  1.1.1.1.8.2  tls {
    245  1.1.1.1.8.2  tls   operands[1] = adjust_address (operands[1], SFmode, 0);
    246  1.1.1.1.8.2  tls   operands[2] = gen_rtx_REG (SFmode, REGNO (operands[0]));
    247  1.1.1.1.8.2  tls })
    248  1.1.1.1.8.2  tls 
    249  1.1.1.1.8.2  tls ;; Optimize sign-extension of SImode loads.  This shows up in the wake of
    250  1.1.1.1.8.2  tls ;; reload when converting fp->int.
    251  1.1.1.1.8.2  tls 
    252  1.1.1.1.8.2  tls (define_peephole2
    253  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "hard_int_register_operand" "")
    254  1.1.1.1.8.2  tls         (match_operand:SI 1 "memory_operand" ""))
    255  1.1.1.1.8.2  tls    (set (match_operand:DI 2 "hard_int_register_operand" "")
    256  1.1.1.1.8.2  tls         (sign_extend:DI (match_dup 0)))]
    257  1.1.1.1.8.2  tls   "true_regnum (operands[0]) == true_regnum (operands[2])
    258  1.1.1.1.8.2  tls    || peep2_reg_dead_p (2, operands[0])"
    259  1.1.1.1.8.2  tls   [(set (match_dup 2)
    260  1.1.1.1.8.2  tls 	(sign_extend:DI (match_dup 1)))]
    261  1.1.1.1.8.2  tls   "")
    262  1.1.1.1.8.2  tls 
    263  1.1.1.1.8.2  tls (define_insn "addsi3"
    264  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
    265  1.1.1.1.8.2  tls 	(plus:SI (match_operand:SI 1 "reg_or_0_operand" "%rJ,rJ,rJ,rJ")
    266  1.1.1.1.8.2  tls 		 (match_operand:SI 2 "add_operand" "rI,O,K,L")))]
    267  1.1.1.1.8.2  tls   ""
    268  1.1.1.1.8.2  tls   "@
    269  1.1.1.1.8.2  tls    addl %r1,%2,%0
    270  1.1.1.1.8.2  tls    subl %r1,%n2,%0
    271  1.1.1.1.8.2  tls    lda %0,%2(%r1)
    272  1.1.1.1.8.2  tls    ldah %0,%h2(%r1)")
    273  1.1.1.1.8.2  tls 
    274  1.1.1.1.8.2  tls (define_split
    275  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "")
    276  1.1.1.1.8.2  tls 	(plus:SI (match_operand:SI 1 "register_operand" "")
    277  1.1.1.1.8.2  tls 		 (match_operand:SI 2 "const_int_operand" "")))]
    278  1.1.1.1.8.2  tls   "! add_operand (operands[2], SImode)"
    279  1.1.1.1.8.2  tls   [(set (match_dup 0) (plus:SI (match_dup 1) (match_dup 3)))
    280  1.1.1.1.8.2  tls    (set (match_dup 0) (plus:SI (match_dup 0) (match_dup 4)))]
    281  1.1.1.1.8.2  tls {
    282  1.1.1.1.8.2  tls   HOST_WIDE_INT val = INTVAL (operands[2]);
    283  1.1.1.1.8.2  tls   HOST_WIDE_INT low = (val & 0xffff) - 2 * (val & 0x8000);
    284  1.1.1.1.8.2  tls   HOST_WIDE_INT rest = val - low;
    285  1.1.1.1.8.2  tls 
    286  1.1.1.1.8.2  tls   operands[3] = GEN_INT (rest);
    287  1.1.1.1.8.2  tls   operands[4] = GEN_INT (low);
    288  1.1.1.1.8.2  tls })
    289  1.1.1.1.8.2  tls 
    290  1.1.1.1.8.2  tls (define_insn "*addsi_se"
    291  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r")
    292  1.1.1.1.8.2  tls 	(sign_extend:DI
    293  1.1.1.1.8.2  tls 	 (plus:SI (match_operand:SI 1 "reg_or_0_operand" "%rJ,rJ")
    294  1.1.1.1.8.2  tls 		  (match_operand:SI 2 "sext_add_operand" "rI,O"))))]
    295  1.1.1.1.8.2  tls   ""
    296  1.1.1.1.8.2  tls   "@
    297  1.1.1.1.8.2  tls    addl %r1,%2,%0
    298  1.1.1.1.8.2  tls    subl %r1,%n2,%0")
    299  1.1.1.1.8.2  tls 
    300  1.1.1.1.8.2  tls (define_insn "*addsi_se2"
    301  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r")
    302  1.1.1.1.8.2  tls 	(sign_extend:DI
    303  1.1.1.1.8.2  tls 	 (subreg:SI (plus:DI (match_operand:DI 1 "reg_or_0_operand" "%rJ,rJ")
    304  1.1.1.1.8.2  tls 			     (match_operand:DI 2 "sext_add_operand" "rI,O"))
    305  1.1.1.1.8.2  tls 		    0)))]
    306  1.1.1.1.8.2  tls   ""
    307  1.1.1.1.8.2  tls   "@
    308  1.1.1.1.8.2  tls    addl %r1,%2,%0
    309  1.1.1.1.8.2  tls    subl %r1,%n2,%0")
    310  1.1.1.1.8.2  tls 
    311  1.1.1.1.8.2  tls (define_split
    312  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
    313  1.1.1.1.8.2  tls 	(sign_extend:DI
    314  1.1.1.1.8.2  tls 	 (plus:SI (match_operand:SI 1 "reg_not_elim_operand" "")
    315  1.1.1.1.8.2  tls 		  (match_operand:SI 2 "const_int_operand" ""))))
    316  1.1.1.1.8.2  tls    (clobber (match_operand:SI 3 "reg_not_elim_operand" ""))]
    317  1.1.1.1.8.2  tls   "! sext_add_operand (operands[2], SImode) && INTVAL (operands[2]) > 0
    318  1.1.1.1.8.2  tls    && INTVAL (operands[2]) % 4 == 0"
    319  1.1.1.1.8.2  tls   [(set (match_dup 3) (match_dup 4))
    320  1.1.1.1.8.2  tls    (set (match_dup 0) (sign_extend:DI (plus:SI (mult:SI (match_dup 3)
    321  1.1.1.1.8.2  tls 							(match_dup 5))
    322  1.1.1.1.8.2  tls 					       (match_dup 1))))]
    323  1.1.1.1.8.2  tls {
    324  1.1.1.1.8.2  tls   HOST_WIDE_INT val = INTVAL (operands[2]) / 4;
    325  1.1.1.1.8.2  tls   int mult = 4;
    326  1.1.1.1.8.2  tls 
    327  1.1.1.1.8.2  tls   if (val % 2 == 0)
    328  1.1.1.1.8.2  tls     val /= 2, mult = 8;
    329  1.1.1.1.8.2  tls 
    330  1.1.1.1.8.2  tls   operands[4] = GEN_INT (val);
    331  1.1.1.1.8.2  tls   operands[5] = GEN_INT (mult);
    332  1.1.1.1.8.2  tls })
    333  1.1.1.1.8.2  tls 
    334  1.1.1.1.8.2  tls (define_split
    335  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
    336  1.1.1.1.8.2  tls 	(sign_extend:DI
    337  1.1.1.1.8.2  tls 	 (plus:SI (match_operator:SI 1 "comparison_operator"
    338  1.1.1.1.8.2  tls 				     [(match_operand 2 "" "")
    339  1.1.1.1.8.2  tls 				      (match_operand 3 "" "")])
    340  1.1.1.1.8.2  tls 		  (match_operand:SI 4 "add_operand" ""))))
    341  1.1.1.1.8.2  tls    (clobber (match_operand:DI 5 "register_operand" ""))]
    342  1.1.1.1.8.2  tls   ""
    343  1.1.1.1.8.2  tls   [(set (match_dup 5) (match_dup 6))
    344  1.1.1.1.8.2  tls    (set (match_dup 0) (sign_extend:DI (plus:SI (match_dup 7) (match_dup 4))))]
    345  1.1.1.1.8.2  tls {
    346  1.1.1.1.8.2  tls   operands[6] = gen_rtx_fmt_ee (GET_CODE (operands[1]), DImode,
    347  1.1.1.1.8.2  tls 				operands[2], operands[3]);
    348  1.1.1.1.8.2  tls   operands[7] = gen_lowpart (SImode, operands[5]);
    349  1.1.1.1.8.2  tls })
    350  1.1.1.1.8.2  tls 
    351  1.1.1.1.8.2  tls (define_insn "addvsi3"
    352  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r,r")
    353  1.1.1.1.8.2  tls 	(plus:SI (match_operand:SI 1 "reg_or_0_operand" "%rJ,rJ")
    354  1.1.1.1.8.2  tls 		 (match_operand:SI 2 "sext_add_operand" "rI,O")))
    355  1.1.1.1.8.2  tls    (trap_if (ne (plus:DI (sign_extend:DI (match_dup 1))
    356  1.1.1.1.8.2  tls 			 (sign_extend:DI (match_dup 2)))
    357  1.1.1.1.8.2  tls 		(sign_extend:DI (plus:SI (match_dup 1)
    358  1.1.1.1.8.2  tls 					 (match_dup 2))))
    359  1.1.1.1.8.2  tls 	    (const_int 0))]
    360  1.1.1.1.8.2  tls   ""
    361  1.1.1.1.8.2  tls   "@
    362  1.1.1.1.8.2  tls    addlv %r1,%2,%0
    363  1.1.1.1.8.2  tls    sublv %r1,%n2,%0")
    364  1.1.1.1.8.2  tls 
    365  1.1.1.1.8.2  tls (define_expand "adddi3"
    366  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
    367  1.1.1.1.8.2  tls 	(plus:DI (match_operand:DI 1 "register_operand" "")
    368  1.1.1.1.8.2  tls 		 (match_operand:DI 2 "add_operand" "")))]
    369  1.1.1.1.8.2  tls   ""
    370  1.1.1.1.8.2  tls   "")
    371  1.1.1.1.8.2  tls 
    372  1.1.1.1.8.2  tls (define_insn "*adddi_er_lo16_dtp"
    373  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    374  1.1.1.1.8.2  tls 	(lo_sum:DI (match_operand:DI 1 "register_operand" "r")
    375  1.1.1.1.8.2  tls 		   (match_operand:DI 2 "dtp16_symbolic_operand" "")))]
    376  1.1.1.1.8.2  tls   "HAVE_AS_TLS"
    377  1.1.1.1.8.2  tls   "lda %0,%2(%1)\t\t!dtprel")
    378  1.1.1.1.8.2  tls 
    379  1.1.1.1.8.2  tls (define_insn "*adddi_er_hi32_dtp"
    380  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    381  1.1.1.1.8.2  tls 	(plus:DI (match_operand:DI 1 "register_operand" "r")
    382  1.1.1.1.8.2  tls 		 (high:DI (match_operand:DI 2 "dtp32_symbolic_operand" ""))))]
    383  1.1.1.1.8.2  tls   "HAVE_AS_TLS"
    384  1.1.1.1.8.2  tls   "ldah %0,%2(%1)\t\t!dtprelhi")
    385  1.1.1.1.8.2  tls 
    386  1.1.1.1.8.2  tls (define_insn "*adddi_er_lo32_dtp"
    387  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    388  1.1.1.1.8.2  tls 	(lo_sum:DI (match_operand:DI 1 "register_operand" "r")
    389  1.1.1.1.8.2  tls 		   (match_operand:DI 2 "dtp32_symbolic_operand" "")))]
    390  1.1.1.1.8.2  tls   "HAVE_AS_TLS"
    391  1.1.1.1.8.2  tls   "lda %0,%2(%1)\t\t!dtprello")
    392  1.1.1.1.8.2  tls 
    393  1.1.1.1.8.2  tls (define_insn "*adddi_er_lo16_tp"
    394  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    395  1.1.1.1.8.2  tls 	(lo_sum:DI (match_operand:DI 1 "register_operand" "r")
    396  1.1.1.1.8.2  tls 		   (match_operand:DI 2 "tp16_symbolic_operand" "")))]
    397  1.1.1.1.8.2  tls   "HAVE_AS_TLS"
    398  1.1.1.1.8.2  tls   "lda %0,%2(%1)\t\t!tprel")
    399  1.1.1.1.8.2  tls 
    400  1.1.1.1.8.2  tls (define_insn "*adddi_er_hi32_tp"
    401  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    402  1.1.1.1.8.2  tls 	(plus:DI (match_operand:DI 1 "register_operand" "r")
    403  1.1.1.1.8.2  tls 		 (high:DI (match_operand:DI 2 "tp32_symbolic_operand" ""))))]
    404  1.1.1.1.8.2  tls   "HAVE_AS_TLS"
    405  1.1.1.1.8.2  tls   "ldah %0,%2(%1)\t\t!tprelhi")
    406  1.1.1.1.8.2  tls 
    407  1.1.1.1.8.2  tls (define_insn "*adddi_er_lo32_tp"
    408  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    409  1.1.1.1.8.2  tls 	(lo_sum:DI (match_operand:DI 1 "register_operand" "r")
    410  1.1.1.1.8.2  tls 		   (match_operand:DI 2 "tp32_symbolic_operand" "")))]
    411  1.1.1.1.8.2  tls   "HAVE_AS_TLS"
    412  1.1.1.1.8.2  tls   "lda %0,%2(%1)\t\t!tprello")
    413  1.1.1.1.8.2  tls 
    414  1.1.1.1.8.2  tls (define_insn "*adddi_er_high_l"
    415  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    416  1.1.1.1.8.2  tls 	(plus:DI (match_operand:DI 1 "register_operand" "r")
    417  1.1.1.1.8.2  tls 		 (high:DI (match_operand:DI 2 "local_symbolic_operand" ""))))]
    418  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && reload_completed"
    419  1.1.1.1.8.2  tls   "ldah %0,%2(%1)\t\t!gprelhigh"
    420  1.1.1.1.8.2  tls   [(set_attr "usegp" "yes")])
    421  1.1.1.1.8.2  tls 
    422  1.1.1.1.8.2  tls (define_split
    423  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
    424  1.1.1.1.8.2  tls         (high:DI (match_operand:DI 1 "local_symbolic_operand" "")))]
    425  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && reload_completed"
    426  1.1.1.1.8.2  tls   [(set (match_dup 0)
    427  1.1.1.1.8.2  tls 	(plus:DI (match_dup 2) (high:DI (match_dup 1))))]
    428  1.1.1.1.8.2  tls   "operands[2] = pic_offset_table_rtx;")
    429  1.1.1.1.8.2  tls 
    430  1.1.1.1.8.2  tls ;; We used to expend quite a lot of effort choosing addq/subq/lda.
    431  1.1.1.1.8.2  tls ;; With complications like
    432  1.1.1.1.8.2  tls ;;
    433  1.1.1.1.8.2  tls ;;   The NT stack unwind code can't handle a subq to adjust the stack
    434  1.1.1.1.8.2  tls ;;   (that's a bug, but not one we can do anything about).  As of NT4.0 SP3,
    435  1.1.1.1.8.2  tls ;;   the exception handling code will loop if a subq is used and an
    436  1.1.1.1.8.2  tls ;;   exception occurs.
    437  1.1.1.1.8.2  tls ;;
    438  1.1.1.1.8.2  tls ;;   The 19980616 change to emit prologues as RTL also confused some
    439  1.1.1.1.8.2  tls ;;   versions of GDB, which also interprets prologues.  This has been
    440  1.1.1.1.8.2  tls ;;   fixed as of GDB 4.18, but it does not harm to unconditionally
    441  1.1.1.1.8.2  tls ;;   use lda here.
    442  1.1.1.1.8.2  tls ;;
    443  1.1.1.1.8.2  tls ;; and the fact that the three insns schedule exactly the same, it's
    444  1.1.1.1.8.2  tls ;; just not worth the effort.
    445  1.1.1.1.8.2  tls 
    446  1.1.1.1.8.2  tls (define_insn "*adddi_internal"
    447  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r,r")
    448  1.1.1.1.8.2  tls 	(plus:DI (match_operand:DI 1 "register_operand" "%r,r,r")
    449  1.1.1.1.8.2  tls 		 (match_operand:DI 2 "add_operand" "r,K,L")))]
    450  1.1.1.1.8.2  tls   ""
    451  1.1.1.1.8.2  tls   "@
    452  1.1.1.1.8.2  tls    addq %1,%2,%0
    453  1.1.1.1.8.2  tls    lda %0,%2(%1)
    454  1.1.1.1.8.2  tls    ldah %0,%h2(%1)")
    455  1.1.1.1.8.2  tls 
    456  1.1.1.1.8.2  tls ;; ??? Allow large constants when basing off the frame pointer or some
    457  1.1.1.1.8.2  tls ;; virtual register that may eliminate to the frame pointer.  This is
    458  1.1.1.1.8.2  tls ;; done because register elimination offsets will change the hi/lo split,
    459  1.1.1.1.8.2  tls ;; and if we split before reload, we will require additional instructions.
    460  1.1.1.1.8.2  tls 
    461  1.1.1.1.8.2  tls (define_insn "*adddi_fp_hack"
    462  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r,r")
    463  1.1.1.1.8.2  tls         (plus:DI (match_operand:DI 1 "reg_no_subreg_operand" "r,r,r")
    464  1.1.1.1.8.2  tls 		 (match_operand:DI 2 "const_int_operand" "K,L,n")))]
    465  1.1.1.1.8.2  tls   "NONSTRICT_REG_OK_FP_BASE_P (operands[1])
    466  1.1.1.1.8.2  tls    && INTVAL (operands[2]) >= 0
    467  1.1.1.1.8.2  tls    /* This is the largest constant an lda+ldah pair can add, minus
    468  1.1.1.1.8.2  tls       an upper bound on the displacement between SP and AP during
    469  1.1.1.1.8.2  tls       register elimination.  See INITIAL_ELIMINATION_OFFSET.  */
    470  1.1.1.1.8.2  tls    && INTVAL (operands[2])
    471  1.1.1.1.8.2  tls 	< (0x7fff8000
    472  1.1.1.1.8.2  tls 	   - FIRST_PSEUDO_REGISTER * UNITS_PER_WORD
    473  1.1.1.1.8.2  tls 	   - ALPHA_ROUND(crtl->outgoing_args_size)
    474  1.1.1.1.8.2  tls 	   - (ALPHA_ROUND (get_frame_size ()
    475  1.1.1.1.8.2  tls 			   + max_reg_num () * UNITS_PER_WORD
    476  1.1.1.1.8.2  tls 			   + crtl->args.pretend_args_size)
    477  1.1.1.1.8.2  tls 	      - crtl->args.pretend_args_size))"
    478  1.1.1.1.8.2  tls   "@
    479  1.1.1.1.8.2  tls    lda %0,%2(%1)
    480  1.1.1.1.8.2  tls    ldah %0,%h2(%1)
    481  1.1.1.1.8.2  tls    #")
    482  1.1.1.1.8.2  tls 
    483  1.1.1.1.8.2  tls ;; Don't do this if we are adjusting SP since we don't want to do it
    484  1.1.1.1.8.2  tls ;; in two steps.  Don't split FP sources for the reason listed above.
    485  1.1.1.1.8.2  tls (define_split
    486  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
    487  1.1.1.1.8.2  tls 	(plus:DI (match_operand:DI 1 "register_operand" "")
    488  1.1.1.1.8.2  tls 		 (match_operand:DI 2 "const_int_operand" "")))]
    489  1.1.1.1.8.2  tls   "! add_operand (operands[2], DImode)
    490  1.1.1.1.8.2  tls    && operands[0] != stack_pointer_rtx
    491  1.1.1.1.8.2  tls    && operands[1] != frame_pointer_rtx
    492  1.1.1.1.8.2  tls    && operands[1] != arg_pointer_rtx"
    493  1.1.1.1.8.2  tls   [(set (match_dup 0) (plus:DI (match_dup 1) (match_dup 3)))
    494  1.1.1.1.8.2  tls    (set (match_dup 0) (plus:DI (match_dup 0) (match_dup 4)))]
    495  1.1.1.1.8.2  tls {
    496  1.1.1.1.8.2  tls   HOST_WIDE_INT val = INTVAL (operands[2]);
    497  1.1.1.1.8.2  tls   HOST_WIDE_INT low = (val & 0xffff) - 2 * (val & 0x8000);
    498  1.1.1.1.8.2  tls   HOST_WIDE_INT rest = val - low;
    499  1.1.1.1.8.2  tls   rtx rest_rtx = GEN_INT (rest);
    500  1.1.1.1.8.2  tls 
    501  1.1.1.1.8.2  tls   operands[4] = GEN_INT (low);
    502  1.1.1.1.8.2  tls   if (satisfies_constraint_L (rest_rtx))
    503  1.1.1.1.8.2  tls     operands[3] = rest_rtx;
    504  1.1.1.1.8.2  tls   else if (can_create_pseudo_p ())
    505  1.1.1.1.8.2  tls     {
    506  1.1.1.1.8.2  tls       operands[3] = gen_reg_rtx (DImode);
    507  1.1.1.1.8.2  tls       emit_move_insn (operands[3], operands[2]);
    508  1.1.1.1.8.2  tls       emit_insn (gen_adddi3 (operands[0], operands[1], operands[3]));
    509  1.1.1.1.8.2  tls       DONE;
    510  1.1.1.1.8.2  tls     }
    511  1.1.1.1.8.2  tls   else
    512  1.1.1.1.8.2  tls     FAIL;
    513  1.1.1.1.8.2  tls })
    514  1.1.1.1.8.2  tls 
    515  1.1.1.1.8.2  tls (define_insn "*saddl"
    516  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r,r")
    517  1.1.1.1.8.2  tls 	(plus:SI (mult:SI (match_operand:SI 1 "reg_not_elim_operand" "r,r")
    518  1.1.1.1.8.2  tls 			  (match_operand:SI 2 "const48_operand" "I,I"))
    519  1.1.1.1.8.2  tls 		 (match_operand:SI 3 "sext_add_operand" "rI,O")))]
    520  1.1.1.1.8.2  tls   ""
    521  1.1.1.1.8.2  tls   "@
    522  1.1.1.1.8.2  tls    s%2addl %1,%3,%0
    523  1.1.1.1.8.2  tls    s%2subl %1,%n3,%0")
    524  1.1.1.1.8.2  tls 
    525  1.1.1.1.8.2  tls (define_insn "*saddl_se"
    526  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r")
    527  1.1.1.1.8.2  tls 	(sign_extend:DI
    528  1.1.1.1.8.2  tls 	 (plus:SI (mult:SI (match_operand:SI 1 "reg_not_elim_operand" "r,r")
    529  1.1.1.1.8.2  tls 			   (match_operand:SI 2 "const48_operand" "I,I"))
    530  1.1.1.1.8.2  tls 		  (match_operand:SI 3 "sext_add_operand" "rI,O"))))]
    531  1.1.1.1.8.2  tls   ""
    532  1.1.1.1.8.2  tls   "@
    533  1.1.1.1.8.2  tls    s%2addl %1,%3,%0
    534  1.1.1.1.8.2  tls    s%2subl %1,%n3,%0")
    535  1.1.1.1.8.2  tls 
    536  1.1.1.1.8.2  tls (define_split
    537  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
    538  1.1.1.1.8.2  tls 	(sign_extend:DI
    539  1.1.1.1.8.2  tls 	 (plus:SI (mult:SI (match_operator:SI 1 "comparison_operator"
    540  1.1.1.1.8.2  tls 					      [(match_operand 2 "" "")
    541  1.1.1.1.8.2  tls 					       (match_operand 3 "" "")])
    542  1.1.1.1.8.2  tls 			   (match_operand:SI 4 "const48_operand" ""))
    543  1.1.1.1.8.2  tls 		  (match_operand:SI 5 "sext_add_operand" ""))))
    544  1.1.1.1.8.2  tls    (clobber (match_operand:DI 6 "reg_not_elim_operand" ""))]
    545  1.1.1.1.8.2  tls   ""
    546  1.1.1.1.8.2  tls   [(set (match_dup 6) (match_dup 7))
    547  1.1.1.1.8.2  tls    (set (match_dup 0)
    548  1.1.1.1.8.2  tls 	(sign_extend:DI (plus:SI (mult:SI (match_dup 8) (match_dup 4))
    549  1.1.1.1.8.2  tls 				 (match_dup 5))))]
    550  1.1.1.1.8.2  tls {
    551  1.1.1.1.8.2  tls   operands[7] = gen_rtx_fmt_ee (GET_CODE (operands[1]), DImode,
    552  1.1.1.1.8.2  tls 				operands[2], operands[3]);
    553  1.1.1.1.8.2  tls   operands[8] = gen_lowpart (SImode, operands[6]);
    554  1.1.1.1.8.2  tls })
    555  1.1.1.1.8.2  tls 
    556  1.1.1.1.8.2  tls (define_insn "*saddq"
    557  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r")
    558  1.1.1.1.8.2  tls 	(plus:DI (mult:DI (match_operand:DI 1 "reg_not_elim_operand" "r,r")
    559  1.1.1.1.8.2  tls 			  (match_operand:DI 2 "const48_operand" "I,I"))
    560  1.1.1.1.8.2  tls 		 (match_operand:DI 3 "sext_add_operand" "rI,O")))]
    561  1.1.1.1.8.2  tls   ""
    562  1.1.1.1.8.2  tls   "@
    563  1.1.1.1.8.2  tls    s%2addq %1,%3,%0
    564  1.1.1.1.8.2  tls    s%2subq %1,%n3,%0")
    565  1.1.1.1.8.2  tls 
    566  1.1.1.1.8.2  tls (define_insn "addvdi3"
    567  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r")
    568  1.1.1.1.8.2  tls 	(plus:DI (match_operand:DI 1 "reg_or_0_operand" "%rJ,rJ")
    569  1.1.1.1.8.2  tls 		 (match_operand:DI 2 "sext_add_operand" "rI,O")))
    570  1.1.1.1.8.2  tls    (trap_if (ne (plus:TI (sign_extend:TI (match_dup 1))
    571  1.1.1.1.8.2  tls 			 (sign_extend:TI (match_dup 2)))
    572  1.1.1.1.8.2  tls 		(sign_extend:TI (plus:DI (match_dup 1)
    573  1.1.1.1.8.2  tls 					 (match_dup 2))))
    574  1.1.1.1.8.2  tls 	    (const_int 0))]
    575  1.1.1.1.8.2  tls   ""
    576  1.1.1.1.8.2  tls   "@
    577  1.1.1.1.8.2  tls    addqv %r1,%2,%0
    578  1.1.1.1.8.2  tls    subqv %r1,%n2,%0")
    579  1.1.1.1.8.2  tls 
    580  1.1.1.1.8.2  tls (define_insn "negsi2"
    581  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
    582  1.1.1.1.8.2  tls 	(neg:SI (match_operand:SI 1 "reg_or_8bit_operand" "rI")))]
    583  1.1.1.1.8.2  tls   ""
    584  1.1.1.1.8.2  tls   "subl $31,%1,%0")
    585  1.1.1.1.8.2  tls 
    586  1.1.1.1.8.2  tls (define_insn "*negsi_se"
    587  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    588  1.1.1.1.8.2  tls 	(sign_extend:DI (neg:SI
    589  1.1.1.1.8.2  tls 			 (match_operand:SI 1 "reg_or_8bit_operand" "rI"))))]
    590  1.1.1.1.8.2  tls   ""
    591  1.1.1.1.8.2  tls   "subl $31,%1,%0")
    592  1.1.1.1.8.2  tls 
    593  1.1.1.1.8.2  tls (define_insn "negvsi2"
    594  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
    595  1.1.1.1.8.2  tls 	(neg:SI (match_operand:SI 1 "register_operand" "r")))
    596  1.1.1.1.8.2  tls    (trap_if (ne (neg:DI (sign_extend:DI (match_dup 1)))
    597  1.1.1.1.8.2  tls 		(sign_extend:DI (neg:SI (match_dup 1))))
    598  1.1.1.1.8.2  tls 	    (const_int 0))]
    599  1.1.1.1.8.2  tls   ""
    600  1.1.1.1.8.2  tls   "sublv $31,%1,%0")
    601  1.1.1.1.8.2  tls 
    602  1.1.1.1.8.2  tls (define_insn "negdi2"
    603  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    604  1.1.1.1.8.2  tls 	(neg:DI (match_operand:DI 1 "reg_or_8bit_operand" "rI")))]
    605  1.1.1.1.8.2  tls   ""
    606  1.1.1.1.8.2  tls   "subq $31,%1,%0")
    607  1.1.1.1.8.2  tls 
    608  1.1.1.1.8.2  tls (define_insn "negvdi2"
    609  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    610  1.1.1.1.8.2  tls 	(neg:DI (match_operand:DI 1 "register_operand" "r")))
    611  1.1.1.1.8.2  tls    (trap_if (ne (neg:TI (sign_extend:TI (match_dup 1)))
    612  1.1.1.1.8.2  tls 		(sign_extend:TI (neg:DI (match_dup 1))))
    613  1.1.1.1.8.2  tls 	    (const_int 0))]
    614  1.1.1.1.8.2  tls   ""
    615  1.1.1.1.8.2  tls   "subqv $31,%1,%0")
    616  1.1.1.1.8.2  tls 
    617  1.1.1.1.8.2  tls (define_insn "subsi3"
    618  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
    619  1.1.1.1.8.2  tls 	(minus:SI (match_operand:SI 1 "reg_or_0_operand" "rJ")
    620  1.1.1.1.8.2  tls 		  (match_operand:SI 2 "reg_or_8bit_operand" "rI")))]
    621  1.1.1.1.8.2  tls   ""
    622  1.1.1.1.8.2  tls   "subl %r1,%2,%0")
    623  1.1.1.1.8.2  tls 
    624  1.1.1.1.8.2  tls (define_insn "*subsi_se"
    625  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    626  1.1.1.1.8.2  tls 	(sign_extend:DI (minus:SI (match_operand:SI 1 "reg_or_0_operand" "rJ")
    627  1.1.1.1.8.2  tls 				  (match_operand:SI 2 "reg_or_8bit_operand" "rI"))))]
    628  1.1.1.1.8.2  tls   ""
    629  1.1.1.1.8.2  tls   "subl %r1,%2,%0")
    630  1.1.1.1.8.2  tls 
    631  1.1.1.1.8.2  tls (define_insn "*subsi_se2"
    632  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    633  1.1.1.1.8.2  tls 	(sign_extend:DI
    634  1.1.1.1.8.2  tls 	 (subreg:SI (minus:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
    635  1.1.1.1.8.2  tls 			      (match_operand:DI 2 "reg_or_8bit_operand" "rI"))
    636  1.1.1.1.8.2  tls 		    0)))]
    637  1.1.1.1.8.2  tls   ""
    638  1.1.1.1.8.2  tls   "subl %r1,%2,%0")
    639  1.1.1.1.8.2  tls 
    640  1.1.1.1.8.2  tls (define_insn "subvsi3"
    641  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
    642  1.1.1.1.8.2  tls 	(minus:SI (match_operand:SI 1 "reg_or_0_operand" "rJ")
    643  1.1.1.1.8.2  tls 		  (match_operand:SI 2 "reg_or_8bit_operand" "rI")))
    644  1.1.1.1.8.2  tls    (trap_if (ne (minus:DI (sign_extend:DI (match_dup 1))
    645  1.1.1.1.8.2  tls 			  (sign_extend:DI (match_dup 2)))
    646  1.1.1.1.8.2  tls 		(sign_extend:DI (minus:SI (match_dup 1)
    647  1.1.1.1.8.2  tls 					  (match_dup 2))))
    648  1.1.1.1.8.2  tls 	    (const_int 0))]
    649  1.1.1.1.8.2  tls   ""
    650  1.1.1.1.8.2  tls   "sublv %r1,%2,%0")
    651  1.1.1.1.8.2  tls 
    652  1.1.1.1.8.2  tls (define_insn "subdi3"
    653  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    654  1.1.1.1.8.2  tls 	(minus:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
    655  1.1.1.1.8.2  tls 		  (match_operand:DI 2 "reg_or_8bit_operand" "rI")))]
    656  1.1.1.1.8.2  tls   ""
    657  1.1.1.1.8.2  tls   "subq %r1,%2,%0")
    658  1.1.1.1.8.2  tls 
    659  1.1.1.1.8.2  tls (define_insn "*ssubl"
    660  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
    661  1.1.1.1.8.2  tls 	(minus:SI (mult:SI (match_operand:SI 1 "reg_not_elim_operand" "r")
    662  1.1.1.1.8.2  tls 			   (match_operand:SI 2 "const48_operand" "I"))
    663  1.1.1.1.8.2  tls 		  (match_operand:SI 3 "reg_or_8bit_operand" "rI")))]
    664  1.1.1.1.8.2  tls   ""
    665  1.1.1.1.8.2  tls   "s%2subl %1,%3,%0")
    666  1.1.1.1.8.2  tls 
    667  1.1.1.1.8.2  tls (define_insn "*ssubl_se"
    668  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    669  1.1.1.1.8.2  tls 	(sign_extend:DI
    670  1.1.1.1.8.2  tls 	 (minus:SI (mult:SI (match_operand:SI 1 "reg_not_elim_operand" "r")
    671  1.1.1.1.8.2  tls 			    (match_operand:SI 2 "const48_operand" "I"))
    672  1.1.1.1.8.2  tls 		   (match_operand:SI 3 "reg_or_8bit_operand" "rI"))))]
    673  1.1.1.1.8.2  tls   ""
    674  1.1.1.1.8.2  tls   "s%2subl %1,%3,%0")
    675  1.1.1.1.8.2  tls 
    676  1.1.1.1.8.2  tls (define_insn "*ssubq"
    677  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    678  1.1.1.1.8.2  tls 	(minus:DI (mult:DI (match_operand:DI 1 "reg_not_elim_operand" "r")
    679  1.1.1.1.8.2  tls 			   (match_operand:DI 2 "const48_operand" "I"))
    680  1.1.1.1.8.2  tls 		  (match_operand:DI 3 "reg_or_8bit_operand" "rI")))]
    681  1.1.1.1.8.2  tls   ""
    682  1.1.1.1.8.2  tls   "s%2subq %1,%3,%0")
    683  1.1.1.1.8.2  tls 
    684  1.1.1.1.8.2  tls (define_insn "subvdi3"
    685  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    686  1.1.1.1.8.2  tls 	(minus:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
    687  1.1.1.1.8.2  tls 		  (match_operand:DI 2 "reg_or_8bit_operand" "rI")))
    688  1.1.1.1.8.2  tls    (trap_if (ne (minus:TI (sign_extend:TI (match_dup 1))
    689  1.1.1.1.8.2  tls 			  (sign_extend:TI (match_dup 2)))
    690  1.1.1.1.8.2  tls 		(sign_extend:TI (minus:DI (match_dup 1)
    691  1.1.1.1.8.2  tls 					  (match_dup 2))))
    692  1.1.1.1.8.2  tls 	    (const_int 0))]
    693  1.1.1.1.8.2  tls   ""
    694  1.1.1.1.8.2  tls   "subqv %r1,%2,%0")
    695  1.1.1.1.8.2  tls 
    696  1.1.1.1.8.2  tls ;; The Unicos/Mk assembler doesn't support mull.
    697  1.1.1.1.8.2  tls 
    698  1.1.1.1.8.2  tls (define_insn "mulsi3"
    699  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
    700  1.1.1.1.8.2  tls 	(mult:SI (match_operand:SI 1 "reg_or_0_operand" "%rJ")
    701  1.1.1.1.8.2  tls 		 (match_operand:SI 2 "reg_or_8bit_operand" "rI")))]
    702  1.1.1.1.8.2  tls   "!TARGET_ABI_UNICOSMK"
    703  1.1.1.1.8.2  tls   "mull %r1,%2,%0"
    704  1.1.1.1.8.2  tls   [(set_attr "type" "imul")
    705  1.1.1.1.8.2  tls    (set_attr "opsize" "si")])
    706  1.1.1.1.8.2  tls 
    707  1.1.1.1.8.2  tls (define_insn "*mulsi_se"
    708  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    709  1.1.1.1.8.2  tls 	(sign_extend:DI
    710  1.1.1.1.8.2  tls 	  (mult:SI (match_operand:SI 1 "reg_or_0_operand" "%rJ")
    711  1.1.1.1.8.2  tls 		   (match_operand:SI 2 "reg_or_8bit_operand" "rI"))))]
    712  1.1.1.1.8.2  tls   "!TARGET_ABI_UNICOSMK"
    713  1.1.1.1.8.2  tls   "mull %r1,%2,%0"
    714  1.1.1.1.8.2  tls   [(set_attr "type" "imul")
    715  1.1.1.1.8.2  tls    (set_attr "opsize" "si")])
    716  1.1.1.1.8.2  tls 
    717  1.1.1.1.8.2  tls (define_insn "mulvsi3"
    718  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
    719  1.1.1.1.8.2  tls 	(mult:SI (match_operand:SI 1 "reg_or_0_operand" "%rJ")
    720  1.1.1.1.8.2  tls 		 (match_operand:SI 2 "reg_or_8bit_operand" "rI")))
    721  1.1.1.1.8.2  tls    (trap_if (ne (mult:DI (sign_extend:DI (match_dup 1))
    722  1.1.1.1.8.2  tls 			 (sign_extend:DI (match_dup 2)))
    723  1.1.1.1.8.2  tls 		(sign_extend:DI (mult:SI (match_dup 1)
    724  1.1.1.1.8.2  tls 					 (match_dup 2))))
    725  1.1.1.1.8.2  tls 	    (const_int 0))]
    726  1.1.1.1.8.2  tls   "!TARGET_ABI_UNICOSMK"
    727  1.1.1.1.8.2  tls   "mullv %r1,%2,%0"
    728  1.1.1.1.8.2  tls   [(set_attr "type" "imul")
    729  1.1.1.1.8.2  tls    (set_attr "opsize" "si")])
    730  1.1.1.1.8.2  tls 
    731  1.1.1.1.8.2  tls (define_insn "muldi3"
    732  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    733  1.1.1.1.8.2  tls 	(mult:DI (match_operand:DI 1 "reg_or_0_operand" "%rJ")
    734  1.1.1.1.8.2  tls 		 (match_operand:DI 2 "reg_or_8bit_operand" "rI")))]
    735  1.1.1.1.8.2  tls   ""
    736  1.1.1.1.8.2  tls   "mulq %r1,%2,%0"
    737  1.1.1.1.8.2  tls   [(set_attr "type" "imul")])
    738  1.1.1.1.8.2  tls 
    739  1.1.1.1.8.2  tls (define_insn "mulvdi3"
    740  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    741  1.1.1.1.8.2  tls 	(mult:DI (match_operand:DI 1 "reg_or_0_operand" "%rJ")
    742  1.1.1.1.8.2  tls 		 (match_operand:DI 2 "reg_or_8bit_operand" "rI")))
    743  1.1.1.1.8.2  tls    (trap_if (ne (mult:TI (sign_extend:TI (match_dup 1))
    744  1.1.1.1.8.2  tls 			 (sign_extend:TI (match_dup 2)))
    745  1.1.1.1.8.2  tls 		(sign_extend:TI (mult:DI (match_dup 1)
    746  1.1.1.1.8.2  tls 					 (match_dup 2))))
    747  1.1.1.1.8.2  tls 	    (const_int 0))]
    748  1.1.1.1.8.2  tls   ""
    749  1.1.1.1.8.2  tls   "mulqv %r1,%2,%0"
    750  1.1.1.1.8.2  tls   [(set_attr "type" "imul")])
    751  1.1.1.1.8.2  tls 
    752  1.1.1.1.8.2  tls (define_expand "umuldi3_highpart"
    753  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
    754  1.1.1.1.8.2  tls 	(truncate:DI
    755  1.1.1.1.8.2  tls 	 (lshiftrt:TI
    756  1.1.1.1.8.2  tls 	  (mult:TI (zero_extend:TI
    757  1.1.1.1.8.2  tls 		     (match_operand:DI 1 "register_operand" ""))
    758  1.1.1.1.8.2  tls 		   (match_operand:DI 2 "reg_or_8bit_operand" ""))
    759  1.1.1.1.8.2  tls 	  (const_int 64))))]
    760  1.1.1.1.8.2  tls   ""
    761  1.1.1.1.8.2  tls {
    762  1.1.1.1.8.2  tls   if (REG_P (operands[2]))
    763  1.1.1.1.8.2  tls     operands[2] = gen_rtx_ZERO_EXTEND (TImode, operands[2]);
    764  1.1.1.1.8.2  tls })
    765  1.1.1.1.8.2  tls 
    766  1.1.1.1.8.2  tls (define_insn "*umuldi3_highpart_reg"
    767  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    768  1.1.1.1.8.2  tls 	(truncate:DI
    769  1.1.1.1.8.2  tls 	 (lshiftrt:TI
    770  1.1.1.1.8.2  tls 	  (mult:TI (zero_extend:TI
    771  1.1.1.1.8.2  tls 		     (match_operand:DI 1 "register_operand" "r"))
    772  1.1.1.1.8.2  tls 		   (zero_extend:TI
    773  1.1.1.1.8.2  tls 		     (match_operand:DI 2 "register_operand" "r")))
    774  1.1.1.1.8.2  tls 	  (const_int 64))))]
    775  1.1.1.1.8.2  tls   ""
    776  1.1.1.1.8.2  tls   "umulh %1,%2,%0"
    777  1.1.1.1.8.2  tls   [(set_attr "type" "imul")
    778  1.1.1.1.8.2  tls    (set_attr "opsize" "udi")])
    779  1.1.1.1.8.2  tls 
    780  1.1.1.1.8.2  tls (define_insn "*umuldi3_highpart_const"
    781  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
    782  1.1.1.1.8.2  tls 	(truncate:DI
    783  1.1.1.1.8.2  tls 	 (lshiftrt:TI
    784  1.1.1.1.8.2  tls 	  (mult:TI (zero_extend:TI (match_operand:DI 1 "register_operand" "r"))
    785  1.1.1.1.8.2  tls 		   (match_operand:TI 2 "cint8_operand" "I"))
    786  1.1.1.1.8.2  tls 	  (const_int 64))))]
    787  1.1.1.1.8.2  tls   ""
    788  1.1.1.1.8.2  tls   "umulh %1,%2,%0"
    789  1.1.1.1.8.2  tls   [(set_attr "type" "imul")
    790  1.1.1.1.8.2  tls    (set_attr "opsize" "udi")])
    791  1.1.1.1.8.2  tls 
    793  1.1.1.1.8.2  tls ;; The divide and remainder operations take their inputs from r24 and
    794  1.1.1.1.8.2  tls ;; r25, put their output in r27, and clobber r23 and r28 on all
    795  1.1.1.1.8.2  tls ;; systems except Unicos/Mk. On Unicos, the standard library provides
    796  1.1.1.1.8.2  tls ;; subroutines which use the standard calling convention and work on
    797  1.1.1.1.8.2  tls ;; DImode operands.
    798  1.1.1.1.8.2  tls 
    799  1.1.1.1.8.2  tls ;; ??? Force sign-extension here because some versions of OSF/1 and
    800  1.1.1.1.8.2  tls ;; Interix/NT don't do the right thing if the inputs are not properly
    801  1.1.1.1.8.2  tls ;; sign-extended.  But Linux, for instance, does not have this
    802  1.1.1.1.8.2  tls ;; problem.  Is it worth the complication here to eliminate the sign
    803  1.1.1.1.8.2  tls ;; extension?
    804  1.1.1.1.8.2  tls 
    805  1.1.1.1.8.2  tls (define_expand "divsi3"
    806  1.1.1.1.8.2  tls   [(set (match_dup 3)
    807  1.1.1.1.8.2  tls 	(sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "")))
    808  1.1.1.1.8.2  tls    (set (match_dup 4)
    809  1.1.1.1.8.2  tls 	(sign_extend:DI (match_operand:SI 2 "nonimmediate_operand" "")))
    810  1.1.1.1.8.2  tls    (parallel [(set (match_dup 5)
    811  1.1.1.1.8.2  tls 		   (sign_extend:DI (div:SI (match_dup 3) (match_dup 4))))
    812  1.1.1.1.8.2  tls 	      (clobber (reg:DI 23))
    813  1.1.1.1.8.2  tls 	      (clobber (reg:DI 28))])
    814  1.1.1.1.8.2  tls    (set (match_operand:SI 0 "nonimmediate_operand" "")
    815  1.1.1.1.8.2  tls 	(subreg:SI (match_dup 5) 0))]
    816  1.1.1.1.8.2  tls   "! TARGET_ABI_OPEN_VMS && ! TARGET_ABI_UNICOSMK"
    817  1.1.1.1.8.2  tls {
    818  1.1.1.1.8.2  tls   operands[3] = gen_reg_rtx (DImode);
    819  1.1.1.1.8.2  tls   operands[4] = gen_reg_rtx (DImode);
    820  1.1.1.1.8.2  tls   operands[5] = gen_reg_rtx (DImode);
    821  1.1.1.1.8.2  tls })
    822  1.1.1.1.8.2  tls 
    823  1.1.1.1.8.2  tls (define_expand "udivsi3"
    824  1.1.1.1.8.2  tls   [(set (match_dup 3)
    825  1.1.1.1.8.2  tls 	(sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "")))
    826  1.1.1.1.8.2  tls    (set (match_dup 4)
    827  1.1.1.1.8.2  tls 	(sign_extend:DI (match_operand:SI 2 "nonimmediate_operand" "")))
    828  1.1.1.1.8.2  tls    (parallel [(set (match_dup 5)
    829  1.1.1.1.8.2  tls 		   (sign_extend:DI (udiv:SI (match_dup 3) (match_dup 4))))
    830  1.1.1.1.8.2  tls 	      (clobber (reg:DI 23))
    831  1.1.1.1.8.2  tls 	      (clobber (reg:DI 28))])
    832  1.1.1.1.8.2  tls    (set (match_operand:SI 0 "nonimmediate_operand" "")
    833  1.1.1.1.8.2  tls 	(subreg:SI (match_dup 5) 0))]
    834  1.1.1.1.8.2  tls   "! TARGET_ABI_OPEN_VMS && ! TARGET_ABI_UNICOSMK"
    835  1.1.1.1.8.2  tls {
    836  1.1.1.1.8.2  tls   operands[3] = gen_reg_rtx (DImode);
    837  1.1.1.1.8.2  tls   operands[4] = gen_reg_rtx (DImode);
    838  1.1.1.1.8.2  tls   operands[5] = gen_reg_rtx (DImode);
    839  1.1.1.1.8.2  tls })
    840  1.1.1.1.8.2  tls 
    841  1.1.1.1.8.2  tls (define_expand "modsi3"
    842  1.1.1.1.8.2  tls   [(set (match_dup 3)
    843  1.1.1.1.8.2  tls 	(sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "")))
    844  1.1.1.1.8.2  tls    (set (match_dup 4)
    845  1.1.1.1.8.2  tls 	(sign_extend:DI (match_operand:SI 2 "nonimmediate_operand" "")))
    846  1.1.1.1.8.2  tls    (parallel [(set (match_dup 5)
    847  1.1.1.1.8.2  tls 		   (sign_extend:DI (mod:SI (match_dup 3) (match_dup 4))))
    848  1.1.1.1.8.2  tls 	      (clobber (reg:DI 23))
    849  1.1.1.1.8.2  tls 	      (clobber (reg:DI 28))])
    850  1.1.1.1.8.2  tls    (set (match_operand:SI 0 "nonimmediate_operand" "")
    851  1.1.1.1.8.2  tls 	(subreg:SI (match_dup 5) 0))]
    852  1.1.1.1.8.2  tls   "! TARGET_ABI_OPEN_VMS && ! TARGET_ABI_UNICOSMK"
    853  1.1.1.1.8.2  tls {
    854  1.1.1.1.8.2  tls   operands[3] = gen_reg_rtx (DImode);
    855  1.1.1.1.8.2  tls   operands[4] = gen_reg_rtx (DImode);
    856  1.1.1.1.8.2  tls   operands[5] = gen_reg_rtx (DImode);
    857  1.1.1.1.8.2  tls })
    858  1.1.1.1.8.2  tls 
    859  1.1.1.1.8.2  tls (define_expand "umodsi3"
    860  1.1.1.1.8.2  tls   [(set (match_dup 3)
    861  1.1.1.1.8.2  tls 	(sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "")))
    862  1.1.1.1.8.2  tls    (set (match_dup 4)
    863  1.1.1.1.8.2  tls 	(sign_extend:DI (match_operand:SI 2 "nonimmediate_operand" "")))
    864  1.1.1.1.8.2  tls    (parallel [(set (match_dup 5)
    865  1.1.1.1.8.2  tls 		   (sign_extend:DI (umod:SI (match_dup 3) (match_dup 4))))
    866  1.1.1.1.8.2  tls 	      (clobber (reg:DI 23))
    867  1.1.1.1.8.2  tls 	      (clobber (reg:DI 28))])
    868  1.1.1.1.8.2  tls    (set (match_operand:SI 0 "nonimmediate_operand" "")
    869  1.1.1.1.8.2  tls 	(subreg:SI (match_dup 5) 0))]
    870  1.1.1.1.8.2  tls   "! TARGET_ABI_OPEN_VMS && ! TARGET_ABI_UNICOSMK"
    871  1.1.1.1.8.2  tls {
    872  1.1.1.1.8.2  tls   operands[3] = gen_reg_rtx (DImode);
    873  1.1.1.1.8.2  tls   operands[4] = gen_reg_rtx (DImode);
    874  1.1.1.1.8.2  tls   operands[5] = gen_reg_rtx (DImode);
    875  1.1.1.1.8.2  tls })
    876  1.1.1.1.8.2  tls 
    877  1.1.1.1.8.2  tls (define_expand "divdi3"
    878  1.1.1.1.8.2  tls   [(parallel [(set (match_operand:DI 0 "register_operand" "")
    879  1.1.1.1.8.2  tls 		   (div:DI (match_operand:DI 1 "register_operand" "")
    880  1.1.1.1.8.2  tls 			   (match_operand:DI 2 "register_operand" "")))
    881  1.1.1.1.8.2  tls 	      (clobber (reg:DI 23))
    882  1.1.1.1.8.2  tls 	      (clobber (reg:DI 28))])]
    883  1.1.1.1.8.2  tls   "! TARGET_ABI_OPEN_VMS && ! TARGET_ABI_UNICOSMK"
    884  1.1.1.1.8.2  tls   "")
    885  1.1.1.1.8.2  tls 
    886  1.1.1.1.8.2  tls (define_expand "udivdi3"
    887  1.1.1.1.8.2  tls   [(parallel [(set (match_operand:DI 0 "register_operand" "")
    888  1.1.1.1.8.2  tls 		   (udiv:DI (match_operand:DI 1 "register_operand" "")
    889  1.1.1.1.8.2  tls 			    (match_operand:DI 2 "register_operand" "")))
    890  1.1.1.1.8.2  tls 	      (clobber (reg:DI 23))
    891  1.1.1.1.8.2  tls 	      (clobber (reg:DI 28))])]
    892  1.1.1.1.8.2  tls   "! TARGET_ABI_OPEN_VMS && ! TARGET_ABI_UNICOSMK"
    893  1.1.1.1.8.2  tls   "")
    894  1.1.1.1.8.2  tls 
    895  1.1.1.1.8.2  tls (define_expand "moddi3"
    896  1.1.1.1.8.2  tls   [(use (match_operand:DI 0 "register_operand" ""))
    897  1.1.1.1.8.2  tls    (use (match_operand:DI 1 "register_operand" ""))
    898  1.1.1.1.8.2  tls    (use (match_operand:DI 2 "register_operand" ""))]
    899  1.1.1.1.8.2  tls   "!TARGET_ABI_OPEN_VMS"
    900  1.1.1.1.8.2  tls {
    901  1.1.1.1.8.2  tls   if (TARGET_ABI_UNICOSMK)
    902  1.1.1.1.8.2  tls     emit_insn (gen_moddi3_umk (operands[0], operands[1], operands[2]));
    903  1.1.1.1.8.2  tls   else
    904  1.1.1.1.8.2  tls     emit_insn (gen_moddi3_dft (operands[0], operands[1], operands[2]));
    905  1.1.1.1.8.2  tls   DONE;
    906  1.1.1.1.8.2  tls })
    907  1.1.1.1.8.2  tls 
    908  1.1.1.1.8.2  tls (define_expand "moddi3_dft"
    909  1.1.1.1.8.2  tls   [(parallel [(set (match_operand:DI 0 "register_operand" "")
    910  1.1.1.1.8.2  tls 		   (mod:DI (match_operand:DI 1 "register_operand" "")
    911  1.1.1.1.8.2  tls 			   (match_operand:DI 2 "register_operand" "")))
    912  1.1.1.1.8.2  tls 	      (clobber (reg:DI 23))
    913  1.1.1.1.8.2  tls 	      (clobber (reg:DI 28))])]
    914  1.1.1.1.8.2  tls   "! TARGET_ABI_OPEN_VMS && ! TARGET_ABI_UNICOSMK"
    915  1.1.1.1.8.2  tls   "")
    916  1.1.1.1.8.2  tls 
    917  1.1.1.1.8.2  tls ;; On Unicos/Mk, we do as the system's C compiler does:
    918  1.1.1.1.8.2  tls ;; compute the quotient, multiply and subtract.
    919  1.1.1.1.8.2  tls 
    920  1.1.1.1.8.2  tls (define_expand "moddi3_umk"
    921  1.1.1.1.8.2  tls   [(use (match_operand:DI 0 "register_operand" ""))
    922  1.1.1.1.8.2  tls    (use (match_operand:DI 1 "register_operand" ""))
    923  1.1.1.1.8.2  tls    (use (match_operand:DI 2 "register_operand" ""))]
    924  1.1.1.1.8.2  tls   "TARGET_ABI_UNICOSMK"
    925  1.1.1.1.8.2  tls {
    926  1.1.1.1.8.2  tls   rtx div, mul = gen_reg_rtx (DImode);
    927  1.1.1.1.8.2  tls 
    928  1.1.1.1.8.2  tls   div = expand_binop (DImode, sdiv_optab, operands[1], operands[2],
    929  1.1.1.1.8.2  tls 		      NULL_RTX, 0, OPTAB_LIB);
    930  1.1.1.1.8.2  tls   div = force_reg (DImode, div);
    931  1.1.1.1.8.2  tls   emit_insn (gen_muldi3 (mul, operands[2], div));
    932  1.1.1.1.8.2  tls   emit_insn (gen_subdi3 (operands[0], operands[1], mul));
    933  1.1.1.1.8.2  tls   DONE;
    934  1.1.1.1.8.2  tls })
    935  1.1.1.1.8.2  tls 
    936  1.1.1.1.8.2  tls (define_expand "umoddi3"
    937  1.1.1.1.8.2  tls   [(use (match_operand:DI 0 "register_operand" ""))
    938  1.1.1.1.8.2  tls    (use (match_operand:DI 1 "register_operand" ""))
    939  1.1.1.1.8.2  tls    (use (match_operand:DI 2 "register_operand" ""))]
    940  1.1.1.1.8.2  tls   "! TARGET_ABI_OPEN_VMS"
    941  1.1.1.1.8.2  tls {
    942  1.1.1.1.8.2  tls   if (TARGET_ABI_UNICOSMK)
    943  1.1.1.1.8.2  tls     emit_insn (gen_umoddi3_umk (operands[0], operands[1], operands[2]));
    944  1.1.1.1.8.2  tls   else
    945  1.1.1.1.8.2  tls     emit_insn (gen_umoddi3_dft (operands[0], operands[1], operands[2]));
    946  1.1.1.1.8.2  tls   DONE;
    947  1.1.1.1.8.2  tls })
    948  1.1.1.1.8.2  tls 
    949  1.1.1.1.8.2  tls (define_expand "umoddi3_dft"
    950  1.1.1.1.8.2  tls   [(parallel [(set (match_operand:DI 0 "register_operand" "")
    951  1.1.1.1.8.2  tls 		   (umod:DI (match_operand:DI 1 "register_operand" "")
    952  1.1.1.1.8.2  tls 			    (match_operand:DI 2 "register_operand" "")))
    953  1.1.1.1.8.2  tls 	      (clobber (reg:DI 23))
    954  1.1.1.1.8.2  tls 	      (clobber (reg:DI 28))])]
    955  1.1.1.1.8.2  tls   "! TARGET_ABI_OPEN_VMS && ! TARGET_ABI_UNICOSMK"
    956  1.1.1.1.8.2  tls   "")
    957  1.1.1.1.8.2  tls 
    958  1.1.1.1.8.2  tls (define_expand "umoddi3_umk"
    959  1.1.1.1.8.2  tls   [(use (match_operand:DI 0 "register_operand" ""))
    960  1.1.1.1.8.2  tls    (use (match_operand:DI 1 "register_operand" ""))
    961  1.1.1.1.8.2  tls    (use (match_operand:DI 2 "register_operand" ""))]
    962  1.1.1.1.8.2  tls   "TARGET_ABI_UNICOSMK"
    963  1.1.1.1.8.2  tls {
    964  1.1.1.1.8.2  tls   rtx div, mul = gen_reg_rtx (DImode);
    965  1.1.1.1.8.2  tls 
    966  1.1.1.1.8.2  tls   div = expand_binop (DImode, udiv_optab, operands[1], operands[2],
    967  1.1.1.1.8.2  tls 		      NULL_RTX, 1, OPTAB_LIB);
    968  1.1.1.1.8.2  tls   div = force_reg (DImode, div);
    969  1.1.1.1.8.2  tls   emit_insn (gen_muldi3 (mul, operands[2], div));
    970  1.1.1.1.8.2  tls   emit_insn (gen_subdi3 (operands[0], operands[1], mul));
    971  1.1.1.1.8.2  tls   DONE;
    972  1.1.1.1.8.2  tls })
    973  1.1.1.1.8.2  tls 
    974  1.1.1.1.8.2  tls ;; Lengths of 8 for ldq $t12,__divq($gp); jsr $t9,($t12),__divq as
    975  1.1.1.1.8.2  tls ;; expanded by the assembler.
    976  1.1.1.1.8.2  tls 
    977  1.1.1.1.8.2  tls (define_insn_and_split "*divmodsi_internal_er"
    978  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=c")
    979  1.1.1.1.8.2  tls 	(sign_extend:DI (match_operator:SI 3 "divmod_operator"
    980  1.1.1.1.8.2  tls 			[(match_operand:DI 1 "register_operand" "a")
    981  1.1.1.1.8.2  tls 			 (match_operand:DI 2 "register_operand" "b")])))
    982  1.1.1.1.8.2  tls    (clobber (reg:DI 23))
    983  1.1.1.1.8.2  tls    (clobber (reg:DI 28))]
    984  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS"
    985  1.1.1.1.8.2  tls   "#"
    986  1.1.1.1.8.2  tls   "&& reload_completed"
    987  1.1.1.1.8.2  tls   [(parallel [(set (match_dup 0)
    988  1.1.1.1.8.2  tls 		   (sign_extend:DI (match_dup 3)))
    989  1.1.1.1.8.2  tls 	      (use (match_dup 0))
    990  1.1.1.1.8.2  tls 	      (use (match_dup 4))
    991  1.1.1.1.8.2  tls 	      (clobber (reg:DI 23))
    992  1.1.1.1.8.2  tls 	      (clobber (reg:DI 28))])]
    993  1.1.1.1.8.2  tls {
    994  1.1.1.1.8.2  tls   const char *str;
    995  1.1.1.1.8.2  tls   switch (GET_CODE (operands[3]))
    996  1.1.1.1.8.2  tls     {
    997  1.1.1.1.8.2  tls     case DIV: 
    998  1.1.1.1.8.2  tls       str = "__divl";
    999  1.1.1.1.8.2  tls       break; 
   1000  1.1.1.1.8.2  tls     case UDIV:
   1001  1.1.1.1.8.2  tls       str = "__divlu";
   1002  1.1.1.1.8.2  tls       break;
   1003  1.1.1.1.8.2  tls     case MOD:
   1004  1.1.1.1.8.2  tls       str = "__reml";
   1005  1.1.1.1.8.2  tls       break;
   1006  1.1.1.1.8.2  tls     case UMOD:
   1007  1.1.1.1.8.2  tls       str = "__remlu";
   1008  1.1.1.1.8.2  tls       break;
   1009  1.1.1.1.8.2  tls     default:
   1010  1.1.1.1.8.2  tls       gcc_unreachable ();
   1011  1.1.1.1.8.2  tls     }
   1012  1.1.1.1.8.2  tls   operands[4] = GEN_INT (alpha_next_sequence_number++);
   1013  1.1.1.1.8.2  tls   emit_insn (gen_movdi_er_high_g (operands[0], pic_offset_table_rtx,
   1014  1.1.1.1.8.2  tls 				  gen_rtx_SYMBOL_REF (DImode, str),
   1015  1.1.1.1.8.2  tls 				  operands[4]));
   1016  1.1.1.1.8.2  tls }
   1017  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   1018  1.1.1.1.8.2  tls    (set_attr "length" "8")])
   1019  1.1.1.1.8.2  tls 
   1020  1.1.1.1.8.2  tls (define_insn "*divmodsi_internal_er_1"
   1021  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=c")
   1022  1.1.1.1.8.2  tls 	(sign_extend:DI (match_operator:SI 3 "divmod_operator"
   1023  1.1.1.1.8.2  tls                         [(match_operand:DI 1 "register_operand" "a")
   1024  1.1.1.1.8.2  tls                          (match_operand:DI 2 "register_operand" "b")])))
   1025  1.1.1.1.8.2  tls    (use (match_operand:DI 4 "register_operand" "c"))
   1026  1.1.1.1.8.2  tls    (use (match_operand 5 "const_int_operand" ""))
   1027  1.1.1.1.8.2  tls    (clobber (reg:DI 23))
   1028  1.1.1.1.8.2  tls    (clobber (reg:DI 28))]
   1029  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS"
   1030  1.1.1.1.8.2  tls   "jsr $23,($27),__%E3%j5"
   1031  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   1032  1.1.1.1.8.2  tls    (set_attr "length" "4")])
   1033  1.1.1.1.8.2  tls 
   1034  1.1.1.1.8.2  tls (define_insn "*divmodsi_internal"
   1035  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=c")
   1036  1.1.1.1.8.2  tls 	(sign_extend:DI (match_operator:SI 3 "divmod_operator"
   1037  1.1.1.1.8.2  tls 			[(match_operand:DI 1 "register_operand" "a")
   1038  1.1.1.1.8.2  tls 			 (match_operand:DI 2 "register_operand" "b")])))
   1039  1.1.1.1.8.2  tls    (clobber (reg:DI 23))
   1040  1.1.1.1.8.2  tls    (clobber (reg:DI 28))]
   1041  1.1.1.1.8.2  tls   "! TARGET_ABI_OPEN_VMS && ! TARGET_ABI_UNICOSMK"
   1042  1.1.1.1.8.2  tls   "%E3 %1,%2,%0"
   1043  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   1044  1.1.1.1.8.2  tls    (set_attr "length" "8")])
   1045  1.1.1.1.8.2  tls 
   1046  1.1.1.1.8.2  tls (define_insn_and_split "*divmoddi_internal_er"
   1047  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=c")
   1048  1.1.1.1.8.2  tls 	(match_operator:DI 3 "divmod_operator"
   1049  1.1.1.1.8.2  tls 			[(match_operand:DI 1 "register_operand" "a")
   1050  1.1.1.1.8.2  tls 			 (match_operand:DI 2 "register_operand" "b")]))
   1051  1.1.1.1.8.2  tls    (clobber (reg:DI 23))
   1052  1.1.1.1.8.2  tls    (clobber (reg:DI 28))]
   1053  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS"
   1054  1.1.1.1.8.2  tls   "#"
   1055  1.1.1.1.8.2  tls   "&& reload_completed"
   1056  1.1.1.1.8.2  tls   [(parallel [(set (match_dup 0) (match_dup 3))
   1057  1.1.1.1.8.2  tls 	      (use (match_dup 0))
   1058  1.1.1.1.8.2  tls 	      (use (match_dup 4))
   1059  1.1.1.1.8.2  tls 	      (clobber (reg:DI 23))
   1060  1.1.1.1.8.2  tls 	      (clobber (reg:DI 28))])]
   1061  1.1.1.1.8.2  tls {
   1062  1.1.1.1.8.2  tls   const char *str;
   1063  1.1.1.1.8.2  tls   switch (GET_CODE (operands[3]))
   1064  1.1.1.1.8.2  tls     {
   1065  1.1.1.1.8.2  tls     case DIV: 
   1066  1.1.1.1.8.2  tls       str = "__divq";
   1067  1.1.1.1.8.2  tls       break; 
   1068  1.1.1.1.8.2  tls     case UDIV:
   1069  1.1.1.1.8.2  tls       str = "__divqu";
   1070  1.1.1.1.8.2  tls       break;
   1071  1.1.1.1.8.2  tls     case MOD:
   1072  1.1.1.1.8.2  tls       str = "__remq";
   1073  1.1.1.1.8.2  tls       break;
   1074  1.1.1.1.8.2  tls     case UMOD:
   1075  1.1.1.1.8.2  tls       str = "__remqu";
   1076  1.1.1.1.8.2  tls       break;
   1077  1.1.1.1.8.2  tls     default:
   1078  1.1.1.1.8.2  tls       gcc_unreachable ();
   1079  1.1.1.1.8.2  tls     }
   1080  1.1.1.1.8.2  tls   operands[4] = GEN_INT (alpha_next_sequence_number++);
   1081  1.1.1.1.8.2  tls   emit_insn (gen_movdi_er_high_g (operands[0], pic_offset_table_rtx,
   1082  1.1.1.1.8.2  tls 				  gen_rtx_SYMBOL_REF (DImode, str),
   1083  1.1.1.1.8.2  tls 				  operands[4]));
   1084  1.1.1.1.8.2  tls }
   1085  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   1086  1.1.1.1.8.2  tls    (set_attr "length" "8")])
   1087  1.1.1.1.8.2  tls 
   1088  1.1.1.1.8.2  tls (define_insn "*divmoddi_internal_er_1"
   1089  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=c")
   1090  1.1.1.1.8.2  tls 	(match_operator:DI 3 "divmod_operator"
   1091  1.1.1.1.8.2  tls                         [(match_operand:DI 1 "register_operand" "a")
   1092  1.1.1.1.8.2  tls                          (match_operand:DI 2 "register_operand" "b")]))
   1093  1.1.1.1.8.2  tls    (use (match_operand:DI 4 "register_operand" "c"))
   1094  1.1.1.1.8.2  tls    (use (match_operand 5 "const_int_operand" ""))
   1095  1.1.1.1.8.2  tls    (clobber (reg:DI 23))
   1096  1.1.1.1.8.2  tls    (clobber (reg:DI 28))]
   1097  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS"
   1098  1.1.1.1.8.2  tls   "jsr $23,($27),__%E3%j5"
   1099  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   1100  1.1.1.1.8.2  tls    (set_attr "length" "4")])
   1101  1.1.1.1.8.2  tls 
   1102  1.1.1.1.8.2  tls (define_insn "*divmoddi_internal"
   1103  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=c")
   1104  1.1.1.1.8.2  tls 	(match_operator:DI 3 "divmod_operator"
   1105  1.1.1.1.8.2  tls 			[(match_operand:DI 1 "register_operand" "a")
   1106  1.1.1.1.8.2  tls 			 (match_operand:DI 2 "register_operand" "b")]))
   1107  1.1.1.1.8.2  tls    (clobber (reg:DI 23))
   1108  1.1.1.1.8.2  tls    (clobber (reg:DI 28))]
   1109  1.1.1.1.8.2  tls   "! TARGET_ABI_OPEN_VMS && ! TARGET_ABI_UNICOSMK"
   1110  1.1.1.1.8.2  tls   "%E3 %1,%2,%0"
   1111  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   1112  1.1.1.1.8.2  tls    (set_attr "length" "8")])
   1113  1.1.1.1.8.2  tls 
   1115  1.1.1.1.8.2  tls ;; Next are the basic logical operations.  We only expose the DImode operations
   1116  1.1.1.1.8.2  tls ;; to the rtl expanders, but SImode versions exist for combine as well as for
   1117  1.1.1.1.8.2  tls ;; the atomic operation splitters.
   1118  1.1.1.1.8.2  tls 
   1119  1.1.1.1.8.2  tls (define_insn "*andsi_internal"
   1120  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r,r,r")
   1121  1.1.1.1.8.2  tls 	(and:SI (match_operand:SI 1 "reg_or_0_operand" "%rJ,rJ,rJ")
   1122  1.1.1.1.8.2  tls 		(match_operand:SI 2 "and_operand" "rI,N,MH")))]
   1123  1.1.1.1.8.2  tls   ""
   1124  1.1.1.1.8.2  tls   "@
   1125  1.1.1.1.8.2  tls    and %r1,%2,%0
   1126  1.1.1.1.8.2  tls    bic %r1,%N2,%0
   1127  1.1.1.1.8.2  tls    zapnot %r1,%m2,%0"
   1128  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,ilog,shift")])
   1129  1.1.1.1.8.2  tls 
   1130  1.1.1.1.8.2  tls (define_insn "anddi3"
   1131  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r,r")
   1132  1.1.1.1.8.2  tls 	(and:DI (match_operand:DI 1 "reg_or_0_operand" "%rJ,rJ,rJ")
   1133  1.1.1.1.8.2  tls 		(match_operand:DI 2 "and_operand" "rI,N,MH")))]
   1134  1.1.1.1.8.2  tls   ""
   1135  1.1.1.1.8.2  tls   "@
   1136  1.1.1.1.8.2  tls    and %r1,%2,%0
   1137  1.1.1.1.8.2  tls    bic %r1,%N2,%0
   1138  1.1.1.1.8.2  tls    zapnot %r1,%m2,%0"
   1139  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,ilog,shift")])
   1140  1.1.1.1.8.2  tls 
   1141  1.1.1.1.8.2  tls ;; There are times when we can split an AND into two AND insns.  This occurs
   1142  1.1.1.1.8.2  tls ;; when we can first clear any bytes and then clear anything else.  For
   1143  1.1.1.1.8.2  tls ;; example "I & 0xffff07" is "(I & 0xffffff) & 0xffffffffffffff07".
   1144  1.1.1.1.8.2  tls ;; Only do this when running on 64-bit host since the computations are
   1145  1.1.1.1.8.2  tls ;; too messy otherwise.
   1146  1.1.1.1.8.2  tls 
   1147  1.1.1.1.8.2  tls (define_split
   1148  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   1149  1.1.1.1.8.2  tls 	(and:DI (match_operand:DI 1 "register_operand" "")
   1150  1.1.1.1.8.2  tls 		(match_operand:DI 2 "const_int_operand" "")))]
   1151  1.1.1.1.8.2  tls   "HOST_BITS_PER_WIDE_INT == 64 && ! and_operand (operands[2], DImode)"
   1152  1.1.1.1.8.2  tls   [(set (match_dup 0) (and:DI (match_dup 1) (match_dup 3)))
   1153  1.1.1.1.8.2  tls    (set (match_dup 0) (and:DI (match_dup 0) (match_dup 4)))]
   1154  1.1.1.1.8.2  tls {
   1155  1.1.1.1.8.2  tls   unsigned HOST_WIDE_INT mask1 = INTVAL (operands[2]);
   1156  1.1.1.1.8.2  tls   unsigned HOST_WIDE_INT mask2 = mask1;
   1157  1.1.1.1.8.2  tls   int i;
   1158  1.1.1.1.8.2  tls 
   1159  1.1.1.1.8.2  tls   /* For each byte that isn't all zeros, make it all ones.  */
   1160  1.1.1.1.8.2  tls   for (i = 0; i < 64; i += 8)
   1161  1.1.1.1.8.2  tls     if ((mask1 & ((HOST_WIDE_INT) 0xff << i)) != 0)
   1162  1.1.1.1.8.2  tls       mask1 |= (HOST_WIDE_INT) 0xff << i;
   1163  1.1.1.1.8.2  tls 
   1164  1.1.1.1.8.2  tls   /* Now turn on any bits we've just turned off.  */
   1165  1.1.1.1.8.2  tls   mask2 |= ~ mask1;
   1166  1.1.1.1.8.2  tls 
   1167  1.1.1.1.8.2  tls   operands[3] = GEN_INT (mask1);
   1168  1.1.1.1.8.2  tls   operands[4] = GEN_INT (mask2);
   1169  1.1.1.1.8.2  tls })
   1170  1.1.1.1.8.2  tls 
   1171  1.1.1.1.8.2  tls (define_expand "zero_extendqihi2"
   1172  1.1.1.1.8.2  tls   [(set (match_operand:HI 0 "register_operand" "")
   1173  1.1.1.1.8.2  tls 	(zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "")))]
   1174  1.1.1.1.8.2  tls   ""
   1175  1.1.1.1.8.2  tls {
   1176  1.1.1.1.8.2  tls   if (! TARGET_BWX)
   1177  1.1.1.1.8.2  tls     operands[1] = force_reg (QImode, operands[1]);
   1178  1.1.1.1.8.2  tls })
   1179  1.1.1.1.8.2  tls 
   1180  1.1.1.1.8.2  tls (define_insn "*zero_extendqihi2_bwx"
   1181  1.1.1.1.8.2  tls   [(set (match_operand:HI 0 "register_operand" "=r,r")
   1182  1.1.1.1.8.2  tls 	(zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
   1183  1.1.1.1.8.2  tls   "TARGET_BWX"
   1184  1.1.1.1.8.2  tls   "@
   1185  1.1.1.1.8.2  tls    and %1,0xff,%0
   1186  1.1.1.1.8.2  tls    ldbu %0,%1"
   1187  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,ild")])
   1188  1.1.1.1.8.2  tls 
   1189  1.1.1.1.8.2  tls (define_insn "*zero_extendqihi2_nobwx"
   1190  1.1.1.1.8.2  tls   [(set (match_operand:HI 0 "register_operand" "=r")
   1191  1.1.1.1.8.2  tls 	(zero_extend:HI (match_operand:QI 1 "register_operand" "r")))]
   1192  1.1.1.1.8.2  tls   "! TARGET_BWX"
   1193  1.1.1.1.8.2  tls   "and %1,0xff,%0"
   1194  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   1195  1.1.1.1.8.2  tls 
   1196  1.1.1.1.8.2  tls (define_expand "zero_extendqisi2"
   1197  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "")
   1198  1.1.1.1.8.2  tls 	(zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "")))]
   1199  1.1.1.1.8.2  tls   ""
   1200  1.1.1.1.8.2  tls {
   1201  1.1.1.1.8.2  tls   if (! TARGET_BWX)
   1202  1.1.1.1.8.2  tls     operands[1] = force_reg (QImode, operands[1]);
   1203  1.1.1.1.8.2  tls })
   1204  1.1.1.1.8.2  tls 
   1205  1.1.1.1.8.2  tls (define_insn "*zero_extendqisi2_bwx"
   1206  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r,r")
   1207  1.1.1.1.8.2  tls 	(zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
   1208  1.1.1.1.8.2  tls   "TARGET_BWX"
   1209  1.1.1.1.8.2  tls   "@
   1210  1.1.1.1.8.2  tls    and %1,0xff,%0
   1211  1.1.1.1.8.2  tls    ldbu %0,%1"
   1212  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,ild")])
   1213  1.1.1.1.8.2  tls 
   1214  1.1.1.1.8.2  tls (define_insn "*zero_extendqisi2_nobwx"
   1215  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
   1216  1.1.1.1.8.2  tls 	(zero_extend:SI (match_operand:QI 1 "register_operand" "r")))]
   1217  1.1.1.1.8.2  tls   "! TARGET_BWX"
   1218  1.1.1.1.8.2  tls   "and %1,0xff,%0"
   1219  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   1220  1.1.1.1.8.2  tls 
   1221  1.1.1.1.8.2  tls (define_expand "zero_extendqidi2"
   1222  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   1223  1.1.1.1.8.2  tls 	(zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "")))]
   1224  1.1.1.1.8.2  tls   ""
   1225  1.1.1.1.8.2  tls {
   1226  1.1.1.1.8.2  tls   if (! TARGET_BWX)
   1227  1.1.1.1.8.2  tls     operands[1] = force_reg (QImode, operands[1]);
   1228  1.1.1.1.8.2  tls })
   1229  1.1.1.1.8.2  tls 
   1230  1.1.1.1.8.2  tls (define_insn "*zero_extendqidi2_bwx"
   1231  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r")
   1232  1.1.1.1.8.2  tls 	(zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
   1233  1.1.1.1.8.2  tls   "TARGET_BWX"
   1234  1.1.1.1.8.2  tls   "@
   1235  1.1.1.1.8.2  tls    and %1,0xff,%0
   1236  1.1.1.1.8.2  tls    ldbu %0,%1"
   1237  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,ild")])
   1238  1.1.1.1.8.2  tls 
   1239  1.1.1.1.8.2  tls (define_insn "*zero_extendqidi2_nobwx"
   1240  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1241  1.1.1.1.8.2  tls 	(zero_extend:DI (match_operand:QI 1 "register_operand" "r")))]
   1242  1.1.1.1.8.2  tls   "! TARGET_BWX"
   1243  1.1.1.1.8.2  tls   "and %1,0xff,%0"
   1244  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   1245  1.1.1.1.8.2  tls 
   1246  1.1.1.1.8.2  tls (define_expand "zero_extendhisi2"
   1247  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "")
   1248  1.1.1.1.8.2  tls 	(zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "")))]
   1249  1.1.1.1.8.2  tls   ""
   1250  1.1.1.1.8.2  tls {
   1251  1.1.1.1.8.2  tls   if (! TARGET_BWX)
   1252  1.1.1.1.8.2  tls     operands[1] = force_reg (HImode, operands[1]);
   1253  1.1.1.1.8.2  tls })
   1254  1.1.1.1.8.2  tls 
   1255  1.1.1.1.8.2  tls (define_insn "*zero_extendhisi2_bwx"
   1256  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r,r")
   1257  1.1.1.1.8.2  tls 	(zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "r,m")))]
   1258  1.1.1.1.8.2  tls   "TARGET_BWX"
   1259  1.1.1.1.8.2  tls   "@
   1260  1.1.1.1.8.2  tls    zapnot %1,3,%0
   1261  1.1.1.1.8.2  tls    ldwu %0,%1"
   1262  1.1.1.1.8.2  tls   [(set_attr "type" "shift,ild")])
   1263  1.1.1.1.8.2  tls 
   1264  1.1.1.1.8.2  tls (define_insn "*zero_extendhisi2_nobwx"
   1265  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
   1266  1.1.1.1.8.2  tls 	(zero_extend:SI (match_operand:HI 1 "register_operand" "r")))]
   1267  1.1.1.1.8.2  tls   "! TARGET_BWX"
   1268  1.1.1.1.8.2  tls   "zapnot %1,3,%0"
   1269  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1270  1.1.1.1.8.2  tls 
   1271  1.1.1.1.8.2  tls (define_expand "zero_extendhidi2"
   1272  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   1273  1.1.1.1.8.2  tls 	(zero_extend:DI (match_operand:HI 1 "nonimmediate_operand" "")))]
   1274  1.1.1.1.8.2  tls   ""
   1275  1.1.1.1.8.2  tls {
   1276  1.1.1.1.8.2  tls   if (! TARGET_BWX)
   1277  1.1.1.1.8.2  tls     operands[1] = force_reg (HImode, operands[1]);
   1278  1.1.1.1.8.2  tls })
   1279  1.1.1.1.8.2  tls 
   1280  1.1.1.1.8.2  tls (define_insn "*zero_extendhidi2_bwx"
   1281  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r")
   1282  1.1.1.1.8.2  tls 	(zero_extend:DI (match_operand:HI 1 "nonimmediate_operand" "r,m")))]
   1283  1.1.1.1.8.2  tls   "TARGET_BWX"
   1284  1.1.1.1.8.2  tls   "@
   1285  1.1.1.1.8.2  tls    zapnot %1,3,%0
   1286  1.1.1.1.8.2  tls    ldwu %0,%1"
   1287  1.1.1.1.8.2  tls   [(set_attr "type" "shift,ild")])
   1288  1.1.1.1.8.2  tls 
   1289  1.1.1.1.8.2  tls (define_insn "*zero_extendhidi2_nobwx"
   1290  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1291  1.1.1.1.8.2  tls 	(zero_extend:DI (match_operand:HI 1 "register_operand" "r")))]
   1292  1.1.1.1.8.2  tls   ""
   1293  1.1.1.1.8.2  tls   "zapnot %1,3,%0"
   1294  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1295  1.1.1.1.8.2  tls 
   1296  1.1.1.1.8.2  tls (define_insn "zero_extendsidi2"
   1297  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1298  1.1.1.1.8.2  tls 	(zero_extend:DI (match_operand:SI 1 "register_operand" "r")))]
   1299  1.1.1.1.8.2  tls   ""
   1300  1.1.1.1.8.2  tls   "zapnot %1,15,%0"
   1301  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1302  1.1.1.1.8.2  tls 
   1303  1.1.1.1.8.2  tls (define_insn "*andnotsi3"
   1304  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
   1305  1.1.1.1.8.2  tls 	(and:SI (not:SI (match_operand:SI 1 "reg_or_8bit_operand" "rI"))
   1306  1.1.1.1.8.2  tls 		(match_operand:SI 2 "reg_or_0_operand" "rJ")))]
   1307  1.1.1.1.8.2  tls   ""
   1308  1.1.1.1.8.2  tls   "bic %r2,%1,%0"
   1309  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   1310  1.1.1.1.8.2  tls 
   1311  1.1.1.1.8.2  tls (define_insn "andnotdi3"
   1312  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1313  1.1.1.1.8.2  tls 	(and:DI (not:DI (match_operand:DI 1 "reg_or_8bit_operand" "rI"))
   1314  1.1.1.1.8.2  tls 		(match_operand:DI 2 "reg_or_0_operand" "rJ")))]
   1315  1.1.1.1.8.2  tls   ""
   1316  1.1.1.1.8.2  tls   "bic %r2,%1,%0"
   1317  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   1318  1.1.1.1.8.2  tls 
   1319  1.1.1.1.8.2  tls (define_insn "*iorsi_internal"
   1320  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r,r")
   1321  1.1.1.1.8.2  tls 	(ior:SI (match_operand:SI 1 "reg_or_0_operand" "%rJ,rJ")
   1322  1.1.1.1.8.2  tls 		(match_operand:SI 2 "or_operand" "rI,N")))]
   1323  1.1.1.1.8.2  tls   ""
   1324  1.1.1.1.8.2  tls   "@
   1325  1.1.1.1.8.2  tls    bis %r1,%2,%0
   1326  1.1.1.1.8.2  tls    ornot %r1,%N2,%0"
   1327  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   1328  1.1.1.1.8.2  tls 
   1329  1.1.1.1.8.2  tls (define_insn "iordi3"
   1330  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r")
   1331  1.1.1.1.8.2  tls 	(ior:DI (match_operand:DI 1 "reg_or_0_operand" "%rJ,rJ")
   1332  1.1.1.1.8.2  tls 		(match_operand:DI 2 "or_operand" "rI,N")))]
   1333  1.1.1.1.8.2  tls   ""
   1334  1.1.1.1.8.2  tls   "@
   1335  1.1.1.1.8.2  tls    bis %r1,%2,%0
   1336  1.1.1.1.8.2  tls    ornot %r1,%N2,%0"
   1337  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   1338  1.1.1.1.8.2  tls 
   1339  1.1.1.1.8.2  tls (define_insn "*one_cmplsi_internal"
   1340  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
   1341  1.1.1.1.8.2  tls 	(not:SI (match_operand:SI 1 "reg_or_8bit_operand" "rI")))]
   1342  1.1.1.1.8.2  tls   ""
   1343  1.1.1.1.8.2  tls   "ornot $31,%1,%0"
   1344  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   1345  1.1.1.1.8.2  tls 
   1346  1.1.1.1.8.2  tls (define_insn "one_cmpldi2"
   1347  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1348  1.1.1.1.8.2  tls 	(not:DI (match_operand:DI 1 "reg_or_8bit_operand" "rI")))]
   1349  1.1.1.1.8.2  tls   ""
   1350  1.1.1.1.8.2  tls   "ornot $31,%1,%0"
   1351  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   1352  1.1.1.1.8.2  tls 
   1353  1.1.1.1.8.2  tls (define_insn "*iornotsi3"
   1354  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
   1355  1.1.1.1.8.2  tls 	(ior:SI (not:SI (match_operand:SI 1 "reg_or_8bit_operand" "rI"))
   1356  1.1.1.1.8.2  tls 		(match_operand:SI 2 "reg_or_0_operand" "rJ")))]
   1357  1.1.1.1.8.2  tls   ""
   1358  1.1.1.1.8.2  tls   "ornot %r2,%1,%0"
   1359  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   1360  1.1.1.1.8.2  tls 
   1361  1.1.1.1.8.2  tls (define_insn "*iornotdi3"
   1362  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1363  1.1.1.1.8.2  tls 	(ior:DI (not:DI (match_operand:DI 1 "reg_or_8bit_operand" "rI"))
   1364  1.1.1.1.8.2  tls 		(match_operand:DI 2 "reg_or_0_operand" "rJ")))]
   1365  1.1.1.1.8.2  tls   ""
   1366  1.1.1.1.8.2  tls   "ornot %r2,%1,%0"
   1367  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   1368  1.1.1.1.8.2  tls 
   1369  1.1.1.1.8.2  tls (define_insn "*xorsi_internal"
   1370  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r,r")
   1371  1.1.1.1.8.2  tls 	(xor:SI (match_operand:SI 1 "reg_or_0_operand" "%rJ,rJ")
   1372  1.1.1.1.8.2  tls 		(match_operand:SI 2 "or_operand" "rI,N")))]
   1373  1.1.1.1.8.2  tls   ""
   1374  1.1.1.1.8.2  tls   "@
   1375  1.1.1.1.8.2  tls    xor %r1,%2,%0
   1376  1.1.1.1.8.2  tls    eqv %r1,%N2,%0"
   1377  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   1378  1.1.1.1.8.2  tls 
   1379  1.1.1.1.8.2  tls (define_insn "xordi3"
   1380  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r")
   1381  1.1.1.1.8.2  tls 	(xor:DI (match_operand:DI 1 "reg_or_0_operand" "%rJ,rJ")
   1382  1.1.1.1.8.2  tls 		(match_operand:DI 2 "or_operand" "rI,N")))]
   1383  1.1.1.1.8.2  tls   ""
   1384  1.1.1.1.8.2  tls   "@
   1385  1.1.1.1.8.2  tls    xor %r1,%2,%0
   1386  1.1.1.1.8.2  tls    eqv %r1,%N2,%0"
   1387  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   1388  1.1.1.1.8.2  tls 
   1389  1.1.1.1.8.2  tls (define_insn "*xornotsi3"
   1390  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
   1391  1.1.1.1.8.2  tls 	(not:SI (xor:SI (match_operand:SI 1 "register_operand" "%rJ")
   1392  1.1.1.1.8.2  tls 			(match_operand:SI 2 "register_operand" "rI"))))]
   1393  1.1.1.1.8.2  tls   ""
   1394  1.1.1.1.8.2  tls   "eqv %r1,%2,%0"
   1395  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   1396  1.1.1.1.8.2  tls 
   1397  1.1.1.1.8.2  tls (define_insn "*xornotdi3"
   1398  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1399  1.1.1.1.8.2  tls 	(not:DI (xor:DI (match_operand:DI 1 "register_operand" "%rJ")
   1400  1.1.1.1.8.2  tls 			(match_operand:DI 2 "register_operand" "rI"))))]
   1401  1.1.1.1.8.2  tls   ""
   1402  1.1.1.1.8.2  tls   "eqv %r1,%2,%0"
   1403  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   1404  1.1.1.1.8.2  tls 
   1406  1.1.1.1.8.2  tls ;; Handle FFS and related insns iff we support CIX.
   1407  1.1.1.1.8.2  tls 
   1408  1.1.1.1.8.2  tls (define_expand "ffsdi2"
   1409  1.1.1.1.8.2  tls   [(set (match_dup 2)
   1410  1.1.1.1.8.2  tls 	(ctz:DI (match_operand:DI 1 "register_operand" "")))
   1411  1.1.1.1.8.2  tls    (set (match_dup 3)
   1412  1.1.1.1.8.2  tls 	(plus:DI (match_dup 2) (const_int 1)))
   1413  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   1414  1.1.1.1.8.2  tls 	(if_then_else:DI (eq (match_dup 1) (const_int 0))
   1415  1.1.1.1.8.2  tls 			 (const_int 0) (match_dup 3)))]
   1416  1.1.1.1.8.2  tls   "TARGET_CIX"
   1417  1.1.1.1.8.2  tls {
   1418  1.1.1.1.8.2  tls   operands[2] = gen_reg_rtx (DImode);
   1419  1.1.1.1.8.2  tls   operands[3] = gen_reg_rtx (DImode);
   1420  1.1.1.1.8.2  tls })
   1421  1.1.1.1.8.2  tls 
   1422  1.1.1.1.8.2  tls (define_insn "clzdi2"
   1423  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1424  1.1.1.1.8.2  tls 	(clz:DI (match_operand:DI 1 "register_operand" "r")))]
   1425  1.1.1.1.8.2  tls   "TARGET_CIX"
   1426  1.1.1.1.8.2  tls   "ctlz %1,%0"
   1427  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   1428  1.1.1.1.8.2  tls 
   1429  1.1.1.1.8.2  tls (define_insn "ctzdi2"
   1430  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1431  1.1.1.1.8.2  tls 	(ctz:DI (match_operand:DI 1 "register_operand" "r")))]
   1432  1.1.1.1.8.2  tls   "TARGET_CIX"
   1433  1.1.1.1.8.2  tls   "cttz %1,%0"
   1434  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   1435  1.1.1.1.8.2  tls 
   1436  1.1.1.1.8.2  tls (define_insn "popcountdi2"
   1437  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1438  1.1.1.1.8.2  tls 	(popcount:DI (match_operand:DI 1 "register_operand" "r")))]
   1439  1.1.1.1.8.2  tls   "TARGET_CIX"
   1440  1.1.1.1.8.2  tls   "ctpop %1,%0"
   1441  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   1442  1.1.1.1.8.2  tls 
   1443  1.1.1.1.8.2  tls (define_expand "bswapsi2"
   1444  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "")
   1445  1.1.1.1.8.2  tls 	(bswap:SI (match_operand:SI 1 "register_operand" "")))]
   1446  1.1.1.1.8.2  tls   "!optimize_size"
   1447  1.1.1.1.8.2  tls {
   1448  1.1.1.1.8.2  tls   rtx t0, t1;
   1449  1.1.1.1.8.2  tls 
   1450  1.1.1.1.8.2  tls   t0 = gen_reg_rtx (DImode);
   1451  1.1.1.1.8.2  tls   t1 = gen_reg_rtx (DImode);
   1452  1.1.1.1.8.2  tls 
   1453  1.1.1.1.8.2  tls   emit_insn (gen_insxh (t0, gen_lowpart (DImode, operands[1]),
   1454  1.1.1.1.8.2  tls 			GEN_INT (32), GEN_INT (WORDS_BIG_ENDIAN ? 0 : 7)));
   1455  1.1.1.1.8.2  tls   emit_insn (gen_inswl_const (t1, gen_lowpart (HImode, operands[1]),
   1456  1.1.1.1.8.2  tls 			      GEN_INT (24)));
   1457  1.1.1.1.8.2  tls   emit_insn (gen_iordi3 (t1, t0, t1));
   1458  1.1.1.1.8.2  tls   emit_insn (gen_lshrdi3 (t0, t1, GEN_INT (16)));
   1459  1.1.1.1.8.2  tls   emit_insn (gen_anddi3 (t1, t1, alpha_expand_zap_mask (0x5)));
   1460  1.1.1.1.8.2  tls   emit_insn (gen_anddi3 (t0, t0, alpha_expand_zap_mask (0xa)));
   1461  1.1.1.1.8.2  tls   emit_insn (gen_addsi3 (operands[0], gen_lowpart (SImode, t0),
   1462  1.1.1.1.8.2  tls 			 gen_lowpart (SImode, t1)));
   1463  1.1.1.1.8.2  tls   DONE;
   1464  1.1.1.1.8.2  tls })
   1465  1.1.1.1.8.2  tls 
   1466  1.1.1.1.8.2  tls (define_expand "bswapdi2"
   1467  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   1468  1.1.1.1.8.2  tls 	(bswap:DI (match_operand:DI 1 "register_operand" "")))]
   1469  1.1.1.1.8.2  tls   "!optimize_size"
   1470  1.1.1.1.8.2  tls {
   1471  1.1.1.1.8.2  tls   rtx t0, t1;
   1472  1.1.1.1.8.2  tls 
   1473  1.1.1.1.8.2  tls   t0 = gen_reg_rtx (DImode);
   1474  1.1.1.1.8.2  tls   t1 = gen_reg_rtx (DImode);
   1475  1.1.1.1.8.2  tls 
   1476  1.1.1.1.8.2  tls   /* This method of shifting and masking is not specific to Alpha, but
   1477  1.1.1.1.8.2  tls      is only profitable on Alpha because of our handy byte zap insn.  */
   1478  1.1.1.1.8.2  tls 
   1479  1.1.1.1.8.2  tls   emit_insn (gen_lshrdi3 (t0, operands[1], GEN_INT (32)));
   1480  1.1.1.1.8.2  tls   emit_insn (gen_ashldi3 (t1, operands[1], GEN_INT (32)));
   1481  1.1.1.1.8.2  tls   emit_insn (gen_iordi3 (t1, t0, t1));
   1482  1.1.1.1.8.2  tls 
   1483  1.1.1.1.8.2  tls   emit_insn (gen_lshrdi3 (t0, t1, GEN_INT (16)));
   1484  1.1.1.1.8.2  tls   emit_insn (gen_ashldi3 (t1, t1, GEN_INT (16)));
   1485  1.1.1.1.8.2  tls   emit_insn (gen_anddi3 (t0, t0, alpha_expand_zap_mask (0xcc)));
   1486  1.1.1.1.8.2  tls   emit_insn (gen_anddi3 (t1, t1, alpha_expand_zap_mask (0x33)));
   1487  1.1.1.1.8.2  tls   emit_insn (gen_iordi3 (t1, t0, t1));
   1488  1.1.1.1.8.2  tls 
   1489  1.1.1.1.8.2  tls   emit_insn (gen_lshrdi3 (t0, t1, GEN_INT (8)));
   1490  1.1.1.1.8.2  tls   emit_insn (gen_ashldi3 (t1, t1, GEN_INT (8)));
   1491  1.1.1.1.8.2  tls   emit_insn (gen_anddi3 (t0, t0, alpha_expand_zap_mask (0xaa)));
   1492  1.1.1.1.8.2  tls   emit_insn (gen_anddi3 (t1, t1, alpha_expand_zap_mask (0x55)));
   1493  1.1.1.1.8.2  tls   emit_insn (gen_iordi3 (operands[0], t0, t1));
   1494  1.1.1.1.8.2  tls   DONE;
   1495  1.1.1.1.8.2  tls })
   1496  1.1.1.1.8.2  tls 
   1498  1.1.1.1.8.2  tls ;; Next come the shifts and the various extract and insert operations.
   1499  1.1.1.1.8.2  tls 
   1500  1.1.1.1.8.2  tls (define_insn "ashldi3"
   1501  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r")
   1502  1.1.1.1.8.2  tls 	(ashift:DI (match_operand:DI 1 "reg_or_0_operand" "rJ,rJ")
   1503  1.1.1.1.8.2  tls 		   (match_operand:DI 2 "reg_or_6bit_operand" "P,rS")))]
   1504  1.1.1.1.8.2  tls   ""
   1505  1.1.1.1.8.2  tls {
   1506  1.1.1.1.8.2  tls   switch (which_alternative)
   1507  1.1.1.1.8.2  tls     {
   1508  1.1.1.1.8.2  tls     case 0:
   1509  1.1.1.1.8.2  tls       if (operands[2] == const1_rtx)
   1510  1.1.1.1.8.2  tls 	return "addq %r1,%r1,%0";
   1511  1.1.1.1.8.2  tls       else
   1512  1.1.1.1.8.2  tls 	return "s%P2addq %r1,0,%0";
   1513  1.1.1.1.8.2  tls     case 1:
   1514  1.1.1.1.8.2  tls       return "sll %r1,%2,%0";
   1515  1.1.1.1.8.2  tls     default:
   1516  1.1.1.1.8.2  tls       gcc_unreachable ();
   1517  1.1.1.1.8.2  tls     }
   1518  1.1.1.1.8.2  tls }
   1519  1.1.1.1.8.2  tls   [(set_attr "type" "iadd,shift")])
   1520  1.1.1.1.8.2  tls 
   1521  1.1.1.1.8.2  tls (define_insn "*ashldi_se"
   1522  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1523  1.1.1.1.8.2  tls 	(sign_extend:DI
   1524  1.1.1.1.8.2  tls 	 (subreg:SI (ashift:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
   1525  1.1.1.1.8.2  tls 			       (match_operand:DI 2 "const_int_operand" "P"))
   1526  1.1.1.1.8.2  tls 		    0)))]
   1527  1.1.1.1.8.2  tls   "INTVAL (operands[2]) >= 1 && INTVAL (operands[2]) <= 3"
   1528  1.1.1.1.8.2  tls {
   1529  1.1.1.1.8.2  tls   if (operands[2] == const1_rtx)
   1530  1.1.1.1.8.2  tls     return "addl %r1,%r1,%0";
   1531  1.1.1.1.8.2  tls   else
   1532  1.1.1.1.8.2  tls     return "s%P2addl %r1,0,%0";
   1533  1.1.1.1.8.2  tls }
   1534  1.1.1.1.8.2  tls   [(set_attr "type" "iadd")])
   1535  1.1.1.1.8.2  tls 
   1536  1.1.1.1.8.2  tls (define_insn "lshrdi3"
   1537  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1538  1.1.1.1.8.2  tls 	(lshiftrt:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
   1539  1.1.1.1.8.2  tls 		     (match_operand:DI 2 "reg_or_6bit_operand" "rS")))]
   1540  1.1.1.1.8.2  tls   ""
   1541  1.1.1.1.8.2  tls   "srl %r1,%2,%0"
   1542  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1543  1.1.1.1.8.2  tls 
   1544  1.1.1.1.8.2  tls (define_insn "ashrdi3"
   1545  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1546  1.1.1.1.8.2  tls 	(ashiftrt:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
   1547  1.1.1.1.8.2  tls 		     (match_operand:DI 2 "reg_or_6bit_operand" "rS")))]
   1548  1.1.1.1.8.2  tls   ""
   1549  1.1.1.1.8.2  tls   "sra %r1,%2,%0"
   1550  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1551  1.1.1.1.8.2  tls 
   1552  1.1.1.1.8.2  tls (define_expand "extendqihi2"
   1553  1.1.1.1.8.2  tls   [(set (match_dup 2)
   1554  1.1.1.1.8.2  tls 	(ashift:DI (match_operand:QI 1 "some_operand" "")
   1555  1.1.1.1.8.2  tls 		   (const_int 56)))
   1556  1.1.1.1.8.2  tls    (set (match_operand:HI 0 "register_operand" "")
   1557  1.1.1.1.8.2  tls 	(ashiftrt:DI (match_dup 2)
   1558  1.1.1.1.8.2  tls 		     (const_int 56)))]
   1559  1.1.1.1.8.2  tls   ""
   1560  1.1.1.1.8.2  tls {
   1561  1.1.1.1.8.2  tls   if (TARGET_BWX)
   1562  1.1.1.1.8.2  tls     {
   1563  1.1.1.1.8.2  tls       emit_insn (gen_extendqihi2x (operands[0],
   1564  1.1.1.1.8.2  tls 				   force_reg (QImode, operands[1])));
   1565  1.1.1.1.8.2  tls       DONE;
   1566  1.1.1.1.8.2  tls     }
   1567  1.1.1.1.8.2  tls 
   1568  1.1.1.1.8.2  tls  /* If we have an unaligned MEM, extend to DImode (which we do
   1569  1.1.1.1.8.2  tls      specially) and then copy to the result.  */
   1570  1.1.1.1.8.2  tls   if (unaligned_memory_operand (operands[1], HImode))
   1571  1.1.1.1.8.2  tls     {
   1572  1.1.1.1.8.2  tls       rtx temp = gen_reg_rtx (DImode);
   1573  1.1.1.1.8.2  tls 
   1574  1.1.1.1.8.2  tls       emit_insn (gen_extendqidi2 (temp, operands[1]));
   1575  1.1.1.1.8.2  tls       emit_move_insn (operands[0], gen_lowpart (HImode, temp));
   1576  1.1.1.1.8.2  tls       DONE;
   1577  1.1.1.1.8.2  tls     }
   1578  1.1.1.1.8.2  tls 
   1579  1.1.1.1.8.2  tls   operands[0] = gen_lowpart (DImode, operands[0]);
   1580  1.1.1.1.8.2  tls   operands[1] = gen_lowpart (DImode, force_reg (QImode, operands[1]));
   1581  1.1.1.1.8.2  tls   operands[2] = gen_reg_rtx (DImode);
   1582  1.1.1.1.8.2  tls })
   1583  1.1.1.1.8.2  tls 
   1584  1.1.1.1.8.2  tls (define_insn "extendqidi2x"
   1585  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1586  1.1.1.1.8.2  tls 	(sign_extend:DI (match_operand:QI 1 "register_operand" "r")))]
   1587  1.1.1.1.8.2  tls   "TARGET_BWX"
   1588  1.1.1.1.8.2  tls   "sextb %1,%0"
   1589  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1590  1.1.1.1.8.2  tls 
   1591  1.1.1.1.8.2  tls (define_insn "extendhidi2x"
   1592  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1593  1.1.1.1.8.2  tls 	(sign_extend:DI (match_operand:HI 1 "register_operand" "r")))]
   1594  1.1.1.1.8.2  tls   "TARGET_BWX"
   1595  1.1.1.1.8.2  tls   "sextw %1,%0"
   1596  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1597  1.1.1.1.8.2  tls 
   1598  1.1.1.1.8.2  tls (define_insn "extendqisi2x"
   1599  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
   1600  1.1.1.1.8.2  tls 	(sign_extend:SI (match_operand:QI 1 "register_operand" "r")))]
   1601  1.1.1.1.8.2  tls   "TARGET_BWX"
   1602  1.1.1.1.8.2  tls   "sextb %1,%0"
   1603  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1604  1.1.1.1.8.2  tls 
   1605  1.1.1.1.8.2  tls (define_insn "extendhisi2x"
   1606  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
   1607  1.1.1.1.8.2  tls 	(sign_extend:SI (match_operand:HI 1 "register_operand" "r")))]
   1608  1.1.1.1.8.2  tls   "TARGET_BWX"
   1609  1.1.1.1.8.2  tls   "sextw %1,%0"
   1610  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1611  1.1.1.1.8.2  tls 
   1612  1.1.1.1.8.2  tls (define_insn "extendqihi2x"
   1613  1.1.1.1.8.2  tls   [(set (match_operand:HI 0 "register_operand" "=r")
   1614  1.1.1.1.8.2  tls 	(sign_extend:HI (match_operand:QI 1 "register_operand" "r")))]
   1615  1.1.1.1.8.2  tls   "TARGET_BWX"
   1616  1.1.1.1.8.2  tls   "sextb %1,%0"
   1617  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1618  1.1.1.1.8.2  tls 
   1619  1.1.1.1.8.2  tls (define_expand "extendqisi2"
   1620  1.1.1.1.8.2  tls   [(set (match_dup 2)
   1621  1.1.1.1.8.2  tls 	(ashift:DI (match_operand:QI 1 "some_operand" "")
   1622  1.1.1.1.8.2  tls 		   (const_int 56)))
   1623  1.1.1.1.8.2  tls    (set (match_operand:SI 0 "register_operand" "")
   1624  1.1.1.1.8.2  tls 	(ashiftrt:DI (match_dup 2)
   1625  1.1.1.1.8.2  tls 		     (const_int 56)))]
   1626  1.1.1.1.8.2  tls   ""
   1627  1.1.1.1.8.2  tls {
   1628  1.1.1.1.8.2  tls   if (TARGET_BWX)
   1629  1.1.1.1.8.2  tls     {
   1630  1.1.1.1.8.2  tls       emit_insn (gen_extendqisi2x (operands[0],
   1631  1.1.1.1.8.2  tls 				   force_reg (QImode, operands[1])));
   1632  1.1.1.1.8.2  tls       DONE;
   1633  1.1.1.1.8.2  tls     }
   1634  1.1.1.1.8.2  tls 
   1635  1.1.1.1.8.2  tls   /* If we have an unaligned MEM, extend to a DImode form of
   1636  1.1.1.1.8.2  tls      the result (which we do specially).  */
   1637  1.1.1.1.8.2  tls   if (unaligned_memory_operand (operands[1], QImode))
   1638  1.1.1.1.8.2  tls     {
   1639  1.1.1.1.8.2  tls       rtx temp = gen_reg_rtx (DImode);
   1640  1.1.1.1.8.2  tls 
   1641  1.1.1.1.8.2  tls       emit_insn (gen_extendqidi2 (temp, operands[1]));
   1642  1.1.1.1.8.2  tls       emit_move_insn (operands[0], gen_lowpart (SImode, temp));
   1643  1.1.1.1.8.2  tls       DONE;
   1644  1.1.1.1.8.2  tls     }
   1645  1.1.1.1.8.2  tls 
   1646  1.1.1.1.8.2  tls   operands[0] = gen_lowpart (DImode, operands[0]);
   1647  1.1.1.1.8.2  tls   operands[1] = gen_lowpart (DImode, force_reg (QImode, operands[1]));
   1648  1.1.1.1.8.2  tls   operands[2] = gen_reg_rtx (DImode);
   1649  1.1.1.1.8.2  tls })
   1650  1.1.1.1.8.2  tls 
   1651  1.1.1.1.8.2  tls (define_expand "extendqidi2"
   1652  1.1.1.1.8.2  tls   [(set (match_dup 2)
   1653  1.1.1.1.8.2  tls 	(ashift:DI (match_operand:QI 1 "some_operand" "")
   1654  1.1.1.1.8.2  tls 		   (const_int 56)))
   1655  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   1656  1.1.1.1.8.2  tls 	(ashiftrt:DI (match_dup 2)
   1657  1.1.1.1.8.2  tls 		     (const_int 56)))]
   1658  1.1.1.1.8.2  tls   ""
   1659  1.1.1.1.8.2  tls {
   1660  1.1.1.1.8.2  tls   if (TARGET_BWX)
   1661  1.1.1.1.8.2  tls     {
   1662  1.1.1.1.8.2  tls       emit_insn (gen_extendqidi2x (operands[0],
   1663  1.1.1.1.8.2  tls 				   force_reg (QImode, operands[1])));
   1664  1.1.1.1.8.2  tls       DONE;
   1665  1.1.1.1.8.2  tls     }
   1666  1.1.1.1.8.2  tls 
   1667  1.1.1.1.8.2  tls   if (unaligned_memory_operand (operands[1], QImode))
   1668  1.1.1.1.8.2  tls     {
   1669  1.1.1.1.8.2  tls       rtx seq = gen_unaligned_extendqidi (operands[0], XEXP (operands[1], 0));
   1670  1.1.1.1.8.2  tls       alpha_set_memflags (seq, operands[1]);
   1671  1.1.1.1.8.2  tls       emit_insn (seq);
   1672  1.1.1.1.8.2  tls       DONE;
   1673  1.1.1.1.8.2  tls     }
   1674  1.1.1.1.8.2  tls 
   1675  1.1.1.1.8.2  tls   operands[1] = gen_lowpart (DImode, force_reg (QImode, operands[1]));
   1676  1.1.1.1.8.2  tls   operands[2] = gen_reg_rtx (DImode);
   1677  1.1.1.1.8.2  tls })
   1678  1.1.1.1.8.2  tls 
   1679  1.1.1.1.8.2  tls (define_expand "extendhisi2"
   1680  1.1.1.1.8.2  tls   [(set (match_dup 2)
   1681  1.1.1.1.8.2  tls 	(ashift:DI (match_operand:HI 1 "some_operand" "")
   1682  1.1.1.1.8.2  tls 		   (const_int 48)))
   1683  1.1.1.1.8.2  tls    (set (match_operand:SI 0 "register_operand" "")
   1684  1.1.1.1.8.2  tls 	(ashiftrt:DI (match_dup 2)
   1685  1.1.1.1.8.2  tls 		     (const_int 48)))]
   1686  1.1.1.1.8.2  tls   ""
   1687  1.1.1.1.8.2  tls {
   1688  1.1.1.1.8.2  tls   if (TARGET_BWX)
   1689  1.1.1.1.8.2  tls     {
   1690  1.1.1.1.8.2  tls       emit_insn (gen_extendhisi2x (operands[0],
   1691  1.1.1.1.8.2  tls 				   force_reg (HImode, operands[1])));
   1692  1.1.1.1.8.2  tls       DONE;
   1693  1.1.1.1.8.2  tls     }
   1694  1.1.1.1.8.2  tls 
   1695  1.1.1.1.8.2  tls   /* If we have an unaligned MEM, extend to a DImode form of
   1696  1.1.1.1.8.2  tls      the result (which we do specially).  */
   1697  1.1.1.1.8.2  tls   if (unaligned_memory_operand (operands[1], HImode))
   1698  1.1.1.1.8.2  tls     {
   1699  1.1.1.1.8.2  tls       rtx temp = gen_reg_rtx (DImode);
   1700  1.1.1.1.8.2  tls 
   1701  1.1.1.1.8.2  tls       emit_insn (gen_extendhidi2 (temp, operands[1]));
   1702  1.1.1.1.8.2  tls       emit_move_insn (operands[0], gen_lowpart (SImode, temp));
   1703  1.1.1.1.8.2  tls       DONE;
   1704  1.1.1.1.8.2  tls     }
   1705  1.1.1.1.8.2  tls 
   1706  1.1.1.1.8.2  tls   operands[0] = gen_lowpart (DImode, operands[0]);
   1707  1.1.1.1.8.2  tls   operands[1] = gen_lowpart (DImode, force_reg (HImode, operands[1]));
   1708  1.1.1.1.8.2  tls   operands[2] = gen_reg_rtx (DImode);
   1709  1.1.1.1.8.2  tls })
   1710  1.1.1.1.8.2  tls 
   1711  1.1.1.1.8.2  tls (define_expand "extendhidi2"
   1712  1.1.1.1.8.2  tls   [(set (match_dup 2)
   1713  1.1.1.1.8.2  tls 	(ashift:DI (match_operand:HI 1 "some_operand" "")
   1714  1.1.1.1.8.2  tls 		   (const_int 48)))
   1715  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   1716  1.1.1.1.8.2  tls 	(ashiftrt:DI (match_dup 2)
   1717  1.1.1.1.8.2  tls 		     (const_int 48)))]
   1718  1.1.1.1.8.2  tls   ""
   1719  1.1.1.1.8.2  tls {
   1720  1.1.1.1.8.2  tls   if (TARGET_BWX)
   1721  1.1.1.1.8.2  tls     {
   1722  1.1.1.1.8.2  tls       emit_insn (gen_extendhidi2x (operands[0],
   1723  1.1.1.1.8.2  tls 				   force_reg (HImode, operands[1])));
   1724  1.1.1.1.8.2  tls       DONE;
   1725  1.1.1.1.8.2  tls     }
   1726  1.1.1.1.8.2  tls 
   1727  1.1.1.1.8.2  tls   if (unaligned_memory_operand (operands[1], HImode))
   1728  1.1.1.1.8.2  tls     {
   1729  1.1.1.1.8.2  tls       rtx seq = gen_unaligned_extendhidi (operands[0], XEXP (operands[1], 0));
   1730  1.1.1.1.8.2  tls 
   1731  1.1.1.1.8.2  tls       alpha_set_memflags (seq, operands[1]);
   1732  1.1.1.1.8.2  tls       emit_insn (seq);
   1733  1.1.1.1.8.2  tls       DONE;
   1734  1.1.1.1.8.2  tls     }
   1735  1.1.1.1.8.2  tls 
   1736  1.1.1.1.8.2  tls   operands[1] = gen_lowpart (DImode, force_reg (HImode, operands[1]));
   1737  1.1.1.1.8.2  tls   operands[2] = gen_reg_rtx (DImode);
   1738  1.1.1.1.8.2  tls })
   1739  1.1.1.1.8.2  tls 
   1740  1.1.1.1.8.2  tls ;; Here's how we sign extend an unaligned byte and halfword.  Doing this
   1741  1.1.1.1.8.2  tls ;; as a pattern saves one instruction.  The code is similar to that for
   1742  1.1.1.1.8.2  tls ;; the unaligned loads (see below).
   1743  1.1.1.1.8.2  tls ;;
   1744  1.1.1.1.8.2  tls ;; Operand 1 is the address, operand 0 is the result.
   1745  1.1.1.1.8.2  tls (define_expand "unaligned_extendqidi"
   1746  1.1.1.1.8.2  tls   [(use (match_operand:QI 0 "register_operand" ""))
   1747  1.1.1.1.8.2  tls    (use (match_operand:DI 1 "address_operand" ""))]
   1748  1.1.1.1.8.2  tls   ""
   1749  1.1.1.1.8.2  tls {
   1750  1.1.1.1.8.2  tls   operands[0] = gen_lowpart (DImode, operands[0]);
   1751  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   1752  1.1.1.1.8.2  tls     emit_insn (gen_unaligned_extendqidi_be (operands[0], operands[1]));
   1753  1.1.1.1.8.2  tls   else
   1754  1.1.1.1.8.2  tls     emit_insn (gen_unaligned_extendqidi_le (operands[0], operands[1]));
   1755  1.1.1.1.8.2  tls   DONE;
   1756  1.1.1.1.8.2  tls })
   1757  1.1.1.1.8.2  tls 
   1758  1.1.1.1.8.2  tls (define_expand "unaligned_extendqidi_le"
   1759  1.1.1.1.8.2  tls   [(set (match_dup 3)
   1760  1.1.1.1.8.2  tls 	(mem:DI (and:DI (match_operand:DI 1 "" "") (const_int -8))))
   1761  1.1.1.1.8.2  tls    (set (match_dup 4)
   1762  1.1.1.1.8.2  tls 	(ashift:DI (match_dup 3)
   1763  1.1.1.1.8.2  tls 		   (minus:DI (const_int 64)
   1764  1.1.1.1.8.2  tls 			     (ashift:DI
   1765  1.1.1.1.8.2  tls 			      (and:DI (match_dup 2) (const_int 7))
   1766  1.1.1.1.8.2  tls 			      (const_int 3)))))
   1767  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   1768  1.1.1.1.8.2  tls 	(ashiftrt:DI (match_dup 4) (const_int 56)))]
   1769  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   1770  1.1.1.1.8.2  tls {
   1771  1.1.1.1.8.2  tls   operands[2] = get_unaligned_offset (operands[1], 1);
   1772  1.1.1.1.8.2  tls   operands[3] = gen_reg_rtx (DImode);
   1773  1.1.1.1.8.2  tls   operands[4] = gen_reg_rtx (DImode);
   1774  1.1.1.1.8.2  tls })
   1775  1.1.1.1.8.2  tls 
   1776  1.1.1.1.8.2  tls (define_expand "unaligned_extendqidi_be"
   1777  1.1.1.1.8.2  tls   [(set (match_dup 3)
   1778  1.1.1.1.8.2  tls 	(mem:DI (and:DI (match_operand:DI 1 "" "") (const_int -8))))
   1779  1.1.1.1.8.2  tls    (set (match_dup 4)
   1780  1.1.1.1.8.2  tls 	(ashift:DI (match_dup 3)
   1781  1.1.1.1.8.2  tls 		   (ashift:DI
   1782  1.1.1.1.8.2  tls 		     (and:DI
   1783  1.1.1.1.8.2  tls 		       (plus:DI (match_dup 2) (const_int 1))
   1784  1.1.1.1.8.2  tls 		       (const_int 7))
   1785  1.1.1.1.8.2  tls 		     (const_int 3))))
   1786  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   1787  1.1.1.1.8.2  tls 	(ashiftrt:DI (match_dup 4) (const_int 56)))]
   1788  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   1789  1.1.1.1.8.2  tls {
   1790  1.1.1.1.8.2  tls   operands[2] = get_unaligned_offset (operands[1], -1);
   1791  1.1.1.1.8.2  tls   operands[3] = gen_reg_rtx (DImode);
   1792  1.1.1.1.8.2  tls   operands[4] = gen_reg_rtx (DImode);
   1793  1.1.1.1.8.2  tls })
   1794  1.1.1.1.8.2  tls 
   1795  1.1.1.1.8.2  tls (define_expand "unaligned_extendhidi"
   1796  1.1.1.1.8.2  tls   [(use (match_operand:QI 0 "register_operand" ""))
   1797  1.1.1.1.8.2  tls    (use (match_operand:DI 1 "address_operand" ""))]
   1798  1.1.1.1.8.2  tls   ""
   1799  1.1.1.1.8.2  tls {
   1800  1.1.1.1.8.2  tls   operands[0] = gen_lowpart (DImode, operands[0]);
   1801  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   1802  1.1.1.1.8.2  tls     emit_insn (gen_unaligned_extendhidi_be (operands[0], operands[1]));
   1803  1.1.1.1.8.2  tls   else
   1804  1.1.1.1.8.2  tls     emit_insn (gen_unaligned_extendhidi_le (operands[0], operands[1]));
   1805  1.1.1.1.8.2  tls   DONE;
   1806  1.1.1.1.8.2  tls })
   1807  1.1.1.1.8.2  tls 
   1808  1.1.1.1.8.2  tls (define_expand "unaligned_extendhidi_le"
   1809  1.1.1.1.8.2  tls   [(set (match_dup 3)
   1810  1.1.1.1.8.2  tls 	(mem:DI (and:DI (match_operand:DI 1 "" "") (const_int -8))))
   1811  1.1.1.1.8.2  tls    (set (match_dup 4)
   1812  1.1.1.1.8.2  tls 	(ashift:DI (match_dup 3)
   1813  1.1.1.1.8.2  tls 		   (minus:DI (const_int 64)
   1814  1.1.1.1.8.2  tls 			     (ashift:DI
   1815  1.1.1.1.8.2  tls 			      (and:DI (match_dup 2) (const_int 7))
   1816  1.1.1.1.8.2  tls 			      (const_int 3)))))
   1817  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   1818  1.1.1.1.8.2  tls 	(ashiftrt:DI (match_dup 4) (const_int 48)))]
   1819  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   1820  1.1.1.1.8.2  tls {
   1821  1.1.1.1.8.2  tls   operands[2] = get_unaligned_offset (operands[1], 2);
   1822  1.1.1.1.8.2  tls   operands[3] = gen_reg_rtx (DImode);
   1823  1.1.1.1.8.2  tls   operands[4] = gen_reg_rtx (DImode);
   1824  1.1.1.1.8.2  tls })
   1825  1.1.1.1.8.2  tls 
   1826  1.1.1.1.8.2  tls (define_expand "unaligned_extendhidi_be"
   1827  1.1.1.1.8.2  tls   [(set (match_dup 3)
   1828  1.1.1.1.8.2  tls 	(mem:DI (and:DI (match_operand:DI 1 "" "") (const_int -8))))
   1829  1.1.1.1.8.2  tls    (set (match_dup 4)
   1830  1.1.1.1.8.2  tls 	(ashift:DI (match_dup 3)
   1831  1.1.1.1.8.2  tls 		   (ashift:DI
   1832  1.1.1.1.8.2  tls 		     (and:DI
   1833  1.1.1.1.8.2  tls 		       (plus:DI (match_dup 2) (const_int 1))
   1834  1.1.1.1.8.2  tls 		       (const_int 7))
   1835  1.1.1.1.8.2  tls 		     (const_int 3))))
   1836  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   1837  1.1.1.1.8.2  tls 	(ashiftrt:DI (match_dup 4) (const_int 48)))]
   1838  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   1839  1.1.1.1.8.2  tls {
   1840  1.1.1.1.8.2  tls   operands[2] = get_unaligned_offset (operands[1], -1);
   1841  1.1.1.1.8.2  tls   operands[3] = gen_reg_rtx (DImode);
   1842  1.1.1.1.8.2  tls   operands[4] = gen_reg_rtx (DImode);
   1843  1.1.1.1.8.2  tls })
   1844  1.1.1.1.8.2  tls 
   1845  1.1.1.1.8.2  tls (define_insn "*extxl_const"
   1846  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1847  1.1.1.1.8.2  tls 	(zero_extract:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
   1848  1.1.1.1.8.2  tls 			 (match_operand:DI 2 "mode_width_operand" "n")
   1849  1.1.1.1.8.2  tls 			 (match_operand:DI 3 "mul8_operand" "I")))]
   1850  1.1.1.1.8.2  tls   ""
   1851  1.1.1.1.8.2  tls   "ext%M2l %r1,%s3,%0"
   1852  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1853  1.1.1.1.8.2  tls 
   1854  1.1.1.1.8.2  tls (define_insn "extxl_le"
   1855  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1856  1.1.1.1.8.2  tls 	(zero_extract:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
   1857  1.1.1.1.8.2  tls 			 (match_operand:DI 2 "mode_width_operand" "n")
   1858  1.1.1.1.8.2  tls 			 (ashift:DI (match_operand:DI 3 "reg_or_8bit_operand" "rI")
   1859  1.1.1.1.8.2  tls 				    (const_int 3))))]
   1860  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   1861  1.1.1.1.8.2  tls   "ext%M2l %r1,%3,%0"
   1862  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1863  1.1.1.1.8.2  tls 
   1864  1.1.1.1.8.2  tls (define_insn "extxl_be"
   1865  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1866  1.1.1.1.8.2  tls 	(zero_extract:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
   1867  1.1.1.1.8.2  tls 			 (match_operand:DI 2 "mode_width_operand" "n")
   1868  1.1.1.1.8.2  tls 			 (minus:DI
   1869  1.1.1.1.8.2  tls 			   (const_int 56)
   1870  1.1.1.1.8.2  tls 			   (ashift:DI
   1871  1.1.1.1.8.2  tls 			     (match_operand:DI 3 "reg_or_8bit_operand" "rI")
   1872  1.1.1.1.8.2  tls 			     (const_int 3)))))]
   1873  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   1874  1.1.1.1.8.2  tls   "ext%M2l %r1,%3,%0"
   1875  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1876  1.1.1.1.8.2  tls 
   1877  1.1.1.1.8.2  tls ;; Combine has some strange notion of preserving existing undefined behavior
   1878  1.1.1.1.8.2  tls ;; in shifts larger than a word size.  So capture these patterns that it
   1879  1.1.1.1.8.2  tls ;; should have turned into zero_extracts.
   1880  1.1.1.1.8.2  tls 
   1881  1.1.1.1.8.2  tls (define_insn "*extxl_1_le"
   1882  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1883  1.1.1.1.8.2  tls 	(and:DI (lshiftrt:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
   1884  1.1.1.1.8.2  tls 		  (ashift:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   1885  1.1.1.1.8.2  tls 			     (const_int 3)))
   1886  1.1.1.1.8.2  tls 	     (match_operand:DI 3 "mode_mask_operand" "n")))]
   1887  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   1888  1.1.1.1.8.2  tls   "ext%U3l %1,%2,%0"
   1889  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1890  1.1.1.1.8.2  tls 
   1891  1.1.1.1.8.2  tls (define_insn "*extxl_1_be"
   1892  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1893  1.1.1.1.8.2  tls 	(and:DI (lshiftrt:DI
   1894  1.1.1.1.8.2  tls 		  (match_operand:DI 1 "reg_or_0_operand" "rJ")
   1895  1.1.1.1.8.2  tls 		  (minus:DI (const_int 56)
   1896  1.1.1.1.8.2  tls 		    (ashift:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   1897  1.1.1.1.8.2  tls 			       (const_int 3))))
   1898  1.1.1.1.8.2  tls 		(match_operand:DI 3 "mode_mask_operand" "n")))]
   1899  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   1900  1.1.1.1.8.2  tls   "ext%U3l %1,%2,%0"
   1901  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1902  1.1.1.1.8.2  tls 
   1903  1.1.1.1.8.2  tls (define_insn "*extql_2_le"
   1904  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1905  1.1.1.1.8.2  tls 	(lshiftrt:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
   1906  1.1.1.1.8.2  tls 	  (ashift:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   1907  1.1.1.1.8.2  tls 		     (const_int 3))))]
   1908  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   1909  1.1.1.1.8.2  tls   "extql %1,%2,%0"
   1910  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1911  1.1.1.1.8.2  tls 
   1912  1.1.1.1.8.2  tls (define_insn "*extql_2_be"
   1913  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1914  1.1.1.1.8.2  tls 	(lshiftrt:DI
   1915  1.1.1.1.8.2  tls 	  (match_operand:DI 1 "reg_or_0_operand" "rJ")
   1916  1.1.1.1.8.2  tls 	  (minus:DI (const_int 56)
   1917  1.1.1.1.8.2  tls 		    (ashift:DI
   1918  1.1.1.1.8.2  tls 		      (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   1919  1.1.1.1.8.2  tls 		      (const_int 3)))))]
   1920  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   1921  1.1.1.1.8.2  tls   "extql %1,%2,%0"
   1922  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1923  1.1.1.1.8.2  tls 
   1924  1.1.1.1.8.2  tls (define_insn "extqh_le"
   1925  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1926  1.1.1.1.8.2  tls 	(ashift:DI
   1927  1.1.1.1.8.2  tls 	 (match_operand:DI 1 "reg_or_0_operand" "rJ")
   1928  1.1.1.1.8.2  tls 	  (minus:DI (const_int 64)
   1929  1.1.1.1.8.2  tls 		    (ashift:DI
   1930  1.1.1.1.8.2  tls 		     (and:DI
   1931  1.1.1.1.8.2  tls 		      (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   1932  1.1.1.1.8.2  tls 		      (const_int 7))
   1933  1.1.1.1.8.2  tls 		     (const_int 3)))))]
   1934  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   1935  1.1.1.1.8.2  tls   "extqh %r1,%2,%0"
   1936  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1937  1.1.1.1.8.2  tls 
   1938  1.1.1.1.8.2  tls (define_insn "extqh_be"
   1939  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1940  1.1.1.1.8.2  tls 	(ashift:DI
   1941  1.1.1.1.8.2  tls 	  (match_operand:DI 1 "reg_or_0_operand" "rJ")
   1942  1.1.1.1.8.2  tls 	  (ashift:DI
   1943  1.1.1.1.8.2  tls 	    (and:DI
   1944  1.1.1.1.8.2  tls 	      (plus:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   1945  1.1.1.1.8.2  tls 		       (const_int 1))
   1946  1.1.1.1.8.2  tls 	      (const_int 7))
   1947  1.1.1.1.8.2  tls 	    (const_int 3))))]
   1948  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   1949  1.1.1.1.8.2  tls   "extqh %r1,%2,%0"
   1950  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1951  1.1.1.1.8.2  tls 
   1952  1.1.1.1.8.2  tls (define_insn "extlh_le"
   1953  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1954  1.1.1.1.8.2  tls 	(ashift:DI
   1955  1.1.1.1.8.2  tls 	 (and:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
   1956  1.1.1.1.8.2  tls 		 (const_int 2147483647))
   1957  1.1.1.1.8.2  tls 	 (minus:DI (const_int 64)
   1958  1.1.1.1.8.2  tls 		    (ashift:DI
   1959  1.1.1.1.8.2  tls 		     (and:DI
   1960  1.1.1.1.8.2  tls 		      (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   1961  1.1.1.1.8.2  tls 		      (const_int 7))
   1962  1.1.1.1.8.2  tls 		     (const_int 3)))))]
   1963  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   1964  1.1.1.1.8.2  tls   "extlh %r1,%2,%0"
   1965  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1966  1.1.1.1.8.2  tls 
   1967  1.1.1.1.8.2  tls (define_insn "extlh_be"
   1968  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1969  1.1.1.1.8.2  tls 	(and:DI
   1970  1.1.1.1.8.2  tls 	  (ashift:DI
   1971  1.1.1.1.8.2  tls 	    (match_operand:DI 1 "reg_or_0_operand" "rJ")
   1972  1.1.1.1.8.2  tls 	    (ashift:DI
   1973  1.1.1.1.8.2  tls 	      (and:DI
   1974  1.1.1.1.8.2  tls 		(plus:DI
   1975  1.1.1.1.8.2  tls 		  (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   1976  1.1.1.1.8.2  tls 		  (const_int 1))
   1977  1.1.1.1.8.2  tls 		(const_int 7))
   1978  1.1.1.1.8.2  tls 	      (const_int 3)))
   1979  1.1.1.1.8.2  tls 	  (const_int 2147483647)))]
   1980  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   1981  1.1.1.1.8.2  tls   "extlh %r1,%2,%0"
   1982  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1983  1.1.1.1.8.2  tls 
   1984  1.1.1.1.8.2  tls (define_insn "extwh_le"
   1985  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   1986  1.1.1.1.8.2  tls 	(ashift:DI
   1987  1.1.1.1.8.2  tls 	 (and:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
   1988  1.1.1.1.8.2  tls 		 (const_int 65535))
   1989  1.1.1.1.8.2  tls 	 (minus:DI (const_int 64)
   1990  1.1.1.1.8.2  tls 		    (ashift:DI
   1991  1.1.1.1.8.2  tls 		     (and:DI
   1992  1.1.1.1.8.2  tls 		      (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   1993  1.1.1.1.8.2  tls 		      (const_int 7))
   1994  1.1.1.1.8.2  tls 		     (const_int 3)))))]
   1995  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   1996  1.1.1.1.8.2  tls   "extwh %r1,%2,%0"
   1997  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   1998  1.1.1.1.8.2  tls 
   1999  1.1.1.1.8.2  tls (define_insn "extwh_be"
   2000  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2001  1.1.1.1.8.2  tls 	(and:DI
   2002  1.1.1.1.8.2  tls 	  (ashift:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
   2003  1.1.1.1.8.2  tls 		     (ashift:DI
   2004  1.1.1.1.8.2  tls 		       (and:DI
   2005  1.1.1.1.8.2  tls 			 (plus:DI
   2006  1.1.1.1.8.2  tls 			   (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   2007  1.1.1.1.8.2  tls 			   (const_int 1))
   2008  1.1.1.1.8.2  tls 			 (const_int 7))
   2009  1.1.1.1.8.2  tls 		       (const_int 3)))
   2010  1.1.1.1.8.2  tls 	  (const_int 65535)))]
   2011  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   2012  1.1.1.1.8.2  tls   "extwh %r1,%2,%0"
   2013  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2014  1.1.1.1.8.2  tls 
   2015  1.1.1.1.8.2  tls ;; This converts an extXl into an extXh with an appropriate adjustment
   2016  1.1.1.1.8.2  tls ;; to the address calculation.
   2017  1.1.1.1.8.2  tls 
   2018  1.1.1.1.8.2  tls ;;(define_split
   2019  1.1.1.1.8.2  tls ;;  [(set (match_operand:DI 0 "register_operand" "")
   2020  1.1.1.1.8.2  tls ;;	(ashift:DI (zero_extract:DI (match_operand:DI 1 "register_operand" "")
   2021  1.1.1.1.8.2  tls ;;				    (match_operand:DI 2 "mode_width_operand" "")
   2022  1.1.1.1.8.2  tls ;;				    (ashift:DI (match_operand:DI 3 "" "")
   2023  1.1.1.1.8.2  tls ;;					       (const_int 3)))
   2024  1.1.1.1.8.2  tls ;;		   (match_operand:DI 4 "const_int_operand" "")))
   2025  1.1.1.1.8.2  tls ;;   (clobber (match_operand:DI 5 "register_operand" ""))]
   2026  1.1.1.1.8.2  tls ;;  "INTVAL (operands[4]) == 64 - INTVAL (operands[2])"
   2027  1.1.1.1.8.2  tls ;;  [(set (match_dup 5) (match_dup 6))
   2028  1.1.1.1.8.2  tls ;;   (set (match_dup 0)
   2029  1.1.1.1.8.2  tls ;;	(ashift:DI (zero_extract:DI (match_dup 1) (match_dup 2)
   2030  1.1.1.1.8.2  tls ;;				    (ashift:DI (plus:DI (match_dup 5)
   2031  1.1.1.1.8.2  tls ;;							(match_dup 7))
   2032  1.1.1.1.8.2  tls ;;					       (const_int 3)))
   2033  1.1.1.1.8.2  tls ;;		   (match_dup 4)))]
   2034  1.1.1.1.8.2  tls ;;  "
   2035  1.1.1.1.8.2  tls ;;{
   2036  1.1.1.1.8.2  tls ;;  operands[6] = plus_constant (operands[3],
   2037  1.1.1.1.8.2  tls ;;			       INTVAL (operands[2]) / BITS_PER_UNIT);
   2038  1.1.1.1.8.2  tls ;;  operands[7] = GEN_INT (- INTVAL (operands[2]) / BITS_PER_UNIT);
   2039  1.1.1.1.8.2  tls ;;}")
   2040  1.1.1.1.8.2  tls 
   2041  1.1.1.1.8.2  tls (define_insn "*insbl_const"
   2042  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2043  1.1.1.1.8.2  tls 	(ashift:DI (zero_extend:DI (match_operand:QI 1 "register_operand" "r"))
   2044  1.1.1.1.8.2  tls 		   (match_operand:DI 2 "mul8_operand" "I")))]
   2045  1.1.1.1.8.2  tls   ""
   2046  1.1.1.1.8.2  tls   "insbl %1,%s2,%0"
   2047  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2048  1.1.1.1.8.2  tls 
   2049  1.1.1.1.8.2  tls (define_insn "inswl_const"
   2050  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2051  1.1.1.1.8.2  tls 	(ashift:DI (zero_extend:DI (match_operand:HI 1 "register_operand" "r"))
   2052  1.1.1.1.8.2  tls 		   (match_operand:DI 2 "mul8_operand" "I")))]
   2053  1.1.1.1.8.2  tls   ""
   2054  1.1.1.1.8.2  tls   "inswl %1,%s2,%0"
   2055  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2056  1.1.1.1.8.2  tls 
   2057  1.1.1.1.8.2  tls (define_insn "*insll_const"
   2058  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2059  1.1.1.1.8.2  tls 	(ashift:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
   2060  1.1.1.1.8.2  tls 		   (match_operand:DI 2 "mul8_operand" "I")))]
   2061  1.1.1.1.8.2  tls   ""
   2062  1.1.1.1.8.2  tls   "insll %1,%s2,%0"
   2063  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2064  1.1.1.1.8.2  tls 
   2065  1.1.1.1.8.2  tls (define_insn "insbl_le"
   2066  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2067  1.1.1.1.8.2  tls 	(ashift:DI (zero_extend:DI (match_operand:QI 1 "register_operand" "r"))
   2068  1.1.1.1.8.2  tls 		   (ashift:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   2069  1.1.1.1.8.2  tls 			      (const_int 3))))]
   2070  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   2071  1.1.1.1.8.2  tls   "insbl %1,%2,%0"
   2072  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2073  1.1.1.1.8.2  tls 
   2074  1.1.1.1.8.2  tls (define_insn "insbl_be"
   2075  1.1.1.1.8.2  tls  [(set (match_operand:DI 0 "register_operand" "=r")
   2076  1.1.1.1.8.2  tls        (ashift:DI (zero_extend:DI (match_operand:QI 1 "register_operand" "r"))
   2077  1.1.1.1.8.2  tls 	 (minus:DI (const_int 56)
   2078  1.1.1.1.8.2  tls 	   (ashift:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   2079  1.1.1.1.8.2  tls 		      (const_int 3)))))]
   2080  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   2081  1.1.1.1.8.2  tls   "insbl %1,%2,%0"
   2082  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2083  1.1.1.1.8.2  tls 
   2084  1.1.1.1.8.2  tls (define_insn "inswl_le"
   2085  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2086  1.1.1.1.8.2  tls 	(ashift:DI (zero_extend:DI (match_operand:HI 1 "register_operand" "r"))
   2087  1.1.1.1.8.2  tls 		   (ashift:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   2088  1.1.1.1.8.2  tls 			      (const_int 3))))]
   2089  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   2090  1.1.1.1.8.2  tls   "inswl %1,%2,%0"
   2091  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2092  1.1.1.1.8.2  tls 
   2093  1.1.1.1.8.2  tls (define_insn "inswl_be"
   2094  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2095  1.1.1.1.8.2  tls 	(ashift:DI (zero_extend:DI (match_operand:HI 1 "register_operand" "r"))
   2096  1.1.1.1.8.2  tls 	  (minus:DI (const_int 56)
   2097  1.1.1.1.8.2  tls 	    (ashift:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   2098  1.1.1.1.8.2  tls 		       (const_int 3)))))]
   2099  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   2100  1.1.1.1.8.2  tls   "inswl %1,%2,%0"
   2101  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2102  1.1.1.1.8.2  tls 
   2103  1.1.1.1.8.2  tls (define_insn "insll_le"
   2104  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2105  1.1.1.1.8.2  tls 	(ashift:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
   2106  1.1.1.1.8.2  tls 		   (ashift:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   2107  1.1.1.1.8.2  tls 			      (const_int 3))))]
   2108  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   2109  1.1.1.1.8.2  tls   "insll %1,%2,%0"
   2110  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2111  1.1.1.1.8.2  tls 
   2112  1.1.1.1.8.2  tls (define_insn "insll_be"
   2113  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2114  1.1.1.1.8.2  tls 	(ashift:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
   2115  1.1.1.1.8.2  tls 	  (minus:DI (const_int 56)
   2116  1.1.1.1.8.2  tls 	    (ashift:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   2117  1.1.1.1.8.2  tls 		       (const_int 3)))))]
   2118  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   2119  1.1.1.1.8.2  tls   "insll %1,%2,%0"
   2120  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2121  1.1.1.1.8.2  tls 
   2122  1.1.1.1.8.2  tls (define_insn "insql_le"
   2123  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2124  1.1.1.1.8.2  tls 	(ashift:DI (match_operand:DI 1 "register_operand" "r")
   2125  1.1.1.1.8.2  tls 		   (ashift:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   2126  1.1.1.1.8.2  tls 			      (const_int 3))))]
   2127  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   2128  1.1.1.1.8.2  tls   "insql %1,%2,%0"
   2129  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2130  1.1.1.1.8.2  tls 
   2131  1.1.1.1.8.2  tls (define_insn "insql_be"
   2132  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2133  1.1.1.1.8.2  tls 	(ashift:DI (match_operand:DI 1 "register_operand" "r")
   2134  1.1.1.1.8.2  tls 	  (minus:DI (const_int 56)
   2135  1.1.1.1.8.2  tls 	    (ashift:DI (match_operand:DI 2 "reg_or_8bit_operand" "rI")
   2136  1.1.1.1.8.2  tls 		       (const_int 3)))))]
   2137  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   2138  1.1.1.1.8.2  tls   "insql %1,%2,%0"
   2139  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2140  1.1.1.1.8.2  tls 
   2141  1.1.1.1.8.2  tls ;; Combine has this sometimes habit of moving the and outside of the
   2142  1.1.1.1.8.2  tls ;; shift, making life more interesting.
   2143  1.1.1.1.8.2  tls 
   2144  1.1.1.1.8.2  tls (define_insn "*insxl"
   2145  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2146  1.1.1.1.8.2  tls 	(and:DI (ashift:DI (match_operand:DI 1 "register_operand" "r")
   2147  1.1.1.1.8.2  tls 		   	   (match_operand:DI 2 "mul8_operand" "I"))
   2148  1.1.1.1.8.2  tls 		(match_operand:DI 3 "immediate_operand" "i")))]
   2149  1.1.1.1.8.2  tls   "HOST_BITS_PER_WIDE_INT == 64
   2150  1.1.1.1.8.2  tls    && CONST_INT_P (operands[3])
   2151  1.1.1.1.8.2  tls    && (((unsigned HOST_WIDE_INT) 0xff << INTVAL (operands[2])
   2152  1.1.1.1.8.2  tls         == (unsigned HOST_WIDE_INT) INTVAL (operands[3]))
   2153  1.1.1.1.8.2  tls        || ((unsigned HOST_WIDE_INT) 0xffff << INTVAL (operands[2])
   2154  1.1.1.1.8.2  tls         == (unsigned HOST_WIDE_INT) INTVAL (operands[3]))
   2155  1.1.1.1.8.2  tls        || ((unsigned HOST_WIDE_INT) 0xffffffff << INTVAL (operands[2])
   2156  1.1.1.1.8.2  tls         == (unsigned HOST_WIDE_INT) INTVAL (operands[3])))"
   2157  1.1.1.1.8.2  tls {
   2158  1.1.1.1.8.2  tls #if HOST_BITS_PER_WIDE_INT == 64
   2159  1.1.1.1.8.2  tls   if ((unsigned HOST_WIDE_INT) 0xff << INTVAL (operands[2])
   2160  1.1.1.1.8.2  tls       == (unsigned HOST_WIDE_INT) INTVAL (operands[3]))
   2161  1.1.1.1.8.2  tls     return "insbl %1,%s2,%0";
   2162  1.1.1.1.8.2  tls   if ((unsigned HOST_WIDE_INT) 0xffff << INTVAL (operands[2])
   2163  1.1.1.1.8.2  tls       == (unsigned HOST_WIDE_INT) INTVAL (operands[3]))
   2164  1.1.1.1.8.2  tls     return "inswl %1,%s2,%0";
   2165  1.1.1.1.8.2  tls   if ((unsigned HOST_WIDE_INT) 0xffffffff << INTVAL (operands[2])
   2166  1.1.1.1.8.2  tls       == (unsigned HOST_WIDE_INT) INTVAL (operands[3]))
   2167  1.1.1.1.8.2  tls     return "insll %1,%s2,%0";
   2168  1.1.1.1.8.2  tls #endif
   2169  1.1.1.1.8.2  tls   gcc_unreachable ();
   2170  1.1.1.1.8.2  tls }
   2171  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2172  1.1.1.1.8.2  tls 
   2173  1.1.1.1.8.2  tls ;; We do not include the insXh insns because they are complex to express
   2174  1.1.1.1.8.2  tls ;; and it does not appear that we would ever want to generate them.
   2175  1.1.1.1.8.2  tls ;;
   2176  1.1.1.1.8.2  tls ;; Since we need them for block moves, though, cop out and use unspec.
   2177  1.1.1.1.8.2  tls 
   2178  1.1.1.1.8.2  tls (define_insn "insxh"
   2179  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2180  1.1.1.1.8.2  tls 	(unspec:DI [(match_operand:DI 1 "register_operand" "r")
   2181  1.1.1.1.8.2  tls 		    (match_operand:DI 2 "mode_width_operand" "n")
   2182  1.1.1.1.8.2  tls 		    (match_operand:DI 3 "reg_or_8bit_operand" "rI")]
   2183  1.1.1.1.8.2  tls 		   UNSPEC_INSXH))]
   2184  1.1.1.1.8.2  tls   ""
   2185  1.1.1.1.8.2  tls   "ins%M2h %1,%3,%0"
   2186  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2187  1.1.1.1.8.2  tls 
   2188  1.1.1.1.8.2  tls (define_insn "mskxl_le"
   2189  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2190  1.1.1.1.8.2  tls 	(and:DI (not:DI (ashift:DI
   2191  1.1.1.1.8.2  tls 			 (match_operand:DI 2 "mode_mask_operand" "n")
   2192  1.1.1.1.8.2  tls 			 (ashift:DI
   2193  1.1.1.1.8.2  tls 			  (match_operand:DI 3 "reg_or_8bit_operand" "rI")
   2194  1.1.1.1.8.2  tls 			  (const_int 3))))
   2195  1.1.1.1.8.2  tls 		(match_operand:DI 1 "reg_or_0_operand" "rJ")))]
   2196  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   2197  1.1.1.1.8.2  tls   "msk%U2l %r1,%3,%0"
   2198  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2199  1.1.1.1.8.2  tls 
   2200  1.1.1.1.8.2  tls (define_insn "mskxl_be"
   2201  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2202  1.1.1.1.8.2  tls 	(and:DI (not:DI (ashift:DI
   2203  1.1.1.1.8.2  tls 			  (match_operand:DI 2 "mode_mask_operand" "n")
   2204  1.1.1.1.8.2  tls 			  (minus:DI (const_int 56)
   2205  1.1.1.1.8.2  tls 			    (ashift:DI
   2206  1.1.1.1.8.2  tls 			      (match_operand:DI 3 "reg_or_8bit_operand" "rI")
   2207  1.1.1.1.8.2  tls 			      (const_int 3)))))
   2208  1.1.1.1.8.2  tls 		(match_operand:DI 1 "reg_or_0_operand" "rJ")))]
   2209  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   2210  1.1.1.1.8.2  tls   "msk%U2l %r1,%3,%0"
   2211  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2212  1.1.1.1.8.2  tls 
   2213  1.1.1.1.8.2  tls ;; We do not include the mskXh insns because it does not appear we would
   2214  1.1.1.1.8.2  tls ;; ever generate one.
   2215  1.1.1.1.8.2  tls ;;
   2216  1.1.1.1.8.2  tls ;; Again, we do for block moves and we use unspec again.
   2217  1.1.1.1.8.2  tls 
   2218  1.1.1.1.8.2  tls (define_insn "mskxh"
   2219  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2220  1.1.1.1.8.2  tls 	(unspec:DI [(match_operand:DI 1 "register_operand" "r")
   2221  1.1.1.1.8.2  tls 		    (match_operand:DI 2 "mode_width_operand" "n")
   2222  1.1.1.1.8.2  tls 		    (match_operand:DI 3 "reg_or_8bit_operand" "rI")]
   2223  1.1.1.1.8.2  tls 		   UNSPEC_MSKXH))]
   2224  1.1.1.1.8.2  tls   ""
   2225  1.1.1.1.8.2  tls   "msk%M2h %1,%3,%0"
   2226  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   2227  1.1.1.1.8.2  tls 
   2228  1.1.1.1.8.2  tls ;; Prefer AND + NE over LSHIFTRT + AND.
   2229  1.1.1.1.8.2  tls 
   2230  1.1.1.1.8.2  tls (define_insn_and_split "*ze_and_ne"
   2231  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   2232  1.1.1.1.8.2  tls 	(zero_extract:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
   2233  1.1.1.1.8.2  tls 			 (const_int 1)
   2234  1.1.1.1.8.2  tls 			 (match_operand 2 "const_int_operand" "I")))]
   2235  1.1.1.1.8.2  tls   "(unsigned HOST_WIDE_INT) INTVAL (operands[2]) < 8"
   2236  1.1.1.1.8.2  tls   "#"
   2237  1.1.1.1.8.2  tls   "(unsigned HOST_WIDE_INT) INTVAL (operands[2]) < 8"
   2238  1.1.1.1.8.2  tls   [(set (match_dup 0)
   2239  1.1.1.1.8.2  tls 	(and:DI (match_dup 1) (match_dup 3)))
   2240  1.1.1.1.8.2  tls    (set (match_dup 0)
   2241  1.1.1.1.8.2  tls 	(ne:DI (match_dup 0) (const_int 0)))]
   2242  1.1.1.1.8.2  tls   "operands[3] = GEN_INT (1 << INTVAL (operands[2]));")
   2243  1.1.1.1.8.2  tls 
   2245  1.1.1.1.8.2  tls ;; Floating-point operations.  All the double-precision insns can extend
   2246  1.1.1.1.8.2  tls ;; from single, so indicate that.  The exception are the ones that simply
   2247  1.1.1.1.8.2  tls ;; play with the sign bits; it's not clear what to do there.
   2248  1.1.1.1.8.2  tls 
   2249  1.1.1.1.8.2  tls (define_insn "abssf2"
   2250  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=f")
   2251  1.1.1.1.8.2  tls 	(abs:SF (match_operand:SF 1 "reg_or_0_operand" "fG")))]
   2252  1.1.1.1.8.2  tls   "TARGET_FP"
   2253  1.1.1.1.8.2  tls   "cpys $f31,%R1,%0"
   2254  1.1.1.1.8.2  tls   [(set_attr "type" "fcpys")])
   2255  1.1.1.1.8.2  tls 
   2256  1.1.1.1.8.2  tls (define_insn "*nabssf2"
   2257  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=f")
   2258  1.1.1.1.8.2  tls 	(neg:SF (abs:SF (match_operand:SF 1 "reg_or_0_operand" "fG"))))]
   2259  1.1.1.1.8.2  tls   "TARGET_FP"
   2260  1.1.1.1.8.2  tls   "cpysn $f31,%R1,%0"
   2261  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")])
   2262  1.1.1.1.8.2  tls 
   2263  1.1.1.1.8.2  tls (define_insn "absdf2"
   2264  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2265  1.1.1.1.8.2  tls 	(abs:DF (match_operand:DF 1 "reg_or_0_operand" "fG")))]
   2266  1.1.1.1.8.2  tls   "TARGET_FP"
   2267  1.1.1.1.8.2  tls   "cpys $f31,%R1,%0"
   2268  1.1.1.1.8.2  tls   [(set_attr "type" "fcpys")])
   2269  1.1.1.1.8.2  tls 
   2270  1.1.1.1.8.2  tls (define_insn "*nabsdf2"
   2271  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2272  1.1.1.1.8.2  tls 	(neg:DF (abs:DF (match_operand:DF 1 "reg_or_0_operand" "fG"))))]
   2273  1.1.1.1.8.2  tls   "TARGET_FP"
   2274  1.1.1.1.8.2  tls   "cpysn $f31,%R1,%0"
   2275  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")])
   2276  1.1.1.1.8.2  tls 
   2277  1.1.1.1.8.2  tls (define_expand "abstf2"
   2278  1.1.1.1.8.2  tls   [(parallel [(set (match_operand:TF 0 "register_operand" "")
   2279  1.1.1.1.8.2  tls 		   (abs:TF (match_operand:TF 1 "reg_or_0_operand" "")))
   2280  1.1.1.1.8.2  tls 	      (use (match_dup 2))])]
   2281  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   2282  1.1.1.1.8.2  tls {
   2283  1.1.1.1.8.2  tls #if HOST_BITS_PER_WIDE_INT >= 64
   2284  1.1.1.1.8.2  tls   operands[2] = force_reg (DImode, GEN_INT ((HOST_WIDE_INT) 1 << 63));
   2285  1.1.1.1.8.2  tls #else
   2286  1.1.1.1.8.2  tls   operands[2] = force_reg (DImode, immed_double_const (0, 0x80000000, DImode));
   2287  1.1.1.1.8.2  tls #endif
   2288  1.1.1.1.8.2  tls })
   2289  1.1.1.1.8.2  tls 
   2290  1.1.1.1.8.2  tls (define_insn_and_split "*abstf_internal"
   2291  1.1.1.1.8.2  tls   [(set (match_operand:TF 0 "register_operand" "=r")
   2292  1.1.1.1.8.2  tls 	(abs:TF (match_operand:TF 1 "reg_or_0_operand" "rG")))
   2293  1.1.1.1.8.2  tls    (use (match_operand:DI 2 "register_operand" "r"))]
   2294  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   2295  1.1.1.1.8.2  tls   "#"
   2296  1.1.1.1.8.2  tls   "&& reload_completed"
   2297  1.1.1.1.8.2  tls   [(const_int 0)]
   2298  1.1.1.1.8.2  tls   "alpha_split_tfmode_frobsign (operands, gen_andnotdi3); DONE;")
   2299  1.1.1.1.8.2  tls 
   2300  1.1.1.1.8.2  tls (define_insn "negsf2"
   2301  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=f")
   2302  1.1.1.1.8.2  tls 	(neg:SF (match_operand:SF 1 "reg_or_0_operand" "fG")))]
   2303  1.1.1.1.8.2  tls   "TARGET_FP"
   2304  1.1.1.1.8.2  tls   "cpysn %R1,%R1,%0"
   2305  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")])
   2306  1.1.1.1.8.2  tls 
   2307  1.1.1.1.8.2  tls (define_insn "negdf2"
   2308  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2309  1.1.1.1.8.2  tls 	(neg:DF (match_operand:DF 1 "reg_or_0_operand" "fG")))]
   2310  1.1.1.1.8.2  tls   "TARGET_FP"
   2311  1.1.1.1.8.2  tls   "cpysn %R1,%R1,%0"
   2312  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")])
   2313  1.1.1.1.8.2  tls 
   2314  1.1.1.1.8.2  tls (define_expand "negtf2"
   2315  1.1.1.1.8.2  tls   [(parallel [(set (match_operand:TF 0 "register_operand" "")
   2316  1.1.1.1.8.2  tls 		   (neg:TF (match_operand:TF 1 "reg_or_0_operand" "")))
   2317  1.1.1.1.8.2  tls 	      (use (match_dup 2))])]
   2318  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   2319  1.1.1.1.8.2  tls {
   2320  1.1.1.1.8.2  tls #if HOST_BITS_PER_WIDE_INT >= 64
   2321  1.1.1.1.8.2  tls   operands[2] = force_reg (DImode, GEN_INT ((HOST_WIDE_INT) 1 << 63));
   2322  1.1.1.1.8.2  tls #else
   2323  1.1.1.1.8.2  tls   operands[2] = force_reg (DImode, immed_double_const (0, 0x80000000, DImode));
   2324  1.1.1.1.8.2  tls #endif
   2325  1.1.1.1.8.2  tls })
   2326  1.1.1.1.8.2  tls 
   2327  1.1.1.1.8.2  tls (define_insn_and_split "*negtf_internal"
   2328  1.1.1.1.8.2  tls   [(set (match_operand:TF 0 "register_operand" "=r")
   2329  1.1.1.1.8.2  tls 	(neg:TF (match_operand:TF 1 "reg_or_0_operand" "rG")))
   2330  1.1.1.1.8.2  tls    (use (match_operand:DI 2 "register_operand" "r"))]
   2331  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   2332  1.1.1.1.8.2  tls   "#"
   2333  1.1.1.1.8.2  tls   "&& reload_completed"
   2334  1.1.1.1.8.2  tls   [(const_int 0)]
   2335  1.1.1.1.8.2  tls   "alpha_split_tfmode_frobsign (operands, gen_xordi3); DONE;")
   2336  1.1.1.1.8.2  tls 
   2337  1.1.1.1.8.2  tls (define_insn "copysignsf3"
   2338  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=f")
   2339  1.1.1.1.8.2  tls 	(unspec:SF [(match_operand:SF 1 "reg_or_0_operand" "fG")
   2340  1.1.1.1.8.2  tls 		    (match_operand:SF 2 "reg_or_0_operand" "fG")]
   2341  1.1.1.1.8.2  tls 		   UNSPEC_COPYSIGN))]
   2342  1.1.1.1.8.2  tls   "TARGET_FP"
   2343  1.1.1.1.8.2  tls   "cpys %R2,%R1,%0"
   2344  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")])
   2345  1.1.1.1.8.2  tls 
   2346  1.1.1.1.8.2  tls (define_insn "*ncopysignsf3"
   2347  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=f")
   2348  1.1.1.1.8.2  tls 	(neg:SF (unspec:SF [(match_operand:SF 1 "reg_or_0_operand" "fG")
   2349  1.1.1.1.8.2  tls 			    (match_operand:SF 2 "reg_or_0_operand" "fG")]
   2350  1.1.1.1.8.2  tls 			   UNSPEC_COPYSIGN)))]
   2351  1.1.1.1.8.2  tls   "TARGET_FP"
   2352  1.1.1.1.8.2  tls   "cpysn %R2,%R1,%0"
   2353  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")])
   2354  1.1.1.1.8.2  tls 
   2355  1.1.1.1.8.2  tls (define_insn "copysigndf3"
   2356  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2357  1.1.1.1.8.2  tls 	(unspec:DF [(match_operand:DF 1 "reg_or_0_operand" "fG")
   2358  1.1.1.1.8.2  tls 		    (match_operand:DF 2 "reg_or_0_operand" "fG")]
   2359  1.1.1.1.8.2  tls 		   UNSPEC_COPYSIGN))]
   2360  1.1.1.1.8.2  tls   "TARGET_FP"
   2361  1.1.1.1.8.2  tls   "cpys %R2,%R1,%0"
   2362  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")])
   2363  1.1.1.1.8.2  tls 
   2364  1.1.1.1.8.2  tls (define_insn "*ncopysigndf3"
   2365  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2366  1.1.1.1.8.2  tls 	(neg:DF (unspec:DF [(match_operand:DF 1 "reg_or_0_operand" "fG")
   2367  1.1.1.1.8.2  tls 			    (match_operand:DF 2 "reg_or_0_operand" "fG")]
   2368  1.1.1.1.8.2  tls 			   UNSPEC_COPYSIGN)))]
   2369  1.1.1.1.8.2  tls   "TARGET_FP"
   2370  1.1.1.1.8.2  tls   "cpysn %R2,%R1,%0"
   2371  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")])
   2372  1.1.1.1.8.2  tls 
   2373  1.1.1.1.8.2  tls (define_insn "*addsf_ieee"
   2374  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=&f")
   2375  1.1.1.1.8.2  tls 	(plus:SF (match_operand:SF 1 "reg_or_0_operand" "%fG")
   2376  1.1.1.1.8.2  tls 		 (match_operand:SF 2 "reg_or_0_operand" "fG")))]
   2377  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   2378  1.1.1.1.8.2  tls   "add%,%/ %R1,%R2,%0"
   2379  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2380  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2381  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2382  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2383  1.1.1.1.8.2  tls 
   2384  1.1.1.1.8.2  tls (define_insn "addsf3"
   2385  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=f")
   2386  1.1.1.1.8.2  tls 	(plus:SF (match_operand:SF 1 "reg_or_0_operand" "%fG")
   2387  1.1.1.1.8.2  tls 		 (match_operand:SF 2 "reg_or_0_operand" "fG")))]
   2388  1.1.1.1.8.2  tls   "TARGET_FP"
   2389  1.1.1.1.8.2  tls   "add%,%/ %R1,%R2,%0"
   2390  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2391  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2392  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2393  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2394  1.1.1.1.8.2  tls 
   2395  1.1.1.1.8.2  tls (define_insn "*adddf_ieee"
   2396  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=&f")
   2397  1.1.1.1.8.2  tls 	(plus:DF (match_operand:DF 1 "reg_or_0_operand" "%fG")
   2398  1.1.1.1.8.2  tls 		 (match_operand:DF 2 "reg_or_0_operand" "fG")))]
   2399  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   2400  1.1.1.1.8.2  tls   "add%-%/ %R1,%R2,%0"
   2401  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2402  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2403  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2404  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2405  1.1.1.1.8.2  tls 
   2406  1.1.1.1.8.2  tls (define_insn "adddf3"
   2407  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2408  1.1.1.1.8.2  tls 	(plus:DF (match_operand:DF 1 "reg_or_0_operand" "%fG")
   2409  1.1.1.1.8.2  tls 		 (match_operand:DF 2 "reg_or_0_operand" "fG")))]
   2410  1.1.1.1.8.2  tls   "TARGET_FP"
   2411  1.1.1.1.8.2  tls   "add%-%/ %R1,%R2,%0"
   2412  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2413  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2414  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2415  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2416  1.1.1.1.8.2  tls 
   2417  1.1.1.1.8.2  tls (define_insn "*adddf_ext1"
   2418  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2419  1.1.1.1.8.2  tls 	(plus:DF (float_extend:DF
   2420  1.1.1.1.8.2  tls 		  (match_operand:SF 1 "reg_or_0_operand" "fG"))
   2421  1.1.1.1.8.2  tls 		 (match_operand:DF 2 "reg_or_0_operand" "fG")))]
   2422  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   2423  1.1.1.1.8.2  tls   "add%-%/ %R1,%R2,%0"
   2424  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2425  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2426  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2427  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2428  1.1.1.1.8.2  tls 
   2429  1.1.1.1.8.2  tls (define_insn "*adddf_ext2"
   2430  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2431  1.1.1.1.8.2  tls 	(plus:DF (float_extend:DF
   2432  1.1.1.1.8.2  tls 		  (match_operand:SF 1 "reg_or_0_operand" "%fG"))
   2433  1.1.1.1.8.2  tls 		 (float_extend:DF
   2434  1.1.1.1.8.2  tls 		  (match_operand:SF 2 "reg_or_0_operand" "fG"))))]
   2435  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   2436  1.1.1.1.8.2  tls   "add%-%/ %R1,%R2,%0"
   2437  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2438  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2439  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2440  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2441  1.1.1.1.8.2  tls 
   2442  1.1.1.1.8.2  tls (define_expand "addtf3"
   2443  1.1.1.1.8.2  tls   [(use (match_operand 0 "register_operand" ""))
   2444  1.1.1.1.8.2  tls    (use (match_operand 1 "general_operand" ""))
   2445  1.1.1.1.8.2  tls    (use (match_operand 2 "general_operand" ""))]
   2446  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   2447  1.1.1.1.8.2  tls   "alpha_emit_xfloating_arith (PLUS, operands); DONE;")
   2448  1.1.1.1.8.2  tls 
   2449  1.1.1.1.8.2  tls ;; Define conversion operators between DFmode and SImode, using the cvtql
   2450  1.1.1.1.8.2  tls ;; instruction.  To allow combine et al to do useful things, we keep the
   2451  1.1.1.1.8.2  tls ;; operation as a unit until after reload, at which point we split the
   2452  1.1.1.1.8.2  tls ;; instructions.
   2453  1.1.1.1.8.2  tls ;;
   2454  1.1.1.1.8.2  tls ;; Note that we (attempt to) only consider this optimization when the
   2455  1.1.1.1.8.2  tls ;; ultimate destination is memory.  If we will be doing further integer
   2456  1.1.1.1.8.2  tls ;; processing, it is cheaper to do the truncation in the int regs.
   2457  1.1.1.1.8.2  tls 
   2458  1.1.1.1.8.2  tls (define_insn "*cvtql"
   2459  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=f")
   2460  1.1.1.1.8.2  tls 	(unspec:SF [(match_operand:DI 1 "reg_or_0_operand" "fG")]
   2461  1.1.1.1.8.2  tls 		   UNSPEC_CVTQL))]
   2462  1.1.1.1.8.2  tls   "TARGET_FP"
   2463  1.1.1.1.8.2  tls   "cvtql%/ %R1,%0"
   2464  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2465  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2466  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "v_sv")])
   2467  1.1.1.1.8.2  tls 
   2468  1.1.1.1.8.2  tls (define_insn_and_split "*fix_truncdfsi_ieee"
   2469  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "memory_operand" "=m")
   2470  1.1.1.1.8.2  tls 	(subreg:SI
   2471  1.1.1.1.8.2  tls 	  (match_operator:DI 4 "fix_operator" 
   2472  1.1.1.1.8.2  tls 	    [(match_operand:DF 1 "reg_or_0_operand" "fG")]) 0))
   2473  1.1.1.1.8.2  tls    (clobber (match_scratch:DI 2 "=&f"))
   2474  1.1.1.1.8.2  tls    (clobber (match_scratch:SF 3 "=&f"))]
   2475  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   2476  1.1.1.1.8.2  tls   "#"
   2477  1.1.1.1.8.2  tls   "&& reload_completed"
   2478  1.1.1.1.8.2  tls   [(set (match_dup 2) (match_op_dup 4 [(match_dup 1)]))
   2479  1.1.1.1.8.2  tls    (set (match_dup 3) (unspec:SF [(match_dup 2)] UNSPEC_CVTQL))
   2480  1.1.1.1.8.2  tls    (set (match_dup 5) (match_dup 3))]
   2481  1.1.1.1.8.2  tls {
   2482  1.1.1.1.8.2  tls   operands[5] = adjust_address (operands[0], SFmode, 0);
   2483  1.1.1.1.8.2  tls }
   2484  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2485  1.1.1.1.8.2  tls    (set_attr "trap" "yes")])
   2486  1.1.1.1.8.2  tls 
   2487  1.1.1.1.8.2  tls (define_insn_and_split "*fix_truncdfsi_internal"
   2488  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "memory_operand" "=m")
   2489  1.1.1.1.8.2  tls 	(subreg:SI
   2490  1.1.1.1.8.2  tls 	  (match_operator:DI 3 "fix_operator" 
   2491  1.1.1.1.8.2  tls 	    [(match_operand:DF 1 "reg_or_0_operand" "fG")]) 0))
   2492  1.1.1.1.8.2  tls    (clobber (match_scratch:DI 2 "=f"))]
   2493  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   2494  1.1.1.1.8.2  tls   "#"
   2495  1.1.1.1.8.2  tls   "&& reload_completed"
   2496  1.1.1.1.8.2  tls   [(set (match_dup 2) (match_op_dup 3 [(match_dup 1)]))
   2497  1.1.1.1.8.2  tls    (set (match_dup 4) (unspec:SF [(match_dup 2)] UNSPEC_CVTQL))
   2498  1.1.1.1.8.2  tls    (set (match_dup 5) (match_dup 4))]
   2499  1.1.1.1.8.2  tls {
   2500  1.1.1.1.8.2  tls   operands[4] = gen_rtx_REG (SFmode, REGNO (operands[2]));
   2501  1.1.1.1.8.2  tls   operands[5] = adjust_address (operands[0], SFmode, 0);
   2502  1.1.1.1.8.2  tls }
   2503  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2504  1.1.1.1.8.2  tls    (set_attr "trap" "yes")])
   2505  1.1.1.1.8.2  tls 
   2506  1.1.1.1.8.2  tls (define_insn "*fix_truncdfdi_ieee"
   2507  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "reg_no_subreg_operand" "=&f")
   2508  1.1.1.1.8.2  tls 	(match_operator:DI 2 "fix_operator" 
   2509  1.1.1.1.8.2  tls 	  [(match_operand:DF 1 "reg_or_0_operand" "fG")]))]
   2510  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   2511  1.1.1.1.8.2  tls   "cvt%-q%/ %R1,%0"
   2512  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2513  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2514  1.1.1.1.8.2  tls    (set_attr "round_suffix" "c")
   2515  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "v_sv_svi")])
   2516  1.1.1.1.8.2  tls 
   2517  1.1.1.1.8.2  tls (define_insn "*fix_truncdfdi2"
   2518  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "reg_no_subreg_operand" "=f")
   2519  1.1.1.1.8.2  tls 	(match_operator:DI 2 "fix_operator" 
   2520  1.1.1.1.8.2  tls 	  [(match_operand:DF 1 "reg_or_0_operand" "fG")]))]
   2521  1.1.1.1.8.2  tls   "TARGET_FP"
   2522  1.1.1.1.8.2  tls   "cvt%-q%/ %R1,%0"
   2523  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2524  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2525  1.1.1.1.8.2  tls    (set_attr "round_suffix" "c")
   2526  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "v_sv_svi")])
   2527  1.1.1.1.8.2  tls 
   2528  1.1.1.1.8.2  tls (define_expand "fix_truncdfdi2"
   2529  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "reg_no_subreg_operand" "")
   2530  1.1.1.1.8.2  tls 	(fix:DI (match_operand:DF 1 "reg_or_0_operand" "")))]
   2531  1.1.1.1.8.2  tls   "TARGET_FP"
   2532  1.1.1.1.8.2  tls   "")
   2533  1.1.1.1.8.2  tls 
   2534  1.1.1.1.8.2  tls (define_expand "fixuns_truncdfdi2"
   2535  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "reg_no_subreg_operand" "")
   2536  1.1.1.1.8.2  tls 	(unsigned_fix:DI (match_operand:DF 1 "reg_or_0_operand" "")))]
   2537  1.1.1.1.8.2  tls   "TARGET_FP"
   2538  1.1.1.1.8.2  tls   "")
   2539  1.1.1.1.8.2  tls 
   2540  1.1.1.1.8.2  tls ;; Likewise between SFmode and SImode.
   2541  1.1.1.1.8.2  tls 
   2542  1.1.1.1.8.2  tls (define_insn_and_split "*fix_truncsfsi_ieee"
   2543  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "memory_operand" "=m")
   2544  1.1.1.1.8.2  tls 	(subreg:SI
   2545  1.1.1.1.8.2  tls 	  (match_operator:DI 4 "fix_operator" 
   2546  1.1.1.1.8.2  tls 	    [(float_extend:DF
   2547  1.1.1.1.8.2  tls 	       (match_operand:SF 1 "reg_or_0_operand" "fG"))]) 0))
   2548  1.1.1.1.8.2  tls    (clobber (match_scratch:DI 2 "=&f"))
   2549  1.1.1.1.8.2  tls    (clobber (match_scratch:SF 3 "=&f"))]
   2550  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   2551  1.1.1.1.8.2  tls   "#"
   2552  1.1.1.1.8.2  tls   "&& reload_completed"
   2553  1.1.1.1.8.2  tls   [(set (match_dup 2) (match_op_dup 4 [(float_extend:DF (match_dup 1))]))
   2554  1.1.1.1.8.2  tls    (set (match_dup 3) (unspec:SF [(match_dup 2)] UNSPEC_CVTQL))
   2555  1.1.1.1.8.2  tls    (set (match_dup 5) (match_dup 3))]
   2556  1.1.1.1.8.2  tls {
   2557  1.1.1.1.8.2  tls   operands[5] = adjust_address (operands[0], SFmode, 0);
   2558  1.1.1.1.8.2  tls }
   2559  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2560  1.1.1.1.8.2  tls    (set_attr "trap" "yes")])
   2561  1.1.1.1.8.2  tls 
   2562  1.1.1.1.8.2  tls (define_insn_and_split "*fix_truncsfsi_internal"
   2563  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "memory_operand" "=m")
   2564  1.1.1.1.8.2  tls 	(subreg:SI
   2565  1.1.1.1.8.2  tls 	  (match_operator:DI 3 "fix_operator" 
   2566  1.1.1.1.8.2  tls 	    [(float_extend:DF
   2567  1.1.1.1.8.2  tls 	       (match_operand:SF 1 "reg_or_0_operand" "fG"))]) 0))
   2568  1.1.1.1.8.2  tls    (clobber (match_scratch:DI 2 "=f"))]
   2569  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   2570  1.1.1.1.8.2  tls   "#"
   2571  1.1.1.1.8.2  tls   "&& reload_completed"
   2572  1.1.1.1.8.2  tls   [(set (match_dup 2) (match_op_dup 3 [(float_extend:DF (match_dup 1))]))
   2573  1.1.1.1.8.2  tls    (set (match_dup 4) (unspec:SF [(match_dup 2)] UNSPEC_CVTQL))
   2574  1.1.1.1.8.2  tls    (set (match_dup 5) (match_dup 4))]
   2575  1.1.1.1.8.2  tls {
   2576  1.1.1.1.8.2  tls   operands[4] = gen_rtx_REG (SFmode, REGNO (operands[2]));
   2577  1.1.1.1.8.2  tls   operands[5] = adjust_address (operands[0], SFmode, 0);
   2578  1.1.1.1.8.2  tls }
   2579  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2580  1.1.1.1.8.2  tls    (set_attr "trap" "yes")])
   2581  1.1.1.1.8.2  tls 
   2582  1.1.1.1.8.2  tls (define_insn "*fix_truncsfdi_ieee"
   2583  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "reg_no_subreg_operand" "=&f")
   2584  1.1.1.1.8.2  tls 	(match_operator:DI 2 "fix_operator" 
   2585  1.1.1.1.8.2  tls 	  [(float_extend:DF (match_operand:SF 1 "reg_or_0_operand" "fG"))]))]
   2586  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   2587  1.1.1.1.8.2  tls   "cvt%-q%/ %R1,%0"
   2588  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2589  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2590  1.1.1.1.8.2  tls    (set_attr "round_suffix" "c")
   2591  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "v_sv_svi")])
   2592  1.1.1.1.8.2  tls 
   2593  1.1.1.1.8.2  tls (define_insn "*fix_truncsfdi2"
   2594  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "reg_no_subreg_operand" "=f")
   2595  1.1.1.1.8.2  tls 	(match_operator:DI 2 "fix_operator" 
   2596  1.1.1.1.8.2  tls 	  [(float_extend:DF (match_operand:SF 1 "reg_or_0_operand" "fG"))]))]
   2597  1.1.1.1.8.2  tls   "TARGET_FP"
   2598  1.1.1.1.8.2  tls   "cvt%-q%/ %R1,%0"
   2599  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2600  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2601  1.1.1.1.8.2  tls    (set_attr "round_suffix" "c")
   2602  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "v_sv_svi")])
   2603  1.1.1.1.8.2  tls 
   2604  1.1.1.1.8.2  tls (define_expand "fix_truncsfdi2"
   2605  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "reg_no_subreg_operand" "")
   2606  1.1.1.1.8.2  tls 	(fix:DI (float_extend:DF (match_operand:SF 1 "reg_or_0_operand" ""))))]
   2607  1.1.1.1.8.2  tls   "TARGET_FP"
   2608  1.1.1.1.8.2  tls   "")
   2609  1.1.1.1.8.2  tls 
   2610  1.1.1.1.8.2  tls (define_expand "fixuns_truncsfdi2"
   2611  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "reg_no_subreg_operand" "")
   2612  1.1.1.1.8.2  tls 	(unsigned_fix:DI
   2613  1.1.1.1.8.2  tls 	  (float_extend:DF (match_operand:SF 1 "reg_or_0_operand" ""))))]
   2614  1.1.1.1.8.2  tls   "TARGET_FP"
   2615  1.1.1.1.8.2  tls   "")
   2616  1.1.1.1.8.2  tls 
   2617  1.1.1.1.8.2  tls (define_expand "fix_trunctfdi2"
   2618  1.1.1.1.8.2  tls   [(use (match_operand:DI 0 "register_operand" ""))
   2619  1.1.1.1.8.2  tls    (use (match_operand:TF 1 "general_operand" ""))]
   2620  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   2621  1.1.1.1.8.2  tls   "alpha_emit_xfloating_cvt (FIX, operands); DONE;")
   2622  1.1.1.1.8.2  tls 
   2623  1.1.1.1.8.2  tls (define_expand "fixuns_trunctfdi2"
   2624  1.1.1.1.8.2  tls   [(use (match_operand:DI 0 "register_operand" ""))
   2625  1.1.1.1.8.2  tls    (use (match_operand:TF 1 "general_operand" ""))]
   2626  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   2627  1.1.1.1.8.2  tls   "alpha_emit_xfloating_cvt (UNSIGNED_FIX, operands); DONE;")
   2628  1.1.1.1.8.2  tls 
   2629  1.1.1.1.8.2  tls (define_insn "*floatdisf_ieee"
   2630  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=&f")
   2631  1.1.1.1.8.2  tls 	(float:SF (match_operand:DI 1 "reg_no_subreg_operand" "f")))]
   2632  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   2633  1.1.1.1.8.2  tls   "cvtq%,%/ %1,%0"
   2634  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2635  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2636  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2637  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "sui")])
   2638  1.1.1.1.8.2  tls 
   2639  1.1.1.1.8.2  tls (define_insn "floatdisf2"
   2640  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=f")
   2641  1.1.1.1.8.2  tls 	(float:SF (match_operand:DI 1 "reg_no_subreg_operand" "f")))]
   2642  1.1.1.1.8.2  tls   "TARGET_FP"
   2643  1.1.1.1.8.2  tls   "cvtq%,%/ %1,%0"
   2644  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2645  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2646  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2647  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "sui")])
   2648  1.1.1.1.8.2  tls 
   2649  1.1.1.1.8.2  tls (define_insn_and_split "*floatsisf2_ieee"
   2650  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=&f")
   2651  1.1.1.1.8.2  tls 	(float:SF (match_operand:SI 1 "memory_operand" "m")))
   2652  1.1.1.1.8.2  tls    (clobber (match_scratch:DI 2 "=&f"))
   2653  1.1.1.1.8.2  tls    (clobber (match_scratch:SF 3 "=&f"))]
   2654  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   2655  1.1.1.1.8.2  tls   "#"
   2656  1.1.1.1.8.2  tls   "&& reload_completed"
   2657  1.1.1.1.8.2  tls   [(set (match_dup 3) (match_dup 1))
   2658  1.1.1.1.8.2  tls    (set (match_dup 2) (unspec:DI [(match_dup 3)] UNSPEC_CVTLQ))
   2659  1.1.1.1.8.2  tls    (set (match_dup 0) (float:SF (match_dup 2)))]
   2660  1.1.1.1.8.2  tls {
   2661  1.1.1.1.8.2  tls   operands[1] = adjust_address (operands[1], SFmode, 0);
   2662  1.1.1.1.8.2  tls })
   2663  1.1.1.1.8.2  tls 
   2664  1.1.1.1.8.2  tls (define_insn_and_split "*floatsisf2"
   2665  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=f")
   2666  1.1.1.1.8.2  tls 	(float:SF (match_operand:SI 1 "memory_operand" "m")))]
   2667  1.1.1.1.8.2  tls   "TARGET_FP"
   2668  1.1.1.1.8.2  tls   "#"
   2669  1.1.1.1.8.2  tls   "&& reload_completed"
   2670  1.1.1.1.8.2  tls   [(set (match_dup 0) (match_dup 1))
   2671  1.1.1.1.8.2  tls    (set (match_dup 2) (unspec:DI [(match_dup 0)] UNSPEC_CVTLQ))
   2672  1.1.1.1.8.2  tls    (set (match_dup 0) (float:SF (match_dup 2)))]
   2673  1.1.1.1.8.2  tls {
   2674  1.1.1.1.8.2  tls   operands[1] = adjust_address (operands[1], SFmode, 0);
   2675  1.1.1.1.8.2  tls   operands[2] = gen_rtx_REG (DImode, REGNO (operands[0]));
   2676  1.1.1.1.8.2  tls })
   2677  1.1.1.1.8.2  tls 
   2678  1.1.1.1.8.2  tls (define_insn "*floatdidf_ieee"
   2679  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=&f")
   2680  1.1.1.1.8.2  tls 	(float:DF (match_operand:DI 1 "reg_no_subreg_operand" "f")))]
   2681  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   2682  1.1.1.1.8.2  tls   "cvtq%-%/ %1,%0"
   2683  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2684  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2685  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2686  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "sui")])
   2687  1.1.1.1.8.2  tls 
   2688  1.1.1.1.8.2  tls (define_insn "floatdidf2"
   2689  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2690  1.1.1.1.8.2  tls 	(float:DF (match_operand:DI 1 "reg_no_subreg_operand" "f")))]
   2691  1.1.1.1.8.2  tls   "TARGET_FP"
   2692  1.1.1.1.8.2  tls   "cvtq%-%/ %1,%0"
   2693  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2694  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2695  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2696  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "sui")])
   2697  1.1.1.1.8.2  tls 
   2698  1.1.1.1.8.2  tls (define_insn_and_split "*floatsidf2_ieee"
   2699  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=&f")
   2700  1.1.1.1.8.2  tls 	(float:DF (match_operand:SI 1 "memory_operand" "m")))
   2701  1.1.1.1.8.2  tls    (clobber (match_scratch:DI 2 "=&f"))
   2702  1.1.1.1.8.2  tls    (clobber (match_scratch:SF 3 "=&f"))]
   2703  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   2704  1.1.1.1.8.2  tls   "#"
   2705  1.1.1.1.8.2  tls   "&& reload_completed"
   2706  1.1.1.1.8.2  tls   [(set (match_dup 3) (match_dup 1))
   2707  1.1.1.1.8.2  tls    (set (match_dup 2) (unspec:DI [(match_dup 3)] UNSPEC_CVTLQ))
   2708  1.1.1.1.8.2  tls    (set (match_dup 0) (float:DF (match_dup 2)))]
   2709  1.1.1.1.8.2  tls {
   2710  1.1.1.1.8.2  tls   operands[1] = adjust_address (operands[1], SFmode, 0);
   2711  1.1.1.1.8.2  tls })
   2712  1.1.1.1.8.2  tls 
   2713  1.1.1.1.8.2  tls (define_insn_and_split "*floatsidf2"
   2714  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2715  1.1.1.1.8.2  tls 	(float:DF (match_operand:SI 1 "memory_operand" "m")))]
   2716  1.1.1.1.8.2  tls   "TARGET_FP"
   2717  1.1.1.1.8.2  tls   "#"
   2718  1.1.1.1.8.2  tls   "&& reload_completed"
   2719  1.1.1.1.8.2  tls   [(set (match_dup 3) (match_dup 1))
   2720  1.1.1.1.8.2  tls    (set (match_dup 2) (unspec:DI [(match_dup 3)] UNSPEC_CVTLQ))
   2721  1.1.1.1.8.2  tls    (set (match_dup 0) (float:DF (match_dup 2)))]
   2722  1.1.1.1.8.2  tls {
   2723  1.1.1.1.8.2  tls   operands[1] = adjust_address (operands[1], SFmode, 0);
   2724  1.1.1.1.8.2  tls   operands[2] = gen_rtx_REG (DImode, REGNO (operands[0]));
   2725  1.1.1.1.8.2  tls   operands[3] = gen_rtx_REG (SFmode, REGNO (operands[0]));
   2726  1.1.1.1.8.2  tls })
   2727  1.1.1.1.8.2  tls 
   2728  1.1.1.1.8.2  tls (define_expand "floatditf2"
   2729  1.1.1.1.8.2  tls   [(use (match_operand:TF 0 "register_operand" ""))
   2730  1.1.1.1.8.2  tls    (use (match_operand:DI 1 "general_operand" ""))]
   2731  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   2732  1.1.1.1.8.2  tls   "alpha_emit_xfloating_cvt (FLOAT, operands); DONE;")
   2733  1.1.1.1.8.2  tls 
   2734  1.1.1.1.8.2  tls (define_expand "floatunsdisf2"
   2735  1.1.1.1.8.2  tls   [(use (match_operand:SF 0 "register_operand" ""))
   2736  1.1.1.1.8.2  tls    (use (match_operand:DI 1 "register_operand" ""))]
   2737  1.1.1.1.8.2  tls   "TARGET_FP"
   2738  1.1.1.1.8.2  tls   "alpha_emit_floatuns (operands); DONE;")
   2739  1.1.1.1.8.2  tls 
   2740  1.1.1.1.8.2  tls (define_expand "floatunsdidf2"
   2741  1.1.1.1.8.2  tls   [(use (match_operand:DF 0 "register_operand" ""))
   2742  1.1.1.1.8.2  tls    (use (match_operand:DI 1 "register_operand" ""))]
   2743  1.1.1.1.8.2  tls   "TARGET_FP"
   2744  1.1.1.1.8.2  tls   "alpha_emit_floatuns (operands); DONE;")
   2745  1.1.1.1.8.2  tls 
   2746  1.1.1.1.8.2  tls (define_expand "floatunsditf2"
   2747  1.1.1.1.8.2  tls   [(use (match_operand:TF 0 "register_operand" ""))
   2748  1.1.1.1.8.2  tls    (use (match_operand:DI 1 "general_operand" ""))]
   2749  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   2750  1.1.1.1.8.2  tls   "alpha_emit_xfloating_cvt (UNSIGNED_FLOAT, operands); DONE;")
   2751  1.1.1.1.8.2  tls 
   2752  1.1.1.1.8.2  tls (define_expand "extendsfdf2"
   2753  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "")
   2754  1.1.1.1.8.2  tls 	(float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "")))]
   2755  1.1.1.1.8.2  tls   "TARGET_FP"
   2756  1.1.1.1.8.2  tls {
   2757  1.1.1.1.8.2  tls   if (alpha_fptm >= ALPHA_FPTM_SU)
   2758  1.1.1.1.8.2  tls     operands[1] = force_reg (SFmode, operands[1]);
   2759  1.1.1.1.8.2  tls })
   2760  1.1.1.1.8.2  tls 
   2761  1.1.1.1.8.2  tls ;; The Unicos/Mk assembler doesn't support cvtst, but we've already
   2762  1.1.1.1.8.2  tls ;; asserted that alpha_fptm == ALPHA_FPTM_N.
   2763  1.1.1.1.8.2  tls 
   2764  1.1.1.1.8.2  tls (define_insn "*extendsfdf2_ieee"
   2765  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=&f")
   2766  1.1.1.1.8.2  tls 	(float_extend:DF (match_operand:SF 1 "register_operand" "f")))]
   2767  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   2768  1.1.1.1.8.2  tls   "cvtsts %1,%0"
   2769  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2770  1.1.1.1.8.2  tls    (set_attr "trap" "yes")])
   2771  1.1.1.1.8.2  tls 
   2772  1.1.1.1.8.2  tls (define_insn "*extendsfdf2_internal"
   2773  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f,f,m")
   2774  1.1.1.1.8.2  tls 	(float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "f,m,f")))]
   2775  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   2776  1.1.1.1.8.2  tls   "@
   2777  1.1.1.1.8.2  tls    cpys %1,%1,%0
   2778  1.1.1.1.8.2  tls    ld%, %0,%1
   2779  1.1.1.1.8.2  tls    st%- %1,%0"
   2780  1.1.1.1.8.2  tls   [(set_attr "type" "fcpys,fld,fst")])
   2781  1.1.1.1.8.2  tls 
   2782  1.1.1.1.8.2  tls ;; Use register_operand for operand 1 to prevent compress_float_constant
   2783  1.1.1.1.8.2  tls ;; from doing something silly.  When optimizing we'll put things back 
   2784  1.1.1.1.8.2  tls ;; together anyway.
   2785  1.1.1.1.8.2  tls (define_expand "extendsftf2"
   2786  1.1.1.1.8.2  tls   [(use (match_operand:TF 0 "register_operand" ""))
   2787  1.1.1.1.8.2  tls    (use (match_operand:SF 1 "register_operand" ""))]
   2788  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   2789  1.1.1.1.8.2  tls {
   2790  1.1.1.1.8.2  tls   rtx tmp = gen_reg_rtx (DFmode);
   2791  1.1.1.1.8.2  tls   emit_insn (gen_extendsfdf2 (tmp, operands[1]));
   2792  1.1.1.1.8.2  tls   emit_insn (gen_extenddftf2 (operands[0], tmp));
   2793  1.1.1.1.8.2  tls   DONE;
   2794  1.1.1.1.8.2  tls })
   2795  1.1.1.1.8.2  tls 
   2796  1.1.1.1.8.2  tls (define_expand "extenddftf2"
   2797  1.1.1.1.8.2  tls   [(use (match_operand:TF 0 "register_operand" ""))
   2798  1.1.1.1.8.2  tls    (use (match_operand:DF 1 "register_operand" ""))]
   2799  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   2800  1.1.1.1.8.2  tls   "alpha_emit_xfloating_cvt (FLOAT_EXTEND, operands); DONE;")
   2801  1.1.1.1.8.2  tls 
   2802  1.1.1.1.8.2  tls (define_insn "*truncdfsf2_ieee"
   2803  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=&f")
   2804  1.1.1.1.8.2  tls 	(float_truncate:SF (match_operand:DF 1 "reg_or_0_operand" "fG")))]
   2805  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   2806  1.1.1.1.8.2  tls   "cvt%-%,%/ %R1,%0"
   2807  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2808  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2809  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2810  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2811  1.1.1.1.8.2  tls 
   2812  1.1.1.1.8.2  tls (define_insn "truncdfsf2"
   2813  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=f")
   2814  1.1.1.1.8.2  tls 	(float_truncate:SF (match_operand:DF 1 "reg_or_0_operand" "fG")))]
   2815  1.1.1.1.8.2  tls   "TARGET_FP"
   2816  1.1.1.1.8.2  tls   "cvt%-%,%/ %R1,%0"
   2817  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   2818  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2819  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2820  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2821  1.1.1.1.8.2  tls 
   2822  1.1.1.1.8.2  tls (define_expand "trunctfdf2"
   2823  1.1.1.1.8.2  tls   [(use (match_operand:DF 0 "register_operand" ""))
   2824  1.1.1.1.8.2  tls    (use (match_operand:TF 1 "general_operand" ""))]
   2825  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   2826  1.1.1.1.8.2  tls   "alpha_emit_xfloating_cvt (FLOAT_TRUNCATE, operands); DONE;")
   2827  1.1.1.1.8.2  tls 
   2828  1.1.1.1.8.2  tls (define_expand "trunctfsf2"
   2829  1.1.1.1.8.2  tls   [(use (match_operand:SF 0 "register_operand" ""))
   2830  1.1.1.1.8.2  tls    (use (match_operand:TF 1 "general_operand" ""))]
   2831  1.1.1.1.8.2  tls   "TARGET_FP && TARGET_HAS_XFLOATING_LIBS"
   2832  1.1.1.1.8.2  tls {
   2833  1.1.1.1.8.2  tls   rtx tmpf, sticky, arg, lo, hi;
   2834  1.1.1.1.8.2  tls 
   2835  1.1.1.1.8.2  tls   tmpf = gen_reg_rtx (DFmode);
   2836  1.1.1.1.8.2  tls   sticky = gen_reg_rtx (DImode);
   2837  1.1.1.1.8.2  tls   arg = copy_to_mode_reg (TFmode, operands[1]);
   2838  1.1.1.1.8.2  tls   lo = gen_lowpart (DImode, arg);
   2839  1.1.1.1.8.2  tls   hi = gen_highpart (DImode, arg);
   2840  1.1.1.1.8.2  tls 
   2841  1.1.1.1.8.2  tls   /* Convert the low word of the TFmode value into a sticky rounding bit,
   2842  1.1.1.1.8.2  tls      then or it into the low bit of the high word.  This leaves the sticky
   2843  1.1.1.1.8.2  tls      bit at bit 48 of the fraction, which is representable in DFmode,
   2844  1.1.1.1.8.2  tls      which prevents rounding error in the final conversion to SFmode.  */
   2845  1.1.1.1.8.2  tls 
   2846  1.1.1.1.8.2  tls   emit_insn (gen_rtx_SET (VOIDmode, sticky,
   2847  1.1.1.1.8.2  tls 			  gen_rtx_NE (DImode, lo, const0_rtx)));
   2848  1.1.1.1.8.2  tls   emit_insn (gen_iordi3 (hi, hi, sticky));
   2849  1.1.1.1.8.2  tls   emit_insn (gen_trunctfdf2 (tmpf, arg));
   2850  1.1.1.1.8.2  tls   emit_insn (gen_truncdfsf2 (operands[0], tmpf));
   2851  1.1.1.1.8.2  tls   DONE;
   2852  1.1.1.1.8.2  tls })
   2853  1.1.1.1.8.2  tls 
   2854  1.1.1.1.8.2  tls (define_insn "*divsf3_ieee"
   2855  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=&f")
   2856  1.1.1.1.8.2  tls 	(div:SF (match_operand:SF 1 "reg_or_0_operand" "fG")
   2857  1.1.1.1.8.2  tls 		(match_operand:SF 2 "reg_or_0_operand" "fG")))]
   2858  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   2859  1.1.1.1.8.2  tls   "div%,%/ %R1,%R2,%0"
   2860  1.1.1.1.8.2  tls   [(set_attr "type" "fdiv")
   2861  1.1.1.1.8.2  tls    (set_attr "opsize" "si")
   2862  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2863  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2864  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2865  1.1.1.1.8.2  tls 
   2866  1.1.1.1.8.2  tls (define_insn "divsf3"
   2867  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=f")
   2868  1.1.1.1.8.2  tls 	(div:SF (match_operand:SF 1 "reg_or_0_operand" "fG")
   2869  1.1.1.1.8.2  tls 		(match_operand:SF 2 "reg_or_0_operand" "fG")))]
   2870  1.1.1.1.8.2  tls   "TARGET_FP"
   2871  1.1.1.1.8.2  tls   "div%,%/ %R1,%R2,%0"
   2872  1.1.1.1.8.2  tls   [(set_attr "type" "fdiv")
   2873  1.1.1.1.8.2  tls    (set_attr "opsize" "si")
   2874  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2875  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2876  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2877  1.1.1.1.8.2  tls 
   2878  1.1.1.1.8.2  tls (define_insn "*divdf3_ieee"
   2879  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=&f")
   2880  1.1.1.1.8.2  tls 	(div:DF (match_operand:DF 1 "reg_or_0_operand" "fG")
   2881  1.1.1.1.8.2  tls 		(match_operand:DF 2 "reg_or_0_operand" "fG")))]
   2882  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   2883  1.1.1.1.8.2  tls   "div%-%/ %R1,%R2,%0"
   2884  1.1.1.1.8.2  tls   [(set_attr "type" "fdiv")
   2885  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2886  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2887  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2888  1.1.1.1.8.2  tls 
   2889  1.1.1.1.8.2  tls (define_insn "divdf3"
   2890  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2891  1.1.1.1.8.2  tls 	(div:DF (match_operand:DF 1 "reg_or_0_operand" "fG")
   2892  1.1.1.1.8.2  tls 		(match_operand:DF 2 "reg_or_0_operand" "fG")))]
   2893  1.1.1.1.8.2  tls   "TARGET_FP"
   2894  1.1.1.1.8.2  tls   "div%-%/ %R1,%R2,%0"
   2895  1.1.1.1.8.2  tls   [(set_attr "type" "fdiv")
   2896  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2897  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2898  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2899  1.1.1.1.8.2  tls 
   2900  1.1.1.1.8.2  tls (define_insn "*divdf_ext1"
   2901  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2902  1.1.1.1.8.2  tls 	(div:DF (float_extend:DF (match_operand:SF 1 "reg_or_0_operand" "fG"))
   2903  1.1.1.1.8.2  tls 		(match_operand:DF 2 "reg_or_0_operand" "fG")))]
   2904  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   2905  1.1.1.1.8.2  tls   "div%-%/ %R1,%R2,%0"
   2906  1.1.1.1.8.2  tls   [(set_attr "type" "fdiv")
   2907  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2908  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2909  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2910  1.1.1.1.8.2  tls 
   2911  1.1.1.1.8.2  tls (define_insn "*divdf_ext2"
   2912  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2913  1.1.1.1.8.2  tls 	(div:DF (match_operand:DF 1 "reg_or_0_operand" "fG")
   2914  1.1.1.1.8.2  tls 		(float_extend:DF
   2915  1.1.1.1.8.2  tls 		 (match_operand:SF 2 "reg_or_0_operand" "fG"))))]
   2916  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   2917  1.1.1.1.8.2  tls   "div%-%/ %R1,%R2,%0"
   2918  1.1.1.1.8.2  tls   [(set_attr "type" "fdiv")
   2919  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2920  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2921  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2922  1.1.1.1.8.2  tls 
   2923  1.1.1.1.8.2  tls (define_insn "*divdf_ext3"
   2924  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2925  1.1.1.1.8.2  tls 	(div:DF (float_extend:DF (match_operand:SF 1 "reg_or_0_operand" "fG"))
   2926  1.1.1.1.8.2  tls 		(float_extend:DF (match_operand:SF 2 "reg_or_0_operand" "fG"))))]
   2927  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   2928  1.1.1.1.8.2  tls   "div%-%/ %R1,%R2,%0"
   2929  1.1.1.1.8.2  tls   [(set_attr "type" "fdiv")
   2930  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2931  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2932  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2933  1.1.1.1.8.2  tls 
   2934  1.1.1.1.8.2  tls (define_expand "divtf3"
   2935  1.1.1.1.8.2  tls   [(use (match_operand 0 "register_operand" ""))
   2936  1.1.1.1.8.2  tls    (use (match_operand 1 "general_operand" ""))
   2937  1.1.1.1.8.2  tls    (use (match_operand 2 "general_operand" ""))]
   2938  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   2939  1.1.1.1.8.2  tls   "alpha_emit_xfloating_arith (DIV, operands); DONE;")
   2940  1.1.1.1.8.2  tls 
   2941  1.1.1.1.8.2  tls (define_insn "*mulsf3_ieee"
   2942  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=&f")
   2943  1.1.1.1.8.2  tls 	(mult:SF (match_operand:SF 1 "reg_or_0_operand" "%fG")
   2944  1.1.1.1.8.2  tls 		 (match_operand:SF 2 "reg_or_0_operand" "fG")))]
   2945  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   2946  1.1.1.1.8.2  tls   "mul%,%/ %R1,%R2,%0"
   2947  1.1.1.1.8.2  tls   [(set_attr "type" "fmul")
   2948  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2949  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2950  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2951  1.1.1.1.8.2  tls 
   2952  1.1.1.1.8.2  tls (define_insn "mulsf3"
   2953  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=f")
   2954  1.1.1.1.8.2  tls 	(mult:SF (match_operand:SF 1 "reg_or_0_operand" "%fG")
   2955  1.1.1.1.8.2  tls 		 (match_operand:SF 2 "reg_or_0_operand" "fG")))]
   2956  1.1.1.1.8.2  tls   "TARGET_FP"
   2957  1.1.1.1.8.2  tls   "mul%,%/ %R1,%R2,%0"
   2958  1.1.1.1.8.2  tls   [(set_attr "type" "fmul")
   2959  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2960  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2961  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2962  1.1.1.1.8.2  tls 
   2963  1.1.1.1.8.2  tls (define_insn "*muldf3_ieee"
   2964  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=&f")
   2965  1.1.1.1.8.2  tls 	(mult:DF (match_operand:DF 1 "reg_or_0_operand" "%fG")
   2966  1.1.1.1.8.2  tls 		 (match_operand:DF 2 "reg_or_0_operand" "fG")))]
   2967  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   2968  1.1.1.1.8.2  tls   "mul%-%/ %R1,%R2,%0"
   2969  1.1.1.1.8.2  tls   [(set_attr "type" "fmul")
   2970  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2971  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2972  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2973  1.1.1.1.8.2  tls 
   2974  1.1.1.1.8.2  tls (define_insn "muldf3"
   2975  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2976  1.1.1.1.8.2  tls 	(mult:DF (match_operand:DF 1 "reg_or_0_operand" "%fG")
   2977  1.1.1.1.8.2  tls 		 (match_operand:DF 2 "reg_or_0_operand" "fG")))]
   2978  1.1.1.1.8.2  tls   "TARGET_FP"
   2979  1.1.1.1.8.2  tls   "mul%-%/ %R1,%R2,%0"
   2980  1.1.1.1.8.2  tls   [(set_attr "type" "fmul")
   2981  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2982  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2983  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2984  1.1.1.1.8.2  tls 
   2985  1.1.1.1.8.2  tls (define_insn "*muldf_ext1"
   2986  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2987  1.1.1.1.8.2  tls 	(mult:DF (float_extend:DF
   2988  1.1.1.1.8.2  tls 		  (match_operand:SF 1 "reg_or_0_operand" "fG"))
   2989  1.1.1.1.8.2  tls 		 (match_operand:DF 2 "reg_or_0_operand" "fG")))]
   2990  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   2991  1.1.1.1.8.2  tls   "mul%-%/ %R1,%R2,%0"
   2992  1.1.1.1.8.2  tls   [(set_attr "type" "fmul")
   2993  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   2994  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   2995  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   2996  1.1.1.1.8.2  tls 
   2997  1.1.1.1.8.2  tls (define_insn "*muldf_ext2"
   2998  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   2999  1.1.1.1.8.2  tls 	(mult:DF (float_extend:DF
   3000  1.1.1.1.8.2  tls 		  (match_operand:SF 1 "reg_or_0_operand" "%fG"))
   3001  1.1.1.1.8.2  tls 		 (float_extend:DF
   3002  1.1.1.1.8.2  tls 		  (match_operand:SF 2 "reg_or_0_operand" "fG"))))]
   3003  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   3004  1.1.1.1.8.2  tls   "mul%-%/ %R1,%R2,%0"
   3005  1.1.1.1.8.2  tls   [(set_attr "type" "fmul")
   3006  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3007  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   3008  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   3009  1.1.1.1.8.2  tls 
   3010  1.1.1.1.8.2  tls (define_expand "multf3"
   3011  1.1.1.1.8.2  tls   [(use (match_operand 0 "register_operand" ""))
   3012  1.1.1.1.8.2  tls    (use (match_operand 1 "general_operand" ""))
   3013  1.1.1.1.8.2  tls    (use (match_operand 2 "general_operand" ""))]
   3014  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   3015  1.1.1.1.8.2  tls   "alpha_emit_xfloating_arith (MULT, operands); DONE;")
   3016  1.1.1.1.8.2  tls 
   3017  1.1.1.1.8.2  tls (define_insn "*subsf3_ieee"
   3018  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=&f")
   3019  1.1.1.1.8.2  tls 	(minus:SF (match_operand:SF 1 "reg_or_0_operand" "fG")
   3020  1.1.1.1.8.2  tls 		  (match_operand:SF 2 "reg_or_0_operand" "fG")))]
   3021  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   3022  1.1.1.1.8.2  tls   "sub%,%/ %R1,%R2,%0"
   3023  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   3024  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3025  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   3026  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   3027  1.1.1.1.8.2  tls 
   3028  1.1.1.1.8.2  tls (define_insn "subsf3"
   3029  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=f")
   3030  1.1.1.1.8.2  tls 	(minus:SF (match_operand:SF 1 "reg_or_0_operand" "fG")
   3031  1.1.1.1.8.2  tls 		  (match_operand:SF 2 "reg_or_0_operand" "fG")))]
   3032  1.1.1.1.8.2  tls   "TARGET_FP"
   3033  1.1.1.1.8.2  tls   "sub%,%/ %R1,%R2,%0"
   3034  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   3035  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3036  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   3037  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   3038  1.1.1.1.8.2  tls 
   3039  1.1.1.1.8.2  tls (define_insn "*subdf3_ieee"
   3040  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=&f")
   3041  1.1.1.1.8.2  tls 	(minus:DF (match_operand:DF 1 "reg_or_0_operand" "fG")
   3042  1.1.1.1.8.2  tls 		  (match_operand:DF 2 "reg_or_0_operand" "fG")))]
   3043  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   3044  1.1.1.1.8.2  tls   "sub%-%/ %R1,%R2,%0"
   3045  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   3046  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3047  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   3048  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   3049  1.1.1.1.8.2  tls 
   3050  1.1.1.1.8.2  tls (define_insn "subdf3"
   3051  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   3052  1.1.1.1.8.2  tls 	(minus:DF (match_operand:DF 1 "reg_or_0_operand" "fG")
   3053  1.1.1.1.8.2  tls 		  (match_operand:DF 2 "reg_or_0_operand" "fG")))]
   3054  1.1.1.1.8.2  tls   "TARGET_FP"
   3055  1.1.1.1.8.2  tls   "sub%-%/ %R1,%R2,%0"
   3056  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   3057  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3058  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   3059  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   3060  1.1.1.1.8.2  tls 
   3061  1.1.1.1.8.2  tls (define_insn "*subdf_ext1"
   3062  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   3063  1.1.1.1.8.2  tls 	(minus:DF (float_extend:DF
   3064  1.1.1.1.8.2  tls 		   (match_operand:SF 1 "reg_or_0_operand" "fG"))
   3065  1.1.1.1.8.2  tls 		  (match_operand:DF 2 "reg_or_0_operand" "fG")))]
   3066  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   3067  1.1.1.1.8.2  tls   "sub%-%/ %R1,%R2,%0"
   3068  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   3069  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3070  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   3071  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   3072  1.1.1.1.8.2  tls 
   3073  1.1.1.1.8.2  tls (define_insn "*subdf_ext2"
   3074  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   3075  1.1.1.1.8.2  tls 	(minus:DF (match_operand:DF 1 "reg_or_0_operand" "fG")
   3076  1.1.1.1.8.2  tls 		  (float_extend:DF
   3077  1.1.1.1.8.2  tls 		   (match_operand:SF 2 "reg_or_0_operand" "fG"))))]
   3078  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   3079  1.1.1.1.8.2  tls   "sub%-%/ %R1,%R2,%0"
   3080  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   3081  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3082  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   3083  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   3084  1.1.1.1.8.2  tls 
   3085  1.1.1.1.8.2  tls (define_insn "*subdf_ext3"
   3086  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   3087  1.1.1.1.8.2  tls 	(minus:DF (float_extend:DF
   3088  1.1.1.1.8.2  tls 		   (match_operand:SF 1 "reg_or_0_operand" "fG"))
   3089  1.1.1.1.8.2  tls 		  (float_extend:DF
   3090  1.1.1.1.8.2  tls 		   (match_operand:SF 2 "reg_or_0_operand" "fG"))))]
   3091  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   3092  1.1.1.1.8.2  tls   "sub%-%/ %R1,%R2,%0"
   3093  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   3094  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3095  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   3096  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   3097  1.1.1.1.8.2  tls 
   3098  1.1.1.1.8.2  tls (define_expand "subtf3"
   3099  1.1.1.1.8.2  tls   [(use (match_operand 0 "register_operand" ""))
   3100  1.1.1.1.8.2  tls    (use (match_operand 1 "general_operand" ""))
   3101  1.1.1.1.8.2  tls    (use (match_operand 2 "general_operand" ""))]
   3102  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   3103  1.1.1.1.8.2  tls   "alpha_emit_xfloating_arith (MINUS, operands); DONE;")
   3104  1.1.1.1.8.2  tls 
   3105  1.1.1.1.8.2  tls (define_insn "*sqrtsf2_ieee"
   3106  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=&f")
   3107  1.1.1.1.8.2  tls 	(sqrt:SF (match_operand:SF 1 "reg_or_0_operand" "fG")))]
   3108  1.1.1.1.8.2  tls   "TARGET_FP && TARGET_FIX && alpha_fptm >= ALPHA_FPTM_SU"
   3109  1.1.1.1.8.2  tls   "sqrt%,%/ %R1,%0"
   3110  1.1.1.1.8.2  tls   [(set_attr "type" "fsqrt")
   3111  1.1.1.1.8.2  tls    (set_attr "opsize" "si")
   3112  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3113  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   3114  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   3115  1.1.1.1.8.2  tls 
   3116  1.1.1.1.8.2  tls (define_insn "sqrtsf2"
   3117  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=f")
   3118  1.1.1.1.8.2  tls 	(sqrt:SF (match_operand:SF 1 "reg_or_0_operand" "fG")))]
   3119  1.1.1.1.8.2  tls   "TARGET_FP && TARGET_FIX"
   3120  1.1.1.1.8.2  tls   "sqrt%,%/ %R1,%0"
   3121  1.1.1.1.8.2  tls   [(set_attr "type" "fsqrt")
   3122  1.1.1.1.8.2  tls    (set_attr "opsize" "si")
   3123  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3124  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   3125  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   3126  1.1.1.1.8.2  tls 
   3127  1.1.1.1.8.2  tls (define_insn "*sqrtdf2_ieee"
   3128  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=&f")
   3129  1.1.1.1.8.2  tls 	(sqrt:DF (match_operand:DF 1 "reg_or_0_operand" "fG")))]
   3130  1.1.1.1.8.2  tls   "TARGET_FP && TARGET_FIX && alpha_fptm >= ALPHA_FPTM_SU"
   3131  1.1.1.1.8.2  tls   "sqrt%-%/ %R1,%0"
   3132  1.1.1.1.8.2  tls   [(set_attr "type" "fsqrt")
   3133  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3134  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   3135  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   3136  1.1.1.1.8.2  tls 
   3137  1.1.1.1.8.2  tls (define_insn "sqrtdf2"
   3138  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   3139  1.1.1.1.8.2  tls 	(sqrt:DF (match_operand:DF 1 "reg_or_0_operand" "fG")))]
   3140  1.1.1.1.8.2  tls   "TARGET_FP && TARGET_FIX"
   3141  1.1.1.1.8.2  tls   "sqrt%-%/ %R1,%0"
   3142  1.1.1.1.8.2  tls   [(set_attr "type" "fsqrt")
   3143  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3144  1.1.1.1.8.2  tls    (set_attr "round_suffix" "normal")
   3145  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "u_su_sui")])
   3146  1.1.1.1.8.2  tls 
   3148  1.1.1.1.8.2  tls ;; Next are all the integer comparisons, and conditional moves and branches
   3149  1.1.1.1.8.2  tls ;; and some of the related define_expand's and define_split's.
   3150  1.1.1.1.8.2  tls 
   3151  1.1.1.1.8.2  tls (define_insn "*setcc_internal"
   3152  1.1.1.1.8.2  tls   [(set (match_operand 0 "register_operand" "=r")
   3153  1.1.1.1.8.2  tls 	(match_operator 1 "alpha_comparison_operator"
   3154  1.1.1.1.8.2  tls 			   [(match_operand:DI 2 "register_operand" "r")
   3155  1.1.1.1.8.2  tls 			    (match_operand:DI 3 "reg_or_8bit_operand" "rI")]))]
   3156  1.1.1.1.8.2  tls   "GET_MODE_CLASS (GET_MODE (operands[0])) == MODE_INT
   3157  1.1.1.1.8.2  tls    && GET_MODE_SIZE (GET_MODE (operands[0])) <= 8
   3158  1.1.1.1.8.2  tls    && GET_MODE (operands[0]) == GET_MODE (operands[1])"
   3159  1.1.1.1.8.2  tls   "cmp%C1 %2,%3,%0"
   3160  1.1.1.1.8.2  tls   [(set_attr "type" "icmp")])
   3161  1.1.1.1.8.2  tls 
   3162  1.1.1.1.8.2  tls ;; Yes, we can technically support reg_or_8bit_operand in operand 2,
   3163  1.1.1.1.8.2  tls ;; but that's non-canonical rtl and allowing that causes inefficiencies
   3164  1.1.1.1.8.2  tls ;; from cse on.
   3165  1.1.1.1.8.2  tls (define_insn "*setcc_swapped_internal"
   3166  1.1.1.1.8.2  tls   [(set (match_operand 0 "register_operand" "=r")
   3167  1.1.1.1.8.2  tls         (match_operator 1 "alpha_swapped_comparison_operator"
   3168  1.1.1.1.8.2  tls 			   [(match_operand:DI 2 "register_operand" "r")
   3169  1.1.1.1.8.2  tls 			    (match_operand:DI 3 "reg_or_0_operand" "rJ")]))]
   3170  1.1.1.1.8.2  tls   "GET_MODE_CLASS (GET_MODE (operands[0])) == MODE_INT
   3171  1.1.1.1.8.2  tls    && GET_MODE_SIZE (GET_MODE (operands[0])) <= 8
   3172  1.1.1.1.8.2  tls    && GET_MODE (operands[0]) == GET_MODE (operands[1])"
   3173  1.1.1.1.8.2  tls   "cmp%c1 %r3,%2,%0"
   3174  1.1.1.1.8.2  tls   [(set_attr "type" "icmp")])
   3175  1.1.1.1.8.2  tls 
   3176  1.1.1.1.8.2  tls ;; Use match_operator rather than ne directly so that we can match
   3177  1.1.1.1.8.2  tls ;; multiple integer modes.
   3178  1.1.1.1.8.2  tls (define_insn "*setne_internal"
   3179  1.1.1.1.8.2  tls   [(set (match_operand 0 "register_operand" "=r")
   3180  1.1.1.1.8.2  tls 	(match_operator 1 "signed_comparison_operator"
   3181  1.1.1.1.8.2  tls 			  [(match_operand:DI 2 "register_operand" "r")
   3182  1.1.1.1.8.2  tls 			   (const_int 0)]))]
   3183  1.1.1.1.8.2  tls   "GET_MODE_CLASS (GET_MODE (operands[0])) == MODE_INT
   3184  1.1.1.1.8.2  tls    && GET_MODE_SIZE (GET_MODE (operands[0])) <= 8
   3185  1.1.1.1.8.2  tls    && GET_CODE (operands[1]) == NE
   3186  1.1.1.1.8.2  tls    && GET_MODE (operands[0]) == GET_MODE (operands[1])"
   3187  1.1.1.1.8.2  tls   "cmpult $31,%2,%0"
   3188  1.1.1.1.8.2  tls   [(set_attr "type" "icmp")])
   3189  1.1.1.1.8.2  tls 
   3190  1.1.1.1.8.2  tls ;; The mode folding trick can't be used with const_int operands, since
   3191  1.1.1.1.8.2  tls ;; reload needs to know the proper mode.
   3192  1.1.1.1.8.2  tls ;;
   3193  1.1.1.1.8.2  tls ;; Use add_operand instead of the more seemingly natural reg_or_8bit_operand
   3194  1.1.1.1.8.2  tls ;; in order to create more pairs of constants.  As long as we're allowing
   3195  1.1.1.1.8.2  tls ;; two constants at the same time, and will have to reload one of them...
   3196  1.1.1.1.8.2  tls 
   3197  1.1.1.1.8.2  tls (define_insn "*movqicc_internal"
   3198  1.1.1.1.8.2  tls   [(set (match_operand:QI 0 "register_operand" "=r,r,r,r")
   3199  1.1.1.1.8.2  tls 	(if_then_else:QI
   3200  1.1.1.1.8.2  tls 	 (match_operator 2 "signed_comparison_operator"
   3201  1.1.1.1.8.2  tls 			 [(match_operand:DI 3 "reg_or_0_operand" "rJ,rJ,J,J")
   3202  1.1.1.1.8.2  tls 			  (match_operand:DI 4 "reg_or_0_operand" "J,J,rJ,rJ")])
   3203  1.1.1.1.8.2  tls 	 (match_operand:QI 1 "add_operand" "rI,0,rI,0")
   3204  1.1.1.1.8.2  tls 	 (match_operand:QI 5 "add_operand" "0,rI,0,rI")))]
   3205  1.1.1.1.8.2  tls   "(operands[3] == const0_rtx) ^ (operands[4] == const0_rtx)"
   3206  1.1.1.1.8.2  tls   "@
   3207  1.1.1.1.8.2  tls    cmov%C2 %r3,%1,%0
   3208  1.1.1.1.8.2  tls    cmov%D2 %r3,%5,%0
   3209  1.1.1.1.8.2  tls    cmov%c2 %r4,%1,%0
   3210  1.1.1.1.8.2  tls    cmov%d2 %r4,%5,%0"
   3211  1.1.1.1.8.2  tls   [(set_attr "type" "icmov")])
   3212  1.1.1.1.8.2  tls 
   3213  1.1.1.1.8.2  tls (define_insn "*movhicc_internal"
   3214  1.1.1.1.8.2  tls   [(set (match_operand:HI 0 "register_operand" "=r,r,r,r")
   3215  1.1.1.1.8.2  tls 	(if_then_else:HI
   3216  1.1.1.1.8.2  tls 	 (match_operator 2 "signed_comparison_operator"
   3217  1.1.1.1.8.2  tls 			 [(match_operand:DI 3 "reg_or_0_operand" "rJ,rJ,J,J")
   3218  1.1.1.1.8.2  tls 			  (match_operand:DI 4 "reg_or_0_operand" "J,J,rJ,rJ")])
   3219  1.1.1.1.8.2  tls 	 (match_operand:HI 1 "add_operand" "rI,0,rI,0")
   3220  1.1.1.1.8.2  tls 	 (match_operand:HI 5 "add_operand" "0,rI,0,rI")))]
   3221  1.1.1.1.8.2  tls   "(operands[3] == const0_rtx) ^ (operands[4] == const0_rtx)"
   3222  1.1.1.1.8.2  tls   "@
   3223  1.1.1.1.8.2  tls    cmov%C2 %r3,%1,%0
   3224  1.1.1.1.8.2  tls    cmov%D2 %r3,%5,%0
   3225  1.1.1.1.8.2  tls    cmov%c2 %r4,%1,%0
   3226  1.1.1.1.8.2  tls    cmov%d2 %r4,%5,%0"
   3227  1.1.1.1.8.2  tls   [(set_attr "type" "icmov")])
   3228  1.1.1.1.8.2  tls 
   3229  1.1.1.1.8.2  tls (define_insn "*movsicc_internal"
   3230  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
   3231  1.1.1.1.8.2  tls 	(if_then_else:SI
   3232  1.1.1.1.8.2  tls 	 (match_operator 2 "signed_comparison_operator"
   3233  1.1.1.1.8.2  tls 			 [(match_operand:DI 3 "reg_or_0_operand" "rJ,rJ,J,J")
   3234  1.1.1.1.8.2  tls 			  (match_operand:DI 4 "reg_or_0_operand" "J,J,rJ,rJ")])
   3235  1.1.1.1.8.2  tls 	 (match_operand:SI 1 "add_operand" "rI,0,rI,0")
   3236  1.1.1.1.8.2  tls 	 (match_operand:SI 5 "add_operand" "0,rI,0,rI")))]
   3237  1.1.1.1.8.2  tls   "(operands[3] == const0_rtx) ^ (operands[4] == const0_rtx)"
   3238  1.1.1.1.8.2  tls   "@
   3239  1.1.1.1.8.2  tls    cmov%C2 %r3,%1,%0
   3240  1.1.1.1.8.2  tls    cmov%D2 %r3,%5,%0
   3241  1.1.1.1.8.2  tls    cmov%c2 %r4,%1,%0
   3242  1.1.1.1.8.2  tls    cmov%d2 %r4,%5,%0"
   3243  1.1.1.1.8.2  tls   [(set_attr "type" "icmov")])
   3244  1.1.1.1.8.2  tls 
   3245  1.1.1.1.8.2  tls (define_insn "*movdicc_internal"
   3246  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r")
   3247  1.1.1.1.8.2  tls 	(if_then_else:DI
   3248  1.1.1.1.8.2  tls 	 (match_operator 2 "signed_comparison_operator"
   3249  1.1.1.1.8.2  tls 			 [(match_operand:DI 3 "reg_or_0_operand" "rJ,rJ,J,J")
   3250  1.1.1.1.8.2  tls 			  (match_operand:DI 4 "reg_or_0_operand" "J,J,rJ,rJ")])
   3251  1.1.1.1.8.2  tls 	 (match_operand:DI 1 "add_operand" "rI,0,rI,0")
   3252  1.1.1.1.8.2  tls 	 (match_operand:DI 5 "add_operand" "0,rI,0,rI")))]
   3253  1.1.1.1.8.2  tls   "(operands[3] == const0_rtx) ^ (operands[4] == const0_rtx)"
   3254  1.1.1.1.8.2  tls   "@
   3255  1.1.1.1.8.2  tls    cmov%C2 %r3,%1,%0
   3256  1.1.1.1.8.2  tls    cmov%D2 %r3,%5,%0
   3257  1.1.1.1.8.2  tls    cmov%c2 %r4,%1,%0
   3258  1.1.1.1.8.2  tls    cmov%d2 %r4,%5,%0"
   3259  1.1.1.1.8.2  tls   [(set_attr "type" "icmov")])
   3260  1.1.1.1.8.2  tls 
   3261  1.1.1.1.8.2  tls (define_insn "*movqicc_lbc"
   3262  1.1.1.1.8.2  tls   [(set (match_operand:QI 0 "register_operand" "=r,r")
   3263  1.1.1.1.8.2  tls 	(if_then_else:QI
   3264  1.1.1.1.8.2  tls 	 (eq (zero_extract:DI (match_operand:DI 2 "reg_or_0_operand" "rJ,rJ")
   3265  1.1.1.1.8.2  tls 			      (const_int 1)
   3266  1.1.1.1.8.2  tls 			      (const_int 0))
   3267  1.1.1.1.8.2  tls 	     (const_int 0))
   3268  1.1.1.1.8.2  tls 	 (match_operand:QI 1 "reg_or_8bit_operand" "rI,0")
   3269  1.1.1.1.8.2  tls 	 (match_operand:QI 3 "reg_or_8bit_operand" "0,rI")))]
   3270  1.1.1.1.8.2  tls   ""
   3271  1.1.1.1.8.2  tls   "@
   3272  1.1.1.1.8.2  tls    cmovlbc %r2,%1,%0
   3273  1.1.1.1.8.2  tls    cmovlbs %r2,%3,%0"
   3274  1.1.1.1.8.2  tls   [(set_attr "type" "icmov")])
   3275  1.1.1.1.8.2  tls 
   3276  1.1.1.1.8.2  tls (define_insn "*movhicc_lbc"
   3277  1.1.1.1.8.2  tls   [(set (match_operand:HI 0 "register_operand" "=r,r")
   3278  1.1.1.1.8.2  tls 	(if_then_else:HI
   3279  1.1.1.1.8.2  tls 	 (eq (zero_extract:DI (match_operand:DI 2 "reg_or_0_operand" "rJ,rJ")
   3280  1.1.1.1.8.2  tls 			      (const_int 1)
   3281  1.1.1.1.8.2  tls 			      (const_int 0))
   3282  1.1.1.1.8.2  tls 	     (const_int 0))
   3283  1.1.1.1.8.2  tls 	 (match_operand:HI 1 "reg_or_8bit_operand" "rI,0")
   3284  1.1.1.1.8.2  tls 	 (match_operand:HI 3 "reg_or_8bit_operand" "0,rI")))]
   3285  1.1.1.1.8.2  tls   ""
   3286  1.1.1.1.8.2  tls   "@
   3287  1.1.1.1.8.2  tls    cmovlbc %r2,%1,%0
   3288  1.1.1.1.8.2  tls    cmovlbs %r2,%3,%0"
   3289  1.1.1.1.8.2  tls   [(set_attr "type" "icmov")])
   3290  1.1.1.1.8.2  tls 
   3291  1.1.1.1.8.2  tls (define_insn "*movsicc_lbc"
   3292  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r,r")
   3293  1.1.1.1.8.2  tls 	(if_then_else:SI
   3294  1.1.1.1.8.2  tls 	 (eq (zero_extract:DI (match_operand:DI 2 "reg_or_0_operand" "rJ,rJ")
   3295  1.1.1.1.8.2  tls 			      (const_int 1)
   3296  1.1.1.1.8.2  tls 			      (const_int 0))
   3297  1.1.1.1.8.2  tls 	     (const_int 0))
   3298  1.1.1.1.8.2  tls 	 (match_operand:SI 1 "reg_or_8bit_operand" "rI,0")
   3299  1.1.1.1.8.2  tls 	 (match_operand:SI 3 "reg_or_8bit_operand" "0,rI")))]
   3300  1.1.1.1.8.2  tls   ""
   3301  1.1.1.1.8.2  tls   "@
   3302  1.1.1.1.8.2  tls    cmovlbc %r2,%1,%0
   3303  1.1.1.1.8.2  tls    cmovlbs %r2,%3,%0"
   3304  1.1.1.1.8.2  tls   [(set_attr "type" "icmov")])
   3305  1.1.1.1.8.2  tls 
   3306  1.1.1.1.8.2  tls (define_insn "*movdicc_lbc"
   3307  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r")
   3308  1.1.1.1.8.2  tls 	(if_then_else:DI
   3309  1.1.1.1.8.2  tls 	 (eq (zero_extract:DI (match_operand:DI 2 "reg_or_0_operand" "rJ,rJ")
   3310  1.1.1.1.8.2  tls 			      (const_int 1)
   3311  1.1.1.1.8.2  tls 			      (const_int 0))
   3312  1.1.1.1.8.2  tls 	     (const_int 0))
   3313  1.1.1.1.8.2  tls 	 (match_operand:DI 1 "reg_or_8bit_operand" "rI,0")
   3314  1.1.1.1.8.2  tls 	 (match_operand:DI 3 "reg_or_8bit_operand" "0,rI")))]
   3315  1.1.1.1.8.2  tls   ""
   3316  1.1.1.1.8.2  tls   "@
   3317  1.1.1.1.8.2  tls    cmovlbc %r2,%1,%0
   3318  1.1.1.1.8.2  tls    cmovlbs %r2,%3,%0"
   3319  1.1.1.1.8.2  tls   [(set_attr "type" "icmov")])
   3320  1.1.1.1.8.2  tls 
   3321  1.1.1.1.8.2  tls (define_insn "*movqicc_lbs"
   3322  1.1.1.1.8.2  tls   [(set (match_operand:QI 0 "register_operand" "=r,r")
   3323  1.1.1.1.8.2  tls 	(if_then_else:QI
   3324  1.1.1.1.8.2  tls 	 (ne (zero_extract:DI (match_operand:DI 2 "reg_or_0_operand" "rJ,rJ")
   3325  1.1.1.1.8.2  tls 			      (const_int 1)
   3326  1.1.1.1.8.2  tls 			      (const_int 0))
   3327  1.1.1.1.8.2  tls 	     (const_int 0))
   3328  1.1.1.1.8.2  tls 	 (match_operand:QI 1 "reg_or_8bit_operand" "rI,0")
   3329  1.1.1.1.8.2  tls 	 (match_operand:QI 3 "reg_or_8bit_operand" "0,rI")))]
   3330  1.1.1.1.8.2  tls   ""
   3331  1.1.1.1.8.2  tls   "@
   3332  1.1.1.1.8.2  tls    cmovlbs %r2,%1,%0
   3333  1.1.1.1.8.2  tls    cmovlbc %r2,%3,%0"
   3334  1.1.1.1.8.2  tls   [(set_attr "type" "icmov")])
   3335  1.1.1.1.8.2  tls 
   3336  1.1.1.1.8.2  tls (define_insn "*movhicc_lbs"
   3337  1.1.1.1.8.2  tls   [(set (match_operand:HI 0 "register_operand" "=r,r")
   3338  1.1.1.1.8.2  tls 	(if_then_else:HI
   3339  1.1.1.1.8.2  tls 	 (ne (zero_extract:DI (match_operand:DI 2 "reg_or_0_operand" "rJ,rJ")
   3340  1.1.1.1.8.2  tls 			      (const_int 1)
   3341  1.1.1.1.8.2  tls 			      (const_int 0))
   3342  1.1.1.1.8.2  tls 	     (const_int 0))
   3343  1.1.1.1.8.2  tls 	 (match_operand:HI 1 "reg_or_8bit_operand" "rI,0")
   3344  1.1.1.1.8.2  tls 	 (match_operand:HI 3 "reg_or_8bit_operand" "0,rI")))]
   3345  1.1.1.1.8.2  tls   ""
   3346  1.1.1.1.8.2  tls   "@
   3347  1.1.1.1.8.2  tls    cmovlbs %r2,%1,%0
   3348  1.1.1.1.8.2  tls    cmovlbc %r2,%3,%0"
   3349  1.1.1.1.8.2  tls   [(set_attr "type" "icmov")])
   3350  1.1.1.1.8.2  tls 
   3351  1.1.1.1.8.2  tls (define_insn "*movsicc_lbs"
   3352  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r,r")
   3353  1.1.1.1.8.2  tls 	(if_then_else:SI
   3354  1.1.1.1.8.2  tls 	 (ne (zero_extract:DI (match_operand:DI 2 "reg_or_0_operand" "rJ,rJ")
   3355  1.1.1.1.8.2  tls 			      (const_int 1)
   3356  1.1.1.1.8.2  tls 			      (const_int 0))
   3357  1.1.1.1.8.2  tls 	     (const_int 0))
   3358  1.1.1.1.8.2  tls 	 (match_operand:SI 1 "reg_or_8bit_operand" "rI,0")
   3359  1.1.1.1.8.2  tls 	 (match_operand:SI 3 "reg_or_8bit_operand" "0,rI")))]
   3360  1.1.1.1.8.2  tls   ""
   3361  1.1.1.1.8.2  tls   "@
   3362  1.1.1.1.8.2  tls    cmovlbs %r2,%1,%0
   3363  1.1.1.1.8.2  tls    cmovlbc %r2,%3,%0"
   3364  1.1.1.1.8.2  tls   [(set_attr "type" "icmov")])
   3365  1.1.1.1.8.2  tls 
   3366  1.1.1.1.8.2  tls (define_insn "*movdicc_lbs"
   3367  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r")
   3368  1.1.1.1.8.2  tls 	(if_then_else:DI
   3369  1.1.1.1.8.2  tls 	 (ne (zero_extract:DI (match_operand:DI 2 "reg_or_0_operand" "rJ,rJ")
   3370  1.1.1.1.8.2  tls 			      (const_int 1)
   3371  1.1.1.1.8.2  tls 			      (const_int 0))
   3372  1.1.1.1.8.2  tls 	     (const_int 0))
   3373  1.1.1.1.8.2  tls 	 (match_operand:DI 1 "reg_or_8bit_operand" "rI,0")
   3374  1.1.1.1.8.2  tls 	 (match_operand:DI 3 "reg_or_8bit_operand" "0,rI")))]
   3375  1.1.1.1.8.2  tls   ""
   3376  1.1.1.1.8.2  tls   "@
   3377  1.1.1.1.8.2  tls    cmovlbs %r2,%1,%0
   3378  1.1.1.1.8.2  tls    cmovlbc %r2,%3,%0"
   3379  1.1.1.1.8.2  tls   [(set_attr "type" "icmov")])
   3380  1.1.1.1.8.2  tls 
   3381  1.1.1.1.8.2  tls ;; For ABS, we have two choices, depending on whether the input and output
   3382  1.1.1.1.8.2  tls ;; registers are the same or not.
   3383  1.1.1.1.8.2  tls (define_expand "absdi2"
   3384  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   3385  1.1.1.1.8.2  tls 	(abs:DI (match_operand:DI 1 "register_operand" "")))]
   3386  1.1.1.1.8.2  tls   ""
   3387  1.1.1.1.8.2  tls {
   3388  1.1.1.1.8.2  tls   if (rtx_equal_p (operands[0], operands[1]))
   3389  1.1.1.1.8.2  tls     emit_insn (gen_absdi2_same (operands[0], gen_reg_rtx (DImode)));
   3390  1.1.1.1.8.2  tls   else
   3391  1.1.1.1.8.2  tls     emit_insn (gen_absdi2_diff (operands[0], operands[1]));
   3392  1.1.1.1.8.2  tls   DONE;
   3393  1.1.1.1.8.2  tls })
   3394  1.1.1.1.8.2  tls 
   3395  1.1.1.1.8.2  tls (define_expand "absdi2_same"
   3396  1.1.1.1.8.2  tls   [(set (match_operand:DI 1 "register_operand" "")
   3397  1.1.1.1.8.2  tls 	(neg:DI (match_operand:DI 0 "register_operand" "")))
   3398  1.1.1.1.8.2  tls    (set (match_dup 0)
   3399  1.1.1.1.8.2  tls 	(if_then_else:DI (ge (match_dup 0) (const_int 0))
   3400  1.1.1.1.8.2  tls 			 (match_dup 0)
   3401  1.1.1.1.8.2  tls 			 (match_dup 1)))]
   3402  1.1.1.1.8.2  tls   ""
   3403  1.1.1.1.8.2  tls   "")
   3404  1.1.1.1.8.2  tls 
   3405  1.1.1.1.8.2  tls (define_expand "absdi2_diff"
   3406  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   3407  1.1.1.1.8.2  tls 	(neg:DI (match_operand:DI 1 "register_operand" "")))
   3408  1.1.1.1.8.2  tls    (set (match_dup 0)
   3409  1.1.1.1.8.2  tls 	(if_then_else:DI (lt (match_dup 1) (const_int 0))
   3410  1.1.1.1.8.2  tls 			 (match_dup 0)
   3411  1.1.1.1.8.2  tls 			 (match_dup 1)))]
   3412  1.1.1.1.8.2  tls   ""
   3413  1.1.1.1.8.2  tls   "")
   3414  1.1.1.1.8.2  tls 
   3415  1.1.1.1.8.2  tls (define_split
   3416  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   3417  1.1.1.1.8.2  tls 	(abs:DI (match_dup 0)))
   3418  1.1.1.1.8.2  tls    (clobber (match_operand:DI 1 "register_operand" ""))]
   3419  1.1.1.1.8.2  tls   ""
   3420  1.1.1.1.8.2  tls   [(set (match_dup 1) (neg:DI (match_dup 0)))
   3421  1.1.1.1.8.2  tls    (set (match_dup 0) (if_then_else:DI (ge (match_dup 0) (const_int 0))
   3422  1.1.1.1.8.2  tls 				       (match_dup 0) (match_dup 1)))]
   3423  1.1.1.1.8.2  tls   "")
   3424  1.1.1.1.8.2  tls 
   3425  1.1.1.1.8.2  tls (define_split
   3426  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   3427  1.1.1.1.8.2  tls 	(abs:DI (match_operand:DI 1 "register_operand" "")))]
   3428  1.1.1.1.8.2  tls   "! rtx_equal_p (operands[0], operands[1])"
   3429  1.1.1.1.8.2  tls   [(set (match_dup 0) (neg:DI (match_dup 1)))
   3430  1.1.1.1.8.2  tls    (set (match_dup 0) (if_then_else:DI (lt (match_dup 1) (const_int 0))
   3431  1.1.1.1.8.2  tls 				       (match_dup 0) (match_dup 1)))]
   3432  1.1.1.1.8.2  tls   "")
   3433  1.1.1.1.8.2  tls 
   3434  1.1.1.1.8.2  tls (define_split
   3435  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   3436  1.1.1.1.8.2  tls 	(neg:DI (abs:DI (match_dup 0))))
   3437  1.1.1.1.8.2  tls    (clobber (match_operand:DI 1 "register_operand" ""))]
   3438  1.1.1.1.8.2  tls   ""
   3439  1.1.1.1.8.2  tls   [(set (match_dup 1) (neg:DI (match_dup 0)))
   3440  1.1.1.1.8.2  tls    (set (match_dup 0) (if_then_else:DI (le (match_dup 0) (const_int 0))
   3441  1.1.1.1.8.2  tls 				       (match_dup 0) (match_dup 1)))]
   3442  1.1.1.1.8.2  tls   "")
   3443  1.1.1.1.8.2  tls 
   3444  1.1.1.1.8.2  tls (define_split
   3445  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   3446  1.1.1.1.8.2  tls 	(neg:DI (abs:DI (match_operand:DI 1 "register_operand" ""))))]
   3447  1.1.1.1.8.2  tls   "! rtx_equal_p (operands[0], operands[1])"
   3448  1.1.1.1.8.2  tls   [(set (match_dup 0) (neg:DI (match_dup 1)))
   3449  1.1.1.1.8.2  tls    (set (match_dup 0) (if_then_else:DI (gt (match_dup 1) (const_int 0))
   3450  1.1.1.1.8.2  tls 				       (match_dup 0) (match_dup 1)))]
   3451  1.1.1.1.8.2  tls   "")
   3452  1.1.1.1.8.2  tls 
   3453  1.1.1.1.8.2  tls (define_insn "sminqi3"
   3454  1.1.1.1.8.2  tls   [(set (match_operand:QI 0 "register_operand" "=r")
   3455  1.1.1.1.8.2  tls 	(smin:QI (match_operand:QI 1 "reg_or_0_operand" "%rJ")
   3456  1.1.1.1.8.2  tls 		 (match_operand:QI 2 "reg_or_8bit_operand" "rI")))]
   3457  1.1.1.1.8.2  tls   "TARGET_MAX"
   3458  1.1.1.1.8.2  tls   "minsb8 %r1,%2,%0"
   3459  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   3460  1.1.1.1.8.2  tls 
   3461  1.1.1.1.8.2  tls (define_insn "uminqi3"
   3462  1.1.1.1.8.2  tls   [(set (match_operand:QI 0 "register_operand" "=r")
   3463  1.1.1.1.8.2  tls 	(umin:QI (match_operand:QI 1 "reg_or_0_operand" "%rJ")
   3464  1.1.1.1.8.2  tls 		 (match_operand:QI 2 "reg_or_8bit_operand" "rI")))]
   3465  1.1.1.1.8.2  tls   "TARGET_MAX"
   3466  1.1.1.1.8.2  tls   "minub8 %r1,%2,%0"
   3467  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   3468  1.1.1.1.8.2  tls 
   3469  1.1.1.1.8.2  tls (define_insn "smaxqi3"
   3470  1.1.1.1.8.2  tls   [(set (match_operand:QI 0 "register_operand" "=r")
   3471  1.1.1.1.8.2  tls 	(smax:QI (match_operand:QI 1 "reg_or_0_operand" "%rJ")
   3472  1.1.1.1.8.2  tls 		 (match_operand:QI 2 "reg_or_8bit_operand" "rI")))]
   3473  1.1.1.1.8.2  tls   "TARGET_MAX"
   3474  1.1.1.1.8.2  tls   "maxsb8 %r1,%2,%0"
   3475  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   3476  1.1.1.1.8.2  tls 
   3477  1.1.1.1.8.2  tls (define_insn "umaxqi3"
   3478  1.1.1.1.8.2  tls   [(set (match_operand:QI 0 "register_operand" "=r")
   3479  1.1.1.1.8.2  tls 	(umax:QI (match_operand:QI 1 "reg_or_0_operand" "%rJ")
   3480  1.1.1.1.8.2  tls 		 (match_operand:QI 2 "reg_or_8bit_operand" "rI")))]
   3481  1.1.1.1.8.2  tls   "TARGET_MAX"
   3482  1.1.1.1.8.2  tls   "maxub8 %r1,%2,%0"
   3483  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   3484  1.1.1.1.8.2  tls 
   3485  1.1.1.1.8.2  tls (define_insn "sminhi3"
   3486  1.1.1.1.8.2  tls   [(set (match_operand:HI 0 "register_operand" "=r")
   3487  1.1.1.1.8.2  tls 	(smin:HI (match_operand:HI 1 "reg_or_0_operand" "%rJ")
   3488  1.1.1.1.8.2  tls 		 (match_operand:HI 2 "reg_or_8bit_operand" "rI")))]
   3489  1.1.1.1.8.2  tls   "TARGET_MAX"
   3490  1.1.1.1.8.2  tls   "minsw4 %r1,%2,%0"
   3491  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   3492  1.1.1.1.8.2  tls 
   3493  1.1.1.1.8.2  tls (define_insn "uminhi3"
   3494  1.1.1.1.8.2  tls   [(set (match_operand:HI 0 "register_operand" "=r")
   3495  1.1.1.1.8.2  tls 	(umin:HI (match_operand:HI 1 "reg_or_0_operand" "%rJ")
   3496  1.1.1.1.8.2  tls 		 (match_operand:HI 2 "reg_or_8bit_operand" "rI")))]
   3497  1.1.1.1.8.2  tls   "TARGET_MAX"
   3498  1.1.1.1.8.2  tls   "minuw4 %r1,%2,%0"
   3499  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   3500  1.1.1.1.8.2  tls 
   3501  1.1.1.1.8.2  tls (define_insn "smaxhi3"
   3502  1.1.1.1.8.2  tls   [(set (match_operand:HI 0 "register_operand" "=r")
   3503  1.1.1.1.8.2  tls 	(smax:HI (match_operand:HI 1 "reg_or_0_operand" "%rJ")
   3504  1.1.1.1.8.2  tls 		 (match_operand:HI 2 "reg_or_8bit_operand" "rI")))]
   3505  1.1.1.1.8.2  tls   "TARGET_MAX"
   3506  1.1.1.1.8.2  tls   "maxsw4 %r1,%2,%0"
   3507  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   3508  1.1.1.1.8.2  tls 
   3509  1.1.1.1.8.2  tls (define_insn "umaxhi3"
   3510  1.1.1.1.8.2  tls   [(set (match_operand:HI 0 "register_operand" "=r")
   3511  1.1.1.1.8.2  tls 	(umax:HI (match_operand:HI 1 "reg_or_0_operand" "%rJ")
   3512  1.1.1.1.8.2  tls 		 (match_operand:HI 2 "reg_or_8bit_operand" "rI")))]
   3513  1.1.1.1.8.2  tls   "TARGET_MAX"
   3514  1.1.1.1.8.2  tls   "maxuw4 %r1,%2,%0"
   3515  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   3516  1.1.1.1.8.2  tls 
   3517  1.1.1.1.8.2  tls (define_expand "smaxdi3"
   3518  1.1.1.1.8.2  tls   [(set (match_dup 3)
   3519  1.1.1.1.8.2  tls 	(le:DI (match_operand:DI 1 "reg_or_0_operand" "")
   3520  1.1.1.1.8.2  tls 	       (match_operand:DI 2 "reg_or_8bit_operand" "")))
   3521  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   3522  1.1.1.1.8.2  tls 	(if_then_else:DI (eq (match_dup 3) (const_int 0))
   3523  1.1.1.1.8.2  tls 			 (match_dup 1) (match_dup 2)))]
   3524  1.1.1.1.8.2  tls   ""
   3525  1.1.1.1.8.2  tls   { operands[3] = gen_reg_rtx (DImode); })
   3526  1.1.1.1.8.2  tls 
   3527  1.1.1.1.8.2  tls (define_split
   3528  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   3529  1.1.1.1.8.2  tls 	(smax:DI (match_operand:DI 1 "reg_or_0_operand" "")
   3530  1.1.1.1.8.2  tls 		 (match_operand:DI 2 "reg_or_8bit_operand" "")))
   3531  1.1.1.1.8.2  tls    (clobber (match_operand:DI 3 "register_operand" ""))]
   3532  1.1.1.1.8.2  tls   "operands[2] != const0_rtx"
   3533  1.1.1.1.8.2  tls   [(set (match_dup 3) (le:DI (match_dup 1) (match_dup 2)))
   3534  1.1.1.1.8.2  tls    (set (match_dup 0) (if_then_else:DI (eq (match_dup 3) (const_int 0))
   3535  1.1.1.1.8.2  tls 				       (match_dup 1) (match_dup 2)))]
   3536  1.1.1.1.8.2  tls   "")
   3537  1.1.1.1.8.2  tls 
   3538  1.1.1.1.8.2  tls (define_insn "*smax_const0"
   3539  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   3540  1.1.1.1.8.2  tls 	(smax:DI (match_operand:DI 1 "register_operand" "0")
   3541  1.1.1.1.8.2  tls 		 (const_int 0)))]
   3542  1.1.1.1.8.2  tls   ""
   3543  1.1.1.1.8.2  tls   "cmovlt %0,0,%0"
   3544  1.1.1.1.8.2  tls   [(set_attr "type" "icmov")])
   3545  1.1.1.1.8.2  tls 
   3546  1.1.1.1.8.2  tls (define_expand "smindi3"
   3547  1.1.1.1.8.2  tls   [(set (match_dup 3)
   3548  1.1.1.1.8.2  tls 	(lt:DI (match_operand:DI 1 "reg_or_0_operand" "")
   3549  1.1.1.1.8.2  tls 	       (match_operand:DI 2 "reg_or_8bit_operand" "")))
   3550  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   3551  1.1.1.1.8.2  tls 	(if_then_else:DI (ne (match_dup 3) (const_int 0))
   3552  1.1.1.1.8.2  tls 			 (match_dup 1) (match_dup 2)))]
   3553  1.1.1.1.8.2  tls   ""
   3554  1.1.1.1.8.2  tls   { operands[3] = gen_reg_rtx (DImode); })
   3555  1.1.1.1.8.2  tls 
   3556  1.1.1.1.8.2  tls (define_split
   3557  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   3558  1.1.1.1.8.2  tls 	(smin:DI (match_operand:DI 1 "reg_or_0_operand" "")
   3559  1.1.1.1.8.2  tls 		 (match_operand:DI 2 "reg_or_8bit_operand" "")))
   3560  1.1.1.1.8.2  tls    (clobber (match_operand:DI 3 "register_operand" ""))]
   3561  1.1.1.1.8.2  tls   "operands[2] != const0_rtx"
   3562  1.1.1.1.8.2  tls   [(set (match_dup 3) (lt:DI (match_dup 1) (match_dup 2)))
   3563  1.1.1.1.8.2  tls    (set (match_dup 0) (if_then_else:DI (ne (match_dup 3) (const_int 0))
   3564  1.1.1.1.8.2  tls 				       (match_dup 1) (match_dup 2)))]
   3565  1.1.1.1.8.2  tls   "")
   3566  1.1.1.1.8.2  tls 
   3567  1.1.1.1.8.2  tls (define_insn "*smin_const0"
   3568  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   3569  1.1.1.1.8.2  tls 	(smin:DI (match_operand:DI 1 "register_operand" "0")
   3570  1.1.1.1.8.2  tls 		 (const_int 0)))]
   3571  1.1.1.1.8.2  tls   ""
   3572  1.1.1.1.8.2  tls   "cmovgt %0,0,%0"
   3573  1.1.1.1.8.2  tls   [(set_attr "type" "icmov")])
   3574  1.1.1.1.8.2  tls 
   3575  1.1.1.1.8.2  tls (define_expand "umaxdi3"
   3576  1.1.1.1.8.2  tls   [(set (match_dup 3)
   3577  1.1.1.1.8.2  tls 	(leu:DI (match_operand:DI 1 "reg_or_0_operand" "")
   3578  1.1.1.1.8.2  tls 		(match_operand:DI 2 "reg_or_8bit_operand" "")))
   3579  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   3580  1.1.1.1.8.2  tls 	(if_then_else:DI (eq (match_dup 3) (const_int 0))
   3581  1.1.1.1.8.2  tls 			 (match_dup 1) (match_dup 2)))]
   3582  1.1.1.1.8.2  tls   ""
   3583  1.1.1.1.8.2  tls   "operands[3] = gen_reg_rtx (DImode);")
   3584  1.1.1.1.8.2  tls 
   3585  1.1.1.1.8.2  tls (define_split
   3586  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   3587  1.1.1.1.8.2  tls 	(umax:DI (match_operand:DI 1 "reg_or_0_operand" "")
   3588  1.1.1.1.8.2  tls 		 (match_operand:DI 2 "reg_or_8bit_operand" "")))
   3589  1.1.1.1.8.2  tls    (clobber (match_operand:DI 3 "register_operand" ""))]
   3590  1.1.1.1.8.2  tls   "operands[2] != const0_rtx"
   3591  1.1.1.1.8.2  tls   [(set (match_dup 3) (leu:DI (match_dup 1) (match_dup 2)))
   3592  1.1.1.1.8.2  tls    (set (match_dup 0) (if_then_else:DI (eq (match_dup 3) (const_int 0))
   3593  1.1.1.1.8.2  tls 				       (match_dup 1) (match_dup 2)))]
   3594  1.1.1.1.8.2  tls   "")
   3595  1.1.1.1.8.2  tls 
   3596  1.1.1.1.8.2  tls (define_expand "umindi3"
   3597  1.1.1.1.8.2  tls   [(set (match_dup 3)
   3598  1.1.1.1.8.2  tls 	(ltu:DI (match_operand:DI 1 "reg_or_0_operand" "")
   3599  1.1.1.1.8.2  tls 		(match_operand:DI 2 "reg_or_8bit_operand" "")))
   3600  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   3601  1.1.1.1.8.2  tls 	(if_then_else:DI (ne (match_dup 3) (const_int 0))
   3602  1.1.1.1.8.2  tls 			 (match_dup 1) (match_dup 2)))]
   3603  1.1.1.1.8.2  tls   ""
   3604  1.1.1.1.8.2  tls   "operands[3] = gen_reg_rtx (DImode);")
   3605  1.1.1.1.8.2  tls 
   3606  1.1.1.1.8.2  tls (define_split
   3607  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   3608  1.1.1.1.8.2  tls 	(umin:DI (match_operand:DI 1 "reg_or_0_operand" "")
   3609  1.1.1.1.8.2  tls 		 (match_operand:DI 2 "reg_or_8bit_operand" "")))
   3610  1.1.1.1.8.2  tls    (clobber (match_operand:DI 3 "register_operand" ""))]
   3611  1.1.1.1.8.2  tls   "operands[2] != const0_rtx"
   3612  1.1.1.1.8.2  tls   [(set (match_dup 3) (ltu:DI (match_dup 1) (match_dup 2)))
   3613  1.1.1.1.8.2  tls    (set (match_dup 0) (if_then_else:DI (ne (match_dup 3) (const_int 0))
   3614  1.1.1.1.8.2  tls 				       (match_dup 1) (match_dup 2)))]
   3615  1.1.1.1.8.2  tls   "")
   3616  1.1.1.1.8.2  tls 
   3617  1.1.1.1.8.2  tls (define_insn "*bcc_normal"
   3618  1.1.1.1.8.2  tls   [(set (pc)
   3619  1.1.1.1.8.2  tls 	(if_then_else
   3620  1.1.1.1.8.2  tls 	 (match_operator 1 "signed_comparison_operator"
   3621  1.1.1.1.8.2  tls 			 [(match_operand:DI 2 "reg_or_0_operand" "rJ")
   3622  1.1.1.1.8.2  tls 			  (const_int 0)])
   3623  1.1.1.1.8.2  tls 	 (label_ref (match_operand 0 "" ""))
   3624  1.1.1.1.8.2  tls 	 (pc)))]
   3625  1.1.1.1.8.2  tls   ""
   3626  1.1.1.1.8.2  tls   "b%C1 %r2,%0"
   3627  1.1.1.1.8.2  tls   [(set_attr "type" "ibr")])
   3628  1.1.1.1.8.2  tls 
   3629  1.1.1.1.8.2  tls (define_insn "*bcc_reverse"
   3630  1.1.1.1.8.2  tls   [(set (pc)
   3631  1.1.1.1.8.2  tls 	(if_then_else
   3632  1.1.1.1.8.2  tls 	 (match_operator 1 "signed_comparison_operator"
   3633  1.1.1.1.8.2  tls 			 [(match_operand:DI 2 "register_operand" "r")
   3634  1.1.1.1.8.2  tls 			  (const_int 0)])
   3635  1.1.1.1.8.2  tls 
   3636  1.1.1.1.8.2  tls 	 (pc)
   3637  1.1.1.1.8.2  tls 	 (label_ref (match_operand 0 "" ""))))]
   3638  1.1.1.1.8.2  tls   ""
   3639  1.1.1.1.8.2  tls   "b%c1 %2,%0"
   3640  1.1.1.1.8.2  tls   [(set_attr "type" "ibr")])
   3641  1.1.1.1.8.2  tls 
   3642  1.1.1.1.8.2  tls (define_insn "*blbs_normal"
   3643  1.1.1.1.8.2  tls   [(set (pc)
   3644  1.1.1.1.8.2  tls 	(if_then_else
   3645  1.1.1.1.8.2  tls 	 (ne (zero_extract:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
   3646  1.1.1.1.8.2  tls 			      (const_int 1)
   3647  1.1.1.1.8.2  tls 			      (const_int 0))
   3648  1.1.1.1.8.2  tls 	     (const_int 0))
   3649  1.1.1.1.8.2  tls 	 (label_ref (match_operand 0 "" ""))
   3650  1.1.1.1.8.2  tls 	 (pc)))]
   3651  1.1.1.1.8.2  tls   ""
   3652  1.1.1.1.8.2  tls   "blbs %r1,%0"
   3653  1.1.1.1.8.2  tls   [(set_attr "type" "ibr")])
   3654  1.1.1.1.8.2  tls 
   3655  1.1.1.1.8.2  tls (define_insn "*blbc_normal"
   3656  1.1.1.1.8.2  tls   [(set (pc)
   3657  1.1.1.1.8.2  tls 	(if_then_else
   3658  1.1.1.1.8.2  tls 	 (eq (zero_extract:DI (match_operand:DI 1 "reg_or_0_operand" "rJ")
   3659  1.1.1.1.8.2  tls 			      (const_int 1)
   3660  1.1.1.1.8.2  tls 			      (const_int 0))
   3661  1.1.1.1.8.2  tls 	     (const_int 0))
   3662  1.1.1.1.8.2  tls 	 (label_ref (match_operand 0 "" ""))
   3663  1.1.1.1.8.2  tls 	 (pc)))]
   3664  1.1.1.1.8.2  tls   ""
   3665  1.1.1.1.8.2  tls   "blbc %r1,%0"
   3666  1.1.1.1.8.2  tls   [(set_attr "type" "ibr")])
   3667  1.1.1.1.8.2  tls 
   3668  1.1.1.1.8.2  tls (define_split
   3669  1.1.1.1.8.2  tls   [(parallel
   3670  1.1.1.1.8.2  tls     [(set (pc)
   3671  1.1.1.1.8.2  tls 	  (if_then_else
   3672  1.1.1.1.8.2  tls 	   (match_operator 1 "comparison_operator"
   3673  1.1.1.1.8.2  tls 			   [(zero_extract:DI (match_operand:DI 2 "register_operand" "")
   3674  1.1.1.1.8.2  tls 					     (const_int 1)
   3675  1.1.1.1.8.2  tls 					     (match_operand:DI 3 "const_int_operand" ""))
   3676  1.1.1.1.8.2  tls 			    (const_int 0)])
   3677  1.1.1.1.8.2  tls 	   (label_ref (match_operand 0 "" ""))
   3678  1.1.1.1.8.2  tls 	   (pc)))
   3679  1.1.1.1.8.2  tls      (clobber (match_operand:DI 4 "register_operand" ""))])]
   3680  1.1.1.1.8.2  tls   "INTVAL (operands[3]) != 0"
   3681  1.1.1.1.8.2  tls   [(set (match_dup 4)
   3682  1.1.1.1.8.2  tls 	(lshiftrt:DI (match_dup 2) (match_dup 3)))
   3683  1.1.1.1.8.2  tls    (set (pc)
   3684  1.1.1.1.8.2  tls 	(if_then_else (match_op_dup 1
   3685  1.1.1.1.8.2  tls 				    [(zero_extract:DI (match_dup 4)
   3686  1.1.1.1.8.2  tls 						      (const_int 1)
   3687  1.1.1.1.8.2  tls 						      (const_int 0))
   3688  1.1.1.1.8.2  tls 				     (const_int 0)])
   3689  1.1.1.1.8.2  tls 		      (label_ref (match_dup 0))
   3690  1.1.1.1.8.2  tls 		      (pc)))]
   3691  1.1.1.1.8.2  tls   "")
   3692  1.1.1.1.8.2  tls 
   3694  1.1.1.1.8.2  tls ;; The following are the corresponding floating-point insns.  Recall
   3695  1.1.1.1.8.2  tls ;; we need to have variants that expand the arguments from SFmode
   3696  1.1.1.1.8.2  tls ;; to DFmode.
   3697  1.1.1.1.8.2  tls 
   3698  1.1.1.1.8.2  tls (define_insn "*cmpdf_ieee"
   3699  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=&f")
   3700  1.1.1.1.8.2  tls 	(match_operator:DF 1 "alpha_fp_comparison_operator"
   3701  1.1.1.1.8.2  tls 			   [(match_operand:DF 2 "reg_or_0_operand" "fG")
   3702  1.1.1.1.8.2  tls 			    (match_operand:DF 3 "reg_or_0_operand" "fG")]))]
   3703  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
   3704  1.1.1.1.8.2  tls   "cmp%-%C1%/ %R2,%R3,%0"
   3705  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   3706  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3707  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "su")])
   3708  1.1.1.1.8.2  tls 
   3709  1.1.1.1.8.2  tls (define_insn "*cmpdf_internal"
   3710  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   3711  1.1.1.1.8.2  tls 	(match_operator:DF 1 "alpha_fp_comparison_operator"
   3712  1.1.1.1.8.2  tls 			   [(match_operand:DF 2 "reg_or_0_operand" "fG")
   3713  1.1.1.1.8.2  tls 			    (match_operand:DF 3 "reg_or_0_operand" "fG")]))]
   3714  1.1.1.1.8.2  tls   "TARGET_FP"
   3715  1.1.1.1.8.2  tls   "cmp%-%C1%/ %R2,%R3,%0"
   3716  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   3717  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3718  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "su")])
   3719  1.1.1.1.8.2  tls 
   3720  1.1.1.1.8.2  tls (define_insn "*cmpdf_ext1"
   3721  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   3722  1.1.1.1.8.2  tls 	(match_operator:DF 1 "alpha_fp_comparison_operator"
   3723  1.1.1.1.8.2  tls 			   [(float_extend:DF
   3724  1.1.1.1.8.2  tls 			     (match_operand:SF 2 "reg_or_0_operand" "fG"))
   3725  1.1.1.1.8.2  tls 			    (match_operand:DF 3 "reg_or_0_operand" "fG")]))]
   3726  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   3727  1.1.1.1.8.2  tls   "cmp%-%C1%/ %R2,%R3,%0"
   3728  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   3729  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3730  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "su")])
   3731  1.1.1.1.8.2  tls 
   3732  1.1.1.1.8.2  tls (define_insn "*cmpdf_ext2"
   3733  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   3734  1.1.1.1.8.2  tls 	(match_operator:DF 1 "alpha_fp_comparison_operator"
   3735  1.1.1.1.8.2  tls 			   [(match_operand:DF 2 "reg_or_0_operand" "fG")
   3736  1.1.1.1.8.2  tls 			    (float_extend:DF
   3737  1.1.1.1.8.2  tls 			     (match_operand:SF 3 "reg_or_0_operand" "fG"))]))]
   3738  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   3739  1.1.1.1.8.2  tls   "cmp%-%C1%/ %R2,%R3,%0"
   3740  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   3741  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3742  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "su")])
   3743  1.1.1.1.8.2  tls 
   3744  1.1.1.1.8.2  tls (define_insn "*cmpdf_ext3"
   3745  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f")
   3746  1.1.1.1.8.2  tls 	(match_operator:DF 1 "alpha_fp_comparison_operator"
   3747  1.1.1.1.8.2  tls 			   [(float_extend:DF
   3748  1.1.1.1.8.2  tls 			     (match_operand:SF 2 "reg_or_0_operand" "fG"))
   3749  1.1.1.1.8.2  tls 			    (float_extend:DF
   3750  1.1.1.1.8.2  tls 			     (match_operand:SF 3 "reg_or_0_operand" "fG"))]))]
   3751  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   3752  1.1.1.1.8.2  tls   "cmp%-%C1%/ %R2,%R3,%0"
   3753  1.1.1.1.8.2  tls   [(set_attr "type" "fadd")
   3754  1.1.1.1.8.2  tls    (set_attr "trap" "yes")
   3755  1.1.1.1.8.2  tls    (set_attr "trap_suffix" "su")])
   3756  1.1.1.1.8.2  tls 
   3757  1.1.1.1.8.2  tls (define_insn "*movdfcc_internal"
   3758  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f,f")
   3759  1.1.1.1.8.2  tls 	(if_then_else:DF
   3760  1.1.1.1.8.2  tls 	 (match_operator 3 "signed_comparison_operator"
   3761  1.1.1.1.8.2  tls 			 [(match_operand:DF 4 "reg_or_0_operand" "fG,fG")
   3762  1.1.1.1.8.2  tls 			  (match_operand:DF 2 "const0_operand" "G,G")])
   3763  1.1.1.1.8.2  tls 	 (match_operand:DF 1 "reg_or_0_operand" "fG,0")
   3764  1.1.1.1.8.2  tls 	 (match_operand:DF 5 "reg_or_0_operand" "0,fG")))]
   3765  1.1.1.1.8.2  tls   "TARGET_FP"
   3766  1.1.1.1.8.2  tls   "@
   3767  1.1.1.1.8.2  tls    fcmov%C3 %R4,%R1,%0
   3768  1.1.1.1.8.2  tls    fcmov%D3 %R4,%R5,%0"
   3769  1.1.1.1.8.2  tls   [(set_attr "type" "fcmov")])
   3770  1.1.1.1.8.2  tls 
   3771  1.1.1.1.8.2  tls (define_insn "*movsfcc_internal"
   3772  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=f,f")
   3773  1.1.1.1.8.2  tls 	(if_then_else:SF
   3774  1.1.1.1.8.2  tls 	 (match_operator 3 "signed_comparison_operator"
   3775  1.1.1.1.8.2  tls 			 [(match_operand:DF 4 "reg_or_0_operand" "fG,fG")
   3776  1.1.1.1.8.2  tls 			  (match_operand:DF 2 "const0_operand" "G,G")])
   3777  1.1.1.1.8.2  tls 	 (match_operand:SF 1 "reg_or_0_operand" "fG,0")
   3778  1.1.1.1.8.2  tls 	 (match_operand:SF 5 "reg_or_0_operand" "0,fG")))]
   3779  1.1.1.1.8.2  tls   "TARGET_FP"
   3780  1.1.1.1.8.2  tls   "@
   3781  1.1.1.1.8.2  tls    fcmov%C3 %R4,%R1,%0
   3782  1.1.1.1.8.2  tls    fcmov%D3 %R4,%R5,%0"
   3783  1.1.1.1.8.2  tls   [(set_attr "type" "fcmov")])
   3784  1.1.1.1.8.2  tls 
   3785  1.1.1.1.8.2  tls (define_insn "*movdfcc_ext1"
   3786  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f,f")
   3787  1.1.1.1.8.2  tls 	(if_then_else:DF
   3788  1.1.1.1.8.2  tls 	 (match_operator 3 "signed_comparison_operator"
   3789  1.1.1.1.8.2  tls 			 [(match_operand:DF 4 "reg_or_0_operand" "fG,fG")
   3790  1.1.1.1.8.2  tls 			  (match_operand:DF 2 "const0_operand" "G,G")])
   3791  1.1.1.1.8.2  tls 	 (float_extend:DF (match_operand:SF 1 "reg_or_0_operand" "fG,0"))
   3792  1.1.1.1.8.2  tls 	 (match_operand:DF 5 "reg_or_0_operand" "0,fG")))]
   3793  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   3794  1.1.1.1.8.2  tls   "@
   3795  1.1.1.1.8.2  tls    fcmov%C3 %R4,%R1,%0
   3796  1.1.1.1.8.2  tls    fcmov%D3 %R4,%R5,%0"
   3797  1.1.1.1.8.2  tls   [(set_attr "type" "fcmov")])
   3798  1.1.1.1.8.2  tls 
   3799  1.1.1.1.8.2  tls (define_insn "*movdfcc_ext2"
   3800  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f,f")
   3801  1.1.1.1.8.2  tls 	(if_then_else:DF
   3802  1.1.1.1.8.2  tls 	 (match_operator 3 "signed_comparison_operator"
   3803  1.1.1.1.8.2  tls 			 [(float_extend:DF
   3804  1.1.1.1.8.2  tls 			   (match_operand:SF 4 "reg_or_0_operand" "fG,fG"))
   3805  1.1.1.1.8.2  tls 			  (match_operand:DF 2 "const0_operand" "G,G")])
   3806  1.1.1.1.8.2  tls 	 (match_operand:DF 1 "reg_or_0_operand" "fG,0")
   3807  1.1.1.1.8.2  tls 	 (match_operand:DF 5 "reg_or_0_operand" "0,fG")))]
   3808  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   3809  1.1.1.1.8.2  tls   "@
   3810  1.1.1.1.8.2  tls    fcmov%C3 %R4,%R1,%0
   3811  1.1.1.1.8.2  tls    fcmov%D3 %R4,%R5,%0"
   3812  1.1.1.1.8.2  tls   [(set_attr "type" "fcmov")])
   3813  1.1.1.1.8.2  tls 
   3814  1.1.1.1.8.2  tls (define_insn "*movdfcc_ext3"
   3815  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "=f,f")
   3816  1.1.1.1.8.2  tls 	(if_then_else:SF
   3817  1.1.1.1.8.2  tls 	 (match_operator 3 "signed_comparison_operator"
   3818  1.1.1.1.8.2  tls 			 [(float_extend:DF
   3819  1.1.1.1.8.2  tls 			   (match_operand:SF 4 "reg_or_0_operand" "fG,fG"))
   3820  1.1.1.1.8.2  tls 			  (match_operand:DF 2 "const0_operand" "G,G")])
   3821  1.1.1.1.8.2  tls 	 (match_operand:SF 1 "reg_or_0_operand" "fG,0")
   3822  1.1.1.1.8.2  tls 	 (match_operand:SF 5 "reg_or_0_operand" "0,fG")))]
   3823  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   3824  1.1.1.1.8.2  tls   "@
   3825  1.1.1.1.8.2  tls    fcmov%C3 %R4,%R1,%0
   3826  1.1.1.1.8.2  tls    fcmov%D3 %R4,%R5,%0"
   3827  1.1.1.1.8.2  tls   [(set_attr "type" "fcmov")])
   3828  1.1.1.1.8.2  tls 
   3829  1.1.1.1.8.2  tls (define_insn "*movdfcc_ext4"
   3830  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "=f,f")
   3831  1.1.1.1.8.2  tls 	(if_then_else:DF
   3832  1.1.1.1.8.2  tls 	 (match_operator 3 "signed_comparison_operator"
   3833  1.1.1.1.8.2  tls 			 [(float_extend:DF
   3834  1.1.1.1.8.2  tls 			   (match_operand:SF 4 "reg_or_0_operand" "fG,fG"))
   3835  1.1.1.1.8.2  tls 			  (match_operand:DF 2 "const0_operand" "G,G")])
   3836  1.1.1.1.8.2  tls 	 (float_extend:DF (match_operand:SF 1 "reg_or_0_operand" "fG,0"))
   3837  1.1.1.1.8.2  tls 	 (match_operand:DF 5 "reg_or_0_operand" "0,fG")))]
   3838  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   3839  1.1.1.1.8.2  tls   "@
   3840  1.1.1.1.8.2  tls    fcmov%C3 %R4,%R1,%0
   3841  1.1.1.1.8.2  tls    fcmov%D3 %R4,%R5,%0"
   3842  1.1.1.1.8.2  tls   [(set_attr "type" "fcmov")])
   3843  1.1.1.1.8.2  tls 
   3844  1.1.1.1.8.2  tls (define_expand "smaxdf3"
   3845  1.1.1.1.8.2  tls   [(set (match_dup 3)
   3846  1.1.1.1.8.2  tls 	(le:DF (match_operand:DF 1 "reg_or_0_operand" "")
   3847  1.1.1.1.8.2  tls 	       (match_operand:DF 2 "reg_or_0_operand" "")))
   3848  1.1.1.1.8.2  tls    (set (match_operand:DF 0 "register_operand" "")
   3849  1.1.1.1.8.2  tls 	(if_then_else:DF (eq (match_dup 3) (match_dup 4))
   3850  1.1.1.1.8.2  tls 			 (match_dup 1) (match_dup 2)))]
   3851  1.1.1.1.8.2  tls   "TARGET_FP"
   3852  1.1.1.1.8.2  tls {
   3853  1.1.1.1.8.2  tls   operands[3] = gen_reg_rtx (DFmode);
   3854  1.1.1.1.8.2  tls   operands[4] = CONST0_RTX (DFmode);
   3855  1.1.1.1.8.2  tls })
   3856  1.1.1.1.8.2  tls 
   3857  1.1.1.1.8.2  tls (define_expand "smindf3"
   3858  1.1.1.1.8.2  tls   [(set (match_dup 3)
   3859  1.1.1.1.8.2  tls 	(lt:DF (match_operand:DF 1 "reg_or_0_operand" "")
   3860  1.1.1.1.8.2  tls 	       (match_operand:DF 2 "reg_or_0_operand" "")))
   3861  1.1.1.1.8.2  tls    (set (match_operand:DF 0 "register_operand" "")
   3862  1.1.1.1.8.2  tls 	(if_then_else:DF (ne (match_dup 3) (match_dup 4))
   3863  1.1.1.1.8.2  tls 			 (match_dup 1) (match_dup 2)))]
   3864  1.1.1.1.8.2  tls   "TARGET_FP"
   3865  1.1.1.1.8.2  tls {
   3866  1.1.1.1.8.2  tls   operands[3] = gen_reg_rtx (DFmode);
   3867  1.1.1.1.8.2  tls   operands[4] = CONST0_RTX (DFmode);
   3868  1.1.1.1.8.2  tls })
   3869  1.1.1.1.8.2  tls 
   3870  1.1.1.1.8.2  tls (define_expand "smaxsf3"
   3871  1.1.1.1.8.2  tls   [(set (match_dup 3)
   3872  1.1.1.1.8.2  tls 	(le:DF (float_extend:DF (match_operand:SF 1 "reg_or_0_operand" ""))
   3873  1.1.1.1.8.2  tls 	       (float_extend:DF (match_operand:SF 2 "reg_or_0_operand" ""))))
   3874  1.1.1.1.8.2  tls    (set (match_operand:SF 0 "register_operand" "")
   3875  1.1.1.1.8.2  tls 	(if_then_else:SF (eq (match_dup 3) (match_dup 4))
   3876  1.1.1.1.8.2  tls 			 (match_dup 1) (match_dup 2)))]
   3877  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   3878  1.1.1.1.8.2  tls {
   3879  1.1.1.1.8.2  tls   operands[3] = gen_reg_rtx (DFmode);
   3880  1.1.1.1.8.2  tls   operands[4] = CONST0_RTX (DFmode);
   3881  1.1.1.1.8.2  tls })
   3882  1.1.1.1.8.2  tls 
   3883  1.1.1.1.8.2  tls (define_expand "sminsf3"
   3884  1.1.1.1.8.2  tls   [(set (match_dup 3)
   3885  1.1.1.1.8.2  tls 	(lt:DF (float_extend:DF (match_operand:SF 1 "reg_or_0_operand" ""))
   3886  1.1.1.1.8.2  tls 	       (float_extend:DF (match_operand:SF 2 "reg_or_0_operand" ""))))
   3887  1.1.1.1.8.2  tls    (set (match_operand:SF 0 "register_operand" "")
   3888  1.1.1.1.8.2  tls 	(if_then_else:SF (ne (match_dup 3) (match_dup 4))
   3889  1.1.1.1.8.2  tls 		      (match_dup 1) (match_dup 2)))]
   3890  1.1.1.1.8.2  tls   "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
   3891  1.1.1.1.8.2  tls {
   3892  1.1.1.1.8.2  tls   operands[3] = gen_reg_rtx (DFmode);
   3893  1.1.1.1.8.2  tls   operands[4] = CONST0_RTX (DFmode);
   3894  1.1.1.1.8.2  tls })
   3895  1.1.1.1.8.2  tls 
   3896  1.1.1.1.8.2  tls (define_insn "*fbcc_normal"
   3897  1.1.1.1.8.2  tls   [(set (pc)
   3898  1.1.1.1.8.2  tls 	(if_then_else
   3899  1.1.1.1.8.2  tls 	 (match_operator 1 "signed_comparison_operator"
   3900  1.1.1.1.8.2  tls 			 [(match_operand:DF 2 "reg_or_0_operand" "fG")
   3901  1.1.1.1.8.2  tls 			  (match_operand:DF 3 "const0_operand" "G")])
   3902  1.1.1.1.8.2  tls 	 (label_ref (match_operand 0 "" ""))
   3903  1.1.1.1.8.2  tls 	 (pc)))]
   3904  1.1.1.1.8.2  tls   "TARGET_FP"
   3905  1.1.1.1.8.2  tls   "fb%C1 %R2,%0"
   3906  1.1.1.1.8.2  tls   [(set_attr "type" "fbr")])
   3907  1.1.1.1.8.2  tls 
   3908  1.1.1.1.8.2  tls (define_insn "*fbcc_ext_normal"
   3909  1.1.1.1.8.2  tls   [(set (pc)
   3910  1.1.1.1.8.2  tls 	(if_then_else
   3911  1.1.1.1.8.2  tls 	 (match_operator 1 "signed_comparison_operator"
   3912  1.1.1.1.8.2  tls 			 [(float_extend:DF
   3913  1.1.1.1.8.2  tls 			   (match_operand:SF 2 "reg_or_0_operand" "fG"))
   3914  1.1.1.1.8.2  tls 			  (match_operand:DF 3 "const0_operand" "G")])
   3915  1.1.1.1.8.2  tls 	 (label_ref (match_operand 0 "" ""))
   3916  1.1.1.1.8.2  tls 	 (pc)))]
   3917  1.1.1.1.8.2  tls   "TARGET_FP"
   3918  1.1.1.1.8.2  tls   "fb%C1 %R2,%0"
   3919  1.1.1.1.8.2  tls   [(set_attr "type" "fbr")])
   3920  1.1.1.1.8.2  tls 
   3922  1.1.1.1.8.2  tls ;; These are the main define_expand's used to make conditional branches
   3923  1.1.1.1.8.2  tls ;; and compares.
   3924  1.1.1.1.8.2  tls 
   3925  1.1.1.1.8.2  tls (define_expand "cbranchdf4"
   3926  1.1.1.1.8.2  tls   [(use (match_operator 0 "alpha_cbranch_operator"
   3927  1.1.1.1.8.2  tls          [(match_operand:DF 1 "reg_or_0_operand" "")
   3928  1.1.1.1.8.2  tls           (match_operand:DF 2 "reg_or_0_operand" "")]))
   3929  1.1.1.1.8.2  tls    (use (match_operand 3 ""))]
   3930  1.1.1.1.8.2  tls   "TARGET_FP"
   3931  1.1.1.1.8.2  tls   { alpha_emit_conditional_branch (operands, DFmode); DONE; })
   3932  1.1.1.1.8.2  tls 
   3933  1.1.1.1.8.2  tls (define_expand "cbranchtf4"
   3934  1.1.1.1.8.2  tls   [(use (match_operator 0 "alpha_cbranch_operator"
   3935  1.1.1.1.8.2  tls          [(match_operand:TF 1 "general_operand")
   3936  1.1.1.1.8.2  tls           (match_operand:TF 2 "general_operand")]))
   3937  1.1.1.1.8.2  tls    (use (match_operand 3 ""))]
   3938  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   3939  1.1.1.1.8.2  tls   { alpha_emit_conditional_branch (operands, TFmode); DONE; })
   3940  1.1.1.1.8.2  tls 
   3941  1.1.1.1.8.2  tls (define_expand "cbranchdi4"
   3942  1.1.1.1.8.2  tls   [(use (match_operator 0 "alpha_cbranch_operator"
   3943  1.1.1.1.8.2  tls          [(match_operand:DI 1 "some_operand")
   3944  1.1.1.1.8.2  tls           (match_operand:DI 2 "some_operand")]))
   3945  1.1.1.1.8.2  tls    (use (match_operand 3 ""))]
   3946  1.1.1.1.8.2  tls   ""
   3947  1.1.1.1.8.2  tls   { alpha_emit_conditional_branch (operands, DImode); DONE; })
   3948  1.1.1.1.8.2  tls 
   3949  1.1.1.1.8.2  tls (define_expand "cstoredf4"
   3950  1.1.1.1.8.2  tls   [(use (match_operator:DI 1 "alpha_cbranch_operator"
   3951  1.1.1.1.8.2  tls          [(match_operand:DF 2 "reg_or_0_operand")
   3952  1.1.1.1.8.2  tls           (match_operand:DF 3 "reg_or_0_operand")]))
   3953  1.1.1.1.8.2  tls    (clobber (match_operand:DI 0 "register_operand"))]
   3954  1.1.1.1.8.2  tls   "TARGET_FP"
   3955  1.1.1.1.8.2  tls   { if (!alpha_emit_setcc (operands, DFmode)) FAIL; else DONE; })
   3956  1.1.1.1.8.2  tls 
   3957  1.1.1.1.8.2  tls (define_expand "cstoretf4"
   3958  1.1.1.1.8.2  tls   [(use (match_operator:DI 1 "alpha_cbranch_operator"
   3959  1.1.1.1.8.2  tls          [(match_operand:TF 2 "general_operand")
   3960  1.1.1.1.8.2  tls           (match_operand:TF 3 "general_operand")]))
   3961  1.1.1.1.8.2  tls    (clobber (match_operand:DI 0 "register_operand"))]
   3962  1.1.1.1.8.2  tls   "TARGET_HAS_XFLOATING_LIBS"
   3963  1.1.1.1.8.2  tls   { if (!alpha_emit_setcc (operands, TFmode)) FAIL; else DONE; })
   3964  1.1.1.1.8.2  tls 
   3965  1.1.1.1.8.2  tls (define_expand "cstoredi4"
   3966  1.1.1.1.8.2  tls   [(use (match_operator:DI 1 "alpha_cbranch_operator"
   3967  1.1.1.1.8.2  tls          [(match_operand:DI 2 "some_operand")
   3968  1.1.1.1.8.2  tls           (match_operand:DI 3 "some_operand")]))
   3969  1.1.1.1.8.2  tls    (clobber (match_operand:DI 0 "register_operand"))]
   3970  1.1.1.1.8.2  tls   ""
   3971  1.1.1.1.8.2  tls   { if (!alpha_emit_setcc (operands, DImode)) FAIL; else DONE; })
   3972  1.1.1.1.8.2  tls 
   3974  1.1.1.1.8.2  tls ;; These are the main define_expand's used to make conditional moves.
   3975  1.1.1.1.8.2  tls 
   3976  1.1.1.1.8.2  tls (define_expand "movsicc"
   3977  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "")
   3978  1.1.1.1.8.2  tls 	(if_then_else:SI (match_operand 1 "comparison_operator" "")
   3979  1.1.1.1.8.2  tls 			 (match_operand:SI 2 "reg_or_8bit_operand" "")
   3980  1.1.1.1.8.2  tls 			 (match_operand:SI 3 "reg_or_8bit_operand" "")))]
   3981  1.1.1.1.8.2  tls   ""
   3982  1.1.1.1.8.2  tls {
   3983  1.1.1.1.8.2  tls   if ((operands[1] = alpha_emit_conditional_move (operands[1], SImode)) == 0)
   3984  1.1.1.1.8.2  tls     FAIL;
   3985  1.1.1.1.8.2  tls })
   3986  1.1.1.1.8.2  tls 
   3987  1.1.1.1.8.2  tls (define_expand "movdicc"
   3988  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   3989  1.1.1.1.8.2  tls 	(if_then_else:DI (match_operand 1 "comparison_operator" "")
   3990  1.1.1.1.8.2  tls 			 (match_operand:DI 2 "reg_or_8bit_operand" "")
   3991  1.1.1.1.8.2  tls 			 (match_operand:DI 3 "reg_or_8bit_operand" "")))]
   3992  1.1.1.1.8.2  tls   ""
   3993  1.1.1.1.8.2  tls {
   3994  1.1.1.1.8.2  tls   if ((operands[1] = alpha_emit_conditional_move (operands[1], DImode)) == 0)
   3995  1.1.1.1.8.2  tls     FAIL;
   3996  1.1.1.1.8.2  tls })
   3997  1.1.1.1.8.2  tls 
   3998  1.1.1.1.8.2  tls (define_expand "movsfcc"
   3999  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "register_operand" "")
   4000  1.1.1.1.8.2  tls 	(if_then_else:SF (match_operand 1 "comparison_operator" "")
   4001  1.1.1.1.8.2  tls 			 (match_operand:SF 2 "reg_or_8bit_operand" "")
   4002  1.1.1.1.8.2  tls 			 (match_operand:SF 3 "reg_or_8bit_operand" "")))]
   4003  1.1.1.1.8.2  tls   ""
   4004  1.1.1.1.8.2  tls {
   4005  1.1.1.1.8.2  tls   if ((operands[1] = alpha_emit_conditional_move (operands[1], SFmode)) == 0)
   4006  1.1.1.1.8.2  tls     FAIL;
   4007  1.1.1.1.8.2  tls })
   4008  1.1.1.1.8.2  tls 
   4009  1.1.1.1.8.2  tls (define_expand "movdfcc"
   4010  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "register_operand" "")
   4011  1.1.1.1.8.2  tls 	(if_then_else:DF (match_operand 1 "comparison_operator" "")
   4012  1.1.1.1.8.2  tls 			 (match_operand:DF 2 "reg_or_8bit_operand" "")
   4013  1.1.1.1.8.2  tls 			 (match_operand:DF 3 "reg_or_8bit_operand" "")))]
   4014  1.1.1.1.8.2  tls   ""
   4015  1.1.1.1.8.2  tls {
   4016  1.1.1.1.8.2  tls   if ((operands[1] = alpha_emit_conditional_move (operands[1], DFmode)) == 0)
   4017  1.1.1.1.8.2  tls     FAIL;
   4018  1.1.1.1.8.2  tls })
   4019  1.1.1.1.8.2  tls 
   4021  1.1.1.1.8.2  tls ;; These define_split definitions are used in cases when comparisons have
   4022  1.1.1.1.8.2  tls ;; not be stated in the correct way and we need to reverse the second
   4023  1.1.1.1.8.2  tls ;; comparison.  For example, x >= 7 has to be done as x < 6 with the
   4024  1.1.1.1.8.2  tls ;; comparison that tests the result being reversed.  We have one define_split
   4025  1.1.1.1.8.2  tls ;; for each use of a comparison.  They do not match valid insns and need
   4026  1.1.1.1.8.2  tls ;; not generate valid insns.
   4027  1.1.1.1.8.2  tls ;;
   4028  1.1.1.1.8.2  tls ;; We can also handle equality comparisons (and inequality comparisons in
   4029  1.1.1.1.8.2  tls ;; cases where the resulting add cannot overflow) by doing an add followed by
   4030  1.1.1.1.8.2  tls ;; a comparison with zero.  This is faster since the addition takes one
   4031  1.1.1.1.8.2  tls ;; less cycle than a compare when feeding into a conditional move.
   4032  1.1.1.1.8.2  tls ;; For this case, we also have an SImode pattern since we can merge the add
   4033  1.1.1.1.8.2  tls ;; and sign extend and the order doesn't matter.
   4034  1.1.1.1.8.2  tls ;;
   4035  1.1.1.1.8.2  tls ;; We do not do this for floating-point, since it isn't clear how the "wrong"
   4036  1.1.1.1.8.2  tls ;; operation could have been generated.
   4037  1.1.1.1.8.2  tls 
   4038  1.1.1.1.8.2  tls (define_split
   4039  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   4040  1.1.1.1.8.2  tls 	(if_then_else:DI
   4041  1.1.1.1.8.2  tls 	 (match_operator 1 "comparison_operator"
   4042  1.1.1.1.8.2  tls 			 [(match_operand:DI 2 "reg_or_0_operand" "")
   4043  1.1.1.1.8.2  tls 			  (match_operand:DI 3 "reg_or_cint_operand" "")])
   4044  1.1.1.1.8.2  tls 	 (match_operand:DI 4 "reg_or_cint_operand" "")
   4045  1.1.1.1.8.2  tls 	 (match_operand:DI 5 "reg_or_cint_operand" "")))
   4046  1.1.1.1.8.2  tls    (clobber (match_operand:DI 6 "register_operand" ""))]
   4047  1.1.1.1.8.2  tls   "operands[3] != const0_rtx"
   4048  1.1.1.1.8.2  tls   [(set (match_dup 6) (match_dup 7))
   4049  1.1.1.1.8.2  tls    (set (match_dup 0)
   4050  1.1.1.1.8.2  tls 	(if_then_else:DI (match_dup 8) (match_dup 4) (match_dup 5)))]
   4051  1.1.1.1.8.2  tls {
   4052  1.1.1.1.8.2  tls   enum rtx_code code = GET_CODE (operands[1]);
   4053  1.1.1.1.8.2  tls   int unsignedp = (code == GEU || code == LEU || code == GTU || code == LTU);
   4054  1.1.1.1.8.2  tls 
   4055  1.1.1.1.8.2  tls   /* If we are comparing for equality with a constant and that constant
   4056  1.1.1.1.8.2  tls      appears in the arm when the register equals the constant, use the
   4057  1.1.1.1.8.2  tls      register since that is more likely to match (and to produce better code
   4058  1.1.1.1.8.2  tls      if both would).  */
   4059  1.1.1.1.8.2  tls 
   4060  1.1.1.1.8.2  tls   if (code == EQ && CONST_INT_P (operands[3])
   4061  1.1.1.1.8.2  tls       && rtx_equal_p (operands[4], operands[3]))
   4062  1.1.1.1.8.2  tls     operands[4] = operands[2];
   4063  1.1.1.1.8.2  tls 
   4064  1.1.1.1.8.2  tls   else if (code == NE && CONST_INT_P (operands[3])
   4065  1.1.1.1.8.2  tls 	   && rtx_equal_p (operands[5], operands[3]))
   4066  1.1.1.1.8.2  tls     operands[5] = operands[2];
   4067  1.1.1.1.8.2  tls 
   4068  1.1.1.1.8.2  tls   if (code == NE || code == EQ
   4069  1.1.1.1.8.2  tls       || (extended_count (operands[2], DImode, unsignedp) >= 1
   4070  1.1.1.1.8.2  tls 	  && extended_count (operands[3], DImode, unsignedp) >= 1))
   4071  1.1.1.1.8.2  tls     {
   4072  1.1.1.1.8.2  tls       if (CONST_INT_P (operands[3]))
   4073  1.1.1.1.8.2  tls 	operands[7] = gen_rtx_PLUS (DImode, operands[2],
   4074  1.1.1.1.8.2  tls 				    GEN_INT (- INTVAL (operands[3])));
   4075  1.1.1.1.8.2  tls       else
   4076  1.1.1.1.8.2  tls 	operands[7] = gen_rtx_MINUS (DImode, operands[2], operands[3]);
   4077  1.1.1.1.8.2  tls 
   4078  1.1.1.1.8.2  tls       operands[8] = gen_rtx_fmt_ee (code, VOIDmode, operands[6], const0_rtx);
   4079  1.1.1.1.8.2  tls     }
   4080  1.1.1.1.8.2  tls 
   4081  1.1.1.1.8.2  tls   else if (code == EQ || code == LE || code == LT
   4082  1.1.1.1.8.2  tls 	   || code == LEU || code == LTU)
   4083  1.1.1.1.8.2  tls     {
   4084  1.1.1.1.8.2  tls       operands[7] = gen_rtx_fmt_ee (code, DImode, operands[2], operands[3]);
   4085  1.1.1.1.8.2  tls       operands[8] = gen_rtx_NE (VOIDmode, operands[6], const0_rtx);
   4086  1.1.1.1.8.2  tls     }
   4087  1.1.1.1.8.2  tls   else
   4088  1.1.1.1.8.2  tls     {
   4089  1.1.1.1.8.2  tls       operands[7] = gen_rtx_fmt_ee (reverse_condition (code), DImode,
   4090  1.1.1.1.8.2  tls 				    operands[2], operands[3]);
   4091  1.1.1.1.8.2  tls       operands[8] = gen_rtx_EQ (VOIDmode, operands[6], const0_rtx);
   4092  1.1.1.1.8.2  tls     }
   4093  1.1.1.1.8.2  tls })
   4094  1.1.1.1.8.2  tls 
   4095  1.1.1.1.8.2  tls (define_split
   4096  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   4097  1.1.1.1.8.2  tls 	(if_then_else:DI
   4098  1.1.1.1.8.2  tls 	 (match_operator 1 "comparison_operator"
   4099  1.1.1.1.8.2  tls 			 [(match_operand:SI 2 "reg_or_0_operand" "")
   4100  1.1.1.1.8.2  tls 			  (match_operand:SI 3 "reg_or_cint_operand" "")])
   4101  1.1.1.1.8.2  tls 	 (match_operand:DI 4 "reg_or_8bit_operand" "")
   4102  1.1.1.1.8.2  tls 	 (match_operand:DI 5 "reg_or_8bit_operand" "")))
   4103  1.1.1.1.8.2  tls    (clobber (match_operand:DI 6 "register_operand" ""))]
   4104  1.1.1.1.8.2  tls   "operands[3] != const0_rtx
   4105  1.1.1.1.8.2  tls    && (GET_CODE (operands[1]) == EQ || GET_CODE (operands[1]) == NE)"
   4106  1.1.1.1.8.2  tls   [(set (match_dup 6) (match_dup 7))
   4107  1.1.1.1.8.2  tls    (set (match_dup 0)
   4108  1.1.1.1.8.2  tls 	(if_then_else:DI (match_dup 8) (match_dup 4) (match_dup 5)))]
   4109  1.1.1.1.8.2  tls {
   4110  1.1.1.1.8.2  tls   enum rtx_code code = GET_CODE (operands[1]);
   4111  1.1.1.1.8.2  tls   int unsignedp = (code == GEU || code == LEU || code == GTU || code == LTU);
   4112  1.1.1.1.8.2  tls   rtx tem;
   4113  1.1.1.1.8.2  tls 
   4114  1.1.1.1.8.2  tls   if ((code != NE && code != EQ
   4115  1.1.1.1.8.2  tls        && ! (extended_count (operands[2], DImode, unsignedp) >= 1
   4116  1.1.1.1.8.2  tls 	     && extended_count (operands[3], DImode, unsignedp) >= 1)))
   4117  1.1.1.1.8.2  tls     FAIL;
   4118  1.1.1.1.8.2  tls 
   4119  1.1.1.1.8.2  tls   if (CONST_INT_P (operands[3]))
   4120  1.1.1.1.8.2  tls     tem = gen_rtx_PLUS (SImode, operands[2],
   4121  1.1.1.1.8.2  tls 			GEN_INT (- INTVAL (operands[3])));
   4122  1.1.1.1.8.2  tls   else
   4123  1.1.1.1.8.2  tls     tem = gen_rtx_MINUS (SImode, operands[2], operands[3]);
   4124  1.1.1.1.8.2  tls 
   4125  1.1.1.1.8.2  tls   operands[7] = gen_rtx_SIGN_EXTEND (DImode, tem);
   4126  1.1.1.1.8.2  tls   operands[8] = gen_rtx_fmt_ee (GET_CODE (operands[1]), VOIDmode,
   4127  1.1.1.1.8.2  tls 				operands[6], const0_rtx);
   4128  1.1.1.1.8.2  tls })
   4129  1.1.1.1.8.2  tls 
   4130  1.1.1.1.8.2  tls ;; Prefer to use cmp and arithmetic when possible instead of a cmove.
   4131  1.1.1.1.8.2  tls 
   4132  1.1.1.1.8.2  tls (define_split
   4133  1.1.1.1.8.2  tls   [(set (match_operand 0 "register_operand" "")
   4134  1.1.1.1.8.2  tls 	(if_then_else (match_operator 1 "signed_comparison_operator"
   4135  1.1.1.1.8.2  tls 			   [(match_operand:DI 2 "reg_or_0_operand" "")
   4136  1.1.1.1.8.2  tls 			    (const_int 0)])
   4137  1.1.1.1.8.2  tls 	  (match_operand 3 "const_int_operand" "")
   4138  1.1.1.1.8.2  tls 	  (match_operand 4 "const_int_operand" "")))]
   4139  1.1.1.1.8.2  tls   ""
   4140  1.1.1.1.8.2  tls   [(const_int 0)]
   4141  1.1.1.1.8.2  tls {
   4142  1.1.1.1.8.2  tls   if (alpha_split_conditional_move (GET_CODE (operands[1]), operands[0],
   4143  1.1.1.1.8.2  tls 				    operands[2], operands[3], operands[4]))
   4144  1.1.1.1.8.2  tls     DONE;
   4145  1.1.1.1.8.2  tls   else
   4146  1.1.1.1.8.2  tls     FAIL;
   4147  1.1.1.1.8.2  tls })
   4148  1.1.1.1.8.2  tls 
   4149  1.1.1.1.8.2  tls ;; ??? Why combine is allowed to create such non-canonical rtl, I don't know.
   4150  1.1.1.1.8.2  tls ;; Oh well, we match it in movcc, so it must be partially our fault.
   4151  1.1.1.1.8.2  tls (define_split
   4152  1.1.1.1.8.2  tls   [(set (match_operand 0 "register_operand" "")
   4153  1.1.1.1.8.2  tls 	(if_then_else (match_operator 1 "signed_comparison_operator"
   4154  1.1.1.1.8.2  tls 			   [(const_int 0)
   4155  1.1.1.1.8.2  tls 			    (match_operand:DI 2 "reg_or_0_operand" "")])
   4156  1.1.1.1.8.2  tls 	  (match_operand 3 "const_int_operand" "")
   4157  1.1.1.1.8.2  tls 	  (match_operand 4 "const_int_operand" "")))]
   4158  1.1.1.1.8.2  tls   ""
   4159  1.1.1.1.8.2  tls   [(const_int 0)]
   4160  1.1.1.1.8.2  tls {
   4161  1.1.1.1.8.2  tls   if (alpha_split_conditional_move (swap_condition (GET_CODE (operands[1])),
   4162  1.1.1.1.8.2  tls 				    operands[0], operands[2], operands[3],
   4163  1.1.1.1.8.2  tls 				    operands[4]))
   4164  1.1.1.1.8.2  tls     DONE;
   4165  1.1.1.1.8.2  tls   else
   4166  1.1.1.1.8.2  tls     FAIL;
   4167  1.1.1.1.8.2  tls })
   4168  1.1.1.1.8.2  tls 
   4169  1.1.1.1.8.2  tls (define_insn_and_split "*cmp_sadd_di"
   4170  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   4171  1.1.1.1.8.2  tls 	(plus:DI (if_then_else:DI
   4172  1.1.1.1.8.2  tls 		   (match_operator 1 "alpha_zero_comparison_operator"
   4173  1.1.1.1.8.2  tls 		     [(match_operand:DI 2 "reg_or_0_operand" "rJ")
   4174  1.1.1.1.8.2  tls 		      (const_int 0)])
   4175  1.1.1.1.8.2  tls 		   (match_operand:DI 3 "const48_operand" "I")
   4176  1.1.1.1.8.2  tls 		   (const_int 0))
   4177  1.1.1.1.8.2  tls 	         (match_operand:DI 4 "sext_add_operand" "rIO")))
   4178  1.1.1.1.8.2  tls    (clobber (match_scratch:DI 5 "=r"))]
   4179  1.1.1.1.8.2  tls   ""
   4180  1.1.1.1.8.2  tls   "#"
   4181  1.1.1.1.8.2  tls   ""
   4182  1.1.1.1.8.2  tls   [(set (match_dup 5)
   4183  1.1.1.1.8.2  tls 	(match_op_dup:DI 1 [(match_dup 2) (const_int 0)]))
   4184  1.1.1.1.8.2  tls    (set (match_dup 0)
   4185  1.1.1.1.8.2  tls 	(plus:DI (mult:DI (match_dup 5) (match_dup 3))
   4186  1.1.1.1.8.2  tls 		 (match_dup 4)))]
   4187  1.1.1.1.8.2  tls {
   4188  1.1.1.1.8.2  tls   if (can_create_pseudo_p ())
   4189  1.1.1.1.8.2  tls     operands[5] = gen_reg_rtx (DImode);
   4190  1.1.1.1.8.2  tls   else if (reg_overlap_mentioned_p (operands[5], operands[4]))
   4191  1.1.1.1.8.2  tls     operands[5] = operands[0];
   4192  1.1.1.1.8.2  tls })
   4193  1.1.1.1.8.2  tls 
   4194  1.1.1.1.8.2  tls (define_insn_and_split "*cmp_sadd_si"
   4195  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
   4196  1.1.1.1.8.2  tls 	(plus:SI (if_then_else:SI
   4197  1.1.1.1.8.2  tls 		   (match_operator 1 "alpha_zero_comparison_operator"
   4198  1.1.1.1.8.2  tls 		     [(match_operand:DI 2 "reg_or_0_operand" "rJ")
   4199  1.1.1.1.8.2  tls 		      (const_int 0)])
   4200  1.1.1.1.8.2  tls 		   (match_operand:SI 3 "const48_operand" "I")
   4201  1.1.1.1.8.2  tls 		   (const_int 0))
   4202  1.1.1.1.8.2  tls 	         (match_operand:SI 4 "sext_add_operand" "rIO")))
   4203  1.1.1.1.8.2  tls    (clobber (match_scratch:DI 5 "=r"))]
   4204  1.1.1.1.8.2  tls   ""
   4205  1.1.1.1.8.2  tls   "#"
   4206  1.1.1.1.8.2  tls   ""
   4207  1.1.1.1.8.2  tls   [(set (match_dup 5)
   4208  1.1.1.1.8.2  tls 	(match_op_dup:DI 1 [(match_dup 2) (const_int 0)]))
   4209  1.1.1.1.8.2  tls    (set (match_dup 0)
   4210  1.1.1.1.8.2  tls 	(plus:SI (mult:SI (match_dup 6) (match_dup 3))
   4211  1.1.1.1.8.2  tls 		 (match_dup 4)))]
   4212  1.1.1.1.8.2  tls {
   4213  1.1.1.1.8.2  tls   if (can_create_pseudo_p ())
   4214  1.1.1.1.8.2  tls     operands[5] = gen_reg_rtx (DImode);
   4215  1.1.1.1.8.2  tls   else if (reg_overlap_mentioned_p (operands[5], operands[4]))
   4216  1.1.1.1.8.2  tls     operands[5] = gen_lowpart (DImode, operands[0]);
   4217  1.1.1.1.8.2  tls 
   4218  1.1.1.1.8.2  tls   operands[6] = gen_lowpart (SImode, operands[5]);
   4219  1.1.1.1.8.2  tls })
   4220  1.1.1.1.8.2  tls 
   4221  1.1.1.1.8.2  tls (define_insn_and_split "*cmp_sadd_sidi"
   4222  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   4223  1.1.1.1.8.2  tls 	(sign_extend:DI
   4224  1.1.1.1.8.2  tls 	  (plus:SI (if_then_else:SI
   4225  1.1.1.1.8.2  tls 		     (match_operator 1 "alpha_zero_comparison_operator"
   4226  1.1.1.1.8.2  tls 		       [(match_operand:DI 2 "reg_or_0_operand" "rJ")
   4227  1.1.1.1.8.2  tls 		        (const_int 0)])
   4228  1.1.1.1.8.2  tls 		     (match_operand:SI 3 "const48_operand" "I")
   4229  1.1.1.1.8.2  tls 		     (const_int 0))
   4230  1.1.1.1.8.2  tls 	           (match_operand:SI 4 "sext_add_operand" "rIO"))))
   4231  1.1.1.1.8.2  tls    (clobber (match_scratch:DI 5 "=r"))]
   4232  1.1.1.1.8.2  tls   ""
   4233  1.1.1.1.8.2  tls   "#"
   4234  1.1.1.1.8.2  tls   ""
   4235  1.1.1.1.8.2  tls   [(set (match_dup 5)
   4236  1.1.1.1.8.2  tls 	(match_op_dup:DI 1 [(match_dup 2) (const_int 0)]))
   4237  1.1.1.1.8.2  tls    (set (match_dup 0)
   4238  1.1.1.1.8.2  tls 	(sign_extend:DI (plus:SI (mult:SI (match_dup 6) (match_dup 3))
   4239  1.1.1.1.8.2  tls 				 (match_dup 4))))]
   4240  1.1.1.1.8.2  tls {
   4241  1.1.1.1.8.2  tls   if (can_create_pseudo_p ())
   4242  1.1.1.1.8.2  tls     operands[5] = gen_reg_rtx (DImode);
   4243  1.1.1.1.8.2  tls   else if (reg_overlap_mentioned_p (operands[5], operands[4]))
   4244  1.1.1.1.8.2  tls     operands[5] = operands[0];
   4245  1.1.1.1.8.2  tls 
   4246  1.1.1.1.8.2  tls   operands[6] = gen_lowpart (SImode, operands[5]);
   4247  1.1.1.1.8.2  tls })
   4248  1.1.1.1.8.2  tls 
   4249  1.1.1.1.8.2  tls (define_insn_and_split "*cmp_ssub_di"
   4250  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   4251  1.1.1.1.8.2  tls 	(minus:DI (if_then_else:DI
   4252  1.1.1.1.8.2  tls 		    (match_operator 1 "alpha_zero_comparison_operator"
   4253  1.1.1.1.8.2  tls 		      [(match_operand:DI 2 "reg_or_0_operand" "rJ")
   4254  1.1.1.1.8.2  tls 		       (const_int 0)])
   4255  1.1.1.1.8.2  tls 		    (match_operand:DI 3 "const48_operand" "I")
   4256  1.1.1.1.8.2  tls 		    (const_int 0))
   4257  1.1.1.1.8.2  tls 	          (match_operand:DI 4 "reg_or_8bit_operand" "rI")))
   4258  1.1.1.1.8.2  tls    (clobber (match_scratch:DI 5 "=r"))]
   4259  1.1.1.1.8.2  tls   ""
   4260  1.1.1.1.8.2  tls   "#"
   4261  1.1.1.1.8.2  tls   ""
   4262  1.1.1.1.8.2  tls   [(set (match_dup 5)
   4263  1.1.1.1.8.2  tls 	(match_op_dup:DI 1 [(match_dup 2) (const_int 0)]))
   4264  1.1.1.1.8.2  tls    (set (match_dup 0)
   4265  1.1.1.1.8.2  tls 	(minus:DI (mult:DI (match_dup 5) (match_dup 3))
   4266  1.1.1.1.8.2  tls 		  (match_dup 4)))]
   4267  1.1.1.1.8.2  tls {
   4268  1.1.1.1.8.2  tls   if (can_create_pseudo_p ())
   4269  1.1.1.1.8.2  tls     operands[5] = gen_reg_rtx (DImode);
   4270  1.1.1.1.8.2  tls   else if (reg_overlap_mentioned_p (operands[5], operands[4]))
   4271  1.1.1.1.8.2  tls     operands[5] = operands[0];
   4272  1.1.1.1.8.2  tls })
   4273  1.1.1.1.8.2  tls 
   4274  1.1.1.1.8.2  tls (define_insn_and_split "*cmp_ssub_si"
   4275  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "=r")
   4276  1.1.1.1.8.2  tls 	(minus:SI (if_then_else:SI
   4277  1.1.1.1.8.2  tls 		    (match_operator 1 "alpha_zero_comparison_operator"
   4278  1.1.1.1.8.2  tls 		      [(match_operand:DI 2 "reg_or_0_operand" "rJ")
   4279  1.1.1.1.8.2  tls 		       (const_int 0)])
   4280  1.1.1.1.8.2  tls 		    (match_operand:SI 3 "const48_operand" "I")
   4281  1.1.1.1.8.2  tls 		    (const_int 0))
   4282  1.1.1.1.8.2  tls 	          (match_operand:SI 4 "reg_or_8bit_operand" "rI")))
   4283  1.1.1.1.8.2  tls    (clobber (match_scratch:DI 5 "=r"))]
   4284  1.1.1.1.8.2  tls   ""
   4285  1.1.1.1.8.2  tls   "#"
   4286  1.1.1.1.8.2  tls   ""
   4287  1.1.1.1.8.2  tls   [(set (match_dup 5)
   4288  1.1.1.1.8.2  tls 	(match_op_dup:DI 1 [(match_dup 2) (const_int 0)]))
   4289  1.1.1.1.8.2  tls    (set (match_dup 0)
   4290  1.1.1.1.8.2  tls 	(minus:SI (mult:SI (match_dup 6) (match_dup 3))
   4291  1.1.1.1.8.2  tls 		 (match_dup 4)))]
   4292  1.1.1.1.8.2  tls {
   4293  1.1.1.1.8.2  tls   if (can_create_pseudo_p ())
   4294  1.1.1.1.8.2  tls     operands[5] = gen_reg_rtx (DImode);
   4295  1.1.1.1.8.2  tls   else if (reg_overlap_mentioned_p (operands[5], operands[4]))
   4296  1.1.1.1.8.2  tls     operands[5] = gen_lowpart (DImode, operands[0]);
   4297  1.1.1.1.8.2  tls 
   4298  1.1.1.1.8.2  tls   operands[6] = gen_lowpart (SImode, operands[5]);
   4299  1.1.1.1.8.2  tls })
   4300  1.1.1.1.8.2  tls 
   4301  1.1.1.1.8.2  tls (define_insn_and_split "*cmp_ssub_sidi"
   4302  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   4303  1.1.1.1.8.2  tls 	(sign_extend:DI
   4304  1.1.1.1.8.2  tls 	  (minus:SI (if_then_else:SI
   4305  1.1.1.1.8.2  tls 		      (match_operator 1 "alpha_zero_comparison_operator"
   4306  1.1.1.1.8.2  tls 		        [(match_operand:DI 2 "reg_or_0_operand" "rJ")
   4307  1.1.1.1.8.2  tls 		         (const_int 0)])
   4308  1.1.1.1.8.2  tls 		      (match_operand:SI 3 "const48_operand" "I")
   4309  1.1.1.1.8.2  tls 		      (const_int 0))
   4310  1.1.1.1.8.2  tls 	            (match_operand:SI 4 "reg_or_8bit_operand" "rI"))))
   4311  1.1.1.1.8.2  tls    (clobber (match_scratch:DI 5 "=r"))]
   4312  1.1.1.1.8.2  tls   ""
   4313  1.1.1.1.8.2  tls   "#"
   4314  1.1.1.1.8.2  tls   ""
   4315  1.1.1.1.8.2  tls   [(set (match_dup 5)
   4316  1.1.1.1.8.2  tls 	(match_op_dup:DI 1 [(match_dup 2) (const_int 0)]))
   4317  1.1.1.1.8.2  tls    (set (match_dup 0)
   4318  1.1.1.1.8.2  tls 	(sign_extend:DI (minus:SI (mult:SI (match_dup 6) (match_dup 3))
   4319  1.1.1.1.8.2  tls 				  (match_dup 4))))]
   4320  1.1.1.1.8.2  tls {
   4321  1.1.1.1.8.2  tls   if (can_create_pseudo_p ())
   4322  1.1.1.1.8.2  tls     operands[5] = gen_reg_rtx (DImode);
   4323  1.1.1.1.8.2  tls   else if (reg_overlap_mentioned_p (operands[5], operands[4]))
   4324  1.1.1.1.8.2  tls     operands[5] = operands[0];
   4325  1.1.1.1.8.2  tls 
   4326  1.1.1.1.8.2  tls   operands[6] = gen_lowpart (SImode, operands[5]);
   4327  1.1.1.1.8.2  tls })
   4328  1.1.1.1.8.2  tls 
   4330  1.1.1.1.8.2  tls ;; Here are the CALL and unconditional branch insns.  Calls on NT and OSF
   4331  1.1.1.1.8.2  tls ;; work differently, so we have different patterns for each.
   4332  1.1.1.1.8.2  tls 
   4333  1.1.1.1.8.2  tls ;; On Unicos/Mk a call information word (CIW) must be generated for each
   4334  1.1.1.1.8.2  tls ;; call. The CIW contains information about arguments passed in registers
   4335  1.1.1.1.8.2  tls ;; and is stored in the caller's SSIB. Its offset relative to the beginning
   4336  1.1.1.1.8.2  tls ;; of the SSIB is passed in $25. Handling this properly is quite complicated
   4337  1.1.1.1.8.2  tls ;; in the presence of inlining since the CIWs for calls performed by the
   4338  1.1.1.1.8.2  tls ;; inlined function must be stored in the SSIB of the function it is inlined
   4339  1.1.1.1.8.2  tls ;; into as well. We encode the CIW in an unspec and append it to the list
   4340  1.1.1.1.8.2  tls ;; of the CIWs for the current function only when the instruction for loading
   4341  1.1.1.1.8.2  tls ;; $25 is generated.
   4342  1.1.1.1.8.2  tls 
   4343  1.1.1.1.8.2  tls (define_expand "call"
   4344  1.1.1.1.8.2  tls   [(use (match_operand:DI 0 "" ""))
   4345  1.1.1.1.8.2  tls    (use (match_operand 1 "" ""))
   4346  1.1.1.1.8.2  tls    (use (match_operand 2 "" ""))
   4347  1.1.1.1.8.2  tls    (use (match_operand 3 "" ""))]
   4348  1.1.1.1.8.2  tls   ""
   4349  1.1.1.1.8.2  tls {
   4350  1.1.1.1.8.2  tls   if (TARGET_ABI_WINDOWS_NT)
   4351  1.1.1.1.8.2  tls     emit_call_insn (gen_call_nt (operands[0], operands[1]));
   4352  1.1.1.1.8.2  tls   else if (TARGET_ABI_OPEN_VMS)
   4353  1.1.1.1.8.2  tls     emit_call_insn (gen_call_vms (operands[0], operands[2]));
   4354  1.1.1.1.8.2  tls   else if (TARGET_ABI_UNICOSMK)
   4355  1.1.1.1.8.2  tls     emit_call_insn (gen_call_umk (operands[0], operands[2]));
   4356  1.1.1.1.8.2  tls   else
   4357  1.1.1.1.8.2  tls     emit_call_insn (gen_call_osf (operands[0], operands[1]));
   4358  1.1.1.1.8.2  tls   DONE;
   4359  1.1.1.1.8.2  tls })
   4360  1.1.1.1.8.2  tls 
   4361  1.1.1.1.8.2  tls (define_expand "sibcall"
   4362  1.1.1.1.8.2  tls   [(parallel [(call (mem:DI (match_operand 0 "" ""))
   4363  1.1.1.1.8.2  tls 			    (match_operand 1 "" ""))
   4364  1.1.1.1.8.2  tls 	      (unspec [(reg:DI 29)] UNSPEC_SIBCALL)])]
   4365  1.1.1.1.8.2  tls   "TARGET_ABI_OSF"
   4366  1.1.1.1.8.2  tls {
   4367  1.1.1.1.8.2  tls   gcc_assert (MEM_P (operands[0]));
   4368  1.1.1.1.8.2  tls   operands[0] = XEXP (operands[0], 0);
   4369  1.1.1.1.8.2  tls })
   4370  1.1.1.1.8.2  tls 
   4371  1.1.1.1.8.2  tls (define_expand "call_osf"
   4372  1.1.1.1.8.2  tls   [(parallel [(call (mem:DI (match_operand 0 "" ""))
   4373  1.1.1.1.8.2  tls 		    (match_operand 1 "" ""))
   4374  1.1.1.1.8.2  tls 	      (use (reg:DI 29))
   4375  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))])]
   4376  1.1.1.1.8.2  tls   ""
   4377  1.1.1.1.8.2  tls {
   4378  1.1.1.1.8.2  tls   gcc_assert (MEM_P (operands[0]));
   4379  1.1.1.1.8.2  tls 
   4380  1.1.1.1.8.2  tls   operands[0] = XEXP (operands[0], 0);
   4381  1.1.1.1.8.2  tls   if (! call_operand (operands[0], Pmode))
   4382  1.1.1.1.8.2  tls     operands[0] = copy_to_mode_reg (Pmode, operands[0]);
   4383  1.1.1.1.8.2  tls })
   4384  1.1.1.1.8.2  tls 
   4385  1.1.1.1.8.2  tls (define_expand "call_nt"
   4386  1.1.1.1.8.2  tls   [(parallel [(call (mem:DI (match_operand 0 "" ""))
   4387  1.1.1.1.8.2  tls 		    (match_operand 1 "" ""))
   4388  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))])]
   4389  1.1.1.1.8.2  tls   ""
   4390  1.1.1.1.8.2  tls {
   4391  1.1.1.1.8.2  tls   gcc_assert (MEM_P (operands[0]));
   4392  1.1.1.1.8.2  tls 
   4393  1.1.1.1.8.2  tls   operands[0] = XEXP (operands[0], 0);
   4394  1.1.1.1.8.2  tls   if (GET_CODE (operands[0]) != SYMBOL_REF && !REG_P (operands[0]))
   4395  1.1.1.1.8.2  tls     operands[0] = force_reg (DImode, operands[0]);
   4396  1.1.1.1.8.2  tls })
   4397  1.1.1.1.8.2  tls 
   4398  1.1.1.1.8.2  tls ;; Calls on Unicos/Mk are always indirect.
   4399  1.1.1.1.8.2  tls ;; op 0: symbol ref for called function
   4400  1.1.1.1.8.2  tls ;; op 1: CIW for $25 represented by an unspec
   4401  1.1.1.1.8.2  tls 
   4402  1.1.1.1.8.2  tls (define_expand "call_umk"
   4403  1.1.1.1.8.2  tls    [(parallel [(call (mem:DI (match_operand 0 "" ""))
   4404  1.1.1.1.8.2  tls 		     (match_operand 1 "" ""))
   4405  1.1.1.1.8.2  tls 	       (use (reg:DI 25))
   4406  1.1.1.1.8.2  tls 	       (clobber (reg:DI 26))])]
   4407  1.1.1.1.8.2  tls    ""
   4408  1.1.1.1.8.2  tls {
   4409  1.1.1.1.8.2  tls   gcc_assert (MEM_P (operands[0]));
   4410  1.1.1.1.8.2  tls 
   4411  1.1.1.1.8.2  tls   /* Always load the address of the called function into a register;
   4412  1.1.1.1.8.2  tls      load the CIW in $25.  */
   4413  1.1.1.1.8.2  tls 
   4414  1.1.1.1.8.2  tls   operands[0] = XEXP (operands[0], 0);
   4415  1.1.1.1.8.2  tls   if (!REG_P (operands[0]))
   4416  1.1.1.1.8.2  tls     operands[0] = force_reg (DImode, operands[0]);
   4417  1.1.1.1.8.2  tls 
   4418  1.1.1.1.8.2  tls   emit_move_insn (gen_rtx_REG (DImode, 25), operands[1]);
   4419  1.1.1.1.8.2  tls })
   4420  1.1.1.1.8.2  tls 
   4421  1.1.1.1.8.2  tls ;;
   4422  1.1.1.1.8.2  tls ;; call openvms/alpha
   4423  1.1.1.1.8.2  tls ;; op 0: symbol ref for called function
   4424  1.1.1.1.8.2  tls ;; op 1: next_arg_reg (argument information value for R25)
   4425  1.1.1.1.8.2  tls ;;
   4426  1.1.1.1.8.2  tls (define_expand "call_vms"
   4427  1.1.1.1.8.2  tls   [(parallel [(call (mem:DI (match_operand 0 "" ""))
   4428  1.1.1.1.8.2  tls 		    (match_operand 1 "" ""))
   4429  1.1.1.1.8.2  tls 	      (use (match_dup 2))
   4430  1.1.1.1.8.2  tls 	      (use (reg:DI 25))
   4431  1.1.1.1.8.2  tls 	      (use (reg:DI 26))
   4432  1.1.1.1.8.2  tls 	      (clobber (reg:DI 27))])]
   4433  1.1.1.1.8.2  tls   ""
   4434  1.1.1.1.8.2  tls {
   4435  1.1.1.1.8.2  tls   gcc_assert (MEM_P (operands[0]));
   4436  1.1.1.1.8.2  tls 
   4437  1.1.1.1.8.2  tls   operands[0] = XEXP (operands[0], 0);
   4438  1.1.1.1.8.2  tls 
   4439  1.1.1.1.8.2  tls   /* Always load AI with argument information, then handle symbolic and
   4440  1.1.1.1.8.2  tls      indirect call differently.  Load RA and set operands[2] to PV in
   4441  1.1.1.1.8.2  tls      both cases.  */
   4442  1.1.1.1.8.2  tls 
   4443  1.1.1.1.8.2  tls   emit_move_insn (gen_rtx_REG (DImode, 25), operands[1]);
   4444  1.1.1.1.8.2  tls   if (GET_CODE (operands[0]) == SYMBOL_REF)
   4445  1.1.1.1.8.2  tls     {
   4446  1.1.1.1.8.2  tls       alpha_need_linkage (XSTR (operands[0], 0), 0);
   4447  1.1.1.1.8.2  tls 
   4448  1.1.1.1.8.2  tls       operands[2] = const0_rtx;
   4449  1.1.1.1.8.2  tls     }
   4450  1.1.1.1.8.2  tls   else
   4451  1.1.1.1.8.2  tls     {
   4452  1.1.1.1.8.2  tls       emit_move_insn (gen_rtx_REG (Pmode, 26),
   4453  1.1.1.1.8.2  tls 		      gen_rtx_MEM (Pmode, plus_constant (operands[0], 8)));
   4454  1.1.1.1.8.2  tls       operands[2] = operands[0];
   4455  1.1.1.1.8.2  tls     }
   4456  1.1.1.1.8.2  tls 
   4457  1.1.1.1.8.2  tls })
   4458  1.1.1.1.8.2  tls 
   4459  1.1.1.1.8.2  tls (define_expand "call_value"
   4460  1.1.1.1.8.2  tls   [(use (match_operand 0 "" ""))
   4461  1.1.1.1.8.2  tls    (use (match_operand:DI 1 "" ""))
   4462  1.1.1.1.8.2  tls    (use (match_operand 2 "" ""))
   4463  1.1.1.1.8.2  tls    (use (match_operand 3 "" ""))
   4464  1.1.1.1.8.2  tls    (use (match_operand 4 "" ""))]
   4465  1.1.1.1.8.2  tls   ""
   4466  1.1.1.1.8.2  tls {
   4467  1.1.1.1.8.2  tls   if (TARGET_ABI_WINDOWS_NT)
   4468  1.1.1.1.8.2  tls     emit_call_insn (gen_call_value_nt (operands[0], operands[1], operands[2]));
   4469  1.1.1.1.8.2  tls   else if (TARGET_ABI_OPEN_VMS)
   4470  1.1.1.1.8.2  tls     emit_call_insn (gen_call_value_vms (operands[0], operands[1],
   4471  1.1.1.1.8.2  tls 					operands[3]));
   4472  1.1.1.1.8.2  tls   else if (TARGET_ABI_UNICOSMK)
   4473  1.1.1.1.8.2  tls     emit_call_insn (gen_call_value_umk (operands[0], operands[1],
   4474  1.1.1.1.8.2  tls 					operands[3]));
   4475  1.1.1.1.8.2  tls   else
   4476  1.1.1.1.8.2  tls     emit_call_insn (gen_call_value_osf (operands[0], operands[1],
   4477  1.1.1.1.8.2  tls 					operands[2]));
   4478  1.1.1.1.8.2  tls   DONE;
   4479  1.1.1.1.8.2  tls })
   4480  1.1.1.1.8.2  tls 
   4481  1.1.1.1.8.2  tls (define_expand "sibcall_value"
   4482  1.1.1.1.8.2  tls   [(parallel [(set (match_operand 0 "" "")
   4483  1.1.1.1.8.2  tls 		   (call (mem:DI (match_operand 1 "" ""))
   4484  1.1.1.1.8.2  tls 		         (match_operand 2 "" "")))
   4485  1.1.1.1.8.2  tls 	      (unspec [(reg:DI 29)] UNSPEC_SIBCALL)])]
   4486  1.1.1.1.8.2  tls   "TARGET_ABI_OSF"
   4487  1.1.1.1.8.2  tls {
   4488  1.1.1.1.8.2  tls   gcc_assert (MEM_P (operands[1]));
   4489  1.1.1.1.8.2  tls   operands[1] = XEXP (operands[1], 0);
   4490  1.1.1.1.8.2  tls })
   4491  1.1.1.1.8.2  tls 
   4492  1.1.1.1.8.2  tls (define_expand "call_value_osf"
   4493  1.1.1.1.8.2  tls   [(parallel [(set (match_operand 0 "" "")
   4494  1.1.1.1.8.2  tls 		   (call (mem:DI (match_operand 1 "" ""))
   4495  1.1.1.1.8.2  tls 			 (match_operand 2 "" "")))
   4496  1.1.1.1.8.2  tls 	      (use (reg:DI 29))
   4497  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))])]
   4498  1.1.1.1.8.2  tls   ""
   4499  1.1.1.1.8.2  tls {
   4500  1.1.1.1.8.2  tls   gcc_assert (MEM_P (operands[1]));
   4501  1.1.1.1.8.2  tls 
   4502  1.1.1.1.8.2  tls   operands[1] = XEXP (operands[1], 0);
   4503  1.1.1.1.8.2  tls   if (! call_operand (operands[1], Pmode))
   4504  1.1.1.1.8.2  tls     operands[1] = copy_to_mode_reg (Pmode, operands[1]);
   4505  1.1.1.1.8.2  tls })
   4506  1.1.1.1.8.2  tls 
   4507  1.1.1.1.8.2  tls (define_expand "call_value_nt"
   4508  1.1.1.1.8.2  tls   [(parallel [(set (match_operand 0 "" "")
   4509  1.1.1.1.8.2  tls 		   (call (mem:DI (match_operand 1 "" ""))
   4510  1.1.1.1.8.2  tls 			 (match_operand 2 "" "")))
   4511  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))])]
   4512  1.1.1.1.8.2  tls   ""
   4513  1.1.1.1.8.2  tls {
   4514  1.1.1.1.8.2  tls   gcc_assert (MEM_P (operands[1]));
   4515  1.1.1.1.8.2  tls 
   4516  1.1.1.1.8.2  tls   operands[1] = XEXP (operands[1], 0);
   4517  1.1.1.1.8.2  tls   if (GET_CODE (operands[1]) != SYMBOL_REF && !REG_P (operands[1]))
   4518  1.1.1.1.8.2  tls     operands[1] = force_reg (DImode, operands[1]);
   4519  1.1.1.1.8.2  tls })
   4520  1.1.1.1.8.2  tls 
   4521  1.1.1.1.8.2  tls (define_expand "call_value_vms"
   4522  1.1.1.1.8.2  tls   [(parallel [(set (match_operand 0 "" "")
   4523  1.1.1.1.8.2  tls 		   (call (mem:DI (match_operand:DI 1 "" ""))
   4524  1.1.1.1.8.2  tls 			 (match_operand 2 "" "")))
   4525  1.1.1.1.8.2  tls 	      (use (match_dup 3))
   4526  1.1.1.1.8.2  tls 	      (use (reg:DI 25))
   4527  1.1.1.1.8.2  tls 	      (use (reg:DI 26))
   4528  1.1.1.1.8.2  tls 	      (clobber (reg:DI 27))])]
   4529  1.1.1.1.8.2  tls   ""
   4530  1.1.1.1.8.2  tls {
   4531  1.1.1.1.8.2  tls   gcc_assert (MEM_P (operands[1]));
   4532  1.1.1.1.8.2  tls 
   4533  1.1.1.1.8.2  tls   operands[1] = XEXP (operands[1], 0);
   4534  1.1.1.1.8.2  tls 
   4535  1.1.1.1.8.2  tls   /* Always load AI with argument information, then handle symbolic and
   4536  1.1.1.1.8.2  tls      indirect call differently.  Load RA and set operands[3] to PV in
   4537  1.1.1.1.8.2  tls      both cases.  */
   4538  1.1.1.1.8.2  tls 
   4539  1.1.1.1.8.2  tls   emit_move_insn (gen_rtx_REG (DImode, 25), operands[2]);
   4540  1.1.1.1.8.2  tls   if (GET_CODE (operands[1]) == SYMBOL_REF)
   4541  1.1.1.1.8.2  tls     {
   4542  1.1.1.1.8.2  tls       alpha_need_linkage (XSTR (operands[1], 0), 0);
   4543  1.1.1.1.8.2  tls 
   4544  1.1.1.1.8.2  tls       operands[3] = const0_rtx;
   4545  1.1.1.1.8.2  tls     }
   4546  1.1.1.1.8.2  tls   else
   4547  1.1.1.1.8.2  tls     {
   4548  1.1.1.1.8.2  tls       emit_move_insn (gen_rtx_REG (Pmode, 26),
   4549  1.1.1.1.8.2  tls 		      gen_rtx_MEM (Pmode, plus_constant (operands[1], 8)));
   4550  1.1.1.1.8.2  tls       operands[3] = operands[1];
   4551  1.1.1.1.8.2  tls     }
   4552  1.1.1.1.8.2  tls })
   4553  1.1.1.1.8.2  tls 
   4554  1.1.1.1.8.2  tls (define_expand "call_value_umk"
   4555  1.1.1.1.8.2  tls   [(parallel [(set (match_operand 0 "" "")
   4556  1.1.1.1.8.2  tls 		   (call (mem:DI (match_operand 1 "" ""))
   4557  1.1.1.1.8.2  tls 			 (match_operand 2 "" "")))
   4558  1.1.1.1.8.2  tls 	      (use (reg:DI 25))
   4559  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))])]
   4560  1.1.1.1.8.2  tls   ""
   4561  1.1.1.1.8.2  tls {
   4562  1.1.1.1.8.2  tls   gcc_assert (MEM_P (operands[1]));
   4563  1.1.1.1.8.2  tls 
   4564  1.1.1.1.8.2  tls   operands[1] = XEXP (operands[1], 0);
   4565  1.1.1.1.8.2  tls   if (!REG_P (operands[1]))
   4566  1.1.1.1.8.2  tls     operands[1] = force_reg (DImode, operands[1]);
   4567  1.1.1.1.8.2  tls 
   4568  1.1.1.1.8.2  tls   emit_move_insn (gen_rtx_REG (DImode, 25), operands[2]);
   4569  1.1.1.1.8.2  tls })
   4570  1.1.1.1.8.2  tls 
   4571  1.1.1.1.8.2  tls (define_insn "*call_osf_1_er_noreturn"
   4572  1.1.1.1.8.2  tls   [(call (mem:DI (match_operand:DI 0 "call_operand" "c,R,s"))
   4573  1.1.1.1.8.2  tls 	 (match_operand 1 "" ""))
   4574  1.1.1.1.8.2  tls    (use (reg:DI 29))
   4575  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   4576  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF
   4577  1.1.1.1.8.2  tls    && find_reg_note (insn, REG_NORETURN, NULL_RTX)"
   4578  1.1.1.1.8.2  tls   "@
   4579  1.1.1.1.8.2  tls    jsr $26,($27),0
   4580  1.1.1.1.8.2  tls    bsr $26,%0\t\t!samegp
   4581  1.1.1.1.8.2  tls    ldq $27,%0($29)\t\t!literal!%#\;jsr $26,($27),%0\t\t!lituse_jsr!%#"
   4582  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   4583  1.1.1.1.8.2  tls    (set_attr "length" "*,*,8")])
   4584  1.1.1.1.8.2  tls 
   4585  1.1.1.1.8.2  tls (define_insn "*call_osf_1_er"
   4586  1.1.1.1.8.2  tls   [(call (mem:DI (match_operand:DI 0 "call_operand" "c,R,s"))
   4587  1.1.1.1.8.2  tls 	 (match_operand 1 "" ""))
   4588  1.1.1.1.8.2  tls    (use (reg:DI 29))
   4589  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   4590  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   4591  1.1.1.1.8.2  tls   "@
   4592  1.1.1.1.8.2  tls    jsr $26,(%0),0\;ldah $29,0($26)\t\t!gpdisp!%*\;lda $29,0($29)\t\t!gpdisp!%*
   4593  1.1.1.1.8.2  tls    bsr $26,%0\t\t!samegp
   4594  1.1.1.1.8.2  tls    ldq $27,%0($29)\t\t!literal!%#\;jsr $26,($27),%0\t\t!lituse_jsr!%#\;ldah $29,0($26)\t\t!gpdisp!%*\;lda $29,0($29)\t\t!gpdisp!%*"
   4595  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   4596  1.1.1.1.8.2  tls    (set_attr "length" "12,*,16")])
   4597  1.1.1.1.8.2  tls 
   4598  1.1.1.1.8.2  tls ;; We must use peep2 instead of a split because we need accurate life
   4599  1.1.1.1.8.2  tls ;; information for $gp.  Consider the case of { bar(); while (1); }.
   4600  1.1.1.1.8.2  tls (define_peephole2
   4601  1.1.1.1.8.2  tls   [(parallel [(call (mem:DI (match_operand:DI 0 "call_operand" ""))
   4602  1.1.1.1.8.2  tls 		    (match_operand 1 "" ""))
   4603  1.1.1.1.8.2  tls 	      (use (reg:DI 29))
   4604  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))])]
   4605  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF && reload_completed
   4606  1.1.1.1.8.2  tls    && ! samegp_function_operand (operands[0], Pmode)
   4607  1.1.1.1.8.2  tls    && (peep2_regno_dead_p (1, 29)
   4608  1.1.1.1.8.2  tls        || find_reg_note (insn, REG_NORETURN, NULL_RTX))"
   4609  1.1.1.1.8.2  tls   [(parallel [(call (mem:DI (match_dup 2))
   4610  1.1.1.1.8.2  tls 		    (match_dup 1))
   4611  1.1.1.1.8.2  tls 	      (use (reg:DI 29))
   4612  1.1.1.1.8.2  tls 	      (use (match_dup 0))
   4613  1.1.1.1.8.2  tls 	      (use (match_dup 3))
   4614  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))])]
   4615  1.1.1.1.8.2  tls {
   4616  1.1.1.1.8.2  tls   if (CONSTANT_P (operands[0]))
   4617  1.1.1.1.8.2  tls     {
   4618  1.1.1.1.8.2  tls       operands[2] = gen_rtx_REG (Pmode, 27);
   4619  1.1.1.1.8.2  tls       operands[3] = GEN_INT (alpha_next_sequence_number++);
   4620  1.1.1.1.8.2  tls       emit_insn (gen_movdi_er_high_g (operands[2], pic_offset_table_rtx,
   4621  1.1.1.1.8.2  tls 				      operands[0], operands[3]));
   4622  1.1.1.1.8.2  tls     }
   4623  1.1.1.1.8.2  tls   else
   4624  1.1.1.1.8.2  tls     {
   4625  1.1.1.1.8.2  tls       operands[2] = operands[0];
   4626  1.1.1.1.8.2  tls       operands[0] = const0_rtx;
   4627  1.1.1.1.8.2  tls       operands[3] = const0_rtx;
   4628  1.1.1.1.8.2  tls     }
   4629  1.1.1.1.8.2  tls })
   4630  1.1.1.1.8.2  tls 
   4631  1.1.1.1.8.2  tls (define_peephole2
   4632  1.1.1.1.8.2  tls   [(parallel [(call (mem:DI (match_operand:DI 0 "call_operand" ""))
   4633  1.1.1.1.8.2  tls 		    (match_operand 1 "" ""))
   4634  1.1.1.1.8.2  tls 	      (use (reg:DI 29))
   4635  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))])]
   4636  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF && reload_completed
   4637  1.1.1.1.8.2  tls    && ! samegp_function_operand (operands[0], Pmode)
   4638  1.1.1.1.8.2  tls    && ! (peep2_regno_dead_p (1, 29)
   4639  1.1.1.1.8.2  tls          || find_reg_note (insn, REG_NORETURN, NULL_RTX))"
   4640  1.1.1.1.8.2  tls   [(parallel [(call (mem:DI (match_dup 2))
   4641  1.1.1.1.8.2  tls 		    (match_dup 1))
   4642  1.1.1.1.8.2  tls 	      (set (match_dup 5)
   4643  1.1.1.1.8.2  tls 		   (unspec:DI [(match_dup 5) (match_dup 3)] UNSPEC_LDGP1))
   4644  1.1.1.1.8.2  tls 	      (use (match_dup 0))
   4645  1.1.1.1.8.2  tls 	      (use (match_dup 4))
   4646  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))])
   4647  1.1.1.1.8.2  tls    (set (match_dup 5)
   4648  1.1.1.1.8.2  tls 	(unspec:DI [(match_dup 5) (match_dup 3)] UNSPEC_LDGP2))]
   4649  1.1.1.1.8.2  tls {
   4650  1.1.1.1.8.2  tls   if (CONSTANT_P (operands[0]))
   4651  1.1.1.1.8.2  tls     {
   4652  1.1.1.1.8.2  tls       operands[2] = gen_rtx_REG (Pmode, 27);
   4653  1.1.1.1.8.2  tls       operands[4] = GEN_INT (alpha_next_sequence_number++);
   4654  1.1.1.1.8.2  tls       emit_insn (gen_movdi_er_high_g (operands[2], pic_offset_table_rtx,
   4655  1.1.1.1.8.2  tls 				      operands[0], operands[4]));
   4656  1.1.1.1.8.2  tls     }
   4657  1.1.1.1.8.2  tls   else
   4658  1.1.1.1.8.2  tls     {
   4659  1.1.1.1.8.2  tls       operands[2] = operands[0];
   4660  1.1.1.1.8.2  tls       operands[0] = const0_rtx;
   4661  1.1.1.1.8.2  tls       operands[4] = const0_rtx;
   4662  1.1.1.1.8.2  tls     }
   4663  1.1.1.1.8.2  tls   operands[3] = GEN_INT (alpha_next_sequence_number++);
   4664  1.1.1.1.8.2  tls   operands[5] = pic_offset_table_rtx;
   4665  1.1.1.1.8.2  tls })
   4666  1.1.1.1.8.2  tls 
   4667  1.1.1.1.8.2  tls (define_insn "*call_osf_2_er_nogp"
   4668  1.1.1.1.8.2  tls   [(call (mem:DI (match_operand:DI 0 "register_operand" "c"))
   4669  1.1.1.1.8.2  tls 	 (match_operand 1 "" ""))
   4670  1.1.1.1.8.2  tls    (use (reg:DI 29))
   4671  1.1.1.1.8.2  tls    (use (match_operand 2 "" ""))
   4672  1.1.1.1.8.2  tls    (use (match_operand 3 "const_int_operand" ""))
   4673  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   4674  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   4675  1.1.1.1.8.2  tls   "jsr $26,(%0),%2%J3"
   4676  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")])
   4677  1.1.1.1.8.2  tls 
   4678  1.1.1.1.8.2  tls (define_insn "*call_osf_2_er"
   4679  1.1.1.1.8.2  tls   [(call (mem:DI (match_operand:DI 0 "register_operand" "c"))
   4680  1.1.1.1.8.2  tls 	 (match_operand 1 "" ""))
   4681  1.1.1.1.8.2  tls    (set (reg:DI 29)
   4682  1.1.1.1.8.2  tls 	(unspec:DI [(reg:DI 29) (match_operand 4 "const_int_operand" "")]
   4683  1.1.1.1.8.2  tls 		   UNSPEC_LDGP1))
   4684  1.1.1.1.8.2  tls    (use (match_operand 2 "" ""))
   4685  1.1.1.1.8.2  tls    (use (match_operand 3 "const_int_operand" ""))
   4686  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   4687  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   4688  1.1.1.1.8.2  tls   "jsr $26,(%0),%2%J3\;ldah $29,0($26)\t\t!gpdisp!%4"
   4689  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   4690  1.1.1.1.8.2  tls    (set_attr "cannot_copy" "true")
   4691  1.1.1.1.8.2  tls    (set_attr "length" "8")])
   4692  1.1.1.1.8.2  tls 
   4693  1.1.1.1.8.2  tls (define_insn "*call_osf_1_noreturn"
   4694  1.1.1.1.8.2  tls   [(call (mem:DI (match_operand:DI 0 "call_operand" "c,R,s"))
   4695  1.1.1.1.8.2  tls 	 (match_operand 1 "" ""))
   4696  1.1.1.1.8.2  tls    (use (reg:DI 29))
   4697  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   4698  1.1.1.1.8.2  tls   "! TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF
   4699  1.1.1.1.8.2  tls    && find_reg_note (insn, REG_NORETURN, NULL_RTX)"
   4700  1.1.1.1.8.2  tls   "@
   4701  1.1.1.1.8.2  tls    jsr $26,($27),0
   4702  1.1.1.1.8.2  tls    bsr $26,$%0..ng
   4703  1.1.1.1.8.2  tls    jsr $26,%0"
   4704  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   4705  1.1.1.1.8.2  tls    (set_attr "length" "*,*,8")])
   4706  1.1.1.1.8.2  tls 
   4707  1.1.1.1.8.2  tls (define_insn "*call_osf_1"
   4708  1.1.1.1.8.2  tls   [(call (mem:DI (match_operand:DI 0 "call_operand" "c,R,s"))
   4709  1.1.1.1.8.2  tls 	 (match_operand 1 "" ""))
   4710  1.1.1.1.8.2  tls    (use (reg:DI 29))
   4711  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   4712  1.1.1.1.8.2  tls   "! TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   4713  1.1.1.1.8.2  tls   "@
   4714  1.1.1.1.8.2  tls    jsr $26,($27),0\;ldgp $29,0($26)
   4715  1.1.1.1.8.2  tls    bsr $26,$%0..ng
   4716  1.1.1.1.8.2  tls    jsr $26,%0\;ldgp $29,0($26)"
   4717  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   4718  1.1.1.1.8.2  tls    (set_attr "length" "12,*,16")])
   4719  1.1.1.1.8.2  tls 
   4720  1.1.1.1.8.2  tls (define_insn "*sibcall_osf_1_er"
   4721  1.1.1.1.8.2  tls   [(call (mem:DI (match_operand:DI 0 "symbolic_operand" "R,s"))
   4722  1.1.1.1.8.2  tls 	 (match_operand 1 "" ""))
   4723  1.1.1.1.8.2  tls    (unspec [(reg:DI 29)] UNSPEC_SIBCALL)]
   4724  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   4725  1.1.1.1.8.2  tls   "@
   4726  1.1.1.1.8.2  tls    br $31,%0\t\t!samegp
   4727  1.1.1.1.8.2  tls    ldq $27,%0($29)\t\t!literal!%#\;jmp $31,($27),%0\t\t!lituse_jsr!%#"
   4728  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   4729  1.1.1.1.8.2  tls    (set_attr "length" "*,8")])
   4730  1.1.1.1.8.2  tls 
   4731  1.1.1.1.8.2  tls ;; Note that the DEC assembler expands "jmp foo" with $at, which
   4732  1.1.1.1.8.2  tls ;; doesn't do what we want.
   4733  1.1.1.1.8.2  tls (define_insn "*sibcall_osf_1"
   4734  1.1.1.1.8.2  tls   [(call (mem:DI (match_operand:DI 0 "symbolic_operand" "R,s"))
   4735  1.1.1.1.8.2  tls 	 (match_operand 1 "" ""))
   4736  1.1.1.1.8.2  tls    (unspec [(reg:DI 29)] UNSPEC_SIBCALL)]
   4737  1.1.1.1.8.2  tls   "! TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   4738  1.1.1.1.8.2  tls   "@
   4739  1.1.1.1.8.2  tls    br $31,$%0..ng
   4740  1.1.1.1.8.2  tls    lda $27,%0\;jmp $31,($27),%0"
   4741  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   4742  1.1.1.1.8.2  tls    (set_attr "length" "*,8")])
   4743  1.1.1.1.8.2  tls 
   4744  1.1.1.1.8.2  tls (define_insn "*call_nt_1"
   4745  1.1.1.1.8.2  tls   [(call (mem:DI (match_operand:DI 0 "call_operand" "r,R,s"))
   4746  1.1.1.1.8.2  tls 	 (match_operand 1 "" ""))
   4747  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   4748  1.1.1.1.8.2  tls   "TARGET_ABI_WINDOWS_NT"
   4749  1.1.1.1.8.2  tls   "@
   4750  1.1.1.1.8.2  tls    jsr $26,(%0)
   4751  1.1.1.1.8.2  tls    bsr $26,%0
   4752  1.1.1.1.8.2  tls    jsr $26,%0"
   4753  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   4754  1.1.1.1.8.2  tls    (set_attr "length" "*,*,12")])
   4755  1.1.1.1.8.2  tls 
   4756  1.1.1.1.8.2  tls ; GAS relies on the order and position of instructions output below in order
   4757  1.1.1.1.8.2  tls ; to generate relocs for VMS link to potentially optimize the call.
   4758  1.1.1.1.8.2  tls ; Please do not molest.
   4759  1.1.1.1.8.2  tls (define_insn "*call_vms_1"
   4760  1.1.1.1.8.2  tls   [(call (mem:DI (match_operand:DI 0 "call_operand" "r,s"))
   4761  1.1.1.1.8.2  tls 	 (match_operand 1 "" ""))
   4762  1.1.1.1.8.2  tls    (use (match_operand:DI 2 "nonmemory_operand" "r,n"))
   4763  1.1.1.1.8.2  tls    (use (reg:DI 25))
   4764  1.1.1.1.8.2  tls    (use (reg:DI 26))
   4765  1.1.1.1.8.2  tls    (clobber (reg:DI 27))]
   4766  1.1.1.1.8.2  tls   "TARGET_ABI_OPEN_VMS"
   4767  1.1.1.1.8.2  tls {
   4768  1.1.1.1.8.2  tls   switch (which_alternative)
   4769  1.1.1.1.8.2  tls     {
   4770  1.1.1.1.8.2  tls     case 0:
   4771  1.1.1.1.8.2  tls    	return "mov %2,$27\;jsr $26,0\;ldq $27,0($29)";
   4772  1.1.1.1.8.2  tls     case 1:
   4773  1.1.1.1.8.2  tls 	operands [2] = alpha_use_linkage (operands [0], cfun->decl, 1, 0);
   4774  1.1.1.1.8.2  tls 	operands [3] = alpha_use_linkage (operands [0], cfun->decl, 0, 0);
   4775  1.1.1.1.8.2  tls    	return "ldq $26,%3\;ldq $27,%2\;jsr $26,%0\;ldq $27,0($29)";
   4776  1.1.1.1.8.2  tls     default:
   4777  1.1.1.1.8.2  tls       gcc_unreachable ();
   4778  1.1.1.1.8.2  tls     }
   4779  1.1.1.1.8.2  tls }
   4780  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   4781  1.1.1.1.8.2  tls    (set_attr "length" "12,16")])
   4782  1.1.1.1.8.2  tls 
   4783  1.1.1.1.8.2  tls (define_insn "*call_umk_1"
   4784  1.1.1.1.8.2  tls   [(call (mem:DI (match_operand:DI 0 "call_operand" "r"))
   4785  1.1.1.1.8.2  tls 	 (match_operand 1 "" ""))
   4786  1.1.1.1.8.2  tls    (use (reg:DI 25))
   4787  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   4788  1.1.1.1.8.2  tls   "TARGET_ABI_UNICOSMK"
   4789  1.1.1.1.8.2  tls   "jsr $26,(%0)"
   4790  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")])
   4791  1.1.1.1.8.2  tls 
   4792  1.1.1.1.8.2  tls ;; Call subroutine returning any type.
   4793  1.1.1.1.8.2  tls 
   4794  1.1.1.1.8.2  tls (define_expand "untyped_call"
   4795  1.1.1.1.8.2  tls   [(parallel [(call (match_operand 0 "" "")
   4796  1.1.1.1.8.2  tls 		    (const_int 0))
   4797  1.1.1.1.8.2  tls 	      (match_operand 1 "" "")
   4798  1.1.1.1.8.2  tls 	      (match_operand 2 "" "")])]
   4799  1.1.1.1.8.2  tls   ""
   4800  1.1.1.1.8.2  tls {
   4801  1.1.1.1.8.2  tls   int i;
   4802  1.1.1.1.8.2  tls 
   4803  1.1.1.1.8.2  tls   emit_call_insn (GEN_CALL (operands[0], const0_rtx, NULL, const0_rtx));
   4804  1.1.1.1.8.2  tls 
   4805  1.1.1.1.8.2  tls   for (i = 0; i < XVECLEN (operands[2], 0); i++)
   4806  1.1.1.1.8.2  tls     {
   4807  1.1.1.1.8.2  tls       rtx set = XVECEXP (operands[2], 0, i);
   4808  1.1.1.1.8.2  tls       emit_move_insn (SET_DEST (set), SET_SRC (set));
   4809  1.1.1.1.8.2  tls     }
   4810  1.1.1.1.8.2  tls 
   4811  1.1.1.1.8.2  tls   /* The optimizer does not know that the call sets the function value
   4812  1.1.1.1.8.2  tls      registers we stored in the result block.  We avoid problems by
   4813  1.1.1.1.8.2  tls      claiming that all hard registers are used and clobbered at this
   4814  1.1.1.1.8.2  tls      point.  */
   4815  1.1.1.1.8.2  tls   emit_insn (gen_blockage ());
   4816  1.1.1.1.8.2  tls 
   4817  1.1.1.1.8.2  tls   DONE;
   4818  1.1.1.1.8.2  tls })
   4819  1.1.1.1.8.2  tls 
   4820  1.1.1.1.8.2  tls ;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and
   4821  1.1.1.1.8.2  tls ;; all of memory.  This blocks insns from being moved across this point.
   4822  1.1.1.1.8.2  tls 
   4823  1.1.1.1.8.2  tls (define_insn "blockage"
   4824  1.1.1.1.8.2  tls   [(unspec_volatile [(const_int 0)] UNSPECV_BLOCKAGE)]
   4825  1.1.1.1.8.2  tls   ""
   4826  1.1.1.1.8.2  tls   ""
   4827  1.1.1.1.8.2  tls   [(set_attr "length" "0")
   4828  1.1.1.1.8.2  tls    (set_attr "type" "none")])
   4829  1.1.1.1.8.2  tls 
   4830  1.1.1.1.8.2  tls (define_insn "jump"
   4831  1.1.1.1.8.2  tls   [(set (pc)
   4832  1.1.1.1.8.2  tls 	(label_ref (match_operand 0 "" "")))]
   4833  1.1.1.1.8.2  tls   ""
   4834  1.1.1.1.8.2  tls   "br $31,%l0"
   4835  1.1.1.1.8.2  tls   [(set_attr "type" "ibr")])
   4836  1.1.1.1.8.2  tls 
   4837  1.1.1.1.8.2  tls (define_expand "return"
   4838  1.1.1.1.8.2  tls   [(return)]
   4839  1.1.1.1.8.2  tls   "direct_return ()"
   4840  1.1.1.1.8.2  tls   "")
   4841  1.1.1.1.8.2  tls 
   4842  1.1.1.1.8.2  tls (define_insn "*return_internal"
   4843  1.1.1.1.8.2  tls   [(return)]
   4844  1.1.1.1.8.2  tls   "reload_completed"
   4845  1.1.1.1.8.2  tls   "ret $31,($26),1"
   4846  1.1.1.1.8.2  tls   [(set_attr "type" "ibr")])
   4847  1.1.1.1.8.2  tls 
   4848  1.1.1.1.8.2  tls (define_insn "indirect_jump"
   4849  1.1.1.1.8.2  tls   [(set (pc) (match_operand:DI 0 "register_operand" "r"))]
   4850  1.1.1.1.8.2  tls   ""
   4851  1.1.1.1.8.2  tls   "jmp $31,(%0),0"
   4852  1.1.1.1.8.2  tls   [(set_attr "type" "ibr")])
   4853  1.1.1.1.8.2  tls 
   4854  1.1.1.1.8.2  tls (define_expand "tablejump"
   4855  1.1.1.1.8.2  tls   [(parallel [(set (pc)
   4856  1.1.1.1.8.2  tls 		   (match_operand 0 "register_operand" ""))
   4857  1.1.1.1.8.2  tls 	      (use (label_ref:DI (match_operand 1 "" "")))])]
   4858  1.1.1.1.8.2  tls   ""
   4859  1.1.1.1.8.2  tls {
   4860  1.1.1.1.8.2  tls   if (TARGET_ABI_WINDOWS_NT)
   4861  1.1.1.1.8.2  tls     {
   4862  1.1.1.1.8.2  tls       rtx dest = gen_reg_rtx (DImode);
   4863  1.1.1.1.8.2  tls       emit_insn (gen_extendsidi2 (dest, operands[0]));
   4864  1.1.1.1.8.2  tls       operands[0] = dest;
   4865  1.1.1.1.8.2  tls     }
   4866  1.1.1.1.8.2  tls   else if (TARGET_ABI_OSF)
   4867  1.1.1.1.8.2  tls     {
   4868  1.1.1.1.8.2  tls       rtx dest = gen_reg_rtx (DImode);
   4869  1.1.1.1.8.2  tls       emit_insn (gen_extendsidi2 (dest, operands[0]));
   4870  1.1.1.1.8.2  tls       emit_insn (gen_adddi3 (dest, pic_offset_table_rtx, dest));	
   4871  1.1.1.1.8.2  tls       operands[0] = dest;
   4872  1.1.1.1.8.2  tls     }
   4873  1.1.1.1.8.2  tls })
   4874  1.1.1.1.8.2  tls 
   4875  1.1.1.1.8.2  tls (define_insn "*tablejump_osf_nt_internal"
   4876  1.1.1.1.8.2  tls   [(set (pc)
   4877  1.1.1.1.8.2  tls 	(match_operand:DI 0 "register_operand" "r"))
   4878  1.1.1.1.8.2  tls    (use (label_ref:DI (match_operand 1 "" "")))]
   4879  1.1.1.1.8.2  tls   "(TARGET_ABI_OSF || TARGET_ABI_WINDOWS_NT)
   4880  1.1.1.1.8.2  tls    && alpha_tablejump_addr_vec (insn)"
   4881  1.1.1.1.8.2  tls {
   4882  1.1.1.1.8.2  tls   operands[2] = alpha_tablejump_best_label (insn);
   4883  1.1.1.1.8.2  tls   return "jmp $31,(%0),%2";
   4884  1.1.1.1.8.2  tls }
   4885  1.1.1.1.8.2  tls   [(set_attr "type" "ibr")])
   4886  1.1.1.1.8.2  tls 
   4887  1.1.1.1.8.2  tls (define_insn "*tablejump_internal"
   4888  1.1.1.1.8.2  tls   [(set (pc)
   4889  1.1.1.1.8.2  tls 	(match_operand:DI 0 "register_operand" "r"))
   4890  1.1.1.1.8.2  tls    (use (label_ref (match_operand 1 "" "")))]
   4891  1.1.1.1.8.2  tls   ""
   4892  1.1.1.1.8.2  tls   "jmp $31,(%0),0"
   4893  1.1.1.1.8.2  tls   [(set_attr "type" "ibr")])
   4894  1.1.1.1.8.2  tls 
   4895  1.1.1.1.8.2  tls ;; Cache flush.  Used by alpha_trampoline_init.  0x86 is PAL_imb, but we don't
   4896  1.1.1.1.8.2  tls ;; want to have to include pal.h in our .s file.
   4897  1.1.1.1.8.2  tls (define_insn "imb"
   4898  1.1.1.1.8.2  tls   [(unspec_volatile [(const_int 0)] UNSPECV_IMB)]
   4899  1.1.1.1.8.2  tls   ""
   4900  1.1.1.1.8.2  tls   "call_pal 0x86"
   4901  1.1.1.1.8.2  tls   [(set_attr "type" "callpal")])
   4902  1.1.1.1.8.2  tls 
   4903  1.1.1.1.8.2  tls ;; BUGCHK is documented common to OSF/1 and VMS PALcode.
   4904  1.1.1.1.8.2  tls ;; NT does not document anything at 0x81 -- presumably it would generate
   4905  1.1.1.1.8.2  tls ;; the equivalent of SIGILL, but this isn't that important.
   4906  1.1.1.1.8.2  tls ;; ??? Presuming unicosmk uses either OSF/1 or VMS PALcode.
   4907  1.1.1.1.8.2  tls (define_insn "trap"
   4908  1.1.1.1.8.2  tls   [(trap_if (const_int 1) (const_int 0))]
   4909  1.1.1.1.8.2  tls   "!TARGET_ABI_WINDOWS_NT"
   4910  1.1.1.1.8.2  tls   "call_pal 0x81"
   4911  1.1.1.1.8.2  tls   [(set_attr "type" "callpal")])
   4912  1.1.1.1.8.2  tls 
   4913  1.1.1.1.8.2  tls ;; For userland, we load the thread pointer from the TCB.
   4914  1.1.1.1.8.2  tls ;; For the kernel, we load the per-cpu private value.
   4915  1.1.1.1.8.2  tls 
   4916  1.1.1.1.8.2  tls (define_insn "load_tp"
   4917  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=v")
   4918  1.1.1.1.8.2  tls 	(unspec:DI [(const_int 0)] UNSPEC_TP))]
   4919  1.1.1.1.8.2  tls   "TARGET_ABI_OSF"
   4920  1.1.1.1.8.2  tls {
   4921  1.1.1.1.8.2  tls   if (TARGET_TLS_KERNEL)
   4922  1.1.1.1.8.2  tls     return "call_pal 0x32";
   4923  1.1.1.1.8.2  tls   else
   4924  1.1.1.1.8.2  tls     return "call_pal 0x9e";
   4925  1.1.1.1.8.2  tls }
   4926  1.1.1.1.8.2  tls   [(set_attr "type" "callpal")])
   4927  1.1.1.1.8.2  tls 
   4928  1.1.1.1.8.2  tls ;; For completeness, and possibly a __builtin function, here's how to
   4929  1.1.1.1.8.2  tls ;; set the thread pointer.  Since we don't describe enough of this
   4930  1.1.1.1.8.2  tls ;; quantity for CSE, we have to use a volatile unspec, and then there's
   4931  1.1.1.1.8.2  tls ;; not much point in creating an R16_REG register class.
   4932  1.1.1.1.8.2  tls 
   4933  1.1.1.1.8.2  tls (define_expand "set_tp"
   4934  1.1.1.1.8.2  tls   [(set (reg:DI 16) (match_operand:DI 0 "input_operand" ""))
   4935  1.1.1.1.8.2  tls    (unspec_volatile [(reg:DI 16)] UNSPECV_SET_TP)]
   4936  1.1.1.1.8.2  tls   "TARGET_ABI_OSF"
   4937  1.1.1.1.8.2  tls   "")
   4938  1.1.1.1.8.2  tls 
   4939  1.1.1.1.8.2  tls (define_insn "*set_tp"
   4940  1.1.1.1.8.2  tls   [(unspec_volatile [(reg:DI 16)] UNSPECV_SET_TP)]
   4941  1.1.1.1.8.2  tls   "TARGET_ABI_OSF"
   4942  1.1.1.1.8.2  tls {
   4943  1.1.1.1.8.2  tls   if (TARGET_TLS_KERNEL)
   4944  1.1.1.1.8.2  tls     return "call_pal 0x31";
   4945  1.1.1.1.8.2  tls   else
   4946  1.1.1.1.8.2  tls     return "call_pal 0x9f";
   4947  1.1.1.1.8.2  tls }
   4948  1.1.1.1.8.2  tls   [(set_attr "type" "callpal")])
   4949  1.1.1.1.8.2  tls 
   4950  1.1.1.1.8.2  tls ;; Special builtins for establishing and reverting VMS condition handlers.
   4951  1.1.1.1.8.2  tls 
   4952  1.1.1.1.8.2  tls (define_expand "builtin_establish_vms_condition_handler"
   4953  1.1.1.1.8.2  tls   [(set (reg:DI 0) (match_operand:DI 0 "register_operand" ""))
   4954  1.1.1.1.8.2  tls    (use (match_operand:DI 1 "address_operand" ""))]
   4955  1.1.1.1.8.2  tls   "TARGET_ABI_OPEN_VMS"
   4956  1.1.1.1.8.2  tls {
   4957  1.1.1.1.8.2  tls   alpha_expand_builtin_establish_vms_condition_handler (operands[0],
   4958  1.1.1.1.8.2  tls                                                         operands[1]);
   4959  1.1.1.1.8.2  tls })
   4960  1.1.1.1.8.2  tls 
   4961  1.1.1.1.8.2  tls (define_expand "builtin_revert_vms_condition_handler"
   4962  1.1.1.1.8.2  tls   [(set (reg:DI 0) (match_operand:DI 0 "register_operand" ""))]
   4963  1.1.1.1.8.2  tls   "TARGET_ABI_OPEN_VMS"
   4964  1.1.1.1.8.2  tls {
   4965  1.1.1.1.8.2  tls   alpha_expand_builtin_revert_vms_condition_handler (operands[0]);
   4966  1.1.1.1.8.2  tls })
   4967  1.1.1.1.8.2  tls 
   4969  1.1.1.1.8.2  tls ;; Finally, we have the basic data motion insns.  The byte and word insns
   4970  1.1.1.1.8.2  tls ;; are done via define_expand.  Start with the floating-point insns, since
   4971  1.1.1.1.8.2  tls ;; they are simpler.
   4972  1.1.1.1.8.2  tls 
   4973  1.1.1.1.8.2  tls (define_insn "*movsf_nofix"
   4974  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "nonimmediate_operand" "=f,f,*r,*r,m,m")
   4975  1.1.1.1.8.2  tls 	(match_operand:SF 1 "input_operand" "fG,m,*rG,m,fG,*r"))]
   4976  1.1.1.1.8.2  tls   "TARGET_FPREGS && ! TARGET_FIX
   4977  1.1.1.1.8.2  tls    && (register_operand (operands[0], SFmode)
   4978  1.1.1.1.8.2  tls        || reg_or_0_operand (operands[1], SFmode))"
   4979  1.1.1.1.8.2  tls   "@
   4980  1.1.1.1.8.2  tls    cpys %R1,%R1,%0
   4981  1.1.1.1.8.2  tls    ld%, %0,%1
   4982  1.1.1.1.8.2  tls    bis $31,%r1,%0
   4983  1.1.1.1.8.2  tls    ldl %0,%1
   4984  1.1.1.1.8.2  tls    st%, %R1,%0
   4985  1.1.1.1.8.2  tls    stl %r1,%0"
   4986  1.1.1.1.8.2  tls   [(set_attr "type" "fcpys,fld,ilog,ild,fst,ist")])
   4987  1.1.1.1.8.2  tls 
   4988  1.1.1.1.8.2  tls (define_insn "*movsf_fix"
   4989  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "nonimmediate_operand" "=f,f,*r,*r,m,m,f,*r")
   4990  1.1.1.1.8.2  tls 	(match_operand:SF 1 "input_operand" "fG,m,*rG,m,fG,*r,*r,f"))]
   4991  1.1.1.1.8.2  tls   "TARGET_FPREGS && TARGET_FIX
   4992  1.1.1.1.8.2  tls    && (register_operand (operands[0], SFmode)
   4993  1.1.1.1.8.2  tls        || reg_or_0_operand (operands[1], SFmode))"
   4994  1.1.1.1.8.2  tls   "@
   4995  1.1.1.1.8.2  tls    cpys %R1,%R1,%0
   4996  1.1.1.1.8.2  tls    ld%, %0,%1
   4997  1.1.1.1.8.2  tls    bis $31,%r1,%0
   4998  1.1.1.1.8.2  tls    ldl %0,%1
   4999  1.1.1.1.8.2  tls    st%, %R1,%0
   5000  1.1.1.1.8.2  tls    stl %r1,%0
   5001  1.1.1.1.8.2  tls    itofs %1,%0
   5002  1.1.1.1.8.2  tls    ftois %1,%0"
   5003  1.1.1.1.8.2  tls   [(set_attr "type" "fcpys,fld,ilog,ild,fst,ist,itof,ftoi")])
   5004  1.1.1.1.8.2  tls 
   5005  1.1.1.1.8.2  tls (define_insn "*movsf_nofp"
   5006  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "nonimmediate_operand" "=r,r,m")
   5007  1.1.1.1.8.2  tls 	(match_operand:SF 1 "input_operand" "rG,m,r"))]
   5008  1.1.1.1.8.2  tls   "! TARGET_FPREGS
   5009  1.1.1.1.8.2  tls    && (register_operand (operands[0], SFmode)
   5010  1.1.1.1.8.2  tls        || reg_or_0_operand (operands[1], SFmode))"
   5011  1.1.1.1.8.2  tls   "@
   5012  1.1.1.1.8.2  tls    bis $31,%r1,%0
   5013  1.1.1.1.8.2  tls    ldl %0,%1
   5014  1.1.1.1.8.2  tls    stl %r1,%0"
   5015  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,ild,ist")])
   5016  1.1.1.1.8.2  tls 
   5017  1.1.1.1.8.2  tls (define_insn "*movdf_nofix"
   5018  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "nonimmediate_operand" "=f,f,*r,*r,m,m")
   5019  1.1.1.1.8.2  tls 	(match_operand:DF 1 "input_operand" "fG,m,*rG,m,fG,*r"))]
   5020  1.1.1.1.8.2  tls   "TARGET_FPREGS && ! TARGET_FIX
   5021  1.1.1.1.8.2  tls    && (register_operand (operands[0], DFmode)
   5022  1.1.1.1.8.2  tls        || reg_or_0_operand (operands[1], DFmode))"
   5023  1.1.1.1.8.2  tls   "@
   5024  1.1.1.1.8.2  tls    cpys %R1,%R1,%0
   5025  1.1.1.1.8.2  tls    ld%- %0,%1
   5026  1.1.1.1.8.2  tls    bis $31,%r1,%0
   5027  1.1.1.1.8.2  tls    ldq %0,%1
   5028  1.1.1.1.8.2  tls    st%- %R1,%0
   5029  1.1.1.1.8.2  tls    stq %r1,%0"
   5030  1.1.1.1.8.2  tls   [(set_attr "type" "fcpys,fld,ilog,ild,fst,ist")])
   5031  1.1.1.1.8.2  tls 
   5032  1.1.1.1.8.2  tls (define_insn "*movdf_fix"
   5033  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "nonimmediate_operand" "=f,f,*r,*r,m,m,f,*r")
   5034  1.1.1.1.8.2  tls 	(match_operand:DF 1 "input_operand" "fG,m,*rG,m,fG,*r,*r,f"))]
   5035  1.1.1.1.8.2  tls   "TARGET_FPREGS && TARGET_FIX
   5036  1.1.1.1.8.2  tls    && (register_operand (operands[0], DFmode)
   5037  1.1.1.1.8.2  tls        || reg_or_0_operand (operands[1], DFmode))"
   5038  1.1.1.1.8.2  tls   "@
   5039  1.1.1.1.8.2  tls    cpys %R1,%R1,%0
   5040  1.1.1.1.8.2  tls    ld%- %0,%1
   5041  1.1.1.1.8.2  tls    bis $31,%r1,%0
   5042  1.1.1.1.8.2  tls    ldq %0,%1
   5043  1.1.1.1.8.2  tls    st%- %R1,%0
   5044  1.1.1.1.8.2  tls    stq %r1,%0
   5045  1.1.1.1.8.2  tls    itoft %1,%0
   5046  1.1.1.1.8.2  tls    ftoit %1,%0"
   5047  1.1.1.1.8.2  tls   [(set_attr "type" "fcpys,fld,ilog,ild,fst,ist,itof,ftoi")])
   5048  1.1.1.1.8.2  tls 
   5049  1.1.1.1.8.2  tls (define_insn "*movdf_nofp"
   5050  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "nonimmediate_operand" "=r,r,m")
   5051  1.1.1.1.8.2  tls 	(match_operand:DF 1 "input_operand" "rG,m,r"))]
   5052  1.1.1.1.8.2  tls   "! TARGET_FPREGS
   5053  1.1.1.1.8.2  tls    && (register_operand (operands[0], DFmode)
   5054  1.1.1.1.8.2  tls        || reg_or_0_operand (operands[1], DFmode))"
   5055  1.1.1.1.8.2  tls   "@
   5056  1.1.1.1.8.2  tls    bis $31,%r1,%0
   5057  1.1.1.1.8.2  tls    ldq %0,%1
   5058  1.1.1.1.8.2  tls    stq %r1,%0"
   5059  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,ild,ist")])
   5060  1.1.1.1.8.2  tls 
   5061  1.1.1.1.8.2  tls ;; Subregs suck for register allocation.  Pretend we can move TFmode
   5062  1.1.1.1.8.2  tls ;; data between general registers until after reload.
   5063  1.1.1.1.8.2  tls 
   5064  1.1.1.1.8.2  tls (define_insn_and_split "*movtf_internal"
   5065  1.1.1.1.8.2  tls   [(set (match_operand:TF 0 "nonimmediate_operand" "=r,o")
   5066  1.1.1.1.8.2  tls 	(match_operand:TF 1 "input_operand" "roG,rG"))]
   5067  1.1.1.1.8.2  tls   "register_operand (operands[0], TFmode)
   5068  1.1.1.1.8.2  tls    || reg_or_0_operand (operands[1], TFmode)"
   5069  1.1.1.1.8.2  tls   "#"
   5070  1.1.1.1.8.2  tls   "reload_completed"
   5071  1.1.1.1.8.2  tls   [(set (match_dup 0) (match_dup 2))
   5072  1.1.1.1.8.2  tls    (set (match_dup 1) (match_dup 3))]
   5073  1.1.1.1.8.2  tls {
   5074  1.1.1.1.8.2  tls   alpha_split_tmode_pair (operands, TFmode, true); 
   5075  1.1.1.1.8.2  tls })
   5076  1.1.1.1.8.2  tls 
   5077  1.1.1.1.8.2  tls (define_expand "movsf"
   5078  1.1.1.1.8.2  tls   [(set (match_operand:SF 0 "nonimmediate_operand" "")
   5079  1.1.1.1.8.2  tls 	(match_operand:SF 1 "general_operand" ""))]
   5080  1.1.1.1.8.2  tls   ""
   5081  1.1.1.1.8.2  tls {
   5082  1.1.1.1.8.2  tls   if (MEM_P (operands[0])
   5083  1.1.1.1.8.2  tls       && ! reg_or_0_operand (operands[1], SFmode))
   5084  1.1.1.1.8.2  tls     operands[1] = force_reg (SFmode, operands[1]);
   5085  1.1.1.1.8.2  tls })
   5086  1.1.1.1.8.2  tls 
   5087  1.1.1.1.8.2  tls (define_expand "movdf"
   5088  1.1.1.1.8.2  tls   [(set (match_operand:DF 0 "nonimmediate_operand" "")
   5089  1.1.1.1.8.2  tls 	(match_operand:DF 1 "general_operand" ""))]
   5090  1.1.1.1.8.2  tls   ""
   5091  1.1.1.1.8.2  tls {
   5092  1.1.1.1.8.2  tls   if (MEM_P (operands[0])
   5093  1.1.1.1.8.2  tls       && ! reg_or_0_operand (operands[1], DFmode))
   5094  1.1.1.1.8.2  tls     operands[1] = force_reg (DFmode, operands[1]);
   5095  1.1.1.1.8.2  tls })
   5096  1.1.1.1.8.2  tls 
   5097  1.1.1.1.8.2  tls (define_expand "movtf"
   5098  1.1.1.1.8.2  tls   [(set (match_operand:TF 0 "nonimmediate_operand" "")
   5099  1.1.1.1.8.2  tls 	(match_operand:TF 1 "general_operand" ""))]
   5100  1.1.1.1.8.2  tls   ""
   5101  1.1.1.1.8.2  tls {
   5102  1.1.1.1.8.2  tls   if (MEM_P (operands[0])
   5103  1.1.1.1.8.2  tls       && ! reg_or_0_operand (operands[1], TFmode))
   5104  1.1.1.1.8.2  tls     operands[1] = force_reg (TFmode, operands[1]);
   5105  1.1.1.1.8.2  tls })
   5106  1.1.1.1.8.2  tls 
   5107  1.1.1.1.8.2  tls (define_insn "*movsi"
   5108  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,r,m")
   5109  1.1.1.1.8.2  tls 	(match_operand:SI 1 "input_operand" "rJ,K,L,n,m,rJ"))]
   5110  1.1.1.1.8.2  tls   "(TARGET_ABI_OSF || TARGET_ABI_UNICOSMK)
   5111  1.1.1.1.8.2  tls    && (register_operand (operands[0], SImode)
   5112  1.1.1.1.8.2  tls        || reg_or_0_operand (operands[1], SImode))"
   5113  1.1.1.1.8.2  tls   "@
   5114  1.1.1.1.8.2  tls    bis $31,%r1,%0
   5115  1.1.1.1.8.2  tls    lda %0,%1($31)
   5116  1.1.1.1.8.2  tls    ldah %0,%h1($31)
   5117  1.1.1.1.8.2  tls    #
   5118  1.1.1.1.8.2  tls    ldl %0,%1
   5119  1.1.1.1.8.2  tls    stl %r1,%0"
   5120  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,iadd,iadd,multi,ild,ist")])
   5121  1.1.1.1.8.2  tls 
   5122  1.1.1.1.8.2  tls (define_insn "*movsi_nt_vms"
   5123  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,r,r,r,m")
   5124  1.1.1.1.8.2  tls 	(match_operand:SI 1 "input_operand" "rJ,K,L,s,n,m,rJ"))]
   5125  1.1.1.1.8.2  tls   "(TARGET_ABI_WINDOWS_NT || TARGET_ABI_OPEN_VMS)
   5126  1.1.1.1.8.2  tls     && (register_operand (operands[0], SImode)
   5127  1.1.1.1.8.2  tls         || reg_or_0_operand (operands[1], SImode))"
   5128  1.1.1.1.8.2  tls   "@
   5129  1.1.1.1.8.2  tls    bis $31,%1,%0
   5130  1.1.1.1.8.2  tls    lda %0,%1
   5131  1.1.1.1.8.2  tls    ldah %0,%h1
   5132  1.1.1.1.8.2  tls    lda %0,%1
   5133  1.1.1.1.8.2  tls    #
   5134  1.1.1.1.8.2  tls    ldl %0,%1
   5135  1.1.1.1.8.2  tls    stl %r1,%0"
   5136  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,iadd,iadd,ldsym,multi,ild,ist")])
   5137  1.1.1.1.8.2  tls 
   5138  1.1.1.1.8.2  tls (define_insn "*movhi_nobwx"
   5139  1.1.1.1.8.2  tls   [(set (match_operand:HI 0 "register_operand" "=r,r")
   5140  1.1.1.1.8.2  tls 	(match_operand:HI 1 "input_operand" "rJ,n"))]
   5141  1.1.1.1.8.2  tls   "! TARGET_BWX
   5142  1.1.1.1.8.2  tls    && (register_operand (operands[0], HImode)
   5143  1.1.1.1.8.2  tls        || register_operand (operands[1], HImode))"
   5144  1.1.1.1.8.2  tls   "@
   5145  1.1.1.1.8.2  tls    bis $31,%r1,%0
   5146  1.1.1.1.8.2  tls    lda %0,%L1($31)"
   5147  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,iadd")])
   5148  1.1.1.1.8.2  tls 
   5149  1.1.1.1.8.2  tls (define_insn "*movhi_bwx"
   5150  1.1.1.1.8.2  tls   [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,r,m")
   5151  1.1.1.1.8.2  tls 	(match_operand:HI 1 "input_operand" "rJ,n,m,rJ"))]
   5152  1.1.1.1.8.2  tls   "TARGET_BWX
   5153  1.1.1.1.8.2  tls    && (register_operand (operands[0], HImode)
   5154  1.1.1.1.8.2  tls        || reg_or_0_operand (operands[1], HImode))"
   5155  1.1.1.1.8.2  tls   "@
   5156  1.1.1.1.8.2  tls    bis $31,%r1,%0
   5157  1.1.1.1.8.2  tls    lda %0,%L1($31)
   5158  1.1.1.1.8.2  tls    ldwu %0,%1
   5159  1.1.1.1.8.2  tls    stw %r1,%0"
   5160  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,iadd,ild,ist")])
   5161  1.1.1.1.8.2  tls 
   5162  1.1.1.1.8.2  tls (define_insn "*movqi_nobwx"
   5163  1.1.1.1.8.2  tls   [(set (match_operand:QI 0 "register_operand" "=r,r")
   5164  1.1.1.1.8.2  tls 	(match_operand:QI 1 "input_operand" "rJ,n"))]
   5165  1.1.1.1.8.2  tls   "! TARGET_BWX
   5166  1.1.1.1.8.2  tls    && (register_operand (operands[0], QImode)
   5167  1.1.1.1.8.2  tls        || register_operand (operands[1], QImode))"
   5168  1.1.1.1.8.2  tls   "@
   5169  1.1.1.1.8.2  tls    bis $31,%r1,%0
   5170  1.1.1.1.8.2  tls    lda %0,%L1($31)"
   5171  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,iadd")])
   5172  1.1.1.1.8.2  tls 
   5173  1.1.1.1.8.2  tls (define_insn "*movqi_bwx"
   5174  1.1.1.1.8.2  tls   [(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,r,m")
   5175  1.1.1.1.8.2  tls 	(match_operand:QI 1 "input_operand" "rJ,n,m,rJ"))]
   5176  1.1.1.1.8.2  tls   "TARGET_BWX
   5177  1.1.1.1.8.2  tls    && (register_operand (operands[0], QImode)
   5178  1.1.1.1.8.2  tls        || reg_or_0_operand (operands[1], QImode))"
   5179  1.1.1.1.8.2  tls   "@
   5180  1.1.1.1.8.2  tls    bis $31,%r1,%0
   5181  1.1.1.1.8.2  tls    lda %0,%L1($31)
   5182  1.1.1.1.8.2  tls    ldbu %0,%1
   5183  1.1.1.1.8.2  tls    stb %r1,%0"
   5184  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,iadd,ild,ist")])
   5185  1.1.1.1.8.2  tls 
   5186  1.1.1.1.8.2  tls ;; We do two major things here: handle mem->mem and construct long
   5187  1.1.1.1.8.2  tls ;; constants.
   5188  1.1.1.1.8.2  tls 
   5189  1.1.1.1.8.2  tls (define_expand "movsi"
   5190  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "nonimmediate_operand" "")
   5191  1.1.1.1.8.2  tls 	(match_operand:SI 1 "general_operand" ""))]
   5192  1.1.1.1.8.2  tls   ""
   5193  1.1.1.1.8.2  tls {
   5194  1.1.1.1.8.2  tls   if (alpha_expand_mov (SImode, operands))
   5195  1.1.1.1.8.2  tls     DONE;
   5196  1.1.1.1.8.2  tls })
   5197  1.1.1.1.8.2  tls 
   5198  1.1.1.1.8.2  tls ;; Split a load of a large constant into the appropriate two-insn
   5199  1.1.1.1.8.2  tls ;; sequence.
   5200  1.1.1.1.8.2  tls 
   5201  1.1.1.1.8.2  tls (define_split
   5202  1.1.1.1.8.2  tls   [(set (match_operand:SI 0 "register_operand" "")
   5203  1.1.1.1.8.2  tls 	(match_operand:SI 1 "non_add_const_operand" ""))]
   5204  1.1.1.1.8.2  tls   ""
   5205  1.1.1.1.8.2  tls   [(const_int 0)]
   5206  1.1.1.1.8.2  tls {
   5207  1.1.1.1.8.2  tls   if (alpha_split_const_mov (SImode, operands))
   5208  1.1.1.1.8.2  tls     DONE;
   5209  1.1.1.1.8.2  tls   else
   5210  1.1.1.1.8.2  tls     FAIL;
   5211  1.1.1.1.8.2  tls })
   5212  1.1.1.1.8.2  tls 
   5213  1.1.1.1.8.2  tls ;; Split the load of an address into a four-insn sequence on Unicos/Mk.
   5214  1.1.1.1.8.2  tls ;; Always generate a REG_EQUAL note for the last instruction to facilitate
   5215  1.1.1.1.8.2  tls ;; optimizations. If the symbolic operand is a label_ref, generate
   5216  1.1.1.1.8.2  tls ;; REG_LABEL_OPERAND notes and update LABEL_NUSES because this is not done
   5217  1.1.1.1.8.2  tls ;; automatically.  Labels may be incorrectly deleted if we don't do this.
   5218  1.1.1.1.8.2  tls ;;
   5219  1.1.1.1.8.2  tls ;; Describing what the individual instructions do correctly is too complicated
   5220  1.1.1.1.8.2  tls ;; so use UNSPECs for each of the three parts of an address.
   5221  1.1.1.1.8.2  tls 
   5222  1.1.1.1.8.2  tls (define_split
   5223  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   5224  1.1.1.1.8.2  tls 	(match_operand:DI 1 "symbolic_operand" ""))]
   5225  1.1.1.1.8.2  tls   "TARGET_ABI_UNICOSMK && reload_completed"
   5226  1.1.1.1.8.2  tls   [(const_int 0)]
   5227  1.1.1.1.8.2  tls {
   5228  1.1.1.1.8.2  tls   rtx insn1, insn2, insn3;
   5229  1.1.1.1.8.2  tls 
   5230  1.1.1.1.8.2  tls   insn1 = emit_insn (gen_umk_laum (operands[0], operands[1]));
   5231  1.1.1.1.8.2  tls   emit_insn (gen_ashldi3 (operands[0], operands[0], GEN_INT (32)));
   5232  1.1.1.1.8.2  tls   insn2 = emit_insn (gen_umk_lalm (operands[0], operands[0], operands[1]));
   5233  1.1.1.1.8.2  tls   insn3 = emit_insn (gen_umk_lal (operands[0], operands[0], operands[1]));
   5234  1.1.1.1.8.2  tls   set_unique_reg_note (insn3, REG_EQUAL, operands[1]);
   5235  1.1.1.1.8.2  tls 
   5236  1.1.1.1.8.2  tls   if (GET_CODE (operands[1]) == LABEL_REF)
   5237  1.1.1.1.8.2  tls     {
   5238  1.1.1.1.8.2  tls       rtx label;
   5239  1.1.1.1.8.2  tls 
   5240  1.1.1.1.8.2  tls       label = XEXP (operands[1], 0);
   5241  1.1.1.1.8.2  tls       add_reg_note (insn1, REG_LABEL_OPERAND, label);
   5242  1.1.1.1.8.2  tls       add_reg_note (insn2, REG_LABEL_OPERAND, label);
   5243  1.1.1.1.8.2  tls       add_reg_note (insn3, REG_LABEL_OPERAND, label);
   5244  1.1.1.1.8.2  tls       LABEL_NUSES (label) += 3;
   5245  1.1.1.1.8.2  tls     }
   5246  1.1.1.1.8.2  tls   DONE;
   5247  1.1.1.1.8.2  tls })
   5248  1.1.1.1.8.2  tls 
   5249  1.1.1.1.8.2  tls ;; Instructions for loading the three parts of an address on Unicos/Mk.
   5250  1.1.1.1.8.2  tls 
   5251  1.1.1.1.8.2  tls (define_insn "umk_laum"
   5252  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   5253  1.1.1.1.8.2  tls 	(unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
   5254  1.1.1.1.8.2  tls 		   UNSPEC_UMK_LAUM))]
   5255  1.1.1.1.8.2  tls   "TARGET_ABI_UNICOSMK"
   5256  1.1.1.1.8.2  tls   "laum %r0,%t1($31)"
   5257  1.1.1.1.8.2  tls   [(set_attr "type" "iadd")])
   5258  1.1.1.1.8.2  tls 
   5259  1.1.1.1.8.2  tls (define_insn "umk_lalm"
   5260  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   5261  1.1.1.1.8.2  tls 	(plus:DI (match_operand:DI 1 "register_operand" "r")
   5262  1.1.1.1.8.2  tls 		 (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")]
   5263  1.1.1.1.8.2  tls 			    UNSPEC_UMK_LALM)))] 
   5264  1.1.1.1.8.2  tls   "TARGET_ABI_UNICOSMK"
   5265  1.1.1.1.8.2  tls   "lalm %r0,%t2(%r1)"
   5266  1.1.1.1.8.2  tls   [(set_attr "type" "iadd")])
   5267  1.1.1.1.8.2  tls 
   5268  1.1.1.1.8.2  tls (define_insn "umk_lal"
   5269  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   5270  1.1.1.1.8.2  tls 	(plus:DI (match_operand:DI 1 "register_operand" "r")
   5271  1.1.1.1.8.2  tls 		 (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")]
   5272  1.1.1.1.8.2  tls 			    UNSPEC_UMK_LAL)))]
   5273  1.1.1.1.8.2  tls   "TARGET_ABI_UNICOSMK"
   5274  1.1.1.1.8.2  tls   "lal %r0,%t2(%r1)"
   5275  1.1.1.1.8.2  tls   [(set_attr "type" "iadd")])
   5276  1.1.1.1.8.2  tls 
   5277  1.1.1.1.8.2  tls ;; Add a new call information word to the current function's list of CIWs
   5278  1.1.1.1.8.2  tls ;; and load its index into $25. Doing it here ensures that the CIW will be
   5279  1.1.1.1.8.2  tls ;; associated with the correct function even in the presence of inlining.
   5280  1.1.1.1.8.2  tls 
   5281  1.1.1.1.8.2  tls (define_insn "*umk_load_ciw"
   5282  1.1.1.1.8.2  tls   [(set (reg:DI 25)
   5283  1.1.1.1.8.2  tls 	(unspec:DI [(match_operand 0 "" "")] UNSPEC_UMK_LOAD_CIW))]
   5284  1.1.1.1.8.2  tls   "TARGET_ABI_UNICOSMK"
   5285  1.1.1.1.8.2  tls {
   5286  1.1.1.1.8.2  tls   operands[0] = unicosmk_add_call_info_word (operands[0]);
   5287  1.1.1.1.8.2  tls   return "lda $25,%0";
   5288  1.1.1.1.8.2  tls }
   5289  1.1.1.1.8.2  tls   [(set_attr "type" "iadd")])
   5290  1.1.1.1.8.2  tls 
   5291  1.1.1.1.8.2  tls (define_insn "*movdi_er_low_l"
   5292  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   5293  1.1.1.1.8.2  tls 	(lo_sum:DI (match_operand:DI 1 "register_operand" "r")
   5294  1.1.1.1.8.2  tls 		   (match_operand:DI 2 "local_symbolic_operand" "")))]
   5295  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS"
   5296  1.1.1.1.8.2  tls {
   5297  1.1.1.1.8.2  tls   if (true_regnum (operands[1]) == 29)
   5298  1.1.1.1.8.2  tls     return "lda %0,%2(%1)\t\t!gprel";
   5299  1.1.1.1.8.2  tls   else
   5300  1.1.1.1.8.2  tls     return "lda %0,%2(%1)\t\t!gprellow";
   5301  1.1.1.1.8.2  tls }
   5302  1.1.1.1.8.2  tls   [(set_attr "usegp" "yes")])
   5303  1.1.1.1.8.2  tls 
   5304  1.1.1.1.8.2  tls (define_split
   5305  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   5306  1.1.1.1.8.2  tls 	(match_operand:DI 1 "small_symbolic_operand" ""))]
   5307  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && reload_completed"
   5308  1.1.1.1.8.2  tls   [(set (match_dup 0)
   5309  1.1.1.1.8.2  tls 	(lo_sum:DI (match_dup 2) (match_dup 1)))]
   5310  1.1.1.1.8.2  tls   "operands[2] = pic_offset_table_rtx;")
   5311  1.1.1.1.8.2  tls 
   5312  1.1.1.1.8.2  tls (define_split
   5313  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   5314  1.1.1.1.8.2  tls 	(match_operand:DI 1 "local_symbolic_operand" ""))]
   5315  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && reload_completed"
   5316  1.1.1.1.8.2  tls   [(set (match_dup 0)
   5317  1.1.1.1.8.2  tls 	(plus:DI (match_dup 2) (high:DI (match_dup 1))))
   5318  1.1.1.1.8.2  tls    (set (match_dup 0)
   5319  1.1.1.1.8.2  tls 	(lo_sum:DI (match_dup 0) (match_dup 1)))]
   5320  1.1.1.1.8.2  tls   "operands[2] = pic_offset_table_rtx;")
   5321  1.1.1.1.8.2  tls 
   5322  1.1.1.1.8.2  tls (define_split
   5323  1.1.1.1.8.2  tls   [(match_operand 0 "some_small_symbolic_operand" "")]
   5324  1.1.1.1.8.2  tls   ""
   5325  1.1.1.1.8.2  tls   [(match_dup 0)]
   5326  1.1.1.1.8.2  tls   "operands[0] = split_small_symbolic_operand (operands[0]);")
   5327  1.1.1.1.8.2  tls 
   5328  1.1.1.1.8.2  tls ;; Accepts any symbolic, not just global, since function calls that
   5329  1.1.1.1.8.2  tls ;; don't go via bsr still use !literal in hopes of linker relaxation.
   5330  1.1.1.1.8.2  tls (define_insn "movdi_er_high_g"
   5331  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   5332  1.1.1.1.8.2  tls 	(unspec:DI [(match_operand:DI 1 "register_operand" "r")
   5333  1.1.1.1.8.2  tls 		    (match_operand:DI 2 "symbolic_operand" "")
   5334  1.1.1.1.8.2  tls 		    (match_operand 3 "const_int_operand" "")]
   5335  1.1.1.1.8.2  tls 		   UNSPEC_LITERAL))]
   5336  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS"
   5337  1.1.1.1.8.2  tls {
   5338  1.1.1.1.8.2  tls   if (INTVAL (operands[3]) == 0)
   5339  1.1.1.1.8.2  tls     return "ldq %0,%2(%1)\t\t!literal";
   5340  1.1.1.1.8.2  tls   else
   5341  1.1.1.1.8.2  tls     return "ldq %0,%2(%1)\t\t!literal!%3";
   5342  1.1.1.1.8.2  tls }
   5343  1.1.1.1.8.2  tls   [(set_attr "type" "ldsym")])
   5344  1.1.1.1.8.2  tls 
   5345  1.1.1.1.8.2  tls (define_split
   5346  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   5347  1.1.1.1.8.2  tls 	(match_operand:DI 1 "global_symbolic_operand" ""))]
   5348  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && reload_completed"
   5349  1.1.1.1.8.2  tls   [(set (match_dup 0)
   5350  1.1.1.1.8.2  tls 	(unspec:DI [(match_dup 2)
   5351  1.1.1.1.8.2  tls 		    (match_dup 1)
   5352  1.1.1.1.8.2  tls 		    (const_int 0)] UNSPEC_LITERAL))]
   5353  1.1.1.1.8.2  tls   "operands[2] = pic_offset_table_rtx;")
   5354  1.1.1.1.8.2  tls 
   5355  1.1.1.1.8.2  tls (define_insn "movdi_er_tlsgd"
   5356  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   5357  1.1.1.1.8.2  tls 	(unspec:DI [(match_operand:DI 1 "register_operand" "r")
   5358  1.1.1.1.8.2  tls 		    (match_operand:DI 2 "symbolic_operand" "")
   5359  1.1.1.1.8.2  tls 		    (match_operand 3 "const_int_operand" "")]
   5360  1.1.1.1.8.2  tls 		   UNSPEC_TLSGD))]
   5361  1.1.1.1.8.2  tls   "HAVE_AS_TLS"
   5362  1.1.1.1.8.2  tls {
   5363  1.1.1.1.8.2  tls   if (INTVAL (operands[3]) == 0)
   5364  1.1.1.1.8.2  tls     return "lda %0,%2(%1)\t\t!tlsgd";
   5365  1.1.1.1.8.2  tls   else
   5366  1.1.1.1.8.2  tls     return "lda %0,%2(%1)\t\t!tlsgd!%3";
   5367  1.1.1.1.8.2  tls })
   5368  1.1.1.1.8.2  tls 
   5369  1.1.1.1.8.2  tls (define_insn "movdi_er_tlsldm"
   5370  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   5371  1.1.1.1.8.2  tls 	(unspec:DI [(match_operand:DI 1 "register_operand" "r")
   5372  1.1.1.1.8.2  tls 		    (match_operand 2 "const_int_operand" "")]
   5373  1.1.1.1.8.2  tls 		   UNSPEC_TLSLDM))]
   5374  1.1.1.1.8.2  tls   "HAVE_AS_TLS"
   5375  1.1.1.1.8.2  tls {
   5376  1.1.1.1.8.2  tls   if (INTVAL (operands[2]) == 0)
   5377  1.1.1.1.8.2  tls     return "lda %0,%&(%1)\t\t!tlsldm";
   5378  1.1.1.1.8.2  tls   else
   5379  1.1.1.1.8.2  tls     return "lda %0,%&(%1)\t\t!tlsldm!%2";
   5380  1.1.1.1.8.2  tls })
   5381  1.1.1.1.8.2  tls 
   5382  1.1.1.1.8.2  tls (define_insn "*movdi_er_gotdtp"
   5383  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   5384  1.1.1.1.8.2  tls 	(unspec:DI [(match_operand:DI 1 "register_operand" "r")
   5385  1.1.1.1.8.2  tls 		    (match_operand:DI 2 "symbolic_operand" "")]
   5386  1.1.1.1.8.2  tls 		   UNSPEC_DTPREL))]
   5387  1.1.1.1.8.2  tls   "HAVE_AS_TLS"
   5388  1.1.1.1.8.2  tls   "ldq %0,%2(%1)\t\t!gotdtprel"
   5389  1.1.1.1.8.2  tls   [(set_attr "type" "ild")
   5390  1.1.1.1.8.2  tls    (set_attr "usegp" "yes")])
   5391  1.1.1.1.8.2  tls 
   5392  1.1.1.1.8.2  tls (define_split
   5393  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   5394  1.1.1.1.8.2  tls 	(match_operand:DI 1 "gotdtp_symbolic_operand" ""))]
   5395  1.1.1.1.8.2  tls   "HAVE_AS_TLS && reload_completed"
   5396  1.1.1.1.8.2  tls   [(set (match_dup 0)
   5397  1.1.1.1.8.2  tls 	(unspec:DI [(match_dup 2)
   5398  1.1.1.1.8.2  tls 		    (match_dup 1)] UNSPEC_DTPREL))]
   5399  1.1.1.1.8.2  tls {
   5400  1.1.1.1.8.2  tls   operands[1] = XVECEXP (XEXP (operands[1], 0), 0, 0);
   5401  1.1.1.1.8.2  tls   operands[2] = pic_offset_table_rtx;
   5402  1.1.1.1.8.2  tls })
   5403  1.1.1.1.8.2  tls 
   5404  1.1.1.1.8.2  tls (define_insn "*movdi_er_gottp"
   5405  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   5406  1.1.1.1.8.2  tls 	(unspec:DI [(match_operand:DI 1 "register_operand" "r")
   5407  1.1.1.1.8.2  tls 		    (match_operand:DI 2 "symbolic_operand" "")]
   5408  1.1.1.1.8.2  tls 		   UNSPEC_TPREL))]
   5409  1.1.1.1.8.2  tls   "HAVE_AS_TLS"
   5410  1.1.1.1.8.2  tls   "ldq %0,%2(%1)\t\t!gottprel"
   5411  1.1.1.1.8.2  tls   [(set_attr "type" "ild")
   5412  1.1.1.1.8.2  tls    (set_attr "usegp" "yes")])
   5413  1.1.1.1.8.2  tls 
   5414  1.1.1.1.8.2  tls (define_split
   5415  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   5416  1.1.1.1.8.2  tls 	(match_operand:DI 1 "gottp_symbolic_operand" ""))]
   5417  1.1.1.1.8.2  tls   "HAVE_AS_TLS && reload_completed"
   5418  1.1.1.1.8.2  tls   [(set (match_dup 0)
   5419  1.1.1.1.8.2  tls 	(unspec:DI [(match_dup 2)
   5420  1.1.1.1.8.2  tls 		    (match_dup 1)] UNSPEC_TPREL))]
   5421  1.1.1.1.8.2  tls {
   5422  1.1.1.1.8.2  tls   operands[1] = XVECEXP (XEXP (operands[1], 0), 0, 0);
   5423  1.1.1.1.8.2  tls   operands[2] = pic_offset_table_rtx;
   5424  1.1.1.1.8.2  tls })
   5425  1.1.1.1.8.2  tls 
   5426  1.1.1.1.8.2  tls (define_insn "*movdi_er_nofix"
   5427  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r,r,r,r,r,m,*f,*f,Q")
   5428  1.1.1.1.8.2  tls 	(match_operand:DI 1 "input_operand" "rJ,K,L,T,s,n,m,rJ,*fJ,Q,*f"))]
   5429  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && ! TARGET_FIX
   5430  1.1.1.1.8.2  tls    && (register_operand (operands[0], DImode)
   5431  1.1.1.1.8.2  tls        || reg_or_0_operand (operands[1], DImode))"
   5432  1.1.1.1.8.2  tls   "@
   5433  1.1.1.1.8.2  tls    mov %r1,%0
   5434  1.1.1.1.8.2  tls    lda %0,%1($31)
   5435  1.1.1.1.8.2  tls    ldah %0,%h1($31)
   5436  1.1.1.1.8.2  tls    #
   5437  1.1.1.1.8.2  tls    #
   5438  1.1.1.1.8.2  tls    #
   5439  1.1.1.1.8.2  tls    ldq%A1 %0,%1
   5440  1.1.1.1.8.2  tls    stq%A0 %r1,%0
   5441  1.1.1.1.8.2  tls    fmov %R1,%0
   5442  1.1.1.1.8.2  tls    ldt %0,%1
   5443  1.1.1.1.8.2  tls    stt %R1,%0"
   5444  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,iadd,iadd,iadd,ldsym,multi,ild,ist,fcpys,fld,fst")
   5445  1.1.1.1.8.2  tls    (set_attr "usegp" "*,*,*,yes,*,*,*,*,*,*,*")])
   5446  1.1.1.1.8.2  tls 
   5447  1.1.1.1.8.2  tls ;; The 'U' constraint matches symbolic operands on Unicos/Mk. Those should
   5448  1.1.1.1.8.2  tls ;; have been split up by the rules above but we shouldn't reject the
   5449  1.1.1.1.8.2  tls ;; possibility of them getting through.
   5450  1.1.1.1.8.2  tls 
   5451  1.1.1.1.8.2  tls (define_insn "*movdi_nofix"
   5452  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r,r,r,r,r,m,*f,*f,Q")
   5453  1.1.1.1.8.2  tls 	(match_operand:DI 1 "input_operand" "rJ,K,L,U,s,n,m,rJ,*fJ,Q,*f"))]
   5454  1.1.1.1.8.2  tls   "! TARGET_FIX
   5455  1.1.1.1.8.2  tls    && (register_operand (operands[0], DImode)
   5456  1.1.1.1.8.2  tls        || reg_or_0_operand (operands[1], DImode))"
   5457  1.1.1.1.8.2  tls   "@
   5458  1.1.1.1.8.2  tls    bis $31,%r1,%0
   5459  1.1.1.1.8.2  tls    lda %0,%1($31)
   5460  1.1.1.1.8.2  tls    ldah %0,%h1($31)
   5461  1.1.1.1.8.2  tls    laum %0,%t1($31)\;sll %0,32,%0\;lalm %0,%t1(%0)\;lal %0,%t1(%0)
   5462  1.1.1.1.8.2  tls    lda %0,%1
   5463  1.1.1.1.8.2  tls    #
   5464  1.1.1.1.8.2  tls    ldq%A1 %0,%1
   5465  1.1.1.1.8.2  tls    stq%A0 %r1,%0
   5466  1.1.1.1.8.2  tls    cpys %R1,%R1,%0
   5467  1.1.1.1.8.2  tls    ldt %0,%1
   5468  1.1.1.1.8.2  tls    stt %R1,%0"
   5469  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,iadd,iadd,ldsym,ldsym,multi,ild,ist,fcpys,fld,fst")
   5470  1.1.1.1.8.2  tls    (set_attr "length" "*,*,*,16,*,*,*,*,*,*,*")])
   5471  1.1.1.1.8.2  tls 
   5472  1.1.1.1.8.2  tls (define_insn "*movdi_er_fix"
   5473  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "nonimmediate_operand"
   5474  1.1.1.1.8.2  tls 				"=r,r,r,r,r,r,r, m, *f,*f, Q, r,*f")
   5475  1.1.1.1.8.2  tls 	(match_operand:DI 1 "input_operand"
   5476  1.1.1.1.8.2  tls 				"rJ,K,L,T,s,n,m,rJ,*fJ, Q,*f,*f, r"))]
   5477  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_FIX
   5478  1.1.1.1.8.2  tls    && (register_operand (operands[0], DImode)
   5479  1.1.1.1.8.2  tls        || reg_or_0_operand (operands[1], DImode))"
   5480  1.1.1.1.8.2  tls   "@
   5481  1.1.1.1.8.2  tls    mov %r1,%0
   5482  1.1.1.1.8.2  tls    lda %0,%1($31)
   5483  1.1.1.1.8.2  tls    ldah %0,%h1($31)
   5484  1.1.1.1.8.2  tls    #
   5485  1.1.1.1.8.2  tls    #
   5486  1.1.1.1.8.2  tls    #
   5487  1.1.1.1.8.2  tls    ldq%A1 %0,%1
   5488  1.1.1.1.8.2  tls    stq%A0 %r1,%0
   5489  1.1.1.1.8.2  tls    fmov %R1,%0
   5490  1.1.1.1.8.2  tls    ldt %0,%1
   5491  1.1.1.1.8.2  tls    stt %R1,%0
   5492  1.1.1.1.8.2  tls    ftoit %1,%0
   5493  1.1.1.1.8.2  tls    itoft %1,%0"
   5494  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,iadd,iadd,iadd,ldsym,multi,ild,ist,fcpys,fld,fst,ftoi,itof")
   5495  1.1.1.1.8.2  tls    (set_attr "usegp" "*,*,*,yes,*,*,*,*,*,*,*,*,*")])
   5496  1.1.1.1.8.2  tls 
   5497  1.1.1.1.8.2  tls (define_insn "*movdi_fix"
   5498  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r,r,r,r,m,*f,*f,Q,r,*f")
   5499  1.1.1.1.8.2  tls 	(match_operand:DI 1 "input_operand" "rJ,K,L,s,n,m,rJ,*fJ,Q,*f,*f,r"))]
   5500  1.1.1.1.8.2  tls   "! TARGET_EXPLICIT_RELOCS && TARGET_FIX
   5501  1.1.1.1.8.2  tls    && (register_operand (operands[0], DImode)
   5502  1.1.1.1.8.2  tls        || reg_or_0_operand (operands[1], DImode))"
   5503  1.1.1.1.8.2  tls   "@
   5504  1.1.1.1.8.2  tls    bis $31,%r1,%0
   5505  1.1.1.1.8.2  tls    lda %0,%1($31)
   5506  1.1.1.1.8.2  tls    ldah %0,%h1($31)
   5507  1.1.1.1.8.2  tls    lda %0,%1
   5508  1.1.1.1.8.2  tls    #
   5509  1.1.1.1.8.2  tls    ldq%A1 %0,%1
   5510  1.1.1.1.8.2  tls    stq%A0 %r1,%0
   5511  1.1.1.1.8.2  tls    cpys %R1,%R1,%0
   5512  1.1.1.1.8.2  tls    ldt %0,%1
   5513  1.1.1.1.8.2  tls    stt %R1,%0
   5514  1.1.1.1.8.2  tls    ftoit %1,%0
   5515  1.1.1.1.8.2  tls    itoft %1,%0"
   5516  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,iadd,iadd,ldsym,multi,ild,ist,fcpys,fld,fst,ftoi,itof")])
   5517  1.1.1.1.8.2  tls 
   5518  1.1.1.1.8.2  tls ;; VMS needs to set up "vms_base_regno" for unwinding.  This move
   5519  1.1.1.1.8.2  tls ;; often appears dead to the life analysis code, at which point we
   5520  1.1.1.1.8.2  tls ;; die for emitting dead prologue instructions.  Force this live.
   5521  1.1.1.1.8.2  tls 
   5522  1.1.1.1.8.2  tls (define_insn "force_movdi"
   5523  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   5524  1.1.1.1.8.2  tls 	(unspec_volatile:DI [(match_operand:DI 1 "register_operand" "r")]
   5525  1.1.1.1.8.2  tls 			    UNSPECV_FORCE_MOV))]
   5526  1.1.1.1.8.2  tls   ""
   5527  1.1.1.1.8.2  tls   "mov %1,%0"
   5528  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   5529  1.1.1.1.8.2  tls 
   5530  1.1.1.1.8.2  tls ;; We do three major things here: handle mem->mem, put 64-bit constants in
   5531  1.1.1.1.8.2  tls ;; memory, and construct long 32-bit constants.
   5532  1.1.1.1.8.2  tls 
   5533  1.1.1.1.8.2  tls (define_expand "movdi"
   5534  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "nonimmediate_operand" "")
   5535  1.1.1.1.8.2  tls 	(match_operand:DI 1 "general_operand" ""))]
   5536  1.1.1.1.8.2  tls   ""
   5537  1.1.1.1.8.2  tls {
   5538  1.1.1.1.8.2  tls   if (alpha_expand_mov (DImode, operands))
   5539  1.1.1.1.8.2  tls     DONE;
   5540  1.1.1.1.8.2  tls })
   5541  1.1.1.1.8.2  tls 
   5542  1.1.1.1.8.2  tls ;; Split a load of a large constant into the appropriate two-insn
   5543  1.1.1.1.8.2  tls ;; sequence.
   5544  1.1.1.1.8.2  tls 
   5545  1.1.1.1.8.2  tls (define_split
   5546  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   5547  1.1.1.1.8.2  tls 	(match_operand:DI 1 "non_add_const_operand" ""))]
   5548  1.1.1.1.8.2  tls   ""
   5549  1.1.1.1.8.2  tls   [(const_int 0)]
   5550  1.1.1.1.8.2  tls {
   5551  1.1.1.1.8.2  tls   if (alpha_split_const_mov (DImode, operands))
   5552  1.1.1.1.8.2  tls     DONE;
   5553  1.1.1.1.8.2  tls   else
   5554  1.1.1.1.8.2  tls     FAIL;
   5555  1.1.1.1.8.2  tls })
   5556  1.1.1.1.8.2  tls 
   5557  1.1.1.1.8.2  tls ;; We need to prevent reload from splitting TImode moves, because it
   5558  1.1.1.1.8.2  tls ;; might decide to overwrite a pointer with the value it points to.
   5559  1.1.1.1.8.2  tls ;; In that case we have to do the loads in the appropriate order so
   5560  1.1.1.1.8.2  tls ;; that the pointer is not destroyed too early.
   5561  1.1.1.1.8.2  tls 
   5562  1.1.1.1.8.2  tls (define_insn_and_split "*movti_internal"
   5563  1.1.1.1.8.2  tls   [(set (match_operand:TI 0 "nonimmediate_operand" "=r,o")
   5564  1.1.1.1.8.2  tls         (match_operand:TI 1 "input_operand" "roJ,rJ"))]
   5565  1.1.1.1.8.2  tls   "(register_operand (operands[0], TImode)
   5566  1.1.1.1.8.2  tls     /* Prevent rematerialization of constants.  */
   5567  1.1.1.1.8.2  tls     && ! CONSTANT_P (operands[1]))
   5568  1.1.1.1.8.2  tls    || reg_or_0_operand (operands[1], TImode)"
   5569  1.1.1.1.8.2  tls   "#"
   5570  1.1.1.1.8.2  tls   "reload_completed"
   5571  1.1.1.1.8.2  tls   [(set (match_dup 0) (match_dup 2))
   5572  1.1.1.1.8.2  tls    (set (match_dup 1) (match_dup 3))]
   5573  1.1.1.1.8.2  tls {
   5574  1.1.1.1.8.2  tls   alpha_split_tmode_pair (operands, TImode, true);
   5575  1.1.1.1.8.2  tls })
   5576  1.1.1.1.8.2  tls 
   5577  1.1.1.1.8.2  tls (define_expand "movti"
   5578  1.1.1.1.8.2  tls   [(set (match_operand:TI 0 "nonimmediate_operand" "")
   5579  1.1.1.1.8.2  tls         (match_operand:TI 1 "general_operand" ""))]
   5580  1.1.1.1.8.2  tls   ""
   5581  1.1.1.1.8.2  tls {
   5582  1.1.1.1.8.2  tls   if (MEM_P (operands[0])
   5583  1.1.1.1.8.2  tls       && ! reg_or_0_operand (operands[1], TImode))
   5584  1.1.1.1.8.2  tls     operands[1] = force_reg (TImode, operands[1]);
   5585  1.1.1.1.8.2  tls 
   5586  1.1.1.1.8.2  tls   if (operands[1] == const0_rtx)
   5587  1.1.1.1.8.2  tls     ;
   5588  1.1.1.1.8.2  tls   /* We must put 64-bit constants in memory.  We could keep the
   5589  1.1.1.1.8.2  tls      32-bit constants in TImode and rely on the splitter, but
   5590  1.1.1.1.8.2  tls      this doesn't seem to be worth the pain.  */
   5591  1.1.1.1.8.2  tls   else if (CONST_INT_P (operands[1])
   5592  1.1.1.1.8.2  tls 	   || GET_CODE (operands[1]) == CONST_DOUBLE)
   5593  1.1.1.1.8.2  tls     {
   5594  1.1.1.1.8.2  tls       rtx in[2], out[2], target;
   5595  1.1.1.1.8.2  tls 
   5596  1.1.1.1.8.2  tls       gcc_assert (can_create_pseudo_p ());
   5597  1.1.1.1.8.2  tls 
   5598  1.1.1.1.8.2  tls       split_double (operands[1], &in[0], &in[1]);
   5599  1.1.1.1.8.2  tls 
   5600  1.1.1.1.8.2  tls       if (in[0] == const0_rtx)
   5601  1.1.1.1.8.2  tls 	out[0] = const0_rtx;
   5602  1.1.1.1.8.2  tls       else
   5603  1.1.1.1.8.2  tls 	{
   5604  1.1.1.1.8.2  tls 	  out[0] = gen_reg_rtx (DImode);
   5605  1.1.1.1.8.2  tls 	  emit_insn (gen_movdi (out[0], in[0]));
   5606  1.1.1.1.8.2  tls 	}
   5607  1.1.1.1.8.2  tls 
   5608  1.1.1.1.8.2  tls       if (in[1] == const0_rtx)
   5609  1.1.1.1.8.2  tls 	out[1] = const0_rtx;
   5610  1.1.1.1.8.2  tls       else
   5611  1.1.1.1.8.2  tls 	{
   5612  1.1.1.1.8.2  tls 	  out[1] = gen_reg_rtx (DImode);
   5613  1.1.1.1.8.2  tls 	  emit_insn (gen_movdi (out[1], in[1]));
   5614  1.1.1.1.8.2  tls 	}
   5615  1.1.1.1.8.2  tls 
   5616  1.1.1.1.8.2  tls       if (!REG_P (operands[0]))
   5617  1.1.1.1.8.2  tls 	target = gen_reg_rtx (TImode);
   5618  1.1.1.1.8.2  tls       else
   5619  1.1.1.1.8.2  tls 	target = operands[0];
   5620  1.1.1.1.8.2  tls 
   5621  1.1.1.1.8.2  tls       emit_insn (gen_movdi (operand_subword (target, 0, 0, TImode), out[0]));
   5622  1.1.1.1.8.2  tls       emit_insn (gen_movdi (operand_subword (target, 1, 0, TImode), out[1]));
   5623  1.1.1.1.8.2  tls 
   5624  1.1.1.1.8.2  tls       if (target != operands[0])
   5625  1.1.1.1.8.2  tls 	emit_insn (gen_rtx_SET (VOIDmode, operands[0], target));
   5626  1.1.1.1.8.2  tls 
   5627  1.1.1.1.8.2  tls       DONE;
   5628  1.1.1.1.8.2  tls     }
   5629  1.1.1.1.8.2  tls })
   5630  1.1.1.1.8.2  tls 
   5631  1.1.1.1.8.2  tls ;; These are the partial-word cases.
   5632  1.1.1.1.8.2  tls ;;
   5633  1.1.1.1.8.2  tls ;; First we have the code to load an aligned word.  Operand 0 is the register
   5634  1.1.1.1.8.2  tls ;; in which to place the result.  It's mode is QImode or HImode.  Operand 1
   5635  1.1.1.1.8.2  tls ;; is an SImode MEM at the low-order byte of the proper word.  Operand 2 is the
   5636  1.1.1.1.8.2  tls ;; number of bits within the word that the value is.  Operand 3 is an SImode
   5637  1.1.1.1.8.2  tls ;; scratch register.  If operand 0 is a hard register, operand 3 may be the
   5638  1.1.1.1.8.2  tls ;; same register.  It is allowed to conflict with operand 1 as well.
   5639  1.1.1.1.8.2  tls 
   5640  1.1.1.1.8.2  tls (define_expand "aligned_loadqi"
   5641  1.1.1.1.8.2  tls   [(set (match_operand:SI 3 "register_operand" "")
   5642  1.1.1.1.8.2  tls 	(match_operand:SI 1 "memory_operand" ""))
   5643  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   5644  1.1.1.1.8.2  tls 	(zero_extract:DI (subreg:DI (match_dup 3) 0)
   5645  1.1.1.1.8.2  tls 			 (const_int 8)
   5646  1.1.1.1.8.2  tls 			 (match_operand:DI 2 "const_int_operand" "")))]
   5647  1.1.1.1.8.2  tls 
   5648  1.1.1.1.8.2  tls   ""
   5649  1.1.1.1.8.2  tls   "")
   5650  1.1.1.1.8.2  tls 
   5651  1.1.1.1.8.2  tls (define_expand "aligned_loadhi"
   5652  1.1.1.1.8.2  tls   [(set (match_operand:SI 3 "register_operand" "")
   5653  1.1.1.1.8.2  tls 	(match_operand:SI 1 "memory_operand" ""))
   5654  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   5655  1.1.1.1.8.2  tls 	(zero_extract:DI (subreg:DI (match_dup 3) 0)
   5656  1.1.1.1.8.2  tls 			 (const_int 16)
   5657  1.1.1.1.8.2  tls 			 (match_operand:DI 2 "const_int_operand" "")))]
   5658  1.1.1.1.8.2  tls 
   5659  1.1.1.1.8.2  tls   ""
   5660  1.1.1.1.8.2  tls   "")
   5661  1.1.1.1.8.2  tls 
   5662  1.1.1.1.8.2  tls ;; Similar for unaligned loads, where we use the sequence from the
   5663  1.1.1.1.8.2  tls ;; Alpha Architecture manual. We have to distinguish between little-endian
   5664  1.1.1.1.8.2  tls ;; and big-endian systems as the sequences are different.
   5665  1.1.1.1.8.2  tls ;;
   5666  1.1.1.1.8.2  tls ;; Operand 1 is the address.  Operands 2 and 3 are temporaries, where
   5667  1.1.1.1.8.2  tls ;; operand 3 can overlap the input and output registers.
   5668  1.1.1.1.8.2  tls 
   5669  1.1.1.1.8.2  tls (define_expand "unaligned_loadqi"
   5670  1.1.1.1.8.2  tls   [(use (match_operand:DI 0 "register_operand" ""))
   5671  1.1.1.1.8.2  tls    (use (match_operand:DI 1 "address_operand" ""))
   5672  1.1.1.1.8.2  tls    (use (match_operand:DI 2 "register_operand" ""))
   5673  1.1.1.1.8.2  tls    (use (match_operand:DI 3 "register_operand" ""))]
   5674  1.1.1.1.8.2  tls   ""
   5675  1.1.1.1.8.2  tls {
   5676  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   5677  1.1.1.1.8.2  tls     emit_insn (gen_unaligned_loadqi_be (operands[0], operands[1],
   5678  1.1.1.1.8.2  tls 					operands[2], operands[3]));
   5679  1.1.1.1.8.2  tls   else
   5680  1.1.1.1.8.2  tls     emit_insn (gen_unaligned_loadqi_le (operands[0], operands[1],
   5681  1.1.1.1.8.2  tls 					operands[2], operands[3]));
   5682  1.1.1.1.8.2  tls   DONE;
   5683  1.1.1.1.8.2  tls })
   5684  1.1.1.1.8.2  tls 
   5685  1.1.1.1.8.2  tls (define_expand "unaligned_loadqi_le"
   5686  1.1.1.1.8.2  tls   [(set (match_operand:DI 2 "register_operand" "")
   5687  1.1.1.1.8.2  tls 	(mem:DI (and:DI (match_operand:DI 1 "address_operand" "")
   5688  1.1.1.1.8.2  tls 			(const_int -8))))
   5689  1.1.1.1.8.2  tls    (set (match_operand:DI 3 "register_operand" "")
   5690  1.1.1.1.8.2  tls 	(match_dup 1))
   5691  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   5692  1.1.1.1.8.2  tls 	(zero_extract:DI (match_dup 2)
   5693  1.1.1.1.8.2  tls 			 (const_int 8)
   5694  1.1.1.1.8.2  tls 			 (ashift:DI (match_dup 3) (const_int 3))))]
   5695  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   5696  1.1.1.1.8.2  tls   "")
   5697  1.1.1.1.8.2  tls 
   5698  1.1.1.1.8.2  tls (define_expand "unaligned_loadqi_be"
   5699  1.1.1.1.8.2  tls   [(set (match_operand:DI 2 "register_operand" "")
   5700  1.1.1.1.8.2  tls 	(mem:DI (and:DI (match_operand:DI 1 "address_operand" "")
   5701  1.1.1.1.8.2  tls 			(const_int -8))))
   5702  1.1.1.1.8.2  tls    (set (match_operand:DI 3 "register_operand" "")
   5703  1.1.1.1.8.2  tls 	(match_dup 1))
   5704  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   5705  1.1.1.1.8.2  tls 	(zero_extract:DI (match_dup 2)
   5706  1.1.1.1.8.2  tls 			 (const_int 8)
   5707  1.1.1.1.8.2  tls 			 (minus:DI
   5708  1.1.1.1.8.2  tls 			   (const_int 56)
   5709  1.1.1.1.8.2  tls 			   (ashift:DI (match_dup 3) (const_int 3)))))]
   5710  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   5711  1.1.1.1.8.2  tls   "")
   5712  1.1.1.1.8.2  tls 
   5713  1.1.1.1.8.2  tls (define_expand "unaligned_loadhi"
   5714  1.1.1.1.8.2  tls   [(use (match_operand:DI 0 "register_operand" ""))
   5715  1.1.1.1.8.2  tls    (use (match_operand:DI 1 "address_operand" ""))
   5716  1.1.1.1.8.2  tls    (use (match_operand:DI 2 "register_operand" ""))
   5717  1.1.1.1.8.2  tls    (use (match_operand:DI 3 "register_operand" ""))]
   5718  1.1.1.1.8.2  tls   ""
   5719  1.1.1.1.8.2  tls {
   5720  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   5721  1.1.1.1.8.2  tls     emit_insn (gen_unaligned_loadhi_be (operands[0], operands[1],
   5722  1.1.1.1.8.2  tls 					operands[2], operands[3]));
   5723  1.1.1.1.8.2  tls   else
   5724  1.1.1.1.8.2  tls     emit_insn (gen_unaligned_loadhi_le (operands[0], operands[1],
   5725  1.1.1.1.8.2  tls 					operands[2], operands[3]));
   5726  1.1.1.1.8.2  tls   DONE;
   5727  1.1.1.1.8.2  tls })
   5728  1.1.1.1.8.2  tls 
   5729  1.1.1.1.8.2  tls (define_expand "unaligned_loadhi_le"
   5730  1.1.1.1.8.2  tls   [(set (match_operand:DI 2 "register_operand" "")
   5731  1.1.1.1.8.2  tls 	(mem:DI (and:DI (match_operand:DI 1 "address_operand" "")
   5732  1.1.1.1.8.2  tls 			(const_int -8))))
   5733  1.1.1.1.8.2  tls    (set (match_operand:DI 3 "register_operand" "")
   5734  1.1.1.1.8.2  tls 	(match_dup 1))
   5735  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   5736  1.1.1.1.8.2  tls 	(zero_extract:DI (match_dup 2)
   5737  1.1.1.1.8.2  tls 			 (const_int 16)
   5738  1.1.1.1.8.2  tls 			 (ashift:DI (match_dup 3) (const_int 3))))]
   5739  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   5740  1.1.1.1.8.2  tls   "")
   5741  1.1.1.1.8.2  tls 
   5742  1.1.1.1.8.2  tls (define_expand "unaligned_loadhi_be"
   5743  1.1.1.1.8.2  tls   [(set (match_operand:DI 2 "register_operand" "")
   5744  1.1.1.1.8.2  tls 	(mem:DI (and:DI (match_operand:DI 1 "address_operand" "")
   5745  1.1.1.1.8.2  tls 			(const_int -8))))
   5746  1.1.1.1.8.2  tls    (set (match_operand:DI 3 "register_operand" "")
   5747  1.1.1.1.8.2  tls 	(plus:DI (match_dup 1) (const_int 1)))
   5748  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "")
   5749  1.1.1.1.8.2  tls 	(zero_extract:DI (match_dup 2)
   5750  1.1.1.1.8.2  tls 			 (const_int 16)
   5751  1.1.1.1.8.2  tls 			 (minus:DI
   5752  1.1.1.1.8.2  tls 			   (const_int 56)
   5753  1.1.1.1.8.2  tls 			   (ashift:DI (match_dup 3) (const_int 3)))))]
   5754  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   5755  1.1.1.1.8.2  tls   "")
   5756  1.1.1.1.8.2  tls 
   5757  1.1.1.1.8.2  tls ;; Storing an aligned byte or word requires two temporaries.  Operand 0 is the
   5758  1.1.1.1.8.2  tls ;; aligned SImode MEM.  Operand 1 is the register containing the
   5759  1.1.1.1.8.2  tls ;; byte or word to store.  Operand 2 is the number of bits within the word that
   5760  1.1.1.1.8.2  tls ;; the value should be placed.  Operands 3 and 4 are SImode temporaries.
   5761  1.1.1.1.8.2  tls 
   5762  1.1.1.1.8.2  tls (define_expand "aligned_store"
   5763  1.1.1.1.8.2  tls   [(set (match_operand:SI 3 "register_operand" "")
   5764  1.1.1.1.8.2  tls 	(match_operand:SI 0 "memory_operand" ""))
   5765  1.1.1.1.8.2  tls    (set (subreg:DI (match_dup 3) 0)
   5766  1.1.1.1.8.2  tls 	(and:DI (subreg:DI (match_dup 3) 0) (match_dup 5)))
   5767  1.1.1.1.8.2  tls    (set (subreg:DI (match_operand:SI 4 "register_operand" "") 0)
   5768  1.1.1.1.8.2  tls 	(ashift:DI (zero_extend:DI (match_operand 1 "register_operand" ""))
   5769  1.1.1.1.8.2  tls 		   (match_operand:DI 2 "const_int_operand" "")))
   5770  1.1.1.1.8.2  tls    (set (subreg:DI (match_dup 4) 0)
   5771  1.1.1.1.8.2  tls 	(ior:DI (subreg:DI (match_dup 4) 0) (subreg:DI (match_dup 3) 0)))
   5772  1.1.1.1.8.2  tls    (set (match_dup 0) (match_dup 4))]
   5773  1.1.1.1.8.2  tls   ""
   5774  1.1.1.1.8.2  tls {
   5775  1.1.1.1.8.2  tls   operands[5] = GEN_INT (~ (GET_MODE_MASK (GET_MODE (operands[1]))
   5776  1.1.1.1.8.2  tls 			    << INTVAL (operands[2])));
   5777  1.1.1.1.8.2  tls })
   5778  1.1.1.1.8.2  tls 
   5779  1.1.1.1.8.2  tls ;; For the unaligned byte and halfword cases, we use code similar to that
   5780  1.1.1.1.8.2  tls ;; in the ;; Architecture book, but reordered to lower the number of registers
   5781  1.1.1.1.8.2  tls ;; required.  Operand 0 is the address.  Operand 1 is the data to store.
   5782  1.1.1.1.8.2  tls ;; Operands 2, 3, and 4 are DImode temporaries, where operands 2 and 4 may
   5783  1.1.1.1.8.2  tls ;; be the same temporary, if desired.  If the address is in a register,
   5784  1.1.1.1.8.2  tls ;; operand 2 can be that register.
   5785  1.1.1.1.8.2  tls 
   5786  1.1.1.1.8.2  tls (define_expand "unaligned_storeqi"
   5787  1.1.1.1.8.2  tls   [(use (match_operand:DI 0 "address_operand" ""))
   5788  1.1.1.1.8.2  tls    (use (match_operand:QI 1 "register_operand" ""))
   5789  1.1.1.1.8.2  tls    (use (match_operand:DI 2 "register_operand" ""))
   5790  1.1.1.1.8.2  tls    (use (match_operand:DI 3 "register_operand" ""))
   5791  1.1.1.1.8.2  tls    (use (match_operand:DI 4 "register_operand" ""))]
   5792  1.1.1.1.8.2  tls   ""
   5793  1.1.1.1.8.2  tls {
   5794  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   5795  1.1.1.1.8.2  tls     emit_insn (gen_unaligned_storeqi_be (operands[0], operands[1],
   5796  1.1.1.1.8.2  tls 					 operands[2], operands[3],
   5797  1.1.1.1.8.2  tls 					 operands[4]));
   5798  1.1.1.1.8.2  tls   else
   5799  1.1.1.1.8.2  tls     emit_insn (gen_unaligned_storeqi_le (operands[0], operands[1],
   5800  1.1.1.1.8.2  tls 					 operands[2], operands[3],
   5801  1.1.1.1.8.2  tls 					 operands[4]));
   5802  1.1.1.1.8.2  tls   DONE;
   5803  1.1.1.1.8.2  tls })
   5804  1.1.1.1.8.2  tls 
   5805  1.1.1.1.8.2  tls (define_expand "unaligned_storeqi_le"
   5806  1.1.1.1.8.2  tls   [(set (match_operand:DI 3 "register_operand" "")
   5807  1.1.1.1.8.2  tls 	(mem:DI (and:DI (match_operand:DI 0 "address_operand" "")
   5808  1.1.1.1.8.2  tls 			(const_int -8))))
   5809  1.1.1.1.8.2  tls    (set (match_operand:DI 2 "register_operand" "")
   5810  1.1.1.1.8.2  tls 	(match_dup 0))
   5811  1.1.1.1.8.2  tls    (set (match_dup 3)
   5812  1.1.1.1.8.2  tls 	(and:DI (not:DI (ashift:DI (const_int 255)
   5813  1.1.1.1.8.2  tls 				   (ashift:DI (match_dup 2) (const_int 3))))
   5814  1.1.1.1.8.2  tls 		(match_dup 3)))
   5815  1.1.1.1.8.2  tls    (set (match_operand:DI 4 "register_operand" "")
   5816  1.1.1.1.8.2  tls 	(ashift:DI (zero_extend:DI (match_operand:QI 1 "register_operand" ""))
   5817  1.1.1.1.8.2  tls 		   (ashift:DI (match_dup 2) (const_int 3))))
   5818  1.1.1.1.8.2  tls    (set (match_dup 4) (ior:DI (match_dup 4) (match_dup 3)))
   5819  1.1.1.1.8.2  tls    (set (mem:DI (and:DI (match_dup 0) (const_int -8)))
   5820  1.1.1.1.8.2  tls 	(match_dup 4))]
   5821  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   5822  1.1.1.1.8.2  tls   "")
   5823  1.1.1.1.8.2  tls 
   5824  1.1.1.1.8.2  tls (define_expand "unaligned_storeqi_be"
   5825  1.1.1.1.8.2  tls   [(set (match_operand:DI 3 "register_operand" "")
   5826  1.1.1.1.8.2  tls 	(mem:DI (and:DI (match_operand:DI 0 "address_operand" "")
   5827  1.1.1.1.8.2  tls 			(const_int -8))))
   5828  1.1.1.1.8.2  tls    (set (match_operand:DI 2 "register_operand" "")
   5829  1.1.1.1.8.2  tls 	(match_dup 0))
   5830  1.1.1.1.8.2  tls    (set (match_dup 3)
   5831  1.1.1.1.8.2  tls 	(and:DI (not:DI (ashift:DI (const_int 255)
   5832  1.1.1.1.8.2  tls 			  (minus:DI (const_int 56)
   5833  1.1.1.1.8.2  tls 				    (ashift:DI (match_dup 2) (const_int 3)))))
   5834  1.1.1.1.8.2  tls 		(match_dup 3)))
   5835  1.1.1.1.8.2  tls    (set (match_operand:DI 4 "register_operand" "")
   5836  1.1.1.1.8.2  tls 	(ashift:DI (zero_extend:DI (match_operand:QI 1 "register_operand" ""))
   5837  1.1.1.1.8.2  tls 		   (minus:DI (const_int 56)
   5838  1.1.1.1.8.2  tls 		     (ashift:DI (match_dup 2) (const_int 3)))))
   5839  1.1.1.1.8.2  tls    (set (match_dup 4) (ior:DI (match_dup 4) (match_dup 3)))
   5840  1.1.1.1.8.2  tls    (set (mem:DI (and:DI (match_dup 0) (const_int -8)))
   5841  1.1.1.1.8.2  tls 	(match_dup 4))]
   5842  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   5843  1.1.1.1.8.2  tls   "")
   5844  1.1.1.1.8.2  tls 
   5845  1.1.1.1.8.2  tls (define_expand "unaligned_storehi"
   5846  1.1.1.1.8.2  tls   [(use (match_operand:DI 0 "address_operand" ""))
   5847  1.1.1.1.8.2  tls    (use (match_operand:HI 1 "register_operand" ""))
   5848  1.1.1.1.8.2  tls    (use (match_operand:DI 2 "register_operand" ""))
   5849  1.1.1.1.8.2  tls    (use (match_operand:DI 3 "register_operand" ""))
   5850  1.1.1.1.8.2  tls    (use (match_operand:DI 4 "register_operand" ""))]
   5851  1.1.1.1.8.2  tls   ""
   5852  1.1.1.1.8.2  tls {
   5853  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   5854  1.1.1.1.8.2  tls     emit_insn (gen_unaligned_storehi_be (operands[0], operands[1],
   5855  1.1.1.1.8.2  tls 					 operands[2], operands[3],
   5856  1.1.1.1.8.2  tls 					 operands[4]));
   5857  1.1.1.1.8.2  tls   else
   5858  1.1.1.1.8.2  tls     emit_insn (gen_unaligned_storehi_le (operands[0], operands[1],
   5859  1.1.1.1.8.2  tls 					 operands[2], operands[3],
   5860  1.1.1.1.8.2  tls 					 operands[4]));
   5861  1.1.1.1.8.2  tls   DONE;
   5862  1.1.1.1.8.2  tls })
   5863  1.1.1.1.8.2  tls 
   5864  1.1.1.1.8.2  tls (define_expand "unaligned_storehi_le"
   5865  1.1.1.1.8.2  tls   [(set (match_operand:DI 3 "register_operand" "")
   5866  1.1.1.1.8.2  tls 	(mem:DI (and:DI (match_operand:DI 0 "address_operand" "")
   5867  1.1.1.1.8.2  tls 			(const_int -8))))
   5868  1.1.1.1.8.2  tls    (set (match_operand:DI 2 "register_operand" "")
   5869  1.1.1.1.8.2  tls 	(match_dup 0))
   5870  1.1.1.1.8.2  tls    (set (match_dup 3)
   5871  1.1.1.1.8.2  tls 	(and:DI (not:DI (ashift:DI (const_int 65535)
   5872  1.1.1.1.8.2  tls 				   (ashift:DI (match_dup 2) (const_int 3))))
   5873  1.1.1.1.8.2  tls 		(match_dup 3)))
   5874  1.1.1.1.8.2  tls    (set (match_operand:DI 4 "register_operand" "")
   5875  1.1.1.1.8.2  tls 	(ashift:DI (zero_extend:DI (match_operand:HI 1 "register_operand" ""))
   5876  1.1.1.1.8.2  tls 		   (ashift:DI (match_dup 2) (const_int 3))))
   5877  1.1.1.1.8.2  tls    (set (match_dup 4) (ior:DI (match_dup 4) (match_dup 3)))
   5878  1.1.1.1.8.2  tls    (set (mem:DI (and:DI (match_dup 0) (const_int -8)))
   5879  1.1.1.1.8.2  tls 	(match_dup 4))]
   5880  1.1.1.1.8.2  tls   "! WORDS_BIG_ENDIAN"
   5881  1.1.1.1.8.2  tls   "")
   5882  1.1.1.1.8.2  tls 
   5883  1.1.1.1.8.2  tls (define_expand "unaligned_storehi_be"
   5884  1.1.1.1.8.2  tls   [(set (match_operand:DI 3 "register_operand" "")
   5885  1.1.1.1.8.2  tls 	(mem:DI (and:DI (match_operand:DI 0 "address_operand" "")
   5886  1.1.1.1.8.2  tls 			(const_int -8))))
   5887  1.1.1.1.8.2  tls    (set (match_operand:DI 2 "register_operand" "")
   5888  1.1.1.1.8.2  tls 	(plus:DI (match_dup 5) (const_int 1)))
   5889  1.1.1.1.8.2  tls    (set (match_dup 3)
   5890  1.1.1.1.8.2  tls 	(and:DI (not:DI (ashift:DI
   5891  1.1.1.1.8.2  tls 			  (const_int 65535)
   5892  1.1.1.1.8.2  tls 			  (minus:DI (const_int 56)
   5893  1.1.1.1.8.2  tls 				    (ashift:DI (match_dup 2) (const_int 3)))))
   5894  1.1.1.1.8.2  tls 		(match_dup 3)))
   5895  1.1.1.1.8.2  tls    (set (match_operand:DI 4 "register_operand" "")
   5896  1.1.1.1.8.2  tls 	(ashift:DI (zero_extend:DI (match_operand:HI 1 "register_operand" ""))
   5897  1.1.1.1.8.2  tls 		   (minus:DI (const_int 56)
   5898  1.1.1.1.8.2  tls 			     (ashift:DI (match_dup 2) (const_int 3)))))
   5899  1.1.1.1.8.2  tls    (set (match_dup 4) (ior:DI (match_dup 4) (match_dup 3)))
   5900  1.1.1.1.8.2  tls    (set (mem:DI (and:DI (match_dup 0) (const_int -8)))
   5901  1.1.1.1.8.2  tls 	(match_dup 4))]
   5902  1.1.1.1.8.2  tls   "WORDS_BIG_ENDIAN"
   5903  1.1.1.1.8.2  tls   "operands[5] = force_reg (DImode, operands[0]);")
   5904  1.1.1.1.8.2  tls 
   5906  1.1.1.1.8.2  tls ;; Here are the define_expand's for QI and HI moves that use the above
   5907  1.1.1.1.8.2  tls ;; patterns.  We have the normal sets, plus the ones that need scratch
   5908  1.1.1.1.8.2  tls ;; registers for reload.
   5909  1.1.1.1.8.2  tls 
   5910  1.1.1.1.8.2  tls (define_expand "movqi"
   5911  1.1.1.1.8.2  tls   [(set (match_operand:QI 0 "nonimmediate_operand" "")
   5912  1.1.1.1.8.2  tls 	(match_operand:QI 1 "general_operand" ""))]
   5913  1.1.1.1.8.2  tls   ""
   5914  1.1.1.1.8.2  tls {
   5915  1.1.1.1.8.2  tls   if (TARGET_BWX
   5916  1.1.1.1.8.2  tls       ? alpha_expand_mov (QImode, operands)
   5917  1.1.1.1.8.2  tls       : alpha_expand_mov_nobwx (QImode, operands))
   5918  1.1.1.1.8.2  tls     DONE;
   5919  1.1.1.1.8.2  tls })
   5920  1.1.1.1.8.2  tls 
   5921  1.1.1.1.8.2  tls (define_expand "movhi"
   5922  1.1.1.1.8.2  tls   [(set (match_operand:HI 0 "nonimmediate_operand" "")
   5923  1.1.1.1.8.2  tls 	(match_operand:HI 1 "general_operand" ""))]
   5924  1.1.1.1.8.2  tls   ""
   5925  1.1.1.1.8.2  tls {
   5926  1.1.1.1.8.2  tls   if (TARGET_BWX
   5927  1.1.1.1.8.2  tls       ? alpha_expand_mov (HImode, operands)
   5928  1.1.1.1.8.2  tls       : alpha_expand_mov_nobwx (HImode, operands))
   5929  1.1.1.1.8.2  tls     DONE;
   5930  1.1.1.1.8.2  tls })
   5931  1.1.1.1.8.2  tls 
   5932  1.1.1.1.8.2  tls ;; We need to hook into the extra support that we have for HImode 
   5933  1.1.1.1.8.2  tls ;; reloads when BWX insns are not available.
   5934  1.1.1.1.8.2  tls (define_expand "movcqi"
   5935  1.1.1.1.8.2  tls   [(set (match_operand:CQI 0 "nonimmediate_operand" "")
   5936  1.1.1.1.8.2  tls 	(match_operand:CQI 1 "general_operand" ""))]
   5937  1.1.1.1.8.2  tls   "!TARGET_BWX"
   5938  1.1.1.1.8.2  tls {
   5939  1.1.1.1.8.2  tls   if (GET_CODE (operands[0]) == CONCAT || GET_CODE (operands[1]) == CONCAT)
   5940  1.1.1.1.8.2  tls     ;
   5941  1.1.1.1.8.2  tls   else if (!any_memory_operand (operands[0], CQImode))
   5942  1.1.1.1.8.2  tls     {
   5943  1.1.1.1.8.2  tls       if (!any_memory_operand (operands[1], CQImode))
   5944  1.1.1.1.8.2  tls 	{
   5945  1.1.1.1.8.2  tls 	  emit_move_insn (gen_lowpart (HImode, operands[0]),
   5946  1.1.1.1.8.2  tls 			  gen_lowpart (HImode, operands[1]));
   5947  1.1.1.1.8.2  tls 	  DONE;
   5948  1.1.1.1.8.2  tls 	}
   5949  1.1.1.1.8.2  tls       if (aligned_memory_operand (operands[1], CQImode))
   5950  1.1.1.1.8.2  tls 	{
   5951  1.1.1.1.8.2  tls 	  bool done;
   5952  1.1.1.1.8.2  tls 	do_aligned1:
   5953  1.1.1.1.8.2  tls 	  operands[1] = gen_lowpart (HImode, operands[1]);
   5954  1.1.1.1.8.2  tls 	do_aligned2:
   5955  1.1.1.1.8.2  tls 	  operands[0] = gen_lowpart (HImode, operands[0]);
   5956  1.1.1.1.8.2  tls 	  done = alpha_expand_mov_nobwx (HImode, operands);
   5957  1.1.1.1.8.2  tls 	  gcc_assert (done);
   5958  1.1.1.1.8.2  tls 	  DONE;
   5959  1.1.1.1.8.2  tls 	}
   5960  1.1.1.1.8.2  tls     }
   5961  1.1.1.1.8.2  tls   else if (aligned_memory_operand (operands[0], CQImode))
   5962  1.1.1.1.8.2  tls     {
   5963  1.1.1.1.8.2  tls       if (MEM_P (operands[1]))
   5964  1.1.1.1.8.2  tls 	{
   5965  1.1.1.1.8.2  tls 	  rtx x = gen_reg_rtx (HImode);
   5966  1.1.1.1.8.2  tls 	  emit_move_insn (gen_lowpart (CQImode, x), operands[1]);
   5967  1.1.1.1.8.2  tls 	  operands[1] = x;
   5968  1.1.1.1.8.2  tls 	  goto do_aligned2;
   5969  1.1.1.1.8.2  tls 	}
   5970  1.1.1.1.8.2  tls       goto do_aligned1;
   5971  1.1.1.1.8.2  tls     }
   5972  1.1.1.1.8.2  tls 
   5973  1.1.1.1.8.2  tls   gcc_assert (!reload_in_progress);
   5974  1.1.1.1.8.2  tls   emit_move_complex_parts (operands[0], operands[1]);
   5975  1.1.1.1.8.2  tls   DONE;
   5976  1.1.1.1.8.2  tls })
   5977  1.1.1.1.8.2  tls 
   5978  1.1.1.1.8.2  tls ;; Here are the versions for reload.
   5979  1.1.1.1.8.2  tls ;; 
   5980  1.1.1.1.8.2  tls ;; The aligned input case is recognized early in alpha_secondary_reload
   5981  1.1.1.1.8.2  tls ;; in order to avoid allocating an unnecessary scratch register.
   5982  1.1.1.1.8.2  tls ;; 
   5983  1.1.1.1.8.2  tls ;; Note that in the unaligned cases we know that the operand must not be
   5984  1.1.1.1.8.2  tls ;; a pseudo-register because stack slots are always aligned references.
   5985  1.1.1.1.8.2  tls 
   5986  1.1.1.1.8.2  tls (define_expand "reload_in<mode>"
   5987  1.1.1.1.8.2  tls   [(parallel [(match_operand:RELOAD12 0 "register_operand" "=r")
   5988  1.1.1.1.8.2  tls 	      (match_operand:RELOAD12 1 "any_memory_operand" "m")
   5989  1.1.1.1.8.2  tls 	      (match_operand:TI 2 "register_operand" "=&r")])]
   5990  1.1.1.1.8.2  tls   "!TARGET_BWX"
   5991  1.1.1.1.8.2  tls {
   5992  1.1.1.1.8.2  tls   rtx scratch, seq, addr;
   5993  1.1.1.1.8.2  tls   unsigned regno = REGNO (operands[2]);
   5994  1.1.1.1.8.2  tls 
   5995  1.1.1.1.8.2  tls   /* It is possible that one of the registers we got for operands[2]
   5996  1.1.1.1.8.2  tls      might coincide with that of operands[0] (which is why we made
   5997  1.1.1.1.8.2  tls      it TImode).  Pick the other one to use as our scratch.  */
   5998  1.1.1.1.8.2  tls   if (regno == REGNO (operands[0]))
   5999  1.1.1.1.8.2  tls     regno++;
   6000  1.1.1.1.8.2  tls   scratch = gen_rtx_REG (DImode, regno);
   6001  1.1.1.1.8.2  tls 
   6002  1.1.1.1.8.2  tls   addr = get_unaligned_address (operands[1]);
   6003  1.1.1.1.8.2  tls   operands[0] = gen_rtx_REG (DImode, REGNO (operands[0]));
   6004  1.1.1.1.8.2  tls   seq = gen_unaligned_load<reloadmode> (operands[0], addr,
   6005  1.1.1.1.8.2  tls 					scratch, operands[0]);
   6006  1.1.1.1.8.2  tls   alpha_set_memflags (seq, operands[1]);
   6007  1.1.1.1.8.2  tls 
   6008  1.1.1.1.8.2  tls   emit_insn (seq);
   6009  1.1.1.1.8.2  tls   DONE;
   6010  1.1.1.1.8.2  tls })
   6011  1.1.1.1.8.2  tls 
   6012  1.1.1.1.8.2  tls (define_expand "reload_out<mode>"
   6013  1.1.1.1.8.2  tls   [(parallel [(match_operand:RELOAD12 0 "any_memory_operand" "=m")
   6014  1.1.1.1.8.2  tls 	      (match_operand:RELOAD12 1 "register_operand" "r")
   6015  1.1.1.1.8.2  tls 	      (match_operand:TI 2 "register_operand" "=&r")])]
   6016  1.1.1.1.8.2  tls   "! TARGET_BWX"
   6017  1.1.1.1.8.2  tls {
   6018  1.1.1.1.8.2  tls   unsigned regno = REGNO (operands[2]);
   6019  1.1.1.1.8.2  tls 
   6020  1.1.1.1.8.2  tls   if (<MODE>mode == CQImode)
   6021  1.1.1.1.8.2  tls     {
   6022  1.1.1.1.8.2  tls       operands[0] = gen_lowpart (HImode, operands[0]);
   6023  1.1.1.1.8.2  tls       operands[1] = gen_lowpart (HImode, operands[1]);
   6024  1.1.1.1.8.2  tls     }
   6025  1.1.1.1.8.2  tls 
   6026  1.1.1.1.8.2  tls   if (aligned_memory_operand (operands[0], <MODE>mode))
   6027  1.1.1.1.8.2  tls     {
   6028  1.1.1.1.8.2  tls       emit_insn (gen_reload_out<reloadmode>_aligned
   6029  1.1.1.1.8.2  tls 		 (operands[0], operands[1],
   6030  1.1.1.1.8.2  tls 		  gen_rtx_REG (SImode, regno),
   6031  1.1.1.1.8.2  tls 		  gen_rtx_REG (SImode, regno + 1)));
   6032  1.1.1.1.8.2  tls     }
   6033  1.1.1.1.8.2  tls   else
   6034  1.1.1.1.8.2  tls     {
   6035  1.1.1.1.8.2  tls       rtx addr = get_unaligned_address (operands[0]);
   6036  1.1.1.1.8.2  tls       rtx scratch1 = gen_rtx_REG (DImode, regno);
   6037  1.1.1.1.8.2  tls       rtx scratch2 = gen_rtx_REG (DImode, regno + 1);
   6038  1.1.1.1.8.2  tls       rtx scratch3 = scratch1;
   6039  1.1.1.1.8.2  tls       rtx seq;
   6040  1.1.1.1.8.2  tls 
   6041  1.1.1.1.8.2  tls       if (REG_P (addr))
   6042  1.1.1.1.8.2  tls 	scratch1 = addr;
   6043  1.1.1.1.8.2  tls 
   6044  1.1.1.1.8.2  tls       seq = gen_unaligned_store<reloadmode> (addr, operands[1], scratch1,
   6045  1.1.1.1.8.2  tls 					     scratch2, scratch3);
   6046  1.1.1.1.8.2  tls       alpha_set_memflags (seq, operands[0]);
   6047  1.1.1.1.8.2  tls       emit_insn (seq);
   6048  1.1.1.1.8.2  tls     }
   6049  1.1.1.1.8.2  tls   DONE;
   6050  1.1.1.1.8.2  tls })
   6051  1.1.1.1.8.2  tls 
   6052  1.1.1.1.8.2  tls ;; Helpers for the above.  The way reload is structured, we can't
   6053  1.1.1.1.8.2  tls ;; always get a proper address for a stack slot during reload_foo
   6054  1.1.1.1.8.2  tls ;; expansion, so we must delay our address manipulations until after.
   6055  1.1.1.1.8.2  tls 
   6056  1.1.1.1.8.2  tls (define_insn_and_split "reload_in<mode>_aligned"
   6057  1.1.1.1.8.2  tls   [(set (match_operand:I12MODE 0 "register_operand" "=r")
   6058  1.1.1.1.8.2  tls         (match_operand:I12MODE 1 "memory_operand" "m"))]
   6059  1.1.1.1.8.2  tls   "!TARGET_BWX && (reload_in_progress || reload_completed)"
   6060  1.1.1.1.8.2  tls   "#"
   6061  1.1.1.1.8.2  tls   "!TARGET_BWX && reload_completed"
   6062  1.1.1.1.8.2  tls   [(const_int 0)]
   6063  1.1.1.1.8.2  tls {
   6064  1.1.1.1.8.2  tls   rtx aligned_mem, bitnum;
   6065  1.1.1.1.8.2  tls   get_aligned_mem (operands[1], &aligned_mem, &bitnum);
   6066  1.1.1.1.8.2  tls   emit_insn (gen_aligned_load<reloadmode>
   6067  1.1.1.1.8.2  tls 	     (gen_lowpart (DImode, operands[0]), aligned_mem, bitnum,
   6068  1.1.1.1.8.2  tls 	      gen_rtx_REG (SImode, REGNO (operands[0]))));
   6069  1.1.1.1.8.2  tls   DONE;
   6070  1.1.1.1.8.2  tls })
   6071  1.1.1.1.8.2  tls 
   6072  1.1.1.1.8.2  tls (define_insn_and_split "reload_out<mode>_aligned"
   6073  1.1.1.1.8.2  tls   [(set (match_operand:I12MODE 0 "memory_operand" "=m")
   6074  1.1.1.1.8.2  tls         (match_operand:I12MODE 1 "register_operand" "r"))
   6075  1.1.1.1.8.2  tls    (clobber (match_operand:SI 2 "register_operand" "=r"))
   6076  1.1.1.1.8.2  tls    (clobber (match_operand:SI 3 "register_operand" "=r"))]
   6077  1.1.1.1.8.2  tls   "!TARGET_BWX && (reload_in_progress || reload_completed)"
   6078  1.1.1.1.8.2  tls   "#"
   6079  1.1.1.1.8.2  tls   "!TARGET_BWX && reload_completed"
   6080  1.1.1.1.8.2  tls   [(const_int 0)]
   6081  1.1.1.1.8.2  tls {
   6082  1.1.1.1.8.2  tls   rtx aligned_mem, bitnum;
   6083  1.1.1.1.8.2  tls   get_aligned_mem (operands[0], &aligned_mem, &bitnum);
   6084  1.1.1.1.8.2  tls   emit_insn (gen_aligned_store (aligned_mem, operands[1], bitnum,
   6085  1.1.1.1.8.2  tls 				operands[2], operands[3]));
   6086  1.1.1.1.8.2  tls   DONE;
   6087  1.1.1.1.8.2  tls })
   6088  1.1.1.1.8.2  tls 
   6090  1.1.1.1.8.2  tls ;; Vector operations
   6091  1.1.1.1.8.2  tls 
   6092  1.1.1.1.8.2  tls (define_mode_iterator VEC [V8QI V4HI V2SI])
   6093  1.1.1.1.8.2  tls 
   6094  1.1.1.1.8.2  tls (define_expand "mov<mode>"
   6095  1.1.1.1.8.2  tls   [(set (match_operand:VEC 0 "nonimmediate_operand" "")
   6096  1.1.1.1.8.2  tls         (match_operand:VEC 1 "general_operand" ""))]
   6097  1.1.1.1.8.2  tls   ""
   6098  1.1.1.1.8.2  tls {
   6099  1.1.1.1.8.2  tls   if (alpha_expand_mov (<MODE>mode, operands))
   6100  1.1.1.1.8.2  tls     DONE;
   6101  1.1.1.1.8.2  tls })
   6102  1.1.1.1.8.2  tls 
   6103  1.1.1.1.8.2  tls (define_split
   6104  1.1.1.1.8.2  tls   [(set (match_operand:VEC 0 "register_operand" "")
   6105  1.1.1.1.8.2  tls 	(match_operand:VEC 1 "non_zero_const_operand" ""))]
   6106  1.1.1.1.8.2  tls   ""
   6107  1.1.1.1.8.2  tls   [(const_int 0)]
   6108  1.1.1.1.8.2  tls {
   6109  1.1.1.1.8.2  tls   if (alpha_split_const_mov (<MODE>mode, operands))
   6110  1.1.1.1.8.2  tls     DONE;
   6111  1.1.1.1.8.2  tls   else
   6112  1.1.1.1.8.2  tls     FAIL;
   6113  1.1.1.1.8.2  tls })
   6114  1.1.1.1.8.2  tls 
   6115  1.1.1.1.8.2  tls 
   6116  1.1.1.1.8.2  tls (define_expand "movmisalign<mode>"
   6117  1.1.1.1.8.2  tls   [(set (match_operand:VEC 0 "nonimmediate_operand" "")
   6118  1.1.1.1.8.2  tls         (match_operand:VEC 1 "general_operand" ""))]
   6119  1.1.1.1.8.2  tls   ""
   6120  1.1.1.1.8.2  tls {
   6121  1.1.1.1.8.2  tls   alpha_expand_movmisalign (<MODE>mode, operands);
   6122  1.1.1.1.8.2  tls   DONE;
   6123  1.1.1.1.8.2  tls })
   6124  1.1.1.1.8.2  tls 
   6125  1.1.1.1.8.2  tls (define_insn "*mov<mode>_fix"
   6126  1.1.1.1.8.2  tls   [(set (match_operand:VEC 0 "nonimmediate_operand" "=r,r,r,m,*f,*f,m,r,*f")
   6127  1.1.1.1.8.2  tls 	(match_operand:VEC 1 "input_operand" "rW,i,m,rW,*fW,m,*f,*f,r"))]
   6128  1.1.1.1.8.2  tls   "TARGET_FIX
   6129  1.1.1.1.8.2  tls    && (register_operand (operands[0], <MODE>mode)
   6130  1.1.1.1.8.2  tls        || reg_or_0_operand (operands[1], <MODE>mode))"
   6131  1.1.1.1.8.2  tls   "@
   6132  1.1.1.1.8.2  tls    bis $31,%r1,%0
   6133  1.1.1.1.8.2  tls    #
   6134  1.1.1.1.8.2  tls    ldq %0,%1
   6135  1.1.1.1.8.2  tls    stq %r1,%0
   6136  1.1.1.1.8.2  tls    cpys %R1,%R1,%0
   6137  1.1.1.1.8.2  tls    ldt %0,%1
   6138  1.1.1.1.8.2  tls    stt %R1,%0
   6139  1.1.1.1.8.2  tls    ftoit %1,%0
   6140  1.1.1.1.8.2  tls    itoft %1,%0"
   6141  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,multi,ild,ist,fcpys,fld,fst,ftoi,itof")])
   6142  1.1.1.1.8.2  tls 
   6143  1.1.1.1.8.2  tls (define_insn "*mov<mode>_nofix"
   6144  1.1.1.1.8.2  tls   [(set (match_operand:VEC 0 "nonimmediate_operand" "=r,r,r,m,*f,*f,m")
   6145  1.1.1.1.8.2  tls 	(match_operand:VEC 1 "input_operand" "rW,i,m,rW,*fW,m,*f"))]
   6146  1.1.1.1.8.2  tls   "! TARGET_FIX
   6147  1.1.1.1.8.2  tls    && (register_operand (operands[0], <MODE>mode)
   6148  1.1.1.1.8.2  tls        || reg_or_0_operand (operands[1], <MODE>mode))"
   6149  1.1.1.1.8.2  tls   "@
   6150  1.1.1.1.8.2  tls    bis $31,%r1,%0
   6151  1.1.1.1.8.2  tls    #
   6152  1.1.1.1.8.2  tls    ldq %0,%1
   6153  1.1.1.1.8.2  tls    stq %r1,%0
   6154  1.1.1.1.8.2  tls    cpys %R1,%R1,%0
   6155  1.1.1.1.8.2  tls    ldt %0,%1
   6156  1.1.1.1.8.2  tls    stt %R1,%0"
   6157  1.1.1.1.8.2  tls   [(set_attr "type" "ilog,multi,ild,ist,fcpys,fld,fst")])
   6158  1.1.1.1.8.2  tls 
   6159  1.1.1.1.8.2  tls (define_insn "uminv8qi3"
   6160  1.1.1.1.8.2  tls   [(set (match_operand:V8QI 0 "register_operand" "=r")
   6161  1.1.1.1.8.2  tls 	(umin:V8QI (match_operand:V8QI 1 "reg_or_0_operand" "rW")
   6162  1.1.1.1.8.2  tls 		   (match_operand:V8QI 2 "reg_or_0_operand" "rW")))]
   6163  1.1.1.1.8.2  tls   "TARGET_MAX"
   6164  1.1.1.1.8.2  tls   "minub8 %r1,%r2,%0"
   6165  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   6166  1.1.1.1.8.2  tls 
   6167  1.1.1.1.8.2  tls (define_insn "sminv8qi3"
   6168  1.1.1.1.8.2  tls   [(set (match_operand:V8QI 0 "register_operand" "=r")
   6169  1.1.1.1.8.2  tls 	(smin:V8QI (match_operand:V8QI 1 "reg_or_0_operand" "rW")
   6170  1.1.1.1.8.2  tls 		   (match_operand:V8QI 2 "reg_or_0_operand" "rW")))]
   6171  1.1.1.1.8.2  tls   "TARGET_MAX"
   6172  1.1.1.1.8.2  tls   "minsb8 %r1,%r2,%0"
   6173  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   6174  1.1.1.1.8.2  tls 
   6175  1.1.1.1.8.2  tls (define_insn "uminv4hi3"
   6176  1.1.1.1.8.2  tls   [(set (match_operand:V4HI 0 "register_operand" "=r")
   6177  1.1.1.1.8.2  tls 	(umin:V4HI (match_operand:V4HI 1 "reg_or_0_operand" "rW")
   6178  1.1.1.1.8.2  tls 		   (match_operand:V4HI 2 "reg_or_0_operand" "rW")))]
   6179  1.1.1.1.8.2  tls   "TARGET_MAX"
   6180  1.1.1.1.8.2  tls   "minuw4 %r1,%r2,%0"
   6181  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   6182  1.1.1.1.8.2  tls 
   6183  1.1.1.1.8.2  tls (define_insn "sminv4hi3"
   6184  1.1.1.1.8.2  tls   [(set (match_operand:V4HI 0 "register_operand" "=r")
   6185  1.1.1.1.8.2  tls 	(smin:V4HI (match_operand:V4HI 1 "reg_or_0_operand" "rW")
   6186  1.1.1.1.8.2  tls 		   (match_operand:V4HI 2 "reg_or_0_operand" "rW")))]
   6187  1.1.1.1.8.2  tls   "TARGET_MAX"
   6188  1.1.1.1.8.2  tls   "minsw4 %r1,%r2,%0"
   6189  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   6190  1.1.1.1.8.2  tls 
   6191  1.1.1.1.8.2  tls (define_insn "umaxv8qi3"
   6192  1.1.1.1.8.2  tls   [(set (match_operand:V8QI 0 "register_operand" "=r")
   6193  1.1.1.1.8.2  tls 	(umax:V8QI (match_operand:V8QI 1 "reg_or_0_operand" "rW")
   6194  1.1.1.1.8.2  tls 		   (match_operand:V8QI 2 "reg_or_0_operand" "rW")))]
   6195  1.1.1.1.8.2  tls   "TARGET_MAX"
   6196  1.1.1.1.8.2  tls   "maxub8 %r1,%r2,%0"
   6197  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   6198  1.1.1.1.8.2  tls 
   6199  1.1.1.1.8.2  tls (define_insn "smaxv8qi3"
   6200  1.1.1.1.8.2  tls   [(set (match_operand:V8QI 0 "register_operand" "=r")
   6201  1.1.1.1.8.2  tls 	(smax:V8QI (match_operand:V8QI 1 "reg_or_0_operand" "rW")
   6202  1.1.1.1.8.2  tls 		   (match_operand:V8QI 2 "reg_or_0_operand" "rW")))]
   6203  1.1.1.1.8.2  tls   "TARGET_MAX"
   6204  1.1.1.1.8.2  tls   "maxsb8 %r1,%r2,%0"
   6205  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   6206  1.1.1.1.8.2  tls 
   6207  1.1.1.1.8.2  tls (define_insn "umaxv4hi3"
   6208  1.1.1.1.8.2  tls   [(set (match_operand:V4HI 0 "register_operand" "=r")
   6209  1.1.1.1.8.2  tls 	(umax:V4HI (match_operand:V4HI 1 "reg_or_0_operand" "rW")
   6210  1.1.1.1.8.2  tls 		   (match_operand:V4HI 2 "reg_or_0_operand" "rW")))]
   6211  1.1.1.1.8.2  tls   "TARGET_MAX"
   6212  1.1.1.1.8.2  tls   "maxuw4 %r1,%r2,%0"
   6213  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   6214  1.1.1.1.8.2  tls 
   6215  1.1.1.1.8.2  tls (define_insn "smaxv4hi3"
   6216  1.1.1.1.8.2  tls   [(set (match_operand:V4HI 0 "register_operand" "=r")
   6217  1.1.1.1.8.2  tls 	(smax:V4HI (match_operand:V4HI 1 "reg_or_0_operand" "rW")
   6218  1.1.1.1.8.2  tls 		   (match_operand:V4HI 2 "reg_or_0_operand" "rW")))]
   6219  1.1.1.1.8.2  tls   "TARGET_MAX"
   6220  1.1.1.1.8.2  tls   "maxsw4 %r1,%r2,%0"
   6221  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   6222  1.1.1.1.8.2  tls 
   6223  1.1.1.1.8.2  tls (define_insn "one_cmpl<mode>2"
   6224  1.1.1.1.8.2  tls   [(set (match_operand:VEC 0 "register_operand" "=r")
   6225  1.1.1.1.8.2  tls 	(not:VEC (match_operand:VEC 1 "register_operand" "r")))]
   6226  1.1.1.1.8.2  tls   ""
   6227  1.1.1.1.8.2  tls   "ornot $31,%1,%0"
   6228  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   6229  1.1.1.1.8.2  tls 
   6230  1.1.1.1.8.2  tls (define_insn "and<mode>3"
   6231  1.1.1.1.8.2  tls   [(set (match_operand:VEC 0 "register_operand" "=r")
   6232  1.1.1.1.8.2  tls 	(and:VEC (match_operand:VEC 1 "register_operand" "r")
   6233  1.1.1.1.8.2  tls 		 (match_operand:VEC 2 "register_operand" "r")))]
   6234  1.1.1.1.8.2  tls   ""
   6235  1.1.1.1.8.2  tls   "and %1,%2,%0"
   6236  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   6237  1.1.1.1.8.2  tls 
   6238  1.1.1.1.8.2  tls (define_insn "*andnot<mode>3"
   6239  1.1.1.1.8.2  tls   [(set (match_operand:VEC 0 "register_operand" "=r")
   6240  1.1.1.1.8.2  tls 	(and:VEC (not:VEC (match_operand:VEC 1 "register_operand" "r"))
   6241  1.1.1.1.8.2  tls 		 (match_operand:VEC 2 "register_operand" "r")))]
   6242  1.1.1.1.8.2  tls   ""
   6243  1.1.1.1.8.2  tls   "bic %2,%1,%0"
   6244  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   6245  1.1.1.1.8.2  tls 
   6246  1.1.1.1.8.2  tls (define_insn "ior<mode>3"
   6247  1.1.1.1.8.2  tls   [(set (match_operand:VEC 0 "register_operand" "=r")
   6248  1.1.1.1.8.2  tls 	(ior:VEC (match_operand:VEC 1 "register_operand" "r")
   6249  1.1.1.1.8.2  tls 		 (match_operand:VEC 2 "register_operand" "r")))]
   6250  1.1.1.1.8.2  tls   ""
   6251  1.1.1.1.8.2  tls   "bis %1,%2,%0"
   6252  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   6253  1.1.1.1.8.2  tls 
   6254  1.1.1.1.8.2  tls (define_insn "*iornot<mode>3"
   6255  1.1.1.1.8.2  tls   [(set (match_operand:VEC 0 "register_operand" "=r")
   6256  1.1.1.1.8.2  tls 	(ior:VEC (not:DI (match_operand:VEC 1 "register_operand" "r"))
   6257  1.1.1.1.8.2  tls 		 (match_operand:VEC 2 "register_operand" "r")))]
   6258  1.1.1.1.8.2  tls   ""
   6259  1.1.1.1.8.2  tls   "ornot %2,%1,%0"
   6260  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   6261  1.1.1.1.8.2  tls 
   6262  1.1.1.1.8.2  tls (define_insn "xor<mode>3"
   6263  1.1.1.1.8.2  tls   [(set (match_operand:VEC 0 "register_operand" "=r")
   6264  1.1.1.1.8.2  tls 	(xor:VEC (match_operand:VEC 1 "register_operand" "r")
   6265  1.1.1.1.8.2  tls 		 (match_operand:VEC 2 "register_operand" "r")))]
   6266  1.1.1.1.8.2  tls   ""
   6267  1.1.1.1.8.2  tls   "xor %1,%2,%0"
   6268  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   6269  1.1.1.1.8.2  tls 
   6270  1.1.1.1.8.2  tls (define_insn "*xornot<mode>3"
   6271  1.1.1.1.8.2  tls   [(set (match_operand:VEC 0 "register_operand" "=r")
   6272  1.1.1.1.8.2  tls 	(not:VEC (xor:VEC (match_operand:VEC 1 "register_operand" "r")
   6273  1.1.1.1.8.2  tls 			  (match_operand:VEC 2 "register_operand" "r"))))]
   6274  1.1.1.1.8.2  tls   ""
   6275  1.1.1.1.8.2  tls   "eqv %1,%2,%0"
   6276  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   6277  1.1.1.1.8.2  tls 
   6278  1.1.1.1.8.2  tls (define_expand "vec_shl_<mode>"
   6279  1.1.1.1.8.2  tls   [(set (match_operand:VEC 0 "register_operand" "")
   6280  1.1.1.1.8.2  tls 	(ashift:DI (match_operand:VEC 1 "register_operand" "")
   6281  1.1.1.1.8.2  tls 		   (match_operand:DI 2 "reg_or_6bit_operand" "")))]
   6282  1.1.1.1.8.2  tls   ""
   6283  1.1.1.1.8.2  tls {
   6284  1.1.1.1.8.2  tls   operands[0] = gen_lowpart (DImode, operands[0]);
   6285  1.1.1.1.8.2  tls   operands[1] = gen_lowpart (DImode, operands[1]);
   6286  1.1.1.1.8.2  tls })
   6287  1.1.1.1.8.2  tls 
   6288  1.1.1.1.8.2  tls (define_expand "vec_shr_<mode>"
   6289  1.1.1.1.8.2  tls   [(set (match_operand:VEC 0 "register_operand" "")
   6290  1.1.1.1.8.2  tls         (lshiftrt:DI (match_operand:VEC 1 "register_operand" "")
   6291  1.1.1.1.8.2  tls                      (match_operand:DI 2 "reg_or_6bit_operand" "")))]
   6292  1.1.1.1.8.2  tls   ""
   6293  1.1.1.1.8.2  tls {
   6294  1.1.1.1.8.2  tls   operands[0] = gen_lowpart (DImode, operands[0]);
   6295  1.1.1.1.8.2  tls   operands[1] = gen_lowpart (DImode, operands[1]);
   6296  1.1.1.1.8.2  tls })
   6297  1.1.1.1.8.2  tls 
   6299  1.1.1.1.8.2  tls ;; Bit field extract patterns which use ext[wlq][lh]
   6300  1.1.1.1.8.2  tls 
   6301  1.1.1.1.8.2  tls (define_expand "extv"
   6302  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   6303  1.1.1.1.8.2  tls 	(sign_extract:DI (match_operand:QI 1 "memory_operand" "")
   6304  1.1.1.1.8.2  tls 			 (match_operand:DI 2 "immediate_operand" "")
   6305  1.1.1.1.8.2  tls 			 (match_operand:DI 3 "immediate_operand" "")))]
   6306  1.1.1.1.8.2  tls   ""
   6307  1.1.1.1.8.2  tls {
   6308  1.1.1.1.8.2  tls   int ofs;
   6309  1.1.1.1.8.2  tls 
   6310  1.1.1.1.8.2  tls   /* We can do 16, 32 and 64 bit fields, if aligned on byte boundaries.  */
   6311  1.1.1.1.8.2  tls   if (INTVAL (operands[3]) % 8 != 0
   6312  1.1.1.1.8.2  tls       || (INTVAL (operands[2]) != 16
   6313  1.1.1.1.8.2  tls 	  && INTVAL (operands[2]) != 32
   6314  1.1.1.1.8.2  tls 	  && INTVAL (operands[2]) != 64))
   6315  1.1.1.1.8.2  tls     FAIL;
   6316  1.1.1.1.8.2  tls 
   6317  1.1.1.1.8.2  tls   /* From mips.md: extract_bit_field doesn't verify that our source
   6318  1.1.1.1.8.2  tls      matches the predicate, so we force it to be a MEM here.  */
   6319  1.1.1.1.8.2  tls   if (!MEM_P (operands[1]))
   6320  1.1.1.1.8.2  tls     FAIL;
   6321  1.1.1.1.8.2  tls 
   6322  1.1.1.1.8.2  tls   /* The bit number is relative to the mode of operand 1 which is
   6323  1.1.1.1.8.2  tls      usually QImode (this might actually be a bug in expmed.c). Note 
   6324  1.1.1.1.8.2  tls      that the bit number is negative in big-endian mode in this case.
   6325  1.1.1.1.8.2  tls      We have to convert that to the offset.  */
   6326  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   6327  1.1.1.1.8.2  tls     ofs = GET_MODE_BITSIZE (GET_MODE (operands[1]))
   6328  1.1.1.1.8.2  tls           - INTVAL (operands[2]) - INTVAL (operands[3]);
   6329  1.1.1.1.8.2  tls   else
   6330  1.1.1.1.8.2  tls     ofs = INTVAL (operands[3]);
   6331  1.1.1.1.8.2  tls 
   6332  1.1.1.1.8.2  tls   ofs = ofs / 8;
   6333  1.1.1.1.8.2  tls 
   6334  1.1.1.1.8.2  tls   alpha_expand_unaligned_load (operands[0], operands[1],
   6335  1.1.1.1.8.2  tls 			       INTVAL (operands[2]) / 8,
   6336  1.1.1.1.8.2  tls 			       ofs, 1);
   6337  1.1.1.1.8.2  tls   DONE;
   6338  1.1.1.1.8.2  tls })
   6339  1.1.1.1.8.2  tls 
   6340  1.1.1.1.8.2  tls (define_expand "extzv"
   6341  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   6342  1.1.1.1.8.2  tls 	(zero_extract:DI (match_operand:DI 1 "nonimmediate_operand" "")
   6343  1.1.1.1.8.2  tls 			 (match_operand:DI 2 "immediate_operand" "")
   6344  1.1.1.1.8.2  tls 			 (match_operand:DI 3 "immediate_operand" "")))]
   6345  1.1.1.1.8.2  tls   ""
   6346  1.1.1.1.8.2  tls {
   6347  1.1.1.1.8.2  tls   /* We can do 8, 16, 32 and 64 bit fields, if aligned on byte boundaries.  */
   6348  1.1.1.1.8.2  tls   if (INTVAL (operands[3]) % 8 != 0
   6349  1.1.1.1.8.2  tls       || (INTVAL (operands[2]) != 8
   6350  1.1.1.1.8.2  tls 	  && INTVAL (operands[2]) != 16
   6351  1.1.1.1.8.2  tls 	  && INTVAL (operands[2]) != 32
   6352  1.1.1.1.8.2  tls 	  && INTVAL (operands[2]) != 64))
   6353  1.1.1.1.8.2  tls     FAIL;
   6354  1.1.1.1.8.2  tls 
   6355  1.1.1.1.8.2  tls   if (MEM_P (operands[1]))
   6356  1.1.1.1.8.2  tls     {
   6357  1.1.1.1.8.2  tls       int ofs;
   6358  1.1.1.1.8.2  tls 
   6359  1.1.1.1.8.2  tls       /* Fail 8-bit fields, falling back on a simple byte load.  */
   6360  1.1.1.1.8.2  tls       if (INTVAL (operands[2]) == 8)
   6361  1.1.1.1.8.2  tls 	FAIL;
   6362  1.1.1.1.8.2  tls 
   6363  1.1.1.1.8.2  tls       /* The bit number is relative to the mode of operand 1 which is
   6364  1.1.1.1.8.2  tls 	 usually QImode (this might actually be a bug in expmed.c). Note 
   6365  1.1.1.1.8.2  tls 	 that the bit number is negative in big-endian mode in this case.
   6366  1.1.1.1.8.2  tls 	 We have to convert that to the offset.  */
   6367  1.1.1.1.8.2  tls       if (WORDS_BIG_ENDIAN)
   6368  1.1.1.1.8.2  tls 	ofs = GET_MODE_BITSIZE (GET_MODE (operands[1]))
   6369  1.1.1.1.8.2  tls 	      - INTVAL (operands[2]) - INTVAL (operands[3]);
   6370  1.1.1.1.8.2  tls       else
   6371  1.1.1.1.8.2  tls 	ofs = INTVAL (operands[3]);
   6372  1.1.1.1.8.2  tls 
   6373  1.1.1.1.8.2  tls       ofs = ofs / 8;
   6374  1.1.1.1.8.2  tls 
   6375  1.1.1.1.8.2  tls       alpha_expand_unaligned_load (operands[0], operands[1],
   6376  1.1.1.1.8.2  tls 			           INTVAL (operands[2]) / 8,
   6377  1.1.1.1.8.2  tls 				   ofs, 0);
   6378  1.1.1.1.8.2  tls       DONE;
   6379  1.1.1.1.8.2  tls     }
   6380  1.1.1.1.8.2  tls })
   6381  1.1.1.1.8.2  tls 
   6382  1.1.1.1.8.2  tls (define_expand "insv"
   6383  1.1.1.1.8.2  tls   [(set (zero_extract:DI (match_operand:QI 0 "memory_operand" "")
   6384  1.1.1.1.8.2  tls 			 (match_operand:DI 1 "immediate_operand" "")
   6385  1.1.1.1.8.2  tls 			 (match_operand:DI 2 "immediate_operand" ""))
   6386  1.1.1.1.8.2  tls 	(match_operand:DI 3 "register_operand" ""))]
   6387  1.1.1.1.8.2  tls   ""
   6388  1.1.1.1.8.2  tls {
   6389  1.1.1.1.8.2  tls   int ofs;
   6390  1.1.1.1.8.2  tls 
   6391  1.1.1.1.8.2  tls   /* We can do 16, 32 and 64 bit fields, if aligned on byte boundaries.  */
   6392  1.1.1.1.8.2  tls   if (INTVAL (operands[2]) % 8 != 0
   6393  1.1.1.1.8.2  tls       || (INTVAL (operands[1]) != 16
   6394  1.1.1.1.8.2  tls 	  && INTVAL (operands[1]) != 32
   6395  1.1.1.1.8.2  tls 	  && INTVAL (operands[1]) != 64))
   6396  1.1.1.1.8.2  tls     FAIL;
   6397  1.1.1.1.8.2  tls 
   6398  1.1.1.1.8.2  tls   /* From mips.md: store_bit_field doesn't verify that our source
   6399  1.1.1.1.8.2  tls      matches the predicate, so we force it to be a MEM here.  */
   6400  1.1.1.1.8.2  tls   if (!MEM_P (operands[0]))
   6401  1.1.1.1.8.2  tls     FAIL;
   6402  1.1.1.1.8.2  tls 
   6403  1.1.1.1.8.2  tls   /* The bit number is relative to the mode of operand 1 which is
   6404  1.1.1.1.8.2  tls      usually QImode (this might actually be a bug in expmed.c). Note 
   6405  1.1.1.1.8.2  tls      that the bit number is negative in big-endian mode in this case.
   6406  1.1.1.1.8.2  tls      We have to convert that to the offset.  */
   6407  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   6408  1.1.1.1.8.2  tls     ofs = GET_MODE_BITSIZE (GET_MODE (operands[0]))
   6409  1.1.1.1.8.2  tls           - INTVAL (operands[1]) - INTVAL (operands[2]);
   6410  1.1.1.1.8.2  tls   else
   6411  1.1.1.1.8.2  tls     ofs = INTVAL (operands[2]);
   6412  1.1.1.1.8.2  tls 
   6413  1.1.1.1.8.2  tls   ofs = ofs / 8;
   6414  1.1.1.1.8.2  tls 
   6415  1.1.1.1.8.2  tls   alpha_expand_unaligned_store (operands[0], operands[3],
   6416  1.1.1.1.8.2  tls 			        INTVAL (operands[1]) / 8, ofs);
   6417  1.1.1.1.8.2  tls   DONE;
   6418  1.1.1.1.8.2  tls })
   6419  1.1.1.1.8.2  tls 
   6420  1.1.1.1.8.2  tls ;; Block move/clear, see alpha.c for more details.
   6421  1.1.1.1.8.2  tls ;; Argument 0 is the destination
   6422  1.1.1.1.8.2  tls ;; Argument 1 is the source
   6423  1.1.1.1.8.2  tls ;; Argument 2 is the length
   6424  1.1.1.1.8.2  tls ;; Argument 3 is the alignment
   6425  1.1.1.1.8.2  tls 
   6426  1.1.1.1.8.2  tls (define_expand "movmemqi"
   6427  1.1.1.1.8.2  tls   [(parallel [(set (match_operand:BLK 0 "memory_operand" "")
   6428  1.1.1.1.8.2  tls 		   (match_operand:BLK 1 "memory_operand" ""))
   6429  1.1.1.1.8.2  tls 	      (use (match_operand:DI 2 "immediate_operand" ""))
   6430  1.1.1.1.8.2  tls 	      (use (match_operand:DI 3 "immediate_operand" ""))])]
   6431  1.1.1.1.8.2  tls   ""
   6432  1.1.1.1.8.2  tls {
   6433  1.1.1.1.8.2  tls   if (alpha_expand_block_move (operands))
   6434  1.1.1.1.8.2  tls     DONE;
   6435  1.1.1.1.8.2  tls   else
   6436  1.1.1.1.8.2  tls     FAIL;
   6437  1.1.1.1.8.2  tls })
   6438  1.1.1.1.8.2  tls 
   6439  1.1.1.1.8.2  tls (define_expand "movmemdi"
   6440  1.1.1.1.8.2  tls   [(parallel [(set (match_operand:BLK 0 "memory_operand" "")
   6441  1.1.1.1.8.2  tls 		   (match_operand:BLK 1 "memory_operand" ""))
   6442  1.1.1.1.8.2  tls 	      (use (match_operand:DI 2 "immediate_operand" ""))
   6443  1.1.1.1.8.2  tls 	      (use (match_operand:DI 3 "immediate_operand" ""))
   6444  1.1.1.1.8.2  tls 	      (use (match_dup 4))
   6445  1.1.1.1.8.2  tls 	      (clobber (reg:DI 25))
   6446  1.1.1.1.8.2  tls 	      (clobber (reg:DI 16))
   6447  1.1.1.1.8.2  tls 	      (clobber (reg:DI 17))
   6448  1.1.1.1.8.2  tls 	      (clobber (reg:DI 18))
   6449  1.1.1.1.8.2  tls 	      (clobber (reg:DI 19))
   6450  1.1.1.1.8.2  tls 	      (clobber (reg:DI 20))
   6451  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))
   6452  1.1.1.1.8.2  tls 	      (clobber (reg:DI 27))])]
   6453  1.1.1.1.8.2  tls   "TARGET_ABI_OPEN_VMS"
   6454  1.1.1.1.8.2  tls {
   6455  1.1.1.1.8.2  tls   operands[4] = alpha_need_linkage ("OTS$MOVE", 0);
   6456  1.1.1.1.8.2  tls })
   6457  1.1.1.1.8.2  tls 
   6458  1.1.1.1.8.2  tls (define_insn "*movmemdi_1"
   6459  1.1.1.1.8.2  tls   [(set (match_operand:BLK 0 "memory_operand" "=m,=m")
   6460  1.1.1.1.8.2  tls 	(match_operand:BLK 1 "memory_operand" "m,m"))
   6461  1.1.1.1.8.2  tls    (use (match_operand:DI 2 "nonmemory_operand" "r,i"))
   6462  1.1.1.1.8.2  tls    (use (match_operand:DI 3 "immediate_operand" ""))
   6463  1.1.1.1.8.2  tls    (use (match_operand:DI 4 "call_operand" "i,i"))
   6464  1.1.1.1.8.2  tls    (clobber (reg:DI 25))
   6465  1.1.1.1.8.2  tls    (clobber (reg:DI 16))
   6466  1.1.1.1.8.2  tls    (clobber (reg:DI 17))
   6467  1.1.1.1.8.2  tls    (clobber (reg:DI 18))
   6468  1.1.1.1.8.2  tls    (clobber (reg:DI 19))
   6469  1.1.1.1.8.2  tls    (clobber (reg:DI 20))
   6470  1.1.1.1.8.2  tls    (clobber (reg:DI 26))
   6471  1.1.1.1.8.2  tls    (clobber (reg:DI 27))]
   6472  1.1.1.1.8.2  tls   "TARGET_ABI_OPEN_VMS"
   6473  1.1.1.1.8.2  tls {
   6474  1.1.1.1.8.2  tls   operands [5] = alpha_use_linkage (operands [4], cfun->decl, 0, 1);
   6475  1.1.1.1.8.2  tls   switch (which_alternative)
   6476  1.1.1.1.8.2  tls     {
   6477  1.1.1.1.8.2  tls     case 0:
   6478  1.1.1.1.8.2  tls 	return "lda $16,%0\;bis $31,%2,$17\;lda $18,%1\;ldq $26,%5\;lda $25,3($31)\;jsr $26,%4\;ldq $27,0($29)";
   6479  1.1.1.1.8.2  tls     case 1:
   6480  1.1.1.1.8.2  tls 	return "lda $16,%0\;lda $17,%2($31)\;lda $18,%1\;ldq $26,%5\;lda $25,3($31)\;jsr $26,%4\;ldq $27,0($29)";
   6481  1.1.1.1.8.2  tls     default:
   6482  1.1.1.1.8.2  tls       gcc_unreachable ();
   6483  1.1.1.1.8.2  tls     }
   6484  1.1.1.1.8.2  tls }
   6485  1.1.1.1.8.2  tls   [(set_attr "type" "multi")
   6486  1.1.1.1.8.2  tls    (set_attr "length" "28")])
   6487  1.1.1.1.8.2  tls 
   6488  1.1.1.1.8.2  tls (define_expand "setmemqi"
   6489  1.1.1.1.8.2  tls   [(parallel [(set (match_operand:BLK 0 "memory_operand" "")
   6490  1.1.1.1.8.2  tls 		   (match_operand 2 "const_int_operand" ""))
   6491  1.1.1.1.8.2  tls 	      (use (match_operand:DI 1 "immediate_operand" ""))
   6492  1.1.1.1.8.2  tls 	      (use (match_operand:DI 3 "immediate_operand" ""))])]
   6493  1.1.1.1.8.2  tls   ""
   6494  1.1.1.1.8.2  tls {
   6495  1.1.1.1.8.2  tls   /* If value to set is not zero, use the library routine.  */
   6496  1.1.1.1.8.2  tls   if (operands[2] != const0_rtx)
   6497  1.1.1.1.8.2  tls     FAIL;
   6498  1.1.1.1.8.2  tls 
   6499  1.1.1.1.8.2  tls   if (alpha_expand_block_clear (operands))
   6500  1.1.1.1.8.2  tls     DONE;
   6501  1.1.1.1.8.2  tls   else
   6502  1.1.1.1.8.2  tls     FAIL;
   6503  1.1.1.1.8.2  tls })
   6504  1.1.1.1.8.2  tls 
   6505  1.1.1.1.8.2  tls (define_expand "setmemdi"
   6506  1.1.1.1.8.2  tls   [(parallel [(set (match_operand:BLK 0 "memory_operand" "")
   6507  1.1.1.1.8.2  tls 		   (match_operand 2 "const_int_operand" ""))
   6508  1.1.1.1.8.2  tls 	      (use (match_operand:DI 1 "immediate_operand" ""))
   6509  1.1.1.1.8.2  tls 	      (use (match_operand:DI 3 "immediate_operand" ""))
   6510  1.1.1.1.8.2  tls 	      (use (match_dup 4))
   6511  1.1.1.1.8.2  tls 	      (clobber (reg:DI 25))
   6512  1.1.1.1.8.2  tls 	      (clobber (reg:DI 16))
   6513  1.1.1.1.8.2  tls 	      (clobber (reg:DI 17))
   6514  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))
   6515  1.1.1.1.8.2  tls 	      (clobber (reg:DI 27))])]
   6516  1.1.1.1.8.2  tls   "TARGET_ABI_OPEN_VMS"
   6517  1.1.1.1.8.2  tls {
   6518  1.1.1.1.8.2  tls   /* If value to set is not zero, use the library routine.  */
   6519  1.1.1.1.8.2  tls   if (operands[2] != const0_rtx)
   6520  1.1.1.1.8.2  tls     FAIL;
   6521  1.1.1.1.8.2  tls 
   6522  1.1.1.1.8.2  tls   operands[4] = alpha_need_linkage ("OTS$ZERO", 0);
   6523  1.1.1.1.8.2  tls })
   6524  1.1.1.1.8.2  tls 
   6525  1.1.1.1.8.2  tls (define_insn "*clrmemdi_1"
   6526  1.1.1.1.8.2  tls   [(set (match_operand:BLK 0 "memory_operand" "=m,=m")
   6527  1.1.1.1.8.2  tls 		   (const_int 0))
   6528  1.1.1.1.8.2  tls    (use (match_operand:DI 1 "nonmemory_operand" "r,i"))
   6529  1.1.1.1.8.2  tls    (use (match_operand:DI 2 "immediate_operand" ""))
   6530  1.1.1.1.8.2  tls    (use (match_operand:DI 3 "call_operand" "i,i"))
   6531  1.1.1.1.8.2  tls    (clobber (reg:DI 25))
   6532  1.1.1.1.8.2  tls    (clobber (reg:DI 16))
   6533  1.1.1.1.8.2  tls    (clobber (reg:DI 17))
   6534  1.1.1.1.8.2  tls    (clobber (reg:DI 26))
   6535  1.1.1.1.8.2  tls    (clobber (reg:DI 27))]
   6536  1.1.1.1.8.2  tls   "TARGET_ABI_OPEN_VMS"
   6537  1.1.1.1.8.2  tls {
   6538  1.1.1.1.8.2  tls   operands [4] = alpha_use_linkage (operands [3], cfun->decl, 0, 1);
   6539  1.1.1.1.8.2  tls   switch (which_alternative)
   6540  1.1.1.1.8.2  tls     {
   6541  1.1.1.1.8.2  tls     case 0:
   6542  1.1.1.1.8.2  tls 	return "lda $16,%0\;bis $31,%1,$17\;ldq $26,%4\;lda $25,2($31)\;jsr $26,%3\;ldq $27,0($29)";
   6543  1.1.1.1.8.2  tls     case 1:
   6544  1.1.1.1.8.2  tls 	return "lda $16,%0\;lda $17,%1($31)\;ldq $26,%4\;lda $25,2($31)\;jsr $26,%3\;ldq $27,0($29)";
   6545  1.1.1.1.8.2  tls     default:
   6546  1.1.1.1.8.2  tls       gcc_unreachable ();
   6547  1.1.1.1.8.2  tls     }
   6548  1.1.1.1.8.2  tls }
   6549  1.1.1.1.8.2  tls   [(set_attr "type" "multi")
   6550  1.1.1.1.8.2  tls    (set_attr "length" "24")])
   6551  1.1.1.1.8.2  tls 
   6552  1.1.1.1.8.2  tls 
   6554  1.1.1.1.8.2  tls ;; Subroutine of stack space allocation.  Perform a stack probe.
   6555  1.1.1.1.8.2  tls (define_expand "probe_stack"
   6556  1.1.1.1.8.2  tls   [(set (match_dup 1) (match_operand:DI 0 "const_int_operand" ""))]
   6557  1.1.1.1.8.2  tls   ""
   6558  1.1.1.1.8.2  tls {
   6559  1.1.1.1.8.2  tls   operands[1] = gen_rtx_MEM (DImode, plus_constant (stack_pointer_rtx,
   6560  1.1.1.1.8.2  tls 						    INTVAL (operands[0])));
   6561  1.1.1.1.8.2  tls   MEM_VOLATILE_P (operands[1]) = 1;
   6562  1.1.1.1.8.2  tls 
   6563  1.1.1.1.8.2  tls   operands[0] = const0_rtx;
   6564  1.1.1.1.8.2  tls })
   6565  1.1.1.1.8.2  tls 
   6566  1.1.1.1.8.2  tls ;; This is how we allocate stack space.  If we are allocating a
   6567  1.1.1.1.8.2  tls ;; constant amount of space and we know it is less than 4096
   6568  1.1.1.1.8.2  tls ;; bytes, we need do nothing.
   6569  1.1.1.1.8.2  tls ;;
   6570  1.1.1.1.8.2  tls ;; If it is more than 4096 bytes, we need to probe the stack
   6571  1.1.1.1.8.2  tls ;; periodically.
   6572  1.1.1.1.8.2  tls (define_expand "allocate_stack"
   6573  1.1.1.1.8.2  tls   [(set (reg:DI 30)
   6574  1.1.1.1.8.2  tls 	(plus:DI (reg:DI 30)
   6575  1.1.1.1.8.2  tls 		 (match_operand:DI 1 "reg_or_cint_operand" "")))
   6576  1.1.1.1.8.2  tls    (set (match_operand:DI 0 "register_operand" "=r")
   6577  1.1.1.1.8.2  tls 	(match_dup 2))]
   6578  1.1.1.1.8.2  tls   ""
   6579  1.1.1.1.8.2  tls {
   6580  1.1.1.1.8.2  tls   if (CONST_INT_P (operands[1])
   6581  1.1.1.1.8.2  tls       && INTVAL (operands[1]) < 32768)
   6582  1.1.1.1.8.2  tls     {
   6583  1.1.1.1.8.2  tls       if (INTVAL (operands[1]) >= 4096)
   6584  1.1.1.1.8.2  tls 	{
   6585  1.1.1.1.8.2  tls 	  /* We do this the same way as in the prologue and generate explicit
   6586  1.1.1.1.8.2  tls 	     probes.  Then we update the stack by the constant.  */
   6587  1.1.1.1.8.2  tls 
   6588  1.1.1.1.8.2  tls 	  int probed = 4096;
   6589  1.1.1.1.8.2  tls 
   6590  1.1.1.1.8.2  tls 	  emit_insn (gen_probe_stack (GEN_INT (- probed)));
   6591  1.1.1.1.8.2  tls 	  while (probed + 8192 < INTVAL (operands[1]))
   6592  1.1.1.1.8.2  tls 	    emit_insn (gen_probe_stack (GEN_INT (- (probed += 8192))));
   6593  1.1.1.1.8.2  tls 
   6594  1.1.1.1.8.2  tls 	  if (probed + 4096 < INTVAL (operands[1]))
   6595  1.1.1.1.8.2  tls 	    emit_insn (gen_probe_stack (GEN_INT (- INTVAL(operands[1]))));
   6596  1.1.1.1.8.2  tls 	}
   6597  1.1.1.1.8.2  tls 
   6598  1.1.1.1.8.2  tls       operands[1] = GEN_INT (- INTVAL (operands[1]));
   6599  1.1.1.1.8.2  tls       operands[2] = virtual_stack_dynamic_rtx;
   6600  1.1.1.1.8.2  tls     }
   6601  1.1.1.1.8.2  tls   else
   6602  1.1.1.1.8.2  tls     {
   6603  1.1.1.1.8.2  tls       rtx out_label = 0;
   6604  1.1.1.1.8.2  tls       rtx loop_label = gen_label_rtx ();
   6605  1.1.1.1.8.2  tls       rtx want = gen_reg_rtx (Pmode);
   6606  1.1.1.1.8.2  tls       rtx tmp = gen_reg_rtx (Pmode);
   6607  1.1.1.1.8.2  tls       rtx memref, test;
   6608  1.1.1.1.8.2  tls 
   6609  1.1.1.1.8.2  tls       emit_insn (gen_subdi3 (want, stack_pointer_rtx,
   6610  1.1.1.1.8.2  tls 			     force_reg (Pmode, operands[1])));
   6611  1.1.1.1.8.2  tls       emit_insn (gen_adddi3 (tmp, stack_pointer_rtx, GEN_INT (-4096)));
   6612  1.1.1.1.8.2  tls 
   6613  1.1.1.1.8.2  tls       if (!CONST_INT_P (operands[1]))
   6614  1.1.1.1.8.2  tls 	{
   6615  1.1.1.1.8.2  tls 	  out_label = gen_label_rtx ();
   6616  1.1.1.1.8.2  tls 	  test = gen_rtx_GEU (VOIDmode, want, tmp);
   6617  1.1.1.1.8.2  tls 	  emit_jump_insn (gen_cbranchdi4 (test, want, tmp, out_label));
   6618  1.1.1.1.8.2  tls 	}
   6619  1.1.1.1.8.2  tls 
   6620  1.1.1.1.8.2  tls       emit_label (loop_label);
   6621  1.1.1.1.8.2  tls       memref = gen_rtx_MEM (DImode, tmp);
   6622  1.1.1.1.8.2  tls       MEM_VOLATILE_P (memref) = 1;
   6623  1.1.1.1.8.2  tls       emit_move_insn (memref, const0_rtx);
   6624  1.1.1.1.8.2  tls       emit_insn (gen_adddi3 (tmp, tmp, GEN_INT(-8192)));
   6625  1.1.1.1.8.2  tls       test = gen_rtx_GTU (VOIDmode, tmp, want);
   6626  1.1.1.1.8.2  tls       emit_jump_insn (gen_cbranchdi4 (test, tmp, want, loop_label));
   6627  1.1.1.1.8.2  tls 
   6628  1.1.1.1.8.2  tls       memref = gen_rtx_MEM (DImode, want);
   6629  1.1.1.1.8.2  tls       MEM_VOLATILE_P (memref) = 1;
   6630  1.1.1.1.8.2  tls       emit_move_insn (memref, const0_rtx);
   6631  1.1.1.1.8.2  tls 
   6632  1.1.1.1.8.2  tls       if (out_label)
   6633  1.1.1.1.8.2  tls 	emit_label (out_label);
   6634  1.1.1.1.8.2  tls 
   6635  1.1.1.1.8.2  tls       emit_move_insn (stack_pointer_rtx, want);
   6636  1.1.1.1.8.2  tls       emit_move_insn (operands[0], virtual_stack_dynamic_rtx);
   6637  1.1.1.1.8.2  tls       DONE;
   6638  1.1.1.1.8.2  tls     }
   6639  1.1.1.1.8.2  tls })
   6640  1.1.1.1.8.2  tls 
   6641  1.1.1.1.8.2  tls ;; This is used by alpha_expand_prolog to do the same thing as above,
   6642  1.1.1.1.8.2  tls ;; except we cannot at that time generate new basic blocks, so we hide
   6643  1.1.1.1.8.2  tls ;; the loop in this one insn.
   6644  1.1.1.1.8.2  tls 
   6645  1.1.1.1.8.2  tls (define_insn "prologue_stack_probe_loop"
   6646  1.1.1.1.8.2  tls   [(unspec_volatile [(match_operand:DI 0 "register_operand" "r")
   6647  1.1.1.1.8.2  tls 		     (match_operand:DI 1 "register_operand" "r")]
   6648  1.1.1.1.8.2  tls 		    UNSPECV_PSPL)]
   6649  1.1.1.1.8.2  tls   ""
   6650  1.1.1.1.8.2  tls {
   6651  1.1.1.1.8.2  tls   operands[2] = gen_label_rtx ();
   6652  1.1.1.1.8.2  tls   (*targetm.asm_out.internal_label) (asm_out_file, "L",
   6653  1.1.1.1.8.2  tls 			     CODE_LABEL_NUMBER (operands[2]));
   6654  1.1.1.1.8.2  tls 
   6655  1.1.1.1.8.2  tls   return "stq $31,-8192(%1)\;subq %0,1,%0\;lda %1,-8192(%1)\;bne %0,%l2";
   6656  1.1.1.1.8.2  tls }
   6657  1.1.1.1.8.2  tls   [(set_attr "length" "16")
   6658  1.1.1.1.8.2  tls    (set_attr "type" "multi")])
   6659  1.1.1.1.8.2  tls 
   6660  1.1.1.1.8.2  tls (define_expand "prologue"
   6661  1.1.1.1.8.2  tls   [(clobber (const_int 0))]
   6662  1.1.1.1.8.2  tls   ""
   6663  1.1.1.1.8.2  tls {
   6664  1.1.1.1.8.2  tls   alpha_expand_prologue ();
   6665  1.1.1.1.8.2  tls   DONE;
   6666  1.1.1.1.8.2  tls })
   6667  1.1.1.1.8.2  tls 
   6668  1.1.1.1.8.2  tls ;; These take care of emitting the ldgp insn in the prologue. This will be
   6669  1.1.1.1.8.2  tls ;; an lda/ldah pair and we want to align them properly.  So we have two
   6670  1.1.1.1.8.2  tls ;; unspec_volatile insns, the first of which emits the ldgp assembler macro
   6671  1.1.1.1.8.2  tls ;; and the second of which emits nothing.  However, both are marked as type
   6672  1.1.1.1.8.2  tls ;; IADD (the default) so the alignment code in alpha.c does the right thing
   6673  1.1.1.1.8.2  tls ;; with them.
   6674  1.1.1.1.8.2  tls 
   6675  1.1.1.1.8.2  tls (define_expand "prologue_ldgp"
   6676  1.1.1.1.8.2  tls   [(set (match_dup 0)
   6677  1.1.1.1.8.2  tls 	(unspec_volatile:DI [(match_dup 1) (match_dup 2)] UNSPECV_LDGP1))
   6678  1.1.1.1.8.2  tls    (set (match_dup 0)
   6679  1.1.1.1.8.2  tls 	(unspec_volatile:DI [(match_dup 0) (match_dup 2)] UNSPECV_PLDGP2))]
   6680  1.1.1.1.8.2  tls   ""
   6681  1.1.1.1.8.2  tls {
   6682  1.1.1.1.8.2  tls   operands[0] = pic_offset_table_rtx;
   6683  1.1.1.1.8.2  tls   operands[1] = gen_rtx_REG (Pmode, 27);
   6684  1.1.1.1.8.2  tls   operands[2] = (TARGET_EXPLICIT_RELOCS
   6685  1.1.1.1.8.2  tls 		 ? GEN_INT (alpha_next_sequence_number++)
   6686  1.1.1.1.8.2  tls 		 : const0_rtx);
   6687  1.1.1.1.8.2  tls })
   6688  1.1.1.1.8.2  tls 
   6689  1.1.1.1.8.2  tls (define_insn "*ldgp_er_1"
   6690  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   6691  1.1.1.1.8.2  tls 	(unspec_volatile:DI [(match_operand:DI 1 "register_operand" "r")
   6692  1.1.1.1.8.2  tls 			     (match_operand 2 "const_int_operand" "")]
   6693  1.1.1.1.8.2  tls 			    UNSPECV_LDGP1))]
   6694  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   6695  1.1.1.1.8.2  tls   "ldah %0,0(%1)\t\t!gpdisp!%2"
   6696  1.1.1.1.8.2  tls   [(set_attr "cannot_copy" "true")])
   6697  1.1.1.1.8.2  tls 
   6698  1.1.1.1.8.2  tls (define_insn "*ldgp_er_2"
   6699  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   6700  1.1.1.1.8.2  tls 	(unspec:DI [(match_operand:DI 1 "register_operand" "r")
   6701  1.1.1.1.8.2  tls 		    (match_operand 2 "const_int_operand" "")]
   6702  1.1.1.1.8.2  tls 		   UNSPEC_LDGP2))]
   6703  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   6704  1.1.1.1.8.2  tls   "lda %0,0(%1)\t\t!gpdisp!%2"
   6705  1.1.1.1.8.2  tls   [(set_attr "cannot_copy" "true")])
   6706  1.1.1.1.8.2  tls 
   6707  1.1.1.1.8.2  tls (define_insn "*prologue_ldgp_er_2"
   6708  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   6709  1.1.1.1.8.2  tls 	(unspec_volatile:DI [(match_operand:DI 1 "register_operand" "r")
   6710  1.1.1.1.8.2  tls 			     (match_operand 2 "const_int_operand" "")]
   6711  1.1.1.1.8.2  tls 		   	    UNSPECV_PLDGP2))]
   6712  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   6713  1.1.1.1.8.2  tls   "lda %0,0(%1)\t\t!gpdisp!%2\n$%~..ng:"
   6714  1.1.1.1.8.2  tls   [(set_attr "cannot_copy" "true")])
   6715  1.1.1.1.8.2  tls 
   6716  1.1.1.1.8.2  tls (define_insn "*prologue_ldgp_1"
   6717  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   6718  1.1.1.1.8.2  tls 	(unspec_volatile:DI [(match_operand:DI 1 "register_operand" "r")
   6719  1.1.1.1.8.2  tls 			     (match_operand 2 "const_int_operand" "")]
   6720  1.1.1.1.8.2  tls 			    UNSPECV_LDGP1))]
   6721  1.1.1.1.8.2  tls   ""
   6722  1.1.1.1.8.2  tls   "ldgp %0,0(%1)\n$%~..ng:"
   6723  1.1.1.1.8.2  tls   [(set_attr "cannot_copy" "true")])
   6724  1.1.1.1.8.2  tls 
   6725  1.1.1.1.8.2  tls (define_insn "*prologue_ldgp_2"
   6726  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   6727  1.1.1.1.8.2  tls 	(unspec_volatile:DI [(match_operand:DI 1 "register_operand" "r")
   6728  1.1.1.1.8.2  tls 			     (match_operand 2 "const_int_operand" "")]
   6729  1.1.1.1.8.2  tls 		   	    UNSPECV_PLDGP2))]
   6730  1.1.1.1.8.2  tls   ""
   6731  1.1.1.1.8.2  tls   "")
   6732  1.1.1.1.8.2  tls 
   6733  1.1.1.1.8.2  tls ;; The _mcount profiling hook has special calling conventions, and
   6734  1.1.1.1.8.2  tls ;; does not clobber all the registers that a normal call would.  So
   6735  1.1.1.1.8.2  tls ;; hide the fact this is a call at all.
   6736  1.1.1.1.8.2  tls 
   6737  1.1.1.1.8.2  tls (define_insn "prologue_mcount"
   6738  1.1.1.1.8.2  tls   [(unspec_volatile [(const_int 0)] UNSPECV_MCOUNT)]
   6739  1.1.1.1.8.2  tls   ""
   6740  1.1.1.1.8.2  tls {
   6741  1.1.1.1.8.2  tls   if (TARGET_EXPLICIT_RELOCS)
   6742  1.1.1.1.8.2  tls     /* Note that we cannot use a lituse_jsr reloc, since _mcount
   6743  1.1.1.1.8.2  tls        cannot be called via the PLT.  */
   6744  1.1.1.1.8.2  tls     return "ldq $28,_mcount($29)\t\t!literal\;jsr $28,($28),_mcount";
   6745  1.1.1.1.8.2  tls   else
   6746  1.1.1.1.8.2  tls     return "lda $28,_mcount\;jsr $28,($28),_mcount";
   6747  1.1.1.1.8.2  tls }
   6748  1.1.1.1.8.2  tls   [(set_attr "type" "multi")
   6749  1.1.1.1.8.2  tls    (set_attr "length" "8")])
   6750  1.1.1.1.8.2  tls 
   6751  1.1.1.1.8.2  tls (define_insn "init_fp"
   6752  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   6753  1.1.1.1.8.2  tls         (match_operand:DI 1 "register_operand" "r"))
   6754  1.1.1.1.8.2  tls    (clobber (mem:BLK (match_operand:DI 2 "register_operand" "=r")))]
   6755  1.1.1.1.8.2  tls   ""
   6756  1.1.1.1.8.2  tls   "bis $31,%1,%0")
   6757  1.1.1.1.8.2  tls 
   6758  1.1.1.1.8.2  tls (define_expand "epilogue"
   6759  1.1.1.1.8.2  tls   [(return)]
   6760  1.1.1.1.8.2  tls   ""
   6761  1.1.1.1.8.2  tls {
   6762  1.1.1.1.8.2  tls   alpha_expand_epilogue ();
   6763  1.1.1.1.8.2  tls })
   6764  1.1.1.1.8.2  tls 
   6765  1.1.1.1.8.2  tls (define_expand "sibcall_epilogue"
   6766  1.1.1.1.8.2  tls   [(return)]
   6767  1.1.1.1.8.2  tls   "TARGET_ABI_OSF"
   6768  1.1.1.1.8.2  tls {
   6769  1.1.1.1.8.2  tls   alpha_expand_epilogue ();
   6770  1.1.1.1.8.2  tls   DONE;
   6771  1.1.1.1.8.2  tls })
   6772  1.1.1.1.8.2  tls 
   6773  1.1.1.1.8.2  tls (define_expand "builtin_longjmp"
   6774  1.1.1.1.8.2  tls   [(use (match_operand:DI 0 "register_operand" "r"))]
   6775  1.1.1.1.8.2  tls   "TARGET_ABI_OSF"
   6776  1.1.1.1.8.2  tls {
   6777  1.1.1.1.8.2  tls   /* The elements of the buffer are, in order:  */
   6778  1.1.1.1.8.2  tls   rtx fp = gen_rtx_MEM (Pmode, operands[0]);
   6779  1.1.1.1.8.2  tls   rtx lab = gen_rtx_MEM (Pmode, plus_constant (operands[0], 8));
   6780  1.1.1.1.8.2  tls   rtx stack = gen_rtx_MEM (Pmode, plus_constant (operands[0], 16));
   6781  1.1.1.1.8.2  tls   rtx pv = gen_rtx_REG (Pmode, 27);
   6782  1.1.1.1.8.2  tls 
   6783  1.1.1.1.8.2  tls   /* This bit is the same as expand_builtin_longjmp.  */
   6784  1.1.1.1.8.2  tls   emit_move_insn (hard_frame_pointer_rtx, fp);
   6785  1.1.1.1.8.2  tls   emit_move_insn (pv, lab);
   6786  1.1.1.1.8.2  tls   emit_stack_restore (SAVE_NONLOCAL, stack, NULL_RTX);
   6787  1.1.1.1.8.2  tls   emit_use (hard_frame_pointer_rtx);
   6788  1.1.1.1.8.2  tls   emit_use (stack_pointer_rtx);
   6789  1.1.1.1.8.2  tls 
   6790  1.1.1.1.8.2  tls   /* Load the label we are jumping through into $27 so that we know
   6791  1.1.1.1.8.2  tls      where to look for it when we get back to setjmp's function for
   6792  1.1.1.1.8.2  tls      restoring the gp.  */
   6793  1.1.1.1.8.2  tls   emit_jump_insn (gen_builtin_longjmp_internal (pv));
   6794  1.1.1.1.8.2  tls   emit_barrier ();
   6795  1.1.1.1.8.2  tls   DONE;
   6796  1.1.1.1.8.2  tls })
   6797  1.1.1.1.8.2  tls 
   6798  1.1.1.1.8.2  tls ;; This is effectively a copy of indirect_jump, but constrained such
   6799  1.1.1.1.8.2  tls ;; that register renaming cannot foil our cunning plan with $27.
   6800  1.1.1.1.8.2  tls (define_insn "builtin_longjmp_internal"
   6801  1.1.1.1.8.2  tls   [(set (pc)
   6802  1.1.1.1.8.2  tls 	(unspec_volatile [(match_operand:DI 0 "register_operand" "c")]
   6803  1.1.1.1.8.2  tls 			 UNSPECV_LONGJMP))]
   6804  1.1.1.1.8.2  tls   ""
   6805  1.1.1.1.8.2  tls   "jmp $31,(%0),0"
   6806  1.1.1.1.8.2  tls   [(set_attr "type" "ibr")])
   6807  1.1.1.1.8.2  tls 
   6808  1.1.1.1.8.2  tls (define_expand "builtin_setjmp_receiver"
   6809  1.1.1.1.8.2  tls   [(unspec_volatile [(label_ref (match_operand 0 "" ""))] UNSPECV_SETJMPR)]
   6810  1.1.1.1.8.2  tls   "TARGET_ABI_OSF"
   6811  1.1.1.1.8.2  tls   "")
   6812  1.1.1.1.8.2  tls 
   6813  1.1.1.1.8.2  tls (define_insn_and_split "*builtin_setjmp_receiver_1"
   6814  1.1.1.1.8.2  tls   [(unspec_volatile [(match_operand 0 "" "")] UNSPECV_SETJMPR)]
   6815  1.1.1.1.8.2  tls   "TARGET_ABI_OSF"
   6816  1.1.1.1.8.2  tls {
   6817  1.1.1.1.8.2  tls   if (TARGET_EXPLICIT_RELOCS)
   6818  1.1.1.1.8.2  tls     return "#";
   6819  1.1.1.1.8.2  tls   else
   6820  1.1.1.1.8.2  tls     return "br $27,$LSJ%=\n$LSJ%=:\;ldgp $29,0($27)";
   6821  1.1.1.1.8.2  tls }
   6822  1.1.1.1.8.2  tls   "&& TARGET_EXPLICIT_RELOCS && reload_completed"
   6823  1.1.1.1.8.2  tls   [(set (match_dup 1)
   6824  1.1.1.1.8.2  tls 	(unspec_volatile:DI [(match_dup 2) (match_dup 3)] UNSPECV_LDGP1))
   6825  1.1.1.1.8.2  tls    (set (match_dup 1)
   6826  1.1.1.1.8.2  tls 	(unspec:DI [(match_dup 1) (match_dup 3)] UNSPEC_LDGP2))]
   6827  1.1.1.1.8.2  tls {
   6828  1.1.1.1.8.2  tls   if (prev_nonnote_insn (curr_insn) != XEXP (operands[0], 0))
   6829  1.1.1.1.8.2  tls     emit_insn (gen_rtx_UNSPEC_VOLATILE (VOIDmode, gen_rtvec (1, operands[0]),
   6830  1.1.1.1.8.2  tls 					UNSPECV_SETJMPR_ER));
   6831  1.1.1.1.8.2  tls   operands[1] = pic_offset_table_rtx;
   6832  1.1.1.1.8.2  tls   operands[2] = gen_rtx_REG (Pmode, 27);
   6833  1.1.1.1.8.2  tls   operands[3] = GEN_INT (alpha_next_sequence_number++);
   6834  1.1.1.1.8.2  tls }
   6835  1.1.1.1.8.2  tls   [(set_attr "length" "12")
   6836  1.1.1.1.8.2  tls    (set_attr "type" "multi")])
   6837  1.1.1.1.8.2  tls 
   6838  1.1.1.1.8.2  tls (define_insn "*builtin_setjmp_receiver_er_sl_1"
   6839  1.1.1.1.8.2  tls   [(unspec_volatile [(match_operand 0 "" "")] UNSPECV_SETJMPR_ER)]
   6840  1.1.1.1.8.2  tls   "TARGET_ABI_OSF && TARGET_EXPLICIT_RELOCS && TARGET_AS_CAN_SUBTRACT_LABELS"
   6841  1.1.1.1.8.2  tls   "lda $27,$LSJ%=-%l0($27)\n$LSJ%=:")
   6842  1.1.1.1.8.2  tls   
   6843  1.1.1.1.8.2  tls (define_insn "*builtin_setjmp_receiver_er_1"
   6844  1.1.1.1.8.2  tls   [(unspec_volatile [(match_operand 0 "" "")] UNSPECV_SETJMPR_ER)]
   6845  1.1.1.1.8.2  tls   "TARGET_ABI_OSF && TARGET_EXPLICIT_RELOCS"
   6846  1.1.1.1.8.2  tls   "br $27,$LSJ%=\n$LSJ%=:"
   6847  1.1.1.1.8.2  tls   [(set_attr "type" "ibr")])
   6848  1.1.1.1.8.2  tls 
   6849  1.1.1.1.8.2  tls ;; When flag_reorder_blocks_and_partition is in effect, compiler puts
   6850  1.1.1.1.8.2  tls ;; exception landing pads in a cold section.  To prevent inter-section offset
   6851  1.1.1.1.8.2  tls ;; calculation, a jump to original landing pad is emitted in the place of the
   6852  1.1.1.1.8.2  tls ;; original landing pad.  Since landing pad is moved, RA-relative GP
   6853  1.1.1.1.8.2  tls ;; calculation in the prologue of landing pad breaks.  To solve this problem,
   6854  1.1.1.1.8.2  tls ;; we use alternative GP load approach, as in the case of TARGET_LD_BUGGY_LDGP.
   6855  1.1.1.1.8.2  tls 
   6856  1.1.1.1.8.2  tls (define_expand "exception_receiver"
   6857  1.1.1.1.8.2  tls   [(unspec_volatile [(match_dup 0)] UNSPECV_EHR)]
   6858  1.1.1.1.8.2  tls   "TARGET_ABI_OSF"
   6859  1.1.1.1.8.2  tls {
   6860  1.1.1.1.8.2  tls   if (TARGET_LD_BUGGY_LDGP || flag_reorder_blocks_and_partition)
   6861  1.1.1.1.8.2  tls     operands[0] = alpha_gp_save_rtx ();
   6862  1.1.1.1.8.2  tls   else
   6863  1.1.1.1.8.2  tls     operands[0] = const0_rtx;
   6864  1.1.1.1.8.2  tls })
   6865  1.1.1.1.8.2  tls 
   6866  1.1.1.1.8.2  tls (define_insn "*exception_receiver_2"
   6867  1.1.1.1.8.2  tls   [(unspec_volatile [(match_operand:DI 0 "memory_operand" "m")] UNSPECV_EHR)]
   6868  1.1.1.1.8.2  tls   "TARGET_ABI_OSF 
   6869  1.1.1.1.8.2  tls    && (TARGET_LD_BUGGY_LDGP || flag_reorder_blocks_and_partition)"
   6870  1.1.1.1.8.2  tls   "ldq $29,%0"
   6871  1.1.1.1.8.2  tls   [(set_attr "type" "ild")])
   6872  1.1.1.1.8.2  tls 
   6873  1.1.1.1.8.2  tls (define_insn_and_split "*exception_receiver_1"
   6874  1.1.1.1.8.2  tls   [(unspec_volatile [(const_int 0)] UNSPECV_EHR)]
   6875  1.1.1.1.8.2  tls   "TARGET_ABI_OSF"
   6876  1.1.1.1.8.2  tls {
   6877  1.1.1.1.8.2  tls   if (TARGET_EXPLICIT_RELOCS)
   6878  1.1.1.1.8.2  tls     return "ldah $29,0($26)\t\t!gpdisp!%*\;lda $29,0($29)\t\t!gpdisp!%*";
   6879  1.1.1.1.8.2  tls   else
   6880  1.1.1.1.8.2  tls     return "ldgp $29,0($26)";
   6881  1.1.1.1.8.2  tls }
   6882  1.1.1.1.8.2  tls   "&& TARGET_EXPLICIT_RELOCS && reload_completed"
   6883  1.1.1.1.8.2  tls   [(set (match_dup 0)
   6884  1.1.1.1.8.2  tls 	(unspec_volatile:DI [(match_dup 1) (match_dup 2)] UNSPECV_LDGP1))
   6885  1.1.1.1.8.2  tls    (set (match_dup 0)
   6886  1.1.1.1.8.2  tls 	(unspec:DI [(match_dup 0) (match_dup 2)] UNSPEC_LDGP2))]
   6887  1.1.1.1.8.2  tls {
   6888  1.1.1.1.8.2  tls   operands[0] = pic_offset_table_rtx;
   6889  1.1.1.1.8.2  tls   operands[1] = gen_rtx_REG (Pmode, 26);
   6890  1.1.1.1.8.2  tls   operands[2] = GEN_INT (alpha_next_sequence_number++);
   6891  1.1.1.1.8.2  tls }
   6892  1.1.1.1.8.2  tls   [(set_attr "length" "8")
   6893  1.1.1.1.8.2  tls    (set_attr "type" "multi")])
   6894  1.1.1.1.8.2  tls 
   6895  1.1.1.1.8.2  tls (define_expand "nonlocal_goto_receiver"
   6896  1.1.1.1.8.2  tls   [(unspec_volatile [(const_int 0)] UNSPECV_BLOCKAGE)
   6897  1.1.1.1.8.2  tls    (set (reg:DI 27) (mem:DI (reg:DI 29)))
   6898  1.1.1.1.8.2  tls    (unspec_volatile [(const_int 0)] UNSPECV_BLOCKAGE)
   6899  1.1.1.1.8.2  tls    (use (reg:DI 27))]
   6900  1.1.1.1.8.2  tls   "TARGET_ABI_OPEN_VMS"
   6901  1.1.1.1.8.2  tls   "")
   6902  1.1.1.1.8.2  tls 
   6903  1.1.1.1.8.2  tls (define_insn "arg_home"
   6904  1.1.1.1.8.2  tls   [(unspec [(const_int 0)] UNSPEC_ARG_HOME)
   6905  1.1.1.1.8.2  tls    (use (reg:DI 1))
   6906  1.1.1.1.8.2  tls    (use (reg:DI 25))
   6907  1.1.1.1.8.2  tls    (use (reg:DI 16))
   6908  1.1.1.1.8.2  tls    (use (reg:DI 17))
   6909  1.1.1.1.8.2  tls    (use (reg:DI 18))
   6910  1.1.1.1.8.2  tls    (use (reg:DI 19))
   6911  1.1.1.1.8.2  tls    (use (reg:DI 20))
   6912  1.1.1.1.8.2  tls    (use (reg:DI 21))
   6913  1.1.1.1.8.2  tls    (use (reg:DI 48))
   6914  1.1.1.1.8.2  tls    (use (reg:DI 49))
   6915  1.1.1.1.8.2  tls    (use (reg:DI 50))
   6916  1.1.1.1.8.2  tls    (use (reg:DI 51))
   6917  1.1.1.1.8.2  tls    (use (reg:DI 52))
   6918  1.1.1.1.8.2  tls    (use (reg:DI 53))
   6919  1.1.1.1.8.2  tls    (clobber (mem:BLK (const_int 0)))
   6920  1.1.1.1.8.2  tls    (clobber (reg:DI 24))
   6921  1.1.1.1.8.2  tls    (clobber (reg:DI 25))
   6922  1.1.1.1.8.2  tls    (clobber (reg:DI 0))]
   6923  1.1.1.1.8.2  tls   "TARGET_ABI_OPEN_VMS"
   6924  1.1.1.1.8.2  tls   "lda $0,OTS$HOME_ARGS\;ldq $0,8($0)\;jsr $0,OTS$HOME_ARGS"
   6925  1.1.1.1.8.2  tls   [(set_attr "length" "16")
   6926  1.1.1.1.8.2  tls    (set_attr "type" "multi")])
   6927  1.1.1.1.8.2  tls 
   6928  1.1.1.1.8.2  tls ;; Load the CIW into r2 for calling __T3E_MISMATCH
   6929  1.1.1.1.8.2  tls 
   6930  1.1.1.1.8.2  tls (define_expand "umk_mismatch_args"
   6931  1.1.1.1.8.2  tls   [(set:DI (match_dup 1) (mem:DI (plus:DI (reg:DI 15) (const_int -16))))
   6932  1.1.1.1.8.2  tls    (set:DI (match_dup 2) (mem:DI (plus:DI (match_dup 1) (const_int -32))))
   6933  1.1.1.1.8.2  tls    (set:DI (reg:DI 1) (match_operand:DI 0 "const_int_operand" ""))
   6934  1.1.1.1.8.2  tls    (set:DI (match_dup 3) (plus:DI (mult:DI (reg:DI 25)
   6935  1.1.1.1.8.2  tls 					   (const_int 8))
   6936  1.1.1.1.8.2  tls 				  (match_dup 2)))
   6937  1.1.1.1.8.2  tls    (set:DI (reg:DI 2) (mem:DI (match_dup 3)))]
   6938  1.1.1.1.8.2  tls   "TARGET_ABI_UNICOSMK"
   6939  1.1.1.1.8.2  tls {
   6940  1.1.1.1.8.2  tls   operands[1] = gen_reg_rtx (DImode);
   6941  1.1.1.1.8.2  tls   operands[2] = gen_reg_rtx (DImode);
   6942  1.1.1.1.8.2  tls   operands[3] = gen_reg_rtx (DImode);
   6943  1.1.1.1.8.2  tls })
   6944  1.1.1.1.8.2  tls 
   6945  1.1.1.1.8.2  tls (define_insn "arg_home_umk"
   6946  1.1.1.1.8.2  tls   [(unspec [(const_int 0)] UNSPEC_ARG_HOME)
   6947  1.1.1.1.8.2  tls    (use (reg:DI 1))
   6948  1.1.1.1.8.2  tls    (use (reg:DI 2))
   6949  1.1.1.1.8.2  tls    (use (reg:DI 16))
   6950  1.1.1.1.8.2  tls    (use (reg:DI 17))
   6951  1.1.1.1.8.2  tls    (use (reg:DI 18))
   6952  1.1.1.1.8.2  tls    (use (reg:DI 19))
   6953  1.1.1.1.8.2  tls    (use (reg:DI 20))
   6954  1.1.1.1.8.2  tls    (use (reg:DI 21))
   6955  1.1.1.1.8.2  tls    (use (reg:DI 48))
   6956  1.1.1.1.8.2  tls    (use (reg:DI 49))
   6957  1.1.1.1.8.2  tls    (use (reg:DI 50))
   6958  1.1.1.1.8.2  tls    (use (reg:DI 51))
   6959  1.1.1.1.8.2  tls    (use (reg:DI 52))
   6960  1.1.1.1.8.2  tls    (use (reg:DI 53))
   6961  1.1.1.1.8.2  tls    (clobber (mem:BLK (const_int 0)))
   6962  1.1.1.1.8.2  tls    (parallel [
   6963  1.1.1.1.8.2  tls    (clobber (reg:DI 22))
   6964  1.1.1.1.8.2  tls    (clobber (reg:DI 23))
   6965  1.1.1.1.8.2  tls    (clobber (reg:DI 24))
   6966  1.1.1.1.8.2  tls    (clobber (reg:DI 0))
   6967  1.1.1.1.8.2  tls    (clobber (reg:DI 1))
   6968  1.1.1.1.8.2  tls    (clobber (reg:DI 2))
   6969  1.1.1.1.8.2  tls    (clobber (reg:DI 3))
   6970  1.1.1.1.8.2  tls    (clobber (reg:DI 4))
   6971  1.1.1.1.8.2  tls    (clobber (reg:DI 5))
   6972  1.1.1.1.8.2  tls    (clobber (reg:DI 6))
   6973  1.1.1.1.8.2  tls    (clobber (reg:DI 7))
   6974  1.1.1.1.8.2  tls    (clobber (reg:DI 8))])]
   6975  1.1.1.1.8.2  tls   "TARGET_ABI_UNICOSMK"
   6976  1.1.1.1.8.2  tls   "laum $4,__T3E_MISMATCH($31)\;sll $4,32,$4\;lalm $4,__T3E_MISMATCH($4)\;lal $4,__T3E_MISMATCH($4)\;jsr $3,($4)"
   6977  1.1.1.1.8.2  tls   [(set_attr "length" "16")
   6978  1.1.1.1.8.2  tls    (set_attr "type" "multi")])
   6979  1.1.1.1.8.2  tls 
   6980  1.1.1.1.8.2  tls ;; Prefetch data.  
   6981  1.1.1.1.8.2  tls ;;
   6982  1.1.1.1.8.2  tls ;; On EV4, these instructions are nops -- no load occurs.
   6983  1.1.1.1.8.2  tls ;;
   6984  1.1.1.1.8.2  tls ;; On EV5, these instructions act as a normal load, and thus can trap
   6985  1.1.1.1.8.2  tls ;; if the address is invalid.  The OS may (or may not) handle this in
   6986  1.1.1.1.8.2  tls ;; the entMM fault handler and suppress the fault.  If so, then this
   6987  1.1.1.1.8.2  tls ;; has the effect of a read prefetch instruction.
   6988  1.1.1.1.8.2  tls ;;
   6989  1.1.1.1.8.2  tls ;; On EV6, these become official prefetch instructions.
   6990  1.1.1.1.8.2  tls 
   6991  1.1.1.1.8.2  tls (define_insn "prefetch"
   6992  1.1.1.1.8.2  tls   [(prefetch (match_operand:DI 0 "address_operand" "p")
   6993  1.1.1.1.8.2  tls 	     (match_operand:DI 1 "const_int_operand" "n")
   6994  1.1.1.1.8.2  tls 	     (match_operand:DI 2 "const_int_operand" "n"))]
   6995  1.1.1.1.8.2  tls   "TARGET_FIXUP_EV5_PREFETCH || alpha_cpu == PROCESSOR_EV6"
   6996  1.1.1.1.8.2  tls {
   6997  1.1.1.1.8.2  tls   /* Interpret "no temporal locality" as this data should be evicted once
   6998  1.1.1.1.8.2  tls      it is used.  The "evict next" alternatives load the data into the cache
   6999  1.1.1.1.8.2  tls      and leave the LRU eviction counter pointing to that block.  */
   7000  1.1.1.1.8.2  tls   static const char * const alt[2][2] = {
   7001  1.1.1.1.8.2  tls     { 
   7002  1.1.1.1.8.2  tls       "ldq $31,%a0",		/* read, evict next */
   7003  1.1.1.1.8.2  tls       "ldl $31,%a0",		/* read, evict last */
   7004  1.1.1.1.8.2  tls     },
   7005  1.1.1.1.8.2  tls     {
   7006  1.1.1.1.8.2  tls       "ldt $f31,%a0",		/* write, evict next */
   7007  1.1.1.1.8.2  tls       "lds $f31,%a0",		/* write, evict last */
   7008  1.1.1.1.8.2  tls     }
   7009  1.1.1.1.8.2  tls   };
   7010  1.1.1.1.8.2  tls 
   7011  1.1.1.1.8.2  tls   bool write = INTVAL (operands[1]) != 0;
   7012  1.1.1.1.8.2  tls   bool lru = INTVAL (operands[2]) != 0;
   7013  1.1.1.1.8.2  tls 
   7014  1.1.1.1.8.2  tls   return alt[write][lru];
   7015  1.1.1.1.8.2  tls }
   7016  1.1.1.1.8.2  tls   [(set_attr "type" "ild")])
   7017  1.1.1.1.8.2  tls 
   7018  1.1.1.1.8.2  tls ;; Close the trap shadow of preceding instructions.  This is generated
   7019  1.1.1.1.8.2  tls ;; by alpha_reorg.
   7020  1.1.1.1.8.2  tls 
   7021  1.1.1.1.8.2  tls (define_insn "trapb"
   7022  1.1.1.1.8.2  tls   [(unspec_volatile [(const_int 0)] UNSPECV_TRAPB)]
   7023  1.1.1.1.8.2  tls   ""
   7024  1.1.1.1.8.2  tls   "trapb"
   7025  1.1.1.1.8.2  tls   [(set_attr "type" "misc")])
   7026  1.1.1.1.8.2  tls 
   7027  1.1.1.1.8.2  tls ;; No-op instructions used by machine-dependent reorg to preserve
   7028  1.1.1.1.8.2  tls ;; alignment for instruction issue.
   7029  1.1.1.1.8.2  tls ;; The Unicos/Mk assembler does not support these opcodes.
   7030  1.1.1.1.8.2  tls 
   7031  1.1.1.1.8.2  tls (define_insn "nop"
   7032  1.1.1.1.8.2  tls   [(const_int 0)]
   7033  1.1.1.1.8.2  tls   ""
   7034  1.1.1.1.8.2  tls   "bis $31,$31,$31"
   7035  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   7036  1.1.1.1.8.2  tls 
   7037  1.1.1.1.8.2  tls (define_insn "fnop"
   7038  1.1.1.1.8.2  tls   [(const_int 1)]
   7039  1.1.1.1.8.2  tls   "TARGET_FP"
   7040  1.1.1.1.8.2  tls   "cpys $f31,$f31,$f31"
   7041  1.1.1.1.8.2  tls   [(set_attr "type" "fcpys")])
   7042  1.1.1.1.8.2  tls 
   7043  1.1.1.1.8.2  tls (define_insn "unop"
   7044  1.1.1.1.8.2  tls   [(const_int 2)]
   7045  1.1.1.1.8.2  tls   ""
   7046  1.1.1.1.8.2  tls   "ldq_u $31,0($30)")
   7047  1.1.1.1.8.2  tls 
   7048  1.1.1.1.8.2  tls ;; On Unicos/Mk we use a macro for aligning code.
   7049  1.1.1.1.8.2  tls 
   7050  1.1.1.1.8.2  tls (define_insn "realign"
   7051  1.1.1.1.8.2  tls   [(unspec_volatile [(match_operand 0 "immediate_operand" "i")]
   7052  1.1.1.1.8.2  tls 		    UNSPECV_REALIGN)]
   7053  1.1.1.1.8.2  tls   ""
   7054  1.1.1.1.8.2  tls {
   7055  1.1.1.1.8.2  tls   if (TARGET_ABI_UNICOSMK)
   7056  1.1.1.1.8.2  tls     return "gcc@code@align %0";
   7057  1.1.1.1.8.2  tls   else
   7058  1.1.1.1.8.2  tls     return ".align %0 #realign";
   7059  1.1.1.1.8.2  tls })
   7060  1.1.1.1.8.2  tls 
   7062  1.1.1.1.8.2  tls ;; Instructions to be emitted from __builtins.
   7063  1.1.1.1.8.2  tls 
   7064  1.1.1.1.8.2  tls (define_insn "builtin_cmpbge"
   7065  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   7066  1.1.1.1.8.2  tls 	(unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rJ")
   7067  1.1.1.1.8.2  tls 		    (match_operand:DI 2 "reg_or_8bit_operand" "rI")]
   7068  1.1.1.1.8.2  tls 		   UNSPEC_CMPBGE))]
   7069  1.1.1.1.8.2  tls   ""
   7070  1.1.1.1.8.2  tls   "cmpbge %r1,%2,%0"
   7071  1.1.1.1.8.2  tls   ;; The EV6 data sheets list this as ILOG.  OTOH, EV6 doesn't 
   7072  1.1.1.1.8.2  tls   ;; actually differentiate between ILOG and ICMP in the schedule.
   7073  1.1.1.1.8.2  tls   [(set_attr "type" "icmp")])
   7074  1.1.1.1.8.2  tls 
   7075  1.1.1.1.8.2  tls (define_expand "builtin_extbl"
   7076  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7077  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7078  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7079  1.1.1.1.8.2  tls   ""
   7080  1.1.1.1.8.2  tls {
   7081  1.1.1.1.8.2  tls   rtx (*gen) (rtx, rtx, rtx, rtx);
   7082  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   7083  1.1.1.1.8.2  tls     gen = gen_extxl_be;
   7084  1.1.1.1.8.2  tls   else
   7085  1.1.1.1.8.2  tls     gen = gen_extxl_le;
   7086  1.1.1.1.8.2  tls   emit_insn ((*gen) (operands[0], operands[1], GEN_INT (8), operands[2]));
   7087  1.1.1.1.8.2  tls   DONE;
   7088  1.1.1.1.8.2  tls })
   7089  1.1.1.1.8.2  tls 
   7090  1.1.1.1.8.2  tls (define_expand "builtin_extwl"
   7091  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7092  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7093  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7094  1.1.1.1.8.2  tls   ""
   7095  1.1.1.1.8.2  tls {
   7096  1.1.1.1.8.2  tls   rtx (*gen) (rtx, rtx, rtx, rtx);
   7097  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   7098  1.1.1.1.8.2  tls     gen = gen_extxl_be;
   7099  1.1.1.1.8.2  tls   else
   7100  1.1.1.1.8.2  tls     gen = gen_extxl_le;
   7101  1.1.1.1.8.2  tls   emit_insn ((*gen) (operands[0], operands[1], GEN_INT (16), operands[2]));
   7102  1.1.1.1.8.2  tls   DONE;
   7103  1.1.1.1.8.2  tls })
   7104  1.1.1.1.8.2  tls 
   7105  1.1.1.1.8.2  tls (define_expand "builtin_extll"
   7106  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7107  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7108  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7109  1.1.1.1.8.2  tls   ""
   7110  1.1.1.1.8.2  tls {
   7111  1.1.1.1.8.2  tls   rtx (*gen) (rtx, rtx, rtx, rtx);
   7112  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   7113  1.1.1.1.8.2  tls     gen = gen_extxl_be;
   7114  1.1.1.1.8.2  tls   else
   7115  1.1.1.1.8.2  tls     gen = gen_extxl_le;
   7116  1.1.1.1.8.2  tls   emit_insn ((*gen) (operands[0], operands[1], GEN_INT (32), operands[2]));
   7117  1.1.1.1.8.2  tls   DONE;
   7118  1.1.1.1.8.2  tls })
   7119  1.1.1.1.8.2  tls 
   7120  1.1.1.1.8.2  tls (define_expand "builtin_extql"
   7121  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7122  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7123  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7124  1.1.1.1.8.2  tls   ""
   7125  1.1.1.1.8.2  tls {
   7126  1.1.1.1.8.2  tls   rtx (*gen) (rtx, rtx, rtx, rtx);
   7127  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   7128  1.1.1.1.8.2  tls     gen = gen_extxl_be;
   7129  1.1.1.1.8.2  tls   else
   7130  1.1.1.1.8.2  tls     gen = gen_extxl_le;
   7131  1.1.1.1.8.2  tls   emit_insn ((*gen) (operands[0], operands[1], GEN_INT (64), operands[2]));
   7132  1.1.1.1.8.2  tls   DONE;
   7133  1.1.1.1.8.2  tls })
   7134  1.1.1.1.8.2  tls 
   7135  1.1.1.1.8.2  tls (define_expand "builtin_extwh"
   7136  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7137  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7138  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7139  1.1.1.1.8.2  tls   ""
   7140  1.1.1.1.8.2  tls {
   7141  1.1.1.1.8.2  tls   rtx (*gen) (rtx, rtx, rtx);
   7142  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   7143  1.1.1.1.8.2  tls     gen = gen_extwh_be;
   7144  1.1.1.1.8.2  tls   else
   7145  1.1.1.1.8.2  tls     gen = gen_extwh_le;
   7146  1.1.1.1.8.2  tls   emit_insn ((*gen) (operands[0], operands[1], operands[2]));
   7147  1.1.1.1.8.2  tls   DONE;
   7148  1.1.1.1.8.2  tls })
   7149  1.1.1.1.8.2  tls 
   7150  1.1.1.1.8.2  tls (define_expand "builtin_extlh"
   7151  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7152  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7153  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7154  1.1.1.1.8.2  tls   ""
   7155  1.1.1.1.8.2  tls {
   7156  1.1.1.1.8.2  tls   rtx (*gen) (rtx, rtx, rtx);
   7157  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   7158  1.1.1.1.8.2  tls     gen = gen_extlh_be;
   7159  1.1.1.1.8.2  tls   else
   7160  1.1.1.1.8.2  tls     gen = gen_extlh_le;
   7161  1.1.1.1.8.2  tls   emit_insn ((*gen) (operands[0], operands[1], operands[2]));
   7162  1.1.1.1.8.2  tls   DONE;
   7163  1.1.1.1.8.2  tls })
   7164  1.1.1.1.8.2  tls 
   7165  1.1.1.1.8.2  tls (define_expand "builtin_extqh"
   7166  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7167  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7168  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7169  1.1.1.1.8.2  tls   ""
   7170  1.1.1.1.8.2  tls {
   7171  1.1.1.1.8.2  tls   rtx (*gen) (rtx, rtx, rtx);
   7172  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   7173  1.1.1.1.8.2  tls     gen = gen_extqh_be;
   7174  1.1.1.1.8.2  tls   else
   7175  1.1.1.1.8.2  tls     gen = gen_extqh_le;
   7176  1.1.1.1.8.2  tls   emit_insn ((*gen) (operands[0], operands[1], operands[2]));
   7177  1.1.1.1.8.2  tls   DONE;
   7178  1.1.1.1.8.2  tls })
   7179  1.1.1.1.8.2  tls 
   7180  1.1.1.1.8.2  tls (define_expand "builtin_insbl"
   7181  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7182  1.1.1.1.8.2  tls    (match_operand:DI 1 "register_operand" "")
   7183  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7184  1.1.1.1.8.2  tls   ""
   7185  1.1.1.1.8.2  tls {
   7186  1.1.1.1.8.2  tls   rtx (*gen) (rtx, rtx, rtx);
   7187  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   7188  1.1.1.1.8.2  tls     gen = gen_insbl_be;
   7189  1.1.1.1.8.2  tls   else
   7190  1.1.1.1.8.2  tls     gen = gen_insbl_le;
   7191  1.1.1.1.8.2  tls   operands[1] = gen_lowpart (QImode, operands[1]);
   7192  1.1.1.1.8.2  tls   emit_insn ((*gen) (operands[0], operands[1], operands[2]));
   7193  1.1.1.1.8.2  tls   DONE;
   7194  1.1.1.1.8.2  tls })
   7195  1.1.1.1.8.2  tls 
   7196  1.1.1.1.8.2  tls (define_expand "builtin_inswl"
   7197  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7198  1.1.1.1.8.2  tls    (match_operand:DI 1 "register_operand" "")
   7199  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7200  1.1.1.1.8.2  tls   ""
   7201  1.1.1.1.8.2  tls {
   7202  1.1.1.1.8.2  tls   rtx (*gen) (rtx, rtx, rtx);
   7203  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   7204  1.1.1.1.8.2  tls     gen = gen_inswl_be;
   7205  1.1.1.1.8.2  tls   else
   7206  1.1.1.1.8.2  tls     gen = gen_inswl_le;
   7207  1.1.1.1.8.2  tls   operands[1] = gen_lowpart (HImode, operands[1]);
   7208  1.1.1.1.8.2  tls   emit_insn ((*gen) (operands[0], operands[1], operands[2]));
   7209  1.1.1.1.8.2  tls   DONE;
   7210  1.1.1.1.8.2  tls })
   7211  1.1.1.1.8.2  tls 
   7212  1.1.1.1.8.2  tls (define_expand "builtin_insll"
   7213  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7214  1.1.1.1.8.2  tls    (match_operand:DI 1 "register_operand" "")
   7215  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7216  1.1.1.1.8.2  tls   ""
   7217  1.1.1.1.8.2  tls {
   7218  1.1.1.1.8.2  tls   rtx (*gen) (rtx, rtx, rtx);
   7219  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   7220  1.1.1.1.8.2  tls     gen = gen_insll_be;
   7221  1.1.1.1.8.2  tls   else
   7222  1.1.1.1.8.2  tls     gen = gen_insll_le;
   7223  1.1.1.1.8.2  tls   operands[1] = gen_lowpart (SImode, operands[1]);
   7224  1.1.1.1.8.2  tls   emit_insn ((*gen) (operands[0], operands[1], operands[2]));
   7225  1.1.1.1.8.2  tls   emit_insn ((*gen) (operands[0], operands[1], operands[2]));
   7226  1.1.1.1.8.2  tls   DONE;
   7227  1.1.1.1.8.2  tls })
   7228  1.1.1.1.8.2  tls 
   7229  1.1.1.1.8.2  tls (define_expand "builtin_insql"
   7230  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7231  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7232  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7233  1.1.1.1.8.2  tls   ""
   7234  1.1.1.1.8.2  tls {
   7235  1.1.1.1.8.2  tls   rtx (*gen) (rtx, rtx, rtx);
   7236  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   7237  1.1.1.1.8.2  tls     gen = gen_insql_be;
   7238  1.1.1.1.8.2  tls   else
   7239  1.1.1.1.8.2  tls     gen = gen_insql_le;
   7240  1.1.1.1.8.2  tls   emit_insn ((*gen) (operands[0], operands[1], operands[2]));
   7241  1.1.1.1.8.2  tls   DONE;
   7242  1.1.1.1.8.2  tls })
   7243  1.1.1.1.8.2  tls 
   7244  1.1.1.1.8.2  tls (define_expand "builtin_inswh"
   7245  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7246  1.1.1.1.8.2  tls    (match_operand:DI 1 "register_operand" "")
   7247  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7248  1.1.1.1.8.2  tls   ""
   7249  1.1.1.1.8.2  tls {
   7250  1.1.1.1.8.2  tls   emit_insn (gen_insxh (operands[0], operands[1], GEN_INT (16), operands[2]));
   7251  1.1.1.1.8.2  tls   DONE;
   7252  1.1.1.1.8.2  tls })
   7253  1.1.1.1.8.2  tls 
   7254  1.1.1.1.8.2  tls (define_expand "builtin_inslh"
   7255  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7256  1.1.1.1.8.2  tls    (match_operand:DI 1 "register_operand" "")
   7257  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7258  1.1.1.1.8.2  tls   ""
   7259  1.1.1.1.8.2  tls {
   7260  1.1.1.1.8.2  tls   emit_insn (gen_insxh (operands[0], operands[1], GEN_INT (32), operands[2]));
   7261  1.1.1.1.8.2  tls   DONE;
   7262  1.1.1.1.8.2  tls })
   7263  1.1.1.1.8.2  tls 
   7264  1.1.1.1.8.2  tls (define_expand "builtin_insqh"
   7265  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7266  1.1.1.1.8.2  tls    (match_operand:DI 1 "register_operand" "")
   7267  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7268  1.1.1.1.8.2  tls   ""
   7269  1.1.1.1.8.2  tls {
   7270  1.1.1.1.8.2  tls   emit_insn (gen_insxh (operands[0], operands[1], GEN_INT (64), operands[2]));
   7271  1.1.1.1.8.2  tls   DONE;
   7272  1.1.1.1.8.2  tls })
   7273  1.1.1.1.8.2  tls 
   7274  1.1.1.1.8.2  tls (define_expand "builtin_mskbl"
   7275  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7276  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7277  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7278  1.1.1.1.8.2  tls   ""
   7279  1.1.1.1.8.2  tls {
   7280  1.1.1.1.8.2  tls   rtx (*gen) (rtx, rtx, rtx, rtx);
   7281  1.1.1.1.8.2  tls   rtx mask;
   7282  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   7283  1.1.1.1.8.2  tls     gen = gen_mskxl_be;
   7284  1.1.1.1.8.2  tls   else
   7285  1.1.1.1.8.2  tls     gen = gen_mskxl_le;
   7286  1.1.1.1.8.2  tls   mask = GEN_INT (0xff);
   7287  1.1.1.1.8.2  tls   emit_insn ((*gen) (operands[0], operands[1], mask, operands[2]));
   7288  1.1.1.1.8.2  tls   DONE;
   7289  1.1.1.1.8.2  tls })
   7290  1.1.1.1.8.2  tls 
   7291  1.1.1.1.8.2  tls (define_expand "builtin_mskwl"
   7292  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7293  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7294  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7295  1.1.1.1.8.2  tls   ""
   7296  1.1.1.1.8.2  tls {
   7297  1.1.1.1.8.2  tls   rtx (*gen) (rtx, rtx, rtx, rtx);
   7298  1.1.1.1.8.2  tls   rtx mask;
   7299  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   7300  1.1.1.1.8.2  tls     gen = gen_mskxl_be;
   7301  1.1.1.1.8.2  tls   else
   7302  1.1.1.1.8.2  tls     gen = gen_mskxl_le;
   7303  1.1.1.1.8.2  tls   mask = GEN_INT (0xffff);
   7304  1.1.1.1.8.2  tls   emit_insn ((*gen) (operands[0], operands[1], mask, operands[2]));
   7305  1.1.1.1.8.2  tls   DONE;
   7306  1.1.1.1.8.2  tls })
   7307  1.1.1.1.8.2  tls 
   7308  1.1.1.1.8.2  tls (define_expand "builtin_mskll"
   7309  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7310  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7311  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7312  1.1.1.1.8.2  tls   ""
   7313  1.1.1.1.8.2  tls {
   7314  1.1.1.1.8.2  tls   rtx (*gen) (rtx, rtx, rtx, rtx);
   7315  1.1.1.1.8.2  tls   rtx mask;
   7316  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   7317  1.1.1.1.8.2  tls     gen = gen_mskxl_be;
   7318  1.1.1.1.8.2  tls   else
   7319  1.1.1.1.8.2  tls     gen = gen_mskxl_le;
   7320  1.1.1.1.8.2  tls   mask = immed_double_const (0xffffffff, 0, DImode);
   7321  1.1.1.1.8.2  tls   emit_insn ((*gen) (operands[0], operands[1], mask, operands[2]));
   7322  1.1.1.1.8.2  tls   DONE;
   7323  1.1.1.1.8.2  tls })
   7324  1.1.1.1.8.2  tls 
   7325  1.1.1.1.8.2  tls (define_expand "builtin_mskql"
   7326  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7327  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7328  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7329  1.1.1.1.8.2  tls   ""
   7330  1.1.1.1.8.2  tls {
   7331  1.1.1.1.8.2  tls   rtx (*gen) (rtx, rtx, rtx, rtx);
   7332  1.1.1.1.8.2  tls   rtx mask;
   7333  1.1.1.1.8.2  tls   if (WORDS_BIG_ENDIAN)
   7334  1.1.1.1.8.2  tls     gen = gen_mskxl_be;
   7335  1.1.1.1.8.2  tls   else
   7336  1.1.1.1.8.2  tls     gen = gen_mskxl_le;
   7337  1.1.1.1.8.2  tls   mask = constm1_rtx;
   7338  1.1.1.1.8.2  tls   emit_insn ((*gen) (operands[0], operands[1], mask, operands[2]));
   7339  1.1.1.1.8.2  tls   DONE;
   7340  1.1.1.1.8.2  tls })
   7341  1.1.1.1.8.2  tls 
   7342  1.1.1.1.8.2  tls (define_expand "builtin_mskwh"
   7343  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7344  1.1.1.1.8.2  tls    (match_operand:DI 1 "register_operand" "")
   7345  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7346  1.1.1.1.8.2  tls   ""
   7347  1.1.1.1.8.2  tls {
   7348  1.1.1.1.8.2  tls   emit_insn (gen_mskxh (operands[0], operands[1], GEN_INT (16), operands[2]));
   7349  1.1.1.1.8.2  tls   DONE;
   7350  1.1.1.1.8.2  tls })
   7351  1.1.1.1.8.2  tls 
   7352  1.1.1.1.8.2  tls (define_expand "builtin_msklh"
   7353  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7354  1.1.1.1.8.2  tls    (match_operand:DI 1 "register_operand" "")
   7355  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7356  1.1.1.1.8.2  tls   ""
   7357  1.1.1.1.8.2  tls {
   7358  1.1.1.1.8.2  tls   emit_insn (gen_mskxh (operands[0], operands[1], GEN_INT (32), operands[2]));
   7359  1.1.1.1.8.2  tls   DONE;
   7360  1.1.1.1.8.2  tls })
   7361  1.1.1.1.8.2  tls 
   7362  1.1.1.1.8.2  tls (define_expand "builtin_mskqh"
   7363  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7364  1.1.1.1.8.2  tls    (match_operand:DI 1 "register_operand" "")
   7365  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_8bit_operand" "")]
   7366  1.1.1.1.8.2  tls   ""
   7367  1.1.1.1.8.2  tls {
   7368  1.1.1.1.8.2  tls   emit_insn (gen_mskxh (operands[0], operands[1], GEN_INT (64), operands[2]));
   7369  1.1.1.1.8.2  tls   DONE;
   7370  1.1.1.1.8.2  tls })
   7371  1.1.1.1.8.2  tls 
   7372  1.1.1.1.8.2  tls (define_expand "builtin_zap"
   7373  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   7374  1.1.1.1.8.2  tls 	(and:DI (unspec:DI
   7375  1.1.1.1.8.2  tls 		  [(match_operand:DI 2 "reg_or_cint_operand" "")]
   7376  1.1.1.1.8.2  tls 		  UNSPEC_ZAP)
   7377  1.1.1.1.8.2  tls 		(match_operand:DI 1 "reg_or_cint_operand" "")))]
   7378  1.1.1.1.8.2  tls   ""
   7379  1.1.1.1.8.2  tls {
   7380  1.1.1.1.8.2  tls   if (CONST_INT_P (operands[2]))
   7381  1.1.1.1.8.2  tls     {
   7382  1.1.1.1.8.2  tls       rtx mask = alpha_expand_zap_mask (INTVAL (operands[2]));
   7383  1.1.1.1.8.2  tls 
   7384  1.1.1.1.8.2  tls       if (mask == const0_rtx)
   7385  1.1.1.1.8.2  tls 	{
   7386  1.1.1.1.8.2  tls 	  emit_move_insn (operands[0], const0_rtx);
   7387  1.1.1.1.8.2  tls 	  DONE;
   7388  1.1.1.1.8.2  tls 	}
   7389  1.1.1.1.8.2  tls       if (mask == constm1_rtx)
   7390  1.1.1.1.8.2  tls 	{
   7391  1.1.1.1.8.2  tls 	  emit_move_insn (operands[0], operands[1]);
   7392  1.1.1.1.8.2  tls 	  DONE;
   7393  1.1.1.1.8.2  tls 	}
   7394  1.1.1.1.8.2  tls 
   7395  1.1.1.1.8.2  tls       operands[1] = force_reg (DImode, operands[1]);
   7396  1.1.1.1.8.2  tls       emit_insn (gen_anddi3 (operands[0], operands[1], mask));
   7397  1.1.1.1.8.2  tls       DONE;
   7398  1.1.1.1.8.2  tls     }
   7399  1.1.1.1.8.2  tls 
   7400  1.1.1.1.8.2  tls   operands[1] = force_reg (DImode, operands[1]);
   7401  1.1.1.1.8.2  tls   operands[2] = gen_lowpart (QImode, operands[2]);
   7402  1.1.1.1.8.2  tls })
   7403  1.1.1.1.8.2  tls 
   7404  1.1.1.1.8.2  tls (define_insn "*builtin_zap_1"
   7405  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r")
   7406  1.1.1.1.8.2  tls 	(and:DI (unspec:DI
   7407  1.1.1.1.8.2  tls 		  [(match_operand:QI 2 "reg_or_cint_operand" "n,n,r,r")]
   7408  1.1.1.1.8.2  tls 		  UNSPEC_ZAP)
   7409  1.1.1.1.8.2  tls 		(match_operand:DI 1 "reg_or_cint_operand" "n,r,J,r")))]
   7410  1.1.1.1.8.2  tls   ""
   7411  1.1.1.1.8.2  tls   "@
   7412  1.1.1.1.8.2  tls    #
   7413  1.1.1.1.8.2  tls    #
   7414  1.1.1.1.8.2  tls    bis $31,$31,%0
   7415  1.1.1.1.8.2  tls    zap %r1,%2,%0"
   7416  1.1.1.1.8.2  tls   [(set_attr "type" "shift,shift,ilog,shift")])
   7417  1.1.1.1.8.2  tls 
   7418  1.1.1.1.8.2  tls (define_split
   7419  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   7420  1.1.1.1.8.2  tls 	(and:DI (unspec:DI
   7421  1.1.1.1.8.2  tls 		  [(match_operand:QI 2 "const_int_operand" "")]
   7422  1.1.1.1.8.2  tls 		  UNSPEC_ZAP)
   7423  1.1.1.1.8.2  tls 		(match_operand:DI 1 "const_int_operand" "")))]
   7424  1.1.1.1.8.2  tls   ""
   7425  1.1.1.1.8.2  tls   [(const_int 0)]
   7426  1.1.1.1.8.2  tls {
   7427  1.1.1.1.8.2  tls   rtx mask = alpha_expand_zap_mask (INTVAL (operands[2]));
   7428  1.1.1.1.8.2  tls   if (HOST_BITS_PER_WIDE_INT >= 64 || CONST_INT_P (mask))
   7429  1.1.1.1.8.2  tls     operands[1] = gen_int_mode (INTVAL (operands[1]) & INTVAL (mask), DImode);
   7430  1.1.1.1.8.2  tls   else
   7431  1.1.1.1.8.2  tls     {
   7432  1.1.1.1.8.2  tls       HOST_WIDE_INT c_lo = INTVAL (operands[1]);
   7433  1.1.1.1.8.2  tls       HOST_WIDE_INT c_hi = (c_lo < 0 ? -1 : 0);
   7434  1.1.1.1.8.2  tls       operands[1] = immed_double_const (c_lo & CONST_DOUBLE_LOW (mask),
   7435  1.1.1.1.8.2  tls 					c_hi & CONST_DOUBLE_HIGH (mask),
   7436  1.1.1.1.8.2  tls 					DImode);
   7437  1.1.1.1.8.2  tls     }
   7438  1.1.1.1.8.2  tls   emit_move_insn (operands[0], operands[1]);
   7439  1.1.1.1.8.2  tls   DONE;
   7440  1.1.1.1.8.2  tls })
   7441  1.1.1.1.8.2  tls 
   7442  1.1.1.1.8.2  tls (define_split
   7443  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   7444  1.1.1.1.8.2  tls 	(and:DI (unspec:DI
   7445  1.1.1.1.8.2  tls 		  [(match_operand:QI 2 "const_int_operand" "")]
   7446  1.1.1.1.8.2  tls 		  UNSPEC_ZAP)
   7447  1.1.1.1.8.2  tls 		(match_operand:DI 1 "register_operand" "")))]
   7448  1.1.1.1.8.2  tls   ""
   7449  1.1.1.1.8.2  tls   [(set (match_dup 0)
   7450  1.1.1.1.8.2  tls 	(and:DI (match_dup 1) (match_dup 2)))]
   7451  1.1.1.1.8.2  tls {
   7452  1.1.1.1.8.2  tls   operands[2] = alpha_expand_zap_mask (INTVAL (operands[2]));
   7453  1.1.1.1.8.2  tls   if (operands[2] == const0_rtx)
   7454  1.1.1.1.8.2  tls     {
   7455  1.1.1.1.8.2  tls       emit_move_insn (operands[0], const0_rtx);
   7456  1.1.1.1.8.2  tls       DONE;
   7457  1.1.1.1.8.2  tls     }
   7458  1.1.1.1.8.2  tls   if (operands[2] == constm1_rtx)
   7459  1.1.1.1.8.2  tls     {
   7460  1.1.1.1.8.2  tls       emit_move_insn (operands[0], operands[1]);
   7461  1.1.1.1.8.2  tls       DONE;
   7462  1.1.1.1.8.2  tls     }
   7463  1.1.1.1.8.2  tls })
   7464  1.1.1.1.8.2  tls 
   7465  1.1.1.1.8.2  tls (define_expand "builtin_zapnot"
   7466  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   7467  1.1.1.1.8.2  tls 	(and:DI (unspec:DI
   7468  1.1.1.1.8.2  tls 		  [(not:QI (match_operand:DI 2 "reg_or_cint_operand" ""))]
   7469  1.1.1.1.8.2  tls 		  UNSPEC_ZAP)
   7470  1.1.1.1.8.2  tls 		(match_operand:DI 1 "reg_or_cint_operand" "")))]
   7471  1.1.1.1.8.2  tls   ""
   7472  1.1.1.1.8.2  tls {
   7473  1.1.1.1.8.2  tls   if (CONST_INT_P (operands[2]))
   7474  1.1.1.1.8.2  tls     {
   7475  1.1.1.1.8.2  tls       rtx mask = alpha_expand_zap_mask (~ INTVAL (operands[2]));
   7476  1.1.1.1.8.2  tls 
   7477  1.1.1.1.8.2  tls       if (mask == const0_rtx)
   7478  1.1.1.1.8.2  tls 	{
   7479  1.1.1.1.8.2  tls 	  emit_move_insn (operands[0], const0_rtx);
   7480  1.1.1.1.8.2  tls 	  DONE;
   7481  1.1.1.1.8.2  tls 	}
   7482  1.1.1.1.8.2  tls       if (mask == constm1_rtx)
   7483  1.1.1.1.8.2  tls 	{
   7484  1.1.1.1.8.2  tls 	  emit_move_insn (operands[0], operands[1]);
   7485  1.1.1.1.8.2  tls 	  DONE;
   7486  1.1.1.1.8.2  tls 	}
   7487  1.1.1.1.8.2  tls 
   7488  1.1.1.1.8.2  tls       operands[1] = force_reg (DImode, operands[1]);
   7489  1.1.1.1.8.2  tls       emit_insn (gen_anddi3 (operands[0], operands[1], mask));
   7490  1.1.1.1.8.2  tls       DONE;
   7491  1.1.1.1.8.2  tls     }
   7492  1.1.1.1.8.2  tls 
   7493  1.1.1.1.8.2  tls   operands[1] = force_reg (DImode, operands[1]);
   7494  1.1.1.1.8.2  tls   operands[2] = gen_lowpart (QImode, operands[2]);
   7495  1.1.1.1.8.2  tls })
   7496  1.1.1.1.8.2  tls 
   7497  1.1.1.1.8.2  tls (define_insn "*builtin_zapnot_1"
   7498  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   7499  1.1.1.1.8.2  tls 	(and:DI (unspec:DI
   7500  1.1.1.1.8.2  tls                   [(not:QI (match_operand:QI 2 "register_operand" "r"))]
   7501  1.1.1.1.8.2  tls                   UNSPEC_ZAP)
   7502  1.1.1.1.8.2  tls 		(match_operand:DI 1 "reg_or_0_operand" "rJ")))]
   7503  1.1.1.1.8.2  tls   ""
   7504  1.1.1.1.8.2  tls   "zapnot %r1,%2,%0"
   7505  1.1.1.1.8.2  tls   [(set_attr "type" "shift")])
   7506  1.1.1.1.8.2  tls 
   7507  1.1.1.1.8.2  tls (define_insn "builtin_amask"
   7508  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   7509  1.1.1.1.8.2  tls 	(unspec:DI [(match_operand:DI 1 "reg_or_8bit_operand" "rI")]
   7510  1.1.1.1.8.2  tls 		   UNSPEC_AMASK))]
   7511  1.1.1.1.8.2  tls   ""
   7512  1.1.1.1.8.2  tls   "amask %1,%0"
   7513  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   7514  1.1.1.1.8.2  tls 
   7515  1.1.1.1.8.2  tls (define_insn "builtin_implver"
   7516  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   7517  1.1.1.1.8.2  tls   	(unspec:DI [(const_int 0)] UNSPEC_IMPLVER))]
   7518  1.1.1.1.8.2  tls   ""
   7519  1.1.1.1.8.2  tls   "implver %0"
   7520  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   7521  1.1.1.1.8.2  tls 
   7522  1.1.1.1.8.2  tls (define_insn "builtin_rpcc"
   7523  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   7524  1.1.1.1.8.2  tls   	(unspec_volatile:DI [(const_int 0)] UNSPECV_RPCC))]
   7525  1.1.1.1.8.2  tls   ""
   7526  1.1.1.1.8.2  tls   "rpcc %0"
   7527  1.1.1.1.8.2  tls   [(set_attr "type" "ilog")])
   7528  1.1.1.1.8.2  tls 
   7529  1.1.1.1.8.2  tls (define_expand "builtin_minub8"
   7530  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7531  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7532  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_0_operand" "")]
   7533  1.1.1.1.8.2  tls   "TARGET_MAX"
   7534  1.1.1.1.8.2  tls {
   7535  1.1.1.1.8.2  tls   alpha_expand_builtin_vector_binop (gen_uminv8qi3, V8QImode, operands[0],
   7536  1.1.1.1.8.2  tls 				     operands[1], operands[2]);
   7537  1.1.1.1.8.2  tls   DONE;
   7538  1.1.1.1.8.2  tls })
   7539  1.1.1.1.8.2  tls 
   7540  1.1.1.1.8.2  tls (define_expand "builtin_minsb8"
   7541  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7542  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7543  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_0_operand" "")]
   7544  1.1.1.1.8.2  tls   "TARGET_MAX"
   7545  1.1.1.1.8.2  tls {
   7546  1.1.1.1.8.2  tls   alpha_expand_builtin_vector_binop (gen_sminv8qi3, V8QImode, operands[0],
   7547  1.1.1.1.8.2  tls 				     operands[1], operands[2]);
   7548  1.1.1.1.8.2  tls   DONE;
   7549  1.1.1.1.8.2  tls })
   7550  1.1.1.1.8.2  tls 
   7551  1.1.1.1.8.2  tls (define_expand "builtin_minuw4"
   7552  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7553  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7554  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_0_operand" "")]
   7555  1.1.1.1.8.2  tls   "TARGET_MAX"
   7556  1.1.1.1.8.2  tls {
   7557  1.1.1.1.8.2  tls   alpha_expand_builtin_vector_binop (gen_uminv4hi3, V4HImode, operands[0],
   7558  1.1.1.1.8.2  tls 				     operands[1], operands[2]);
   7559  1.1.1.1.8.2  tls   DONE;
   7560  1.1.1.1.8.2  tls })
   7561  1.1.1.1.8.2  tls 
   7562  1.1.1.1.8.2  tls (define_expand "builtin_minsw4"
   7563  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7564  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7565  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_0_operand" "")]
   7566  1.1.1.1.8.2  tls   "TARGET_MAX"
   7567  1.1.1.1.8.2  tls {
   7568  1.1.1.1.8.2  tls   alpha_expand_builtin_vector_binop (gen_sminv4hi3, V4HImode, operands[0],
   7569  1.1.1.1.8.2  tls 				     operands[1], operands[2]);
   7570  1.1.1.1.8.2  tls   DONE;
   7571  1.1.1.1.8.2  tls })
   7572  1.1.1.1.8.2  tls 
   7573  1.1.1.1.8.2  tls (define_expand "builtin_maxub8"
   7574  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7575  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7576  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_0_operand" "")]
   7577  1.1.1.1.8.2  tls   "TARGET_MAX"
   7578  1.1.1.1.8.2  tls {
   7579  1.1.1.1.8.2  tls   alpha_expand_builtin_vector_binop (gen_umaxv8qi3, V8QImode, operands[0],
   7580  1.1.1.1.8.2  tls 				     operands[1], operands[2]);
   7581  1.1.1.1.8.2  tls   DONE;
   7582  1.1.1.1.8.2  tls })
   7583  1.1.1.1.8.2  tls 
   7584  1.1.1.1.8.2  tls (define_expand "builtin_maxsb8"
   7585  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7586  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7587  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_0_operand" "")]
   7588  1.1.1.1.8.2  tls   "TARGET_MAX"
   7589  1.1.1.1.8.2  tls {
   7590  1.1.1.1.8.2  tls   alpha_expand_builtin_vector_binop (gen_smaxv8qi3, V8QImode, operands[0],
   7591  1.1.1.1.8.2  tls 				     operands[1], operands[2]);
   7592  1.1.1.1.8.2  tls   DONE;
   7593  1.1.1.1.8.2  tls })
   7594  1.1.1.1.8.2  tls 
   7595  1.1.1.1.8.2  tls (define_expand "builtin_maxuw4"
   7596  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7597  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7598  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_0_operand" "")]
   7599  1.1.1.1.8.2  tls   "TARGET_MAX"
   7600  1.1.1.1.8.2  tls {
   7601  1.1.1.1.8.2  tls   alpha_expand_builtin_vector_binop (gen_umaxv4hi3, V4HImode, operands[0],
   7602  1.1.1.1.8.2  tls 				     operands[1], operands[2]);
   7603  1.1.1.1.8.2  tls   DONE;
   7604  1.1.1.1.8.2  tls })
   7605  1.1.1.1.8.2  tls 
   7606  1.1.1.1.8.2  tls (define_expand "builtin_maxsw4"
   7607  1.1.1.1.8.2  tls   [(match_operand:DI 0 "register_operand" "")
   7608  1.1.1.1.8.2  tls    (match_operand:DI 1 "reg_or_0_operand" "")
   7609  1.1.1.1.8.2  tls    (match_operand:DI 2 "reg_or_0_operand" "")]
   7610  1.1.1.1.8.2  tls   "TARGET_MAX"
   7611  1.1.1.1.8.2  tls {
   7612  1.1.1.1.8.2  tls   alpha_expand_builtin_vector_binop (gen_smaxv4hi3, V4HImode, operands[0],
   7613  1.1.1.1.8.2  tls 				     operands[1], operands[2]);
   7614  1.1.1.1.8.2  tls   DONE;
   7615  1.1.1.1.8.2  tls })
   7616  1.1.1.1.8.2  tls 
   7617  1.1.1.1.8.2  tls (define_insn "builtin_perr"
   7618  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "=r")
   7619  1.1.1.1.8.2  tls 	(unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "%rJ")
   7620  1.1.1.1.8.2  tls 		    (match_operand:DI 2 "reg_or_8bit_operand" "rJ")]
   7621  1.1.1.1.8.2  tls 		   UNSPEC_PERR))]
   7622  1.1.1.1.8.2  tls   "TARGET_MAX"
   7623  1.1.1.1.8.2  tls   "perr %r1,%r2,%0"
   7624  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   7625  1.1.1.1.8.2  tls 
   7626  1.1.1.1.8.2  tls (define_expand "builtin_pklb"
   7627  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   7628  1.1.1.1.8.2  tls 	(vec_concat:V8QI
   7629  1.1.1.1.8.2  tls 	  (vec_concat:V4QI
   7630  1.1.1.1.8.2  tls 	    (truncate:V2QI (match_operand:DI 1 "register_operand" ""))
   7631  1.1.1.1.8.2  tls 	    (match_dup 2))
   7632  1.1.1.1.8.2  tls 	  (match_dup 3)))]
   7633  1.1.1.1.8.2  tls   "TARGET_MAX"
   7634  1.1.1.1.8.2  tls {
   7635  1.1.1.1.8.2  tls   operands[0] = gen_lowpart (V8QImode, operands[0]);
   7636  1.1.1.1.8.2  tls   operands[1] = gen_lowpart (V2SImode, operands[1]);
   7637  1.1.1.1.8.2  tls   operands[2] = CONST0_RTX (V2QImode);
   7638  1.1.1.1.8.2  tls   operands[3] = CONST0_RTX (V4QImode);
   7639  1.1.1.1.8.2  tls })
   7640  1.1.1.1.8.2  tls 
   7641  1.1.1.1.8.2  tls (define_insn "*pklb"
   7642  1.1.1.1.8.2  tls   [(set (match_operand:V8QI 0 "register_operand" "=r")
   7643  1.1.1.1.8.2  tls 	(vec_concat:V8QI
   7644  1.1.1.1.8.2  tls 	  (vec_concat:V4QI
   7645  1.1.1.1.8.2  tls 	    (truncate:V2QI (match_operand:V2SI 1 "register_operand" "r"))
   7646  1.1.1.1.8.2  tls 	    (match_operand:V2QI 2 "const0_operand" ""))
   7647  1.1.1.1.8.2  tls 	  (match_operand:V4QI 3 "const0_operand" "")))]
   7648  1.1.1.1.8.2  tls   "TARGET_MAX"
   7649  1.1.1.1.8.2  tls   "pklb %r1,%0"
   7650  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   7651  1.1.1.1.8.2  tls 
   7652  1.1.1.1.8.2  tls (define_expand "builtin_pkwb"
   7653  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   7654  1.1.1.1.8.2  tls 	(vec_concat:V8QI
   7655  1.1.1.1.8.2  tls 	  (truncate:V4QI (match_operand:DI 1 "register_operand" ""))
   7656  1.1.1.1.8.2  tls 	  (match_dup 2)))]
   7657  1.1.1.1.8.2  tls   "TARGET_MAX"
   7658  1.1.1.1.8.2  tls {
   7659  1.1.1.1.8.2  tls   operands[0] = gen_lowpart (V8QImode, operands[0]);
   7660  1.1.1.1.8.2  tls   operands[1] = gen_lowpart (V4HImode, operands[1]);
   7661  1.1.1.1.8.2  tls   operands[2] = CONST0_RTX (V4QImode);
   7662  1.1.1.1.8.2  tls })
   7663  1.1.1.1.8.2  tls 
   7664  1.1.1.1.8.2  tls (define_insn "*pkwb"
   7665  1.1.1.1.8.2  tls   [(set (match_operand:V8QI 0 "register_operand" "=r")
   7666  1.1.1.1.8.2  tls 	(vec_concat:V8QI
   7667  1.1.1.1.8.2  tls 	  (truncate:V4QI (match_operand:V4HI 1 "register_operand" "r"))
   7668  1.1.1.1.8.2  tls 	  (match_operand:V4QI 2 "const0_operand" "")))]
   7669  1.1.1.1.8.2  tls   "TARGET_MAX"
   7670  1.1.1.1.8.2  tls   "pkwb %r1,%0"
   7671  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   7672  1.1.1.1.8.2  tls 
   7673  1.1.1.1.8.2  tls (define_expand "builtin_unpkbl"
   7674  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   7675  1.1.1.1.8.2  tls 	(zero_extend:V2SI
   7676  1.1.1.1.8.2  tls 	  (vec_select:V2QI (match_operand:DI 1 "register_operand" "")
   7677  1.1.1.1.8.2  tls 			   (parallel [(const_int 0) (const_int 1)]))))]
   7678  1.1.1.1.8.2  tls   "TARGET_MAX"
   7679  1.1.1.1.8.2  tls {
   7680  1.1.1.1.8.2  tls   operands[0] = gen_lowpart (V2SImode, operands[0]);
   7681  1.1.1.1.8.2  tls   operands[1] = gen_lowpart (V8QImode, operands[1]);
   7682  1.1.1.1.8.2  tls })
   7683  1.1.1.1.8.2  tls 
   7684  1.1.1.1.8.2  tls (define_insn "*unpkbl"
   7685  1.1.1.1.8.2  tls   [(set (match_operand:V2SI 0 "register_operand" "=r")
   7686  1.1.1.1.8.2  tls 	(zero_extend:V2SI
   7687  1.1.1.1.8.2  tls 	  (vec_select:V2QI (match_operand:V8QI 1 "reg_or_0_operand" "rW")
   7688  1.1.1.1.8.2  tls 			   (parallel [(const_int 0) (const_int 1)]))))]
   7689  1.1.1.1.8.2  tls   "TARGET_MAX"
   7690  1.1.1.1.8.2  tls   "unpkbl %r1,%0"
   7691  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   7692  1.1.1.1.8.2  tls 
   7693  1.1.1.1.8.2  tls (define_expand "builtin_unpkbw"
   7694  1.1.1.1.8.2  tls   [(set (match_operand:DI 0 "register_operand" "")
   7695  1.1.1.1.8.2  tls 	(zero_extend:V4HI
   7696  1.1.1.1.8.2  tls 	  (vec_select:V4QI (match_operand:DI 1 "register_operand" "")
   7697  1.1.1.1.8.2  tls 			   (parallel [(const_int 0)
   7698  1.1.1.1.8.2  tls 				      (const_int 1)
   7699  1.1.1.1.8.2  tls 				      (const_int 2)
   7700  1.1.1.1.8.2  tls 				      (const_int 3)]))))]
   7701  1.1.1.1.8.2  tls   "TARGET_MAX"
   7702  1.1.1.1.8.2  tls {
   7703  1.1.1.1.8.2  tls   operands[0] = gen_lowpart (V4HImode, operands[0]);
   7704  1.1.1.1.8.2  tls   operands[1] = gen_lowpart (V8QImode, operands[1]);
   7705  1.1.1.1.8.2  tls })
   7706  1.1.1.1.8.2  tls 
   7707  1.1.1.1.8.2  tls (define_insn "*unpkbw"
   7708  1.1.1.1.8.2  tls   [(set (match_operand:V4HI 0 "register_operand" "=r")
   7709  1.1.1.1.8.2  tls 	(zero_extend:V4HI
   7710  1.1.1.1.8.2  tls 	  (vec_select:V4QI (match_operand:V8QI 1 "reg_or_0_operand" "rW")
   7711  1.1.1.1.8.2  tls 			   (parallel [(const_int 0)
   7712  1.1.1.1.8.2  tls 				      (const_int 1)
   7713  1.1.1.1.8.2  tls 				      (const_int 2)
   7714  1.1.1.1.8.2  tls 				      (const_int 3)]))))]
   7715  1.1.1.1.8.2  tls   "TARGET_MAX"
   7716  1.1.1.1.8.2  tls   "unpkbw %r1,%0"
   7717  1.1.1.1.8.2  tls   [(set_attr "type" "mvi")])
   7718  1.1.1.1.8.2  tls 
   7720  1.1.1.1.8.2  tls (include "sync.md")
   7721  1.1.1.1.8.2  tls 
   7723  1.1.1.1.8.2  tls ;; The call patterns are at the end of the file because their
   7724  1.1.1.1.8.2  tls ;; wildcard operand0 interferes with nice recognition.
   7725  1.1.1.1.8.2  tls 
   7726  1.1.1.1.8.2  tls (define_insn "*call_value_osf_1_er_noreturn"
   7727  1.1.1.1.8.2  tls   [(set (match_operand 0 "" "")
   7728  1.1.1.1.8.2  tls 	(call (mem:DI (match_operand:DI 1 "call_operand" "c,R,s"))
   7729  1.1.1.1.8.2  tls 	      (match_operand 2 "" "")))
   7730  1.1.1.1.8.2  tls    (use (reg:DI 29))
   7731  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   7732  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF
   7733  1.1.1.1.8.2  tls    && find_reg_note (insn, REG_NORETURN, NULL_RTX)"
   7734  1.1.1.1.8.2  tls   "@
   7735  1.1.1.1.8.2  tls    jsr $26,($27),0
   7736  1.1.1.1.8.2  tls    bsr $26,%1\t\t!samegp
   7737  1.1.1.1.8.2  tls    ldq $27,%1($29)\t\t!literal!%#\;jsr $26,($27),%1\t\t!lituse_jsr!%#"
   7738  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   7739  1.1.1.1.8.2  tls    (set_attr "length" "*,*,8")])
   7740  1.1.1.1.8.2  tls 
   7741  1.1.1.1.8.2  tls (define_insn "*call_value_osf_1_er"
   7742  1.1.1.1.8.2  tls   [(set (match_operand 0 "" "")
   7743  1.1.1.1.8.2  tls 	(call (mem:DI (match_operand:DI 1 "call_operand" "c,R,s"))
   7744  1.1.1.1.8.2  tls 	      (match_operand 2 "" "")))
   7745  1.1.1.1.8.2  tls    (use (reg:DI 29))
   7746  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   7747  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   7748  1.1.1.1.8.2  tls   "@
   7749  1.1.1.1.8.2  tls    jsr $26,(%1),0\;ldah $29,0($26)\t\t!gpdisp!%*\;lda $29,0($29)\t\t!gpdisp!%*
   7750  1.1.1.1.8.2  tls    bsr $26,%1\t\t!samegp
   7751  1.1.1.1.8.2  tls    ldq $27,%1($29)\t\t!literal!%#\;jsr $26,($27),0\t\t!lituse_jsr!%#\;ldah $29,0($26)\t\t!gpdisp!%*\;lda $29,0($29)\t\t!gpdisp!%*"
   7752  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   7753  1.1.1.1.8.2  tls    (set_attr "length" "12,*,16")])
   7754  1.1.1.1.8.2  tls 
   7755  1.1.1.1.8.2  tls ;; We must use peep2 instead of a split because we need accurate life
   7756  1.1.1.1.8.2  tls ;; information for $gp.  Consider the case of { bar(); while (1); }.
   7757  1.1.1.1.8.2  tls (define_peephole2
   7758  1.1.1.1.8.2  tls   [(parallel [(set (match_operand 0 "" "")
   7759  1.1.1.1.8.2  tls 		   (call (mem:DI (match_operand:DI 1 "call_operand" ""))
   7760  1.1.1.1.8.2  tls 		         (match_operand 2 "" "")))
   7761  1.1.1.1.8.2  tls 	      (use (reg:DI 29))
   7762  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))])]
   7763  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF && reload_completed
   7764  1.1.1.1.8.2  tls    && ! samegp_function_operand (operands[1], Pmode)
   7765  1.1.1.1.8.2  tls    && (peep2_regno_dead_p (1, 29)
   7766  1.1.1.1.8.2  tls        || find_reg_note (insn, REG_NORETURN, NULL_RTX))"
   7767  1.1.1.1.8.2  tls   [(parallel [(set (match_dup 0)
   7768  1.1.1.1.8.2  tls 		   (call (mem:DI (match_dup 3))
   7769  1.1.1.1.8.2  tls 			 (match_dup 2)))
   7770  1.1.1.1.8.2  tls 	      (use (reg:DI 29))
   7771  1.1.1.1.8.2  tls 	      (use (match_dup 1))
   7772  1.1.1.1.8.2  tls 	      (use (match_dup 4))
   7773  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))])]
   7774  1.1.1.1.8.2  tls {
   7775  1.1.1.1.8.2  tls   if (CONSTANT_P (operands[1]))
   7776  1.1.1.1.8.2  tls     {
   7777  1.1.1.1.8.2  tls       operands[3] = gen_rtx_REG (Pmode, 27);
   7778  1.1.1.1.8.2  tls       operands[4] = GEN_INT (alpha_next_sequence_number++);
   7779  1.1.1.1.8.2  tls       emit_insn (gen_movdi_er_high_g (operands[3], pic_offset_table_rtx,
   7780  1.1.1.1.8.2  tls 				      operands[1], operands[4]));
   7781  1.1.1.1.8.2  tls     }
   7782  1.1.1.1.8.2  tls   else
   7783  1.1.1.1.8.2  tls     {
   7784  1.1.1.1.8.2  tls       operands[3] = operands[1];
   7785  1.1.1.1.8.2  tls       operands[1] = const0_rtx;
   7786  1.1.1.1.8.2  tls       operands[4] = const0_rtx;
   7787  1.1.1.1.8.2  tls     }
   7788  1.1.1.1.8.2  tls })
   7789  1.1.1.1.8.2  tls 
   7790  1.1.1.1.8.2  tls (define_peephole2
   7791  1.1.1.1.8.2  tls   [(parallel [(set (match_operand 0 "" "")
   7792  1.1.1.1.8.2  tls 		   (call (mem:DI (match_operand:DI 1 "call_operand" ""))
   7793  1.1.1.1.8.2  tls 		         (match_operand 2 "" "")))
   7794  1.1.1.1.8.2  tls 	      (use (reg:DI 29))
   7795  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))])]
   7796  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF && reload_completed
   7797  1.1.1.1.8.2  tls    && ! samegp_function_operand (operands[1], Pmode)
   7798  1.1.1.1.8.2  tls    && ! (peep2_regno_dead_p (1, 29)
   7799  1.1.1.1.8.2  tls          || find_reg_note (insn, REG_NORETURN, NULL_RTX))"
   7800  1.1.1.1.8.2  tls   [(parallel [(set (match_dup 0)
   7801  1.1.1.1.8.2  tls 		   (call (mem:DI (match_dup 3))
   7802  1.1.1.1.8.2  tls 			 (match_dup 2)))
   7803  1.1.1.1.8.2  tls 	      (set (match_dup 6)
   7804  1.1.1.1.8.2  tls 		   (unspec:DI [(match_dup 6) (match_dup 4)] UNSPEC_LDGP1))
   7805  1.1.1.1.8.2  tls 	      (use (match_dup 1))
   7806  1.1.1.1.8.2  tls 	      (use (match_dup 5))
   7807  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))])
   7808  1.1.1.1.8.2  tls    (set (match_dup 6)
   7809  1.1.1.1.8.2  tls 	(unspec:DI [(match_dup 6) (match_dup 4)] UNSPEC_LDGP2))]
   7810  1.1.1.1.8.2  tls {
   7811  1.1.1.1.8.2  tls   if (CONSTANT_P (operands[1]))
   7812  1.1.1.1.8.2  tls     {
   7813  1.1.1.1.8.2  tls       operands[3] = gen_rtx_REG (Pmode, 27);
   7814  1.1.1.1.8.2  tls       operands[5] = GEN_INT (alpha_next_sequence_number++);
   7815  1.1.1.1.8.2  tls       emit_insn (gen_movdi_er_high_g (operands[3], pic_offset_table_rtx,
   7816  1.1.1.1.8.2  tls 				      operands[1], operands[5]));
   7817  1.1.1.1.8.2  tls     }
   7818  1.1.1.1.8.2  tls   else
   7819  1.1.1.1.8.2  tls     {
   7820  1.1.1.1.8.2  tls       operands[3] = operands[1];
   7821  1.1.1.1.8.2  tls       operands[1] = const0_rtx;
   7822  1.1.1.1.8.2  tls       operands[5] = const0_rtx;
   7823  1.1.1.1.8.2  tls     }
   7824  1.1.1.1.8.2  tls   operands[4] = GEN_INT (alpha_next_sequence_number++);
   7825  1.1.1.1.8.2  tls   operands[6] = pic_offset_table_rtx;
   7826  1.1.1.1.8.2  tls })
   7827  1.1.1.1.8.2  tls 
   7828  1.1.1.1.8.2  tls (define_insn "*call_value_osf_2_er_nogp"
   7829  1.1.1.1.8.2  tls   [(set (match_operand 0 "" "")
   7830  1.1.1.1.8.2  tls 	(call (mem:DI (match_operand:DI 1 "register_operand" "c"))
   7831  1.1.1.1.8.2  tls 	      (match_operand 2 "" "")))
   7832  1.1.1.1.8.2  tls    (use (reg:DI 29))
   7833  1.1.1.1.8.2  tls    (use (match_operand 3 "" ""))
   7834  1.1.1.1.8.2  tls    (use (match_operand 4 "" ""))
   7835  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   7836  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   7837  1.1.1.1.8.2  tls   "jsr $26,(%1),%3%J4"
   7838  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")])
   7839  1.1.1.1.8.2  tls 
   7840  1.1.1.1.8.2  tls (define_insn "*call_value_osf_2_er"
   7841  1.1.1.1.8.2  tls   [(set (match_operand 0 "" "")
   7842  1.1.1.1.8.2  tls 	(call (mem:DI (match_operand:DI 1 "register_operand" "c"))
   7843  1.1.1.1.8.2  tls 	      (match_operand 2 "" "")))
   7844  1.1.1.1.8.2  tls    (set (reg:DI 29)
   7845  1.1.1.1.8.2  tls 	(unspec:DI [(reg:DI 29) (match_operand 5 "const_int_operand" "")]
   7846  1.1.1.1.8.2  tls 		   UNSPEC_LDGP1))
   7847  1.1.1.1.8.2  tls    (use (match_operand 3 "" ""))
   7848  1.1.1.1.8.2  tls    (use (match_operand 4 "" ""))
   7849  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   7850  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   7851  1.1.1.1.8.2  tls   "jsr $26,(%1),%3%J4\;ldah $29,0($26)\t\t!gpdisp!%5"
   7852  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   7853  1.1.1.1.8.2  tls    (set_attr "cannot_copy" "true")
   7854  1.1.1.1.8.2  tls    (set_attr "length" "8")])
   7855  1.1.1.1.8.2  tls 
   7856  1.1.1.1.8.2  tls (define_insn "*call_value_osf_1_noreturn"
   7857  1.1.1.1.8.2  tls   [(set (match_operand 0 "" "")
   7858  1.1.1.1.8.2  tls 	(call (mem:DI (match_operand:DI 1 "call_operand" "c,R,s"))
   7859  1.1.1.1.8.2  tls 	      (match_operand 2 "" "")))
   7860  1.1.1.1.8.2  tls    (use (reg:DI 29))
   7861  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   7862  1.1.1.1.8.2  tls   "! TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF
   7863  1.1.1.1.8.2  tls    && find_reg_note (insn, REG_NORETURN, NULL_RTX)"
   7864  1.1.1.1.8.2  tls   "@
   7865  1.1.1.1.8.2  tls    jsr $26,($27),0
   7866  1.1.1.1.8.2  tls    bsr $26,$%1..ng
   7867  1.1.1.1.8.2  tls    jsr $26,%1"
   7868  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   7869  1.1.1.1.8.2  tls    (set_attr "length" "*,*,8")])
   7870  1.1.1.1.8.2  tls 
   7871  1.1.1.1.8.2  tls (define_insn_and_split "call_value_osf_tlsgd"
   7872  1.1.1.1.8.2  tls   [(set (match_operand 0 "" "")
   7873  1.1.1.1.8.2  tls 	(call (mem:DI (match_operand:DI 1 "symbolic_operand" ""))
   7874  1.1.1.1.8.2  tls 	      (const_int 0)))
   7875  1.1.1.1.8.2  tls    (unspec [(match_operand:DI 2 "const_int_operand" "")] UNSPEC_TLSGD_CALL)
   7876  1.1.1.1.8.2  tls    (use (reg:DI 29))
   7877  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   7878  1.1.1.1.8.2  tls   "HAVE_AS_TLS"
   7879  1.1.1.1.8.2  tls   "#"
   7880  1.1.1.1.8.2  tls   "&& reload_completed"
   7881  1.1.1.1.8.2  tls   [(set (match_dup 3)
   7882  1.1.1.1.8.2  tls 	(unspec:DI [(match_dup 5)
   7883  1.1.1.1.8.2  tls 		    (match_dup 1)
   7884  1.1.1.1.8.2  tls 		    (match_dup 2)] UNSPEC_LITERAL))
   7885  1.1.1.1.8.2  tls    (parallel [(set (match_dup 0)
   7886  1.1.1.1.8.2  tls 		   (call (mem:DI (match_dup 3))
   7887  1.1.1.1.8.2  tls 			 (const_int 0)))
   7888  1.1.1.1.8.2  tls 	      (set (match_dup 5)
   7889  1.1.1.1.8.2  tls 		   (unspec:DI [(match_dup 5) (match_dup 4)] UNSPEC_LDGP1))
   7890  1.1.1.1.8.2  tls 	      (use (match_dup 1))
   7891  1.1.1.1.8.2  tls 	      (use (unspec [(match_dup 2)] UNSPEC_TLSGD_CALL))
   7892  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))])
   7893  1.1.1.1.8.2  tls    (set (match_dup 5)
   7894  1.1.1.1.8.2  tls 	(unspec:DI [(match_dup 5) (match_dup 4)] UNSPEC_LDGP2))]
   7895  1.1.1.1.8.2  tls {
   7896  1.1.1.1.8.2  tls   operands[3] = gen_rtx_REG (Pmode, 27);
   7897  1.1.1.1.8.2  tls   operands[4] = GEN_INT (alpha_next_sequence_number++);
   7898  1.1.1.1.8.2  tls   operands[5] = pic_offset_table_rtx;
   7899  1.1.1.1.8.2  tls }
   7900  1.1.1.1.8.2  tls   [(set_attr "type" "multi")])
   7901  1.1.1.1.8.2  tls 
   7902  1.1.1.1.8.2  tls (define_insn_and_split "call_value_osf_tlsldm"
   7903  1.1.1.1.8.2  tls   [(set (match_operand 0 "" "")
   7904  1.1.1.1.8.2  tls 	(call (mem:DI (match_operand:DI 1 "symbolic_operand" ""))
   7905  1.1.1.1.8.2  tls 	      (const_int 0)))
   7906  1.1.1.1.8.2  tls    (unspec [(match_operand:DI 2 "const_int_operand" "")] UNSPEC_TLSLDM_CALL)
   7907  1.1.1.1.8.2  tls    (use (reg:DI 29))
   7908  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   7909  1.1.1.1.8.2  tls   "HAVE_AS_TLS"
   7910  1.1.1.1.8.2  tls   "#"
   7911  1.1.1.1.8.2  tls   "&& reload_completed"
   7912  1.1.1.1.8.2  tls   [(set (match_dup 3)
   7913  1.1.1.1.8.2  tls 	(unspec:DI [(match_dup 5)
   7914  1.1.1.1.8.2  tls 		    (match_dup 1)
   7915  1.1.1.1.8.2  tls 		    (match_dup 2)] UNSPEC_LITERAL))
   7916  1.1.1.1.8.2  tls    (parallel [(set (match_dup 0)
   7917  1.1.1.1.8.2  tls 		   (call (mem:DI (match_dup 3))
   7918  1.1.1.1.8.2  tls 			 (const_int 0)))
   7919  1.1.1.1.8.2  tls 	      (set (match_dup 5)
   7920  1.1.1.1.8.2  tls 		   (unspec:DI [(match_dup 5) (match_dup 4)] UNSPEC_LDGP1))
   7921  1.1.1.1.8.2  tls 	      (use (match_dup 1))
   7922  1.1.1.1.8.2  tls 	      (use (unspec [(match_dup 2)] UNSPEC_TLSLDM_CALL))
   7923  1.1.1.1.8.2  tls 	      (clobber (reg:DI 26))])
   7924  1.1.1.1.8.2  tls    (set (match_dup 5)
   7925  1.1.1.1.8.2  tls 	(unspec:DI [(match_dup 5) (match_dup 4)] UNSPEC_LDGP2))]
   7926  1.1.1.1.8.2  tls {
   7927  1.1.1.1.8.2  tls   operands[3] = gen_rtx_REG (Pmode, 27);
   7928  1.1.1.1.8.2  tls   operands[4] = GEN_INT (alpha_next_sequence_number++);
   7929  1.1.1.1.8.2  tls   operands[5] = pic_offset_table_rtx;
   7930  1.1.1.1.8.2  tls }
   7931  1.1.1.1.8.2  tls   [(set_attr "type" "multi")])
   7932  1.1.1.1.8.2  tls 
   7933  1.1.1.1.8.2  tls (define_insn "*call_value_osf_1"
   7934  1.1.1.1.8.2  tls   [(set (match_operand 0 "" "")
   7935  1.1.1.1.8.2  tls 	(call (mem:DI (match_operand:DI 1 "call_operand" "c,R,s"))
   7936  1.1.1.1.8.2  tls 	      (match_operand 2 "" "")))
   7937  1.1.1.1.8.2  tls    (use (reg:DI 29))
   7938  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   7939  1.1.1.1.8.2  tls   "! TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   7940  1.1.1.1.8.2  tls   "@
   7941  1.1.1.1.8.2  tls    jsr $26,($27),0\;ldgp $29,0($26)
   7942  1.1.1.1.8.2  tls    bsr $26,$%1..ng
   7943  1.1.1.1.8.2  tls    jsr $26,%1\;ldgp $29,0($26)"
   7944  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   7945  1.1.1.1.8.2  tls    (set_attr "length" "12,*,16")])
   7946  1.1.1.1.8.2  tls 
   7947  1.1.1.1.8.2  tls (define_insn "*sibcall_value_osf_1_er"
   7948  1.1.1.1.8.2  tls   [(set (match_operand 0 "" "")
   7949  1.1.1.1.8.2  tls 	(call (mem:DI (match_operand:DI 1 "symbolic_operand" "R,s"))
   7950  1.1.1.1.8.2  tls 	      (match_operand 2 "" "")))
   7951  1.1.1.1.8.2  tls    (unspec [(reg:DI 29)] UNSPEC_SIBCALL)]
   7952  1.1.1.1.8.2  tls   "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   7953  1.1.1.1.8.2  tls   "@
   7954  1.1.1.1.8.2  tls    br $31,%1\t\t!samegp
   7955  1.1.1.1.8.2  tls    ldq $27,%1($29)\t\t!literal!%#\;jmp $31,($27),%1\t\t!lituse_jsr!%#"
   7956  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   7957  1.1.1.1.8.2  tls    (set_attr "length" "*,8")])
   7958  1.1.1.1.8.2  tls 
   7959  1.1.1.1.8.2  tls (define_insn "*sibcall_value_osf_1"
   7960  1.1.1.1.8.2  tls   [(set (match_operand 0 "" "")
   7961  1.1.1.1.8.2  tls 	(call (mem:DI (match_operand:DI 1 "symbolic_operand" "R,s"))
   7962  1.1.1.1.8.2  tls 	      (match_operand 2 "" "")))
   7963  1.1.1.1.8.2  tls    (unspec [(reg:DI 29)] UNSPEC_SIBCALL)]
   7964  1.1.1.1.8.2  tls   "! TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   7965  1.1.1.1.8.2  tls   "@
   7966  1.1.1.1.8.2  tls    br $31,$%1..ng
   7967  1.1.1.1.8.2  tls    lda $27,%1\;jmp $31,($27),%1"
   7968  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   7969  1.1.1.1.8.2  tls    (set_attr "length" "*,8")])
   7970  1.1.1.1.8.2  tls 
   7971  1.1.1.1.8.2  tls (define_insn "*call_value_nt_1"
   7972  1.1.1.1.8.2  tls   [(set (match_operand 0 "" "")
   7973  1.1.1.1.8.2  tls 	(call (mem:DI (match_operand:DI 1 "call_operand" "r,R,s"))
   7974  1.1.1.1.8.2  tls 	      (match_operand 2 "" "")))
   7975  1.1.1.1.8.2  tls    (clobber (reg:DI 26))]
   7976  1.1.1.1.8.2  tls   "TARGET_ABI_WINDOWS_NT"
   7977  1.1.1.1.8.2  tls   "@
   7978  1.1.1.1.8.2  tls    jsr $26,(%1)
   7979  1.1.1.1.8.2  tls    bsr $26,%1
   7980  1.1.1.1.8.2  tls    jsr $26,%1"
   7981  1.1.1.1.8.2  tls   [(set_attr "type" "jsr")
   7982  1.1.1.1.8.2  tls    (set_attr "length" "*,*,12")])
   7983  1.1.1.1.8.2  tls 
   7984  1.1.1.1.8.2  tls ; GAS relies on the order and position of instructions output below in order
   7985  1.1.1.1.8.2  tls ; to generate relocs for VMS link to potentially optimize the call.
   7986  1.1.1.1.8.2  tls ; Please do not molest.
   7987  1.1.1.1.8.2  tls (define_insn "*call_value_vms_1"
   7988  1.1.1.1.8.2  tls   [(set (match_operand 0 "" "")
   7989  1.1.1.1.8.2  tls 	(call (mem:DI (match_operand:DI 1 "call_operand" "r,s"))
   7990  1.1.1.1.8.2  tls 	      (match_operand 2 "" "")))
   7991  1.1.1.1.8.2  tls    (use (match_operand:DI 3 "nonmemory_operand" "r,n"))
   7992  1.1.1.1.8.2  tls    (use (reg:DI 25))
   7993  1.1.1.1.8.2  tls    (use (reg:DI 26))
   7994  1.1.1.1.8.2  tls    (clobber (reg:DI 27))]
   7995  1.1.1.1.8.2  tls   "TARGET_ABI_OPEN_VMS"
   7996  1.1.1.1.8.2  tls {
   7997  1.1.1.1.8.2  tls   switch (which_alternative)
   7998                       {
   7999                       case 0:
   8000                      	return "mov %3,$27\;jsr $26,0\;ldq $27,0($29)";
   8001                       case 1:
   8002                   	operands [3] = alpha_use_linkage (operands [1], cfun->decl, 1, 0);
   8003                   	operands [4] = alpha_use_linkage (operands [1], cfun->decl, 0, 0);
   8004                      	return "ldq $26,%4\;ldq $27,%3\;jsr $26,%1\;ldq $27,0($29)";
   8005                       default:
   8006                         gcc_unreachable ();
   8007                       }
   8008                   }
   8009                     [(set_attr "type" "jsr")
   8010                      (set_attr "length" "12,16")])
   8011                   
   8012                   (define_insn "*call_value_umk"
   8013                     [(set (match_operand 0 "" "")
   8014                   	(call (mem:DI (match_operand:DI 1 "call_operand" "r"))
   8015                   	      (match_operand 2 "" "")))
   8016                      (use (reg:DI 25))
   8017                      (clobber (reg:DI 26))]
   8018                     "TARGET_ABI_UNICOSMK"
   8019                     "jsr $26,(%1)"
   8020                     [(set_attr "type" "jsr")])
   8021