;; 9 This is an `fnstsw' operation.
;; 10 This is a `sahf' operation.
;; 11 This is a `fstcw' operation
+;;
+;; Insns whose names begin with "x86_" are emitted by gen_FOO calls
+;; from i386.c.
+
\f
;; Processor type. This attribute must exactly match the processor_type
;; enumeration in i386.h.
"* return output_fp_compare (insn, operands, 0, 0);"
[(set_attr "type" "fcmp")])
-(define_insn ""
+(define_insn "*cmpfp_2_sf_1"
[(set (match_operand:HI 0 "register_operand" "=a")
(unspec:HI
[(compare:CCFP
"* return output_fp_compare (insn, operands, 0, 0);"
[(set_attr "type" "fcmp")])
-(define_insn ""
+(define_insn "*cmpfp_2_df_1"
[(set (match_operand:HI 0 "register_operand" "=a")
(unspec:HI
[(compare:CCFP
"* return output_fp_compare (insn, operands, 0, 0);"
[(set_attr "type" "fcmp")])
-(define_insn ""
+(define_insn "*cmpfp_2_xf_1"
[(set (match_operand:HI 0 "register_operand" "=a")
(unspec:HI
[(compare:CCFP
"* return output_fp_compare (insn, operands, 0, 1);"
[(set_attr "type" "fcmp")])
-(define_insn ""
+(define_insn "*cmpfp_2u_1"
[(set (match_operand:HI 0 "register_operand" "=a")
(unspec:HI
[(compare:CCFPU
;; can get rid of this once we teach reload to do memory input reloads
;; via pushes.
-(define_insn ""
+(define_insn "*ficom_1"
[(set (reg:CCFP 18)
(compare:CCFP
(match_operand 0 "register_operand" "f,f")
;; emit moves.
;; %%% Kill these when call knows how to work out a DFmode push earlier.
-(define_insn ""
+(define_insn "*dummy_extendsfdf2"
[(set (match_operand:DF 0 "push_operand" "=<")
(float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "f")))]
"0"
[(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -8)))
(set (mem:DF (reg:SI 7)) (float_extend:DF (match_dup 1)))])
-(define_insn ""
+(define_insn "*dummy_extendsfxf2"
[(set (match_operand:XF 0 "push_operand" "=<")
(float_extend:XF (match_operand:SF 1 "nonimmediate_operand" "f")))]
"0"
[(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int -12)))
(set (mem:DF (reg:SI 7)) (float_extend:XF (match_dup 1)))])
-(define_insn ""
+(define_insn "*dummy_extenddfxf2"
[(set (match_operand:XF 0 "push_operand" "=<")
(float_extend:XF (match_operand:DF 1 "nonimmediate_operand" "f")))]
"0"
[(set_attr "type" "alu")])
;; %%% Conditionally split these post-reload for better scheduling.
-(define_insn ""
+(define_insn "*addsi_lea_1"
[(set (match_operand:SI 0 "register_operand" "=r")
(plus:SI (plus:SI (match_operand:SI 1 "register_operand" "r")
(match_operand:SI 2 "register_operand" "%r"))
}"
[(set_attr "type" "lea")])
-(define_insn ""
+(define_insn "*addsi_lea_2"
[(set (match_operand:SI 0 "register_operand" "=r")
(plus:SI (mult:SI (match_operand:SI 1 "reg_no_sp_operand" "r")
(match_operand:SI 2 "const248_operand" "I"))
}"
[(set_attr "type" "lea")])
-(define_insn ""
+(define_insn "*addsi_lea_3"
[(set (match_operand:SI 0 "register_operand" "=r")
(plus:SI (plus:SI (mult:SI (match_operand:SI 1 "reg_no_sp_operand" "r")
(match_operand:SI 2 "const248_operand" "I"))
"{cltd|cdq}\;idiv{l}\\t%2"
[(set_attr "type" "multi")])
-(define_insn ""
+(define_insn "*divmodsi_noext"
[(set (match_operand:SI 0 "register_operand" "=a")
(div:SI (match_operand:SI 1 "register_operand" "A")
(match_operand:SI 2 "nonimmediate_operand" "rm")))
"xor{l}\\t%3, %3\;div{l}\\t%2"
[(set_attr "type" "multi")])
-(define_insn ""
+(define_insn "*udivmodsi4_noext"
[(set (match_operand:SI 0 "register_operand" "=a")
(udiv:SI (match_operand:SI 1 "register_operand" "0")
(match_operand:SI 2 "nonimmediate_operand" "rm")))
""
"operands[4] = gen_reg_rtx (HImode);")
-(define_insn "*udivmodhi_1"
+(define_insn "*udivmodhi_noext"
[(set (match_operand:HI 0 "register_operand" "=a")
(udiv:HI (match_operand:HI 1 "register_operand" "0")
(match_operand:HI 2 "nonimmediate_operand" "rm")))
[(set_attr "type" "icmp")])
;; Combine likes to form bit extractions for some tests. Humor it.
-(define_insn ""
+(define_insn "*testqi_ext_3"
[(set (reg:CCNO 17)
(compare:CCNO (zero_extract:SI
(match_operand 0 "nonimmediate_operand" "rm")
"neg{l}\\t%0"
[(set_attr "type" "negnot")])
-(define_insn ""
+(define_insn "*negsi2_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO (neg:SI (match_operand:SI 1 "nonimmediate_operand" "0"))
(const_int 0)))
"neg{l}\\t%0"
[(set_attr "type" "negnot")])
-(define_insn ""
+(define_insn "*negsi2_cmp"
[(set (reg:CC 17)
(compare:CC (neg:SI (match_operand:SI 1 "nonimmediate_operand" "0"))
(const_int 0)))
"neg{w}\\t%0"
[(set_attr "type" "negnot")])
-(define_insn ""
+(define_insn "*neghi2_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO (neg:HI (match_operand:HI 1 "nonimmediate_operand" "0"))
(const_int 0)))
"neg{w}\\t%0"
[(set_attr "type" "negnot")])
-(define_insn ""
+(define_insn "*neghi2_cmp"
[(set (reg:CC 17)
(compare:CC (neg:HI (match_operand:HI 1 "nonimmediate_operand" "0"))
(const_int 0)))
"neg{b}\\t%0"
[(set_attr "type" "negnot")])
-(define_insn ""
+(define_insn "*negqi2_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO (neg:QI (match_operand:QI 1 "nonimmediate_operand" "0"))
(const_int 0)))
"neg{b}\\t%0"
[(set_attr "type" "negnot")])
-(define_insn ""
+(define_insn "*negqi2_cmp"
[(set (reg:CC 17)
(compare:CC (neg:QI (match_operand:QI 1 "nonimmediate_operand" "0"))
(const_int 0)))
[(set_attr "type" "fsgn")
(set_attr "ppro_uops" "few")])
-(define_insn ""
+(define_insn "*negextendsfdf2"
[(set (match_operand:DF 0 "register_operand" "=f")
(neg:DF (float_extend:DF
(match_operand:SF 1 "register_operand" "0"))))]
[(set_attr "type" "fsgn")
(set_attr "ppro_uops" "few")])
-(define_insn ""
+(define_insn "*negextenddfxf2"
[(set (match_operand:XF 0 "register_operand" "=f")
(neg:XF (float_extend:XF
(match_operand:DF 1 "register_operand" "0"))))]
[(set_attr "type" "fsgn")
(set_attr "ppro_uops" "few")])
-(define_insn ""
+(define_insn "*negextendsfxf2"
[(set (match_operand:XF 0 "register_operand" "=f")
(neg:XF (float_extend:XF
(match_operand:SF 1 "register_operand" "0"))))]
"fabs"
[(set_attr "type" "fsgn")])
-(define_insn ""
+(define_insn "*absextendsfdf2"
[(set (match_operand:DF 0 "register_operand" "=f")
(abs:DF (float_extend:DF
(match_operand:SF 1 "register_operand" "0"))))]
"fabs"
[(set_attr "type" "fsgn")])
-(define_insn ""
+(define_insn "*absextenddfxf2"
[(set (match_operand:XF 0 "register_operand" "=f")
(abs:XF (float_extend:XF
(match_operand:DF 1 "register_operand" "0"))))]
"fabs"
[(set_attr "type" "fsgn")])
-(define_insn ""
+(define_insn "*absextendsfxf2"
[(set (match_operand:XF 0 "register_operand" "=f")
(abs:XF (float_extend:XF
(match_operand:SF 1 "register_operand" "0"))))]
"not{l}\\t%0"
[(set_attr "type" "negnot")])
-(define_insn ""
+(define_insn "*one_cmplsi2_1"
[(set (reg:CCNO 17)
(compare:CCNO (not:SI (match_operand:SI 1 "nonimmediate_operand" "0"))
(const_int 0)))
"operands[0] = gen_lowpart (SImode, operands[0]);
operands[1] = gen_lowpart (SImode, operands[1]);")
-(define_insn ""
+(define_insn "*one_cmplhi2_1"
[(set (reg:CCNO 17)
(compare:CCNO (not:HI (match_operand:HI 1 "nonimmediate_operand" "0"))
(const_int 0)))
not{l}\\t%k0"
[(set_attr "type" "negnot")])
-(define_insn ""
+(define_insn "*one_cmplqi2_1"
[(set (reg:CCNO 17)
(compare:CCNO (not:QI (match_operand:QI 1 "nonimmediate_operand" "0"))
(const_int 0)))
]
(const_string "ishift")))])
-(define_insn ""
+(define_insn "*ashlsi3_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO
(ashift:SI (match_operand:SI 1 "nonimmediate_operand" "0")
"operands[0] = gen_lowpart (SImode, operands[0]);
operands[1] = gen_lowpart (SImode, operands[1]);")
-(define_insn ""
+(define_insn "*ashlhi3_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO
(ashift:HI (match_operand:HI 1 "nonimmediate_operand" "0")
]
(const_string "ishift")))])
-(define_insn ""
+(define_insn "*ashlqi3_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO
(ashift:QI (match_operand:QI 1 "nonimmediate_operand" "0")
sar{l}\\t{%b2, %0|%0, %b2}"
[(set_attr "type" "ishift")])
-(define_insn ""
+(define_insn "*ashrsi3_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO
(ashiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "0,0")
sar{w}\\t{%b2, %0|%0, %b2}"
[(set_attr "type" "ishift")])
-(define_insn ""
+(define_insn "*ashrhi3_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO
(ashiftrt:HI (match_operand:HI 1 "nonimmediate_operand" "0,0")
sar{b}\\t{%b2, %0|%0, %b2}"
[(set_attr "type" "ishift")])
-(define_insn ""
+(define_insn "*ashrqi3_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO
(ashiftrt:QI (match_operand:QI 1 "nonimmediate_operand" "0,0")
shr{l}\\t{%b2, %0|%0, %b2}"
[(set_attr "type" "ishift")])
-(define_insn ""
+(define_insn "*lshrsi3_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO
(lshiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "0,0")
shr{w}\\t{%b2, %0|%0, %b2}"
[(set_attr "type" "ishift")])
-(define_insn ""
+(define_insn "*lshrhi3_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO
(lshiftrt:HI (match_operand:HI 1 "nonimmediate_operand" "0,0")
shr{b}\\t{%b2, %0|%0, %b2}"
[(set_attr "type" "ishift")])
-(define_insn ""
+(define_insn "*lshrqi2_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO
(lshiftrt:QI (match_operand:QI 1 "nonimmediate_operand" "0,0")
rol{l}\\t{%b2, %0|%0, %b2}"
[(set_attr "type" "ishift")])
-(define_insn ""
+(define_insn "*rotlsi3_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO
(rotate:SI (match_operand:SI 1 "nonimmediate_operand" "0,0")
rol{w}\\t{%b2, %0|%0, %b2}"
[(set_attr "type" "ishift")])
-(define_insn ""
+(define_insn "*rotlhi3_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO
(rotate:HI (match_operand:HI 1 "nonimmediate_operand" "0,0")
rol{b}\\t{%b2, %0|%0, %b2}"
[(set_attr "type" "ishift")])
-(define_insn ""
+(define_insn "*rotlqi3_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO
(rotate:QI (match_operand:QI 1 "nonimmediate_operand" "0,0")
ror{l}\\t{%b2, %0|%0, %b2}"
[(set_attr "type" "ishift")])
-(define_insn ""
+(define_insn "*rotrsi3_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO
(rotatert:SI (match_operand:SI 1 "nonimmediate_operand" "0,0")
ror{w}\\t{%b2, %0|%0, %b2}"
[(set_attr "type" "ishift")])
-(define_insn ""
+(define_insn "*rotrhi3_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO
(rotatert:HI (match_operand:HI 1 "nonimmediate_operand" "0,0")
ror{b}\\t{%b2, %0|%0, %b2}"
[(set_attr "type" "ishift")])
-(define_insn ""
+(define_insn "*rotrqi3_cmpno"
[(set (reg:CCNO 17)
(compare:CCNO
(rotatert:QI (match_operand:QI 1 "nonimmediate_operand" "0,0")
current_function_uses_pic_offset_table = 1;
}")
-(define_insn ""
+(define_insn "*tablejump_pic"
[(set (pc) (match_operand:SI 0 "nonimmediate_operand" "rm"))
(use (label_ref (match_operand 1 "" "")))]
""
"TARGET_USE_LOOP"
"")
-(define_insn ""
+(define_insn "*dbra_ne"
[(set (pc)
(if_then_else (ne (match_operand:SI 1 "register_operand" "c,*r,*r")
(const_int 1))
(const_int 2)
(const_int 16)))])
-(define_insn ""
+(define_insn "*dbra_ge"
[(set (pc)
(if_then_else (ge (match_operand:SI 1 "register_operand" "c,*r,*r")
(const_int 0))
copy_to_mode_reg (Pmode, XEXP (operands[0], 0)));
}")
-(define_insn ""
+(define_insn "*call_pop_pic"
[(call (match_operand:QI 0 "call_insn_operand" "m")
(match_operand:SI 1 "general_operand" "g"))
(set (reg:SI 7) (plus:SI (reg:SI 7)
}"
[(set_attr "type" "call")])
-(define_insn ""
+(define_insn "*call_pop_pic2"
[(call (match_operand:QI 0 "constant_call_address_operand" "")
(match_operand:SI 1 "general_operand" "g"))
(set (reg:SI 7) (plus:SI (reg:SI 7)
copy_to_mode_reg (Pmode, XEXP (operands[0], 0)));
}")
-(define_insn ""
+(define_insn "*call_pic"
[(call (match_operand:QI 0 "call_insn_operand" "m")
(match_operand:SI 1 "general_operand" "g"))]
;; Operand 1 not used on the i386.
}"
[(set_attr "type" "call")])
-(define_insn ""
+(define_insn "*call_pic2"
[(call (match_operand:QI 0 "constant_call_address_operand" "")
(match_operand:SI 1 "general_operand" "g"))]
"!HALF_PIC_P ()"
copy_to_mode_reg (Pmode, XEXP (operands[1], 0)));
}")
-(define_insn ""
+(define_insn "*call_value_pop_pic"
[(set (match_operand 0 "" "=rf")
(call (match_operand:QI 1 "call_insn_operand" "m")
(match_operand:SI 2 "general_operand" "g")))
}"
[(set_attr "type" "callv")])
-(define_insn ""
+(define_insn "*call_value_pop_pic2"
[(set (match_operand 0 "" "=rf")
(call (match_operand:QI 1 "constant_call_address_operand" "")
(match_operand:SI 2 "general_operand" "g")))
copy_to_mode_reg (Pmode, XEXP (operands[1], 0)));
}")
-(define_insn ""
+(define_insn "*call_value_pic"
[(set (match_operand 0 "" "=rf")
(call (match_operand:QI 1 "call_insn_operand" "m")
(match_operand:SI 2 "general_operand" "g")))]
}"
[(set_attr "type" "callv")])
-(define_insn ""
+(define_insn "*call_value_pic2"
[(set (match_operand 0 "" "=rf")
(call (match_operand:QI 1 "constant_call_address_operand" "")
(match_operand:SI 2 "general_operand" "g")))]
"fsqrt"
[(set_attr "type" "fpspc")])
-(define_insn ""
+(define_insn "*sqrtextendsfdf2"
[(set (match_operand:DF 0 "register_operand" "=f")
(sqrt:DF (float_extend:DF
(match_operand:SF 1 "register_operand" "0"))))]
"fsqrt"
[(set_attr "type" "fpspc")])
-(define_insn ""
+(define_insn "*sqrtextenddfxf2"
[(set (match_operand:XF 0 "register_operand" "=f")
(sqrt:XF (float_extend:XF
(match_operand:DF 1 "register_operand" "0"))))]
"fsqrt"
[(set_attr "type" "fpspc")])
-(define_insn ""
+(define_insn "*sqrtextendsfxf2"
[(set (match_operand:XF 0 "register_operand" "=f")
(sqrt:XF (float_extend:XF
(match_operand:SF 1 "register_operand" "0"))))]
"fsin"
[(set_attr "type" "fpspc")])
-(define_insn ""
+(define_insn "*sinextendsfdf2"
[(set (match_operand:DF 0 "register_operand" "=f")
(unspec:DF [(float_extend:DF
(match_operand:SF 1 "register_operand" "0"))] 1))]
"fcos"
[(set_attr "type" "fpspc")])
-(define_insn ""
+(define_insn "*cosextendsfdf2"
[(set (match_operand:DF 0 "register_operand" "=f")
(unspec:DF [(float_extend:DF
(match_operand:SF 1 "register_operand" "0"))] 2))]
(set_attr "imm_disp" "false")
(set_attr "length" "2")])
-(define_insn ""
+(define_insn "*movsicc_noc"
[(set (match_operand:SI 0 "register_operand" "=r,r")
(if_then_else:SI (match_operator 1 "no_comparison_operator"
[(reg 17) (const_int 0)])
cmov%c1\\t{%3, %0|%0, %3}"
[(set_attr "type" "icmov")])
-(define_insn ""
+(define_insn "*movsicc_c"
[(set (match_operand:SI 0 "register_operand" "=r,r")
(if_then_else:SI (match_operator 1 "comparison_operator"
[(reg:CC 17) (const_int 0)])
"TARGET_CMOVE"
"if (!ix86_expand_int_movcc (operands)) FAIL; DONE;")
-(define_insn ""
+(define_insn "*movhicc_noc"
[(set (match_operand:HI 0 "register_operand" "=r,r")
(if_then_else:HI (match_operator 1 "no_comparison_operator"
[(reg 17) (const_int 0)])
cmov%c1\\t{%3, %0|%0, %3}"
[(set_attr "type" "icmov")])
-(define_insn ""
+(define_insn "*movhicc_c"
[(set (match_operand:HI 0 "register_operand" "=r,r")
(if_then_else:HI (match_operator 1 "comparison_operator"
[(reg:CC 17) (const_int 0)])
"TARGET_CMOVE"
"if (! ix86_expand_fp_movcc (operands)) FAIL; DONE;")
-(define_insn ""
+(define_insn "*movsfcc_1"
[(set (match_operand:SF 0 "register_operand" "=f,f")
(if_then_else:SF (match_operator 1 "fcmov_comparison_operator"
[(reg 17) (const_int 0)])
"TARGET_CMOVE"
"if (! ix86_expand_fp_movcc (operands)) FAIL; DONE;")
-(define_insn ""
+(define_insn "*movdfcc_1"
[(set (match_operand:DF 0 "register_operand" "=f,f")
(if_then_else:DF (match_operator 1 "fcmov_comparison_operator"
[(reg 17) (const_int 0)])
"TARGET_CMOVE"
"if (! ix86_expand_fp_movcc (operands)) FAIL; DONE;")
-(define_insn ""
+(define_insn "*movxfcc_1"
[(set (match_operand:XF 0 "register_operand" "=f,f")
(if_then_else:XF (match_operator 1 "fcmov_comparison_operator"
[(reg 17) (const_int 0)])