[(set (reg:CC 17)
(compare:CC (match_operand:XF 0 "cmp_fp_expander_operand" "")
(match_operand:XF 1 "cmp_fp_expander_operand" "")))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"
{
ix86_compare_op0 = operands[0];
(compare:CCFP
(match_operand:XF 0 "register_operand" "f")
(match_operand:XF 1 "register_operand" "f")))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"* return output_fp_compare (insn, operands, 0, 0);"
[(set_attr "type" "fcmp")
(set_attr "mode" "XF")])
[(compare:CCFP
(match_operand:XF 1 "register_operand" "f")
(match_operand:XF 2 "register_operand" "f"))] 9))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"* return output_fp_compare (insn, operands, 2, 0);"
[(set_attr "type" "multi")
(set_attr "mode" "XF")])
(define_insn "x86_sahf_1"
[(set (reg:CC 17)
(unspec:CC [(match_operand:HI 0 "register_operand" "a")] 10))]
- ""
+ "!TARGET_64BIT"
"sahf"
[(set_attr "length" "1")
(set_attr "athlon_decode" "vector")
(set (reg:SI 7)
(plus:SI (reg:SI 7) (const_int 4)))
(set (reg:SI 6) (reg:SI 6))]
- ""
+ "!TARGET_64BIT"
"pop{l}\\t%0"
[(set_attr "type" "pop")
(set_attr "mode" "SI")])
(mem:SI (reg:SI 7)))
(set (reg:SI 7)
(plus:SI (reg:SI 7) (const_int 4)))]
- ""
+ "!TARGET_64BIT"
"pop{l}\\t%0"
[(set_attr "type" "pop")
(set_attr "mode" "SI")])
(define_insn "*pushhi2"
[(set (match_operand:HI 0 "push_operand" "=<,<")
(match_operand:HI 1 "general_no_elim_operand" "n,r*m"))]
- ""
+ "!TARGET_64BIT"
"@
push{w}\\t{|WORD PTR }%1
push{w}\\t%1"
(mem:HI (reg:SI 7)))
(set (reg:SI 7)
(plus:SI (reg:SI 7) (const_int 2)))]
- ""
+ "!TARGET_64BIT"
"pop{w}\\t%0"
[(set_attr "type" "pop")
(set_attr "mode" "HI")])
(define_insn "*pushqi2"
[(set (match_operand:QI 0 "push_operand" "=<,<")
(match_operand:QI 1 "nonmemory_no_elim_operand" "n,r"))]
- ""
+ "!TARGET_64BIT"
"@
push{w}\\t{|word ptr }%1
push{w}\\t%w1"
(mem:QI (reg:SI 7)))
(set (reg:SI 7)
(plus:SI (reg:SI 7) (const_int 2)))]
- ""
+ "!TARGET_64BIT"
"pop{w}\\t%0"
[(set_attr "type" "pop")
(set_attr "mode" "HI")])
(define_insn "*pushdi"
[(set (match_operand:DI 0 "push_operand" "=<")
(match_operand:DI 1 "general_no_elim_operand" "riF*m"))]
- ""
+ "!TARGET_64BIT"
"#")
(define_insn "*movdi_2"
[(set (match_operand:DI 0 "nonimmediate_operand" "=r,o,!m*y,!*y")
(match_operand:DI 1 "general_operand" "riFo,riF,*y,m"))]
- "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
+ "!TARGET_64BIT
+ && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"@
#
#
(define_split
[(set (match_operand:DI 0 "push_operand" "")
(match_operand:DI 1 "general_operand" ""))]
- "reload_completed && ! MMX_REG_P (operands[1])"
+ "reload_completed && ! MMX_REG_P (operands[1]) && !TARGET_64BIT"
[(const_int 0)]
"if (!ix86_split_long_move (operands)) abort (); DONE;")
(define_expand "movxf"
[(set (match_operand:XF 0 "nonimmediate_operand" "")
(match_operand:XF 1 "general_operand" ""))]
- ""
+ "!TARGET_64BIT"
"ix86_expand_move (XFmode, operands); DONE;")
(define_expand "movtf"
;; handled elsewhere).
(define_insn "*pushxf_nointeger"
- [(set (match_operand:XF 0 "push_operand" "=<,<,<")
+ [(set (match_operand:XF 0 "push_operand" "=X,X,X")
(match_operand:XF 1 "general_no_elim_operand" "f,Fo,*r"))]
- "optimize_size"
+ "optimize_size && !TARGET_64BIT"
"*
{
switch (which_alternative)
(define_insn "*pushxf_integer"
[(set (match_operand:XF 0 "push_operand" "=<,<")
- (match_operand:XF 1 "general_no_elim_operand" "f#r,rFo#f"))]
- "!optimize_size"
+ (match_operand:XF 1 "general_no_elim_operand" "f#r,ro#f"))]
+ "!optimize_size && !TARGET_64BIT"
"*
{
switch (which_alternative)
[(set (match_operand:XF 0 "nonimmediate_operand" "=f,m,f,*r,o")
(match_operand:XF 1 "general_operand" "fm,f,G,*roF,F*r"))]
"(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
+ && !TARGET_64BIT
&& optimize_size
&& (reload_in_progress || reload_completed
|| GET_CODE (operands[1]) != CONST_DOUBLE
[(set (match_operand:XF 0 "nonimmediate_operand" "=f#r,m,f#r,r#f,o")
(match_operand:XF 1 "general_operand" "fm#r,f#r,G,roF#f,Fr#f"))]
"(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
+ && !TARGET_64BIT
&& !optimize_size
&& (reload_in_progress || reload_completed
|| GET_CODE (operands[1]) != CONST_DOUBLE
[(set (match_operand:DI 0 "register_operand" "")
(zero_extend:DI (match_operand:SI 1 "register_operand" "")))
(clobber (reg:CC 17))]
- "reload_completed && true_regnum (operands[0]) == true_regnum (operands[1])"
+ "reload_completed && true_regnum (operands[0]) == true_regnum (operands[1])
+ && !TARGET_64BIT"
[(set (match_dup 4) (const_int 0))]
"split_di (&operands[0], 1, &operands[3], &operands[4]);")
(define_expand "extendsfxf2"
[(set (match_operand:XF 0 "nonimmediate_operand" "")
(float_extend:XF (match_operand:SF 1 "nonimmediate_operand" "")))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"
{
if (GET_CODE (operands[0]) == MEM && GET_CODE (operands[1]) == MEM)
(define_insn "*extendsfxf2_1"
[(set (match_operand:XF 0 "nonimmediate_operand" "=f,m")
(float_extend:XF (match_operand:SF 1 "nonimmediate_operand" "fm,f")))]
- "TARGET_80387
+ "TARGET_80387 && !TARGET_64BIT
&& (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"*
{
(define_expand "extenddfxf2"
[(set (match_operand:XF 0 "nonimmediate_operand" "")
(float_extend:XF (match_operand:DF 1 "nonimmediate_operand" "")))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"
{
if (GET_CODE (operands[0]) == MEM && GET_CODE (operands[1]) == MEM)
(define_insn "*extenddfxf2_1"
[(set (match_operand:XF 0 "nonimmediate_operand" "=f,m")
(float_extend:XF (match_operand:DF 1 "nonimmediate_operand" "fm,f")))]
- "TARGET_80387
+ "TARGET_80387 && !TARGET_64BIT
&& (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"*
{
(float_truncate:SF
(match_operand:XF 1 "register_operand" "")))
(clobber (match_dup 2))])]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"operands[2] = assign_386_stack_local (SFmode, 0);")
(define_insn "*truncxfsf2_1"
(float_truncate:SF
(match_operand:XF 1 "register_operand" "f,0")))
(clobber (match_operand:SF 2 "memory_operand" "=m,m"))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"*
{
switch (which_alternative)
[(set (match_operand:SF 0 "memory_operand" "=m")
(float_truncate:SF
(match_operand:XF 1 "register_operand" "f")))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"*
{
if (find_regno_note (insn, REG_DEAD, REGNO (operands[1])))
[(set_attr "type" "fmov,multi")
(set_attr "mode" "SF")])
-(define_insn "*truncxfsf2_2"
+(define_insn "*trunctfsf2_2"
[(set (match_operand:SF 0 "nonimmediate_operand" "=m")
(float_truncate:SF
(match_operand:TF 1 "register_operand" "f")))]
(float_truncate:DF
(match_operand:XF 1 "register_operand" "")))
(clobber (match_dup 2))])]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"operands[2] = assign_386_stack_local (DFmode, 0);")
(define_insn "*truncxfdf2_1"
(float_truncate:DF
(match_operand:XF 1 "register_operand" "f,0")))
(clobber (match_operand:DF 2 "memory_operand" "=m,m"))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"*
{
switch (which_alternative)
[(set (match_operand:DF 0 "memory_operand" "=m")
(float_truncate:DF
(match_operand:XF 1 "register_operand" "f")))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"*
{
if (find_regno_note (insn, REG_DEAD, REGNO (operands[1])))
(clobber (match_dup 3))
(clobber (match_scratch:SI 4 ""))
(clobber (match_scratch:XF 5 ""))])]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"operands[2] = assign_386_stack_local (SImode, 0);
operands[3] = assign_386_stack_local (DImode, 1);")
(clobber (match_dup 2))
(clobber (match_dup 3))
(clobber (match_scratch:SI 4 ""))])]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"operands[2] = assign_386_stack_local (SImode, 0);
operands[3] = assign_386_stack_local (SImode, 1);")
(define_insn "floathixf2"
[(set (match_operand:XF 0 "register_operand" "=f,f")
(float:XF (match_operand:HI 1 "nonimmediate_operand" "m,r")))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"@
fild%z1\\t%1
#"
(define_insn "floatsixf2"
[(set (match_operand:XF 0 "register_operand" "=f,f")
(float:XF (match_operand:SI 1 "nonimmediate_operand" "m,r")))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"@
fild%z1\\t%1
#"
(define_insn "floatdixf2"
[(set (match_operand:XF 0 "register_operand" "=f,f")
(float:XF (match_operand:DI 1 "nonimmediate_operand" "m,r")))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"@
fild%z1\\t%1
#"
(plus:DI (match_operand:DI 1 "nonimmediate_operand" "")
(match_operand:DI 2 "general_operand" "")))
(clobber (reg:CC 17))]
- "reload_completed"
+ "reload_completed && !TARGET_64BIT"
[(parallel [(set (reg:CC 17) (unspec:CC [(match_dup 1) (match_dup 2)] 12))
(set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))])
(parallel [(set (match_dup 3)
[(set (match_operand:XF 0 "register_operand" "")
(plus:XF (match_operand:XF 1 "register_operand" "")
(match_operand:XF 2 "register_operand" "")))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"")
(define_expand "addtf3"
(minus:DI (match_operand:DI 1 "nonimmediate_operand" "")
(match_operand:DI 2 "general_operand" "")))
(clobber (reg:CC 17))]
- "reload_completed"
+ "reload_completed && !TARGET_64BIT"
[(parallel [(set (reg:CC 17) (compare:CC (match_dup 1) (match_dup 2)))
(set (match_dup 0) (minus:SI (match_dup 1) (match_dup 2)))])
(parallel [(set (match_dup 3)
[(set (match_operand:XF 0 "register_operand" "")
(minus:XF (match_operand:XF 1 "register_operand" "")
(match_operand:XF 2 "register_operand" "")))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"")
(define_expand "subtf3"
(set_attr "length_immediate" "0")
(set_attr "mode" "QI")])
+(define_insn "umulsi3"
+ [(set (match_operand:SI 0 "register_operand" "=a")
+ (mult:SI (match_operand:SI 1 "register_operand" "%0")
+ (match_operand:SI 2 "nonimmediate_operand" "rm")))
+ (clobber (match_operand:SI 3 "register_operand" "=d"))
+ (clobber (reg:CC 17))]
+ ""
+ "mul{l}\\t%2"
+ [(set_attr "type" "imul")
+ (set_attr "ppro_uops" "few")
+ (set_attr "length_immediate" "0")
+ (set_attr "mode" "SI")])
+
+;; We can't use this pattern in 64bit mode, since it results in two separate 32bit registers
(define_insn "umulsidi3"
[(set (match_operand:DI 0 "register_operand" "=A")
(mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "%0"))
(zero_extend:DI (match_operand:SI 2 "nonimmediate_operand" "rm"))))
(clobber (reg:CC 17))]
- ""
+ "!TARGET_64BIT"
"mul{l}\\t%2"
[(set_attr "type" "imul")
(set_attr "ppro_uops" "few")
(mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "%0"))
(sign_extend:DI (match_operand:SI 2 "nonimmediate_operand" "rm"))))
(clobber (reg:CC 17))]
- ""
+ "!TARGET_64BIT"
"imul{l}\\t%2"
[(set_attr "type" "imul")
(set_attr "length_immediate" "0")
(const_int 32))))
(clobber (match_scratch:SI 3 "=a"))
(clobber (reg:CC 17))]
- ""
+ "!TARGET_64BIT"
"mul{l}\\t%2"
[(set_attr "type" "imul")
(set_attr "ppro_uops" "few")
[(set (match_operand:XF 0 "register_operand" "")
(mult:XF (match_operand:XF 1 "register_operand" "")
(match_operand:XF 2 "register_operand" "")))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"")
(define_expand "multf3"
[(set (match_operand:XF 0 "register_operand" "")
(div:XF (match_operand:XF 1 "register_operand" "")
(match_operand:XF 2 "register_operand" "")))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"")
(define_expand "divtf3"
[(parallel [(set (match_operand:XF 0 "nonimmediate_operand" "")
(neg:XF (match_operand:XF 1 "nonimmediate_operand" "")))
(clobber (reg:CC 17))])]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"ix86_expand_unary_operator (NEG, XFmode, operands); DONE;")
(define_expand "negtf2"
[(set (match_operand:XF 0 "nonimmediate_operand" "=f#r,rm#f")
(neg:XF (match_operand:XF 1 "nonimmediate_operand" "0,0")))
(clobber (reg:CC 17))]
- "TARGET_80387 && ix86_unary_operator_ok (NEG, XFmode, operands)"
+ "TARGET_80387 && !TARGET_64BIT
+ && ix86_unary_operator_ok (NEG, XFmode, operands)"
"#")
(define_split
(define_insn "*negxf2_1"
[(set (match_operand:XF 0 "register_operand" "=f")
(neg:XF (match_operand:XF 1 "register_operand" "0")))]
- "TARGET_80387 && reload_completed"
+ "TARGET_80387 && !TARGET_64BIT && reload_completed"
"fchs"
[(set_attr "type" "fsgn")
(set_attr "mode" "XF")
[(set (match_operand:XF 0 "register_operand" "=f")
(neg:XF (float_extend:XF
(match_operand:DF 1 "register_operand" "0"))))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"fchs"
[(set_attr "type" "fsgn")
(set_attr "mode" "XF")
[(set (match_operand:XF 0 "register_operand" "=f")
(neg:XF (float_extend:XF
(match_operand:SF 1 "register_operand" "0"))))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"fchs"
[(set_attr "type" "fsgn")
(set_attr "mode" "XF")
[(parallel [(set (match_operand:XF 0 "nonimmediate_operand" "")
(neg:XF (match_operand:XF 1 "nonimmediate_operand" "")))
(clobber (reg:CC 17))])]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"ix86_expand_unary_operator (ABS, XFmode, operands); DONE;")
(define_expand "abstf2"
[(set (match_operand:XF 0 "nonimmediate_operand" "=f#r,rm#f")
(abs:XF (match_operand:XF 1 "nonimmediate_operand" "0,0")))
(clobber (reg:CC 17))]
- "TARGET_80387 && ix86_unary_operator_ok (ABS, XFmode, operands)"
+ "TARGET_80387 && !TARGET_64BIT
+ && ix86_unary_operator_ok (ABS, XFmode, operands)"
"#")
(define_split
(define_insn "*absxf2_1"
[(set (match_operand:XF 0 "register_operand" "=f")
(abs:XF (match_operand:XF 1 "register_operand" "0")))]
- "TARGET_80387 && reload_completed"
+ "TARGET_80387 && !TARGET_64BIT && reload_completed"
"fabs"
[(set_attr "type" "fsgn")
(set_attr "mode" "DF")])
[(set (match_operand:XF 0 "register_operand" "=f")
(abs:XF (float_extend:XF
(match_operand:DF 1 "register_operand" "0"))))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"fabs"
[(set_attr "type" "fsgn")
(set_attr "mode" "XF")])
[(set (match_operand:XF 0 "register_operand" "=f")
(abs:XF (float_extend:XF
(match_operand:SF 1 "register_operand" "0"))))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"fabs"
[(set_attr "type" "fsgn")
(set_attr "mode" "XF")])
(match_operand:QI 2 "nonmemory_operand" "Jc")))
(clobber (match_scratch:SI 3 "=&r"))
(clobber (reg:CC 17))]
- "TARGET_CMOVE"
+ "!TARGET_64BIT && TARGET_CMOVE"
"#"
[(set_attr "type" "multi")])
(lshiftrt:DI (match_operand:DI 1 "register_operand" "0")
(match_operand:QI 2 "nonmemory_operand" "Jc")))
(clobber (reg:CC 17))]
- ""
+ "!TARGET_64BIT"
"#"
[(set_attr "type" "multi")])
(match_operand:QI 2 "nonmemory_operand" "")))
(clobber (match_scratch:SI 3 ""))
(clobber (reg:CC 17))]
- "TARGET_CMOVE && reload_completed"
+ "!TARGET_64BIT && TARGET_CMOVE && reload_completed"
[(const_int 0)]
"ix86_split_lshrdi (operands, operands[3]); DONE;")
(lshiftrt:DI (match_operand:DI 1 "register_operand" "")
(match_operand:QI 2 "nonmemory_operand" "")))
(clobber (reg:CC 17))]
- "reload_completed"
+ "!TARGET_64BIT && reload_completed"
[(const_int 0)]
"ix86_split_lshrdi (operands, NULL_RTX); DONE;")
(use (match_operand 2 "" "")) ; max iterations
(use (match_operand 3 "" "")) ; loop level
(use (match_operand 4 "" ""))] ; label
- "TARGET_USE_LOOP"
+ "TARGET_USE_LOOP && !TARGET_64BIT"
"
{
/* Only use cloop on innermost loops. */
(const_int -1)))
(clobber (match_scratch:SI 3 "=X,X,r"))
(clobber (reg:CC 17))]
- "TARGET_USE_LOOP"
+ "TARGET_USE_LOOP && !TARGET_64BIT"
"*
{
if (which_alternative != 0)
(const_int -1)))
(clobber (match_scratch:SI 2 ""))
(clobber (reg:CC 17))]
- "TARGET_USE_LOOP
+ "TARGET_USE_LOOP && !TARGET_64BIT
&& reload_completed
&& REGNO (operands[1]) != 2"
[(parallel [(set (reg:CCZ 17)
(const_int -1)))
(clobber (match_scratch:SI 3 ""))
(clobber (reg:CC 17))]
- "TARGET_USE_LOOP
+ "TARGET_USE_LOOP && !TARGET_64BIT
&& reload_completed
&& (! REG_P (operands[2])
|| ! rtx_equal_p (operands[1], operands[2]))"
(set (reg:SI 7)
(plus:SI (reg:SI 7)
(match_operand:SI 3 "" "")))])]
- ""
+ "!TARGET_64BIT"
"
{
if (operands[3] == const0_rtx)
current_function_uses_pic_offset_table = 1;
if (! call_insn_operand (XEXP (operands[0], 0), Pmode))
XEXP (operands[0], 0) = copy_to_mode_reg (Pmode, XEXP (operands[0], 0));
+ if (TARGET_64BIT)
+ abort();
}")
(define_insn "*call_pop_0"
(match_operand:SI 1 "" ""))
(set (reg:SI 7) (plus:SI (reg:SI 7)
(match_operand:SI 2 "immediate_operand" "")))]
- ""
+ "!TARGET_64BIT"
"*
{
if (SIBLING_CALL_P (insn))
(match_operand:SI 1 "" ""))
(set (reg:SI 7) (plus:SI (reg:SI 7)
(match_operand:SI 2 "immediate_operand" "i")))]
- ""
+ "!TARGET_64BIT"
"*
{
if (constant_call_address_operand (operands[0], Pmode))
(set (reg:SI 7)
(plus:SI (reg:SI 7)
(match_operand:SI 4 "" "")))])]
- ""
+ "!TARGET_64BIT"
"
{
if (operands[4] == const0_rtx)
(define_insn "prologue_get_pc"
[(set (match_operand:SI 0 "register_operand" "=r")
(unspec_volatile:SI [(plus:SI (pc) (match_operand 1 "" ""))] 2))]
- ""
+ "!TARGET_64BIT"
"*
{
if (GET_CODE (operands[1]) == LABEL_REF)
(define_insn "leave"
[(set (reg:SI 7) (reg:SI 6))
(set (reg:SI 6) (mem:SI (pre_dec:SI (reg:SI 7))))]
- ""
+ "!TARGET_64BIT"
"leave"
[(set_attr "length_immediate" "0")
(set_attr "length" "1")
(match_operator:XF 3 "binary_fp_operator"
[(match_operand:XF 1 "register_operand" "%0")
(match_operand:XF 2 "register_operand" "f")]))]
- "TARGET_80387 && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'"
+ "TARGET_80387 && !TARGET_64BIT
+ && GET_RTX_CLASS (GET_CODE (operands[3])) == 'c'"
"* return output_387_binary_op (insn, operands);"
[(set (attr "type")
(if_then_else (match_operand:XF 3 "mult_operator" "")
(match_operator:XF 3 "binary_fp_operator"
[(match_operand:XF 1 "register_operand" "0,f")
(match_operand:XF 2 "register_operand" "f,0")]))]
- "TARGET_80387
+ "TARGET_80387 && !TARGET_64BIT
&& GET_RTX_CLASS (GET_CODE (operands[3])) != 'c'"
"* return output_387_binary_op (insn, operands);"
[(set (attr "type")
(match_operator:XF 3 "binary_fp_operator"
[(float:XF (match_operand:SI 1 "nonimmediate_operand" "m,?r"))
(match_operand:XF 2 "register_operand" "0,0")]))]
- "TARGET_80387 && TARGET_USE_FIOP"
+ "TARGET_80387 && !TARGET_64BIT && TARGET_USE_FIOP"
"* return which_alternative ? \"#\" : output_387_binary_op (insn, operands);"
[(set (attr "type")
(cond [(match_operand:XF 3 "mult_operator" "")
(match_operator:XF 3 "binary_fp_operator"
[(match_operand:XF 1 "register_operand" "0,0")
(float:XF (match_operand:SI 2 "nonimmediate_operand" "m,?r"))]))]
- "TARGET_80387 && TARGET_USE_FIOP"
+ "TARGET_80387 && !TARGET_64BIT && TARGET_USE_FIOP"
"* return which_alternative ? \"#\" : output_387_binary_op (insn, operands);"
[(set (attr "type")
(cond [(match_operand:XF 3 "mult_operator" "")
(match_operator:XF 3 "binary_fp_operator"
[(float_extend:XF (match_operand:SF 1 "nonimmediate_operand" "fm,0"))
(match_operand:XF 2 "register_operand" "0,f")]))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"* return output_387_binary_op (insn, operands);"
[(set (attr "type")
(cond [(match_operand:XF 3 "mult_operator" "")
[(match_operand:XF 1 "register_operand" "0,f")
(float_extend:XF
(match_operand:SF 2 "nonimmediate_operand" "fm,0"))]))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"* return output_387_binary_op (insn, operands);"
[(set (attr "type")
(cond [(match_operand:XF 3 "mult_operator" "")
(match_operator:XF 3 "binary_fp_operator"
[(float_extend:XF (match_operand:DF 1 "nonimmediate_operand" "fm,0"))
(match_operand:XF 2 "register_operand" "0,f")]))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"* return output_387_binary_op (insn, operands);"
[(set (attr "type")
(cond [(match_operand:XF 3 "mult_operator" "")
[(match_operand:XF 1 "register_operand" "0,f")
(float_extend:XF
(match_operand:DF 2 "nonimmediate_operand" "fm,0"))]))]
- "TARGET_80387"
+ "TARGET_80387 && !TARGET_64BIT"
"* return output_387_binary_op (insn, operands);"
[(set (attr "type")
(cond [(match_operand:XF 3 "mult_operator" "")
(define_insn "sqrtxf2"
[(set (match_operand:XF 0 "register_operand" "=f")
(sqrt:XF (match_operand:XF 1 "register_operand" "0")))]
- "! TARGET_NO_FANCY_MATH_387 && TARGET_80387
+ "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && !TARGET_64BIT
&& (TARGET_IEEE_FP || flag_unsafe_math_optimizations) "
"fsqrt"
[(set_attr "type" "fpspc")
[(set (match_operand:XF 0 "register_operand" "=f")
(sqrt:XF (float_extend:XF
(match_operand:DF 1 "register_operand" "0"))))]
- "! TARGET_NO_FANCY_MATH_387 && TARGET_80387"
+ "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && !TARGET_64BIT"
"fsqrt"
[(set_attr "type" "fpspc")
(set_attr "mode" "XF")
[(set (match_operand:XF 0 "register_operand" "=f")
(sqrt:XF (float_extend:XF
(match_operand:SF 1 "register_operand" "0"))))]
- "! TARGET_NO_FANCY_MATH_387 && TARGET_80387"
+ "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && !TARGET_64BIT"
"fsqrt"
[(set_attr "type" "fpspc")
(set_attr "mode" "XF")
(define_insn "sinxf2"
[(set (match_operand:XF 0 "register_operand" "=f")
(unspec:XF [(match_operand:XF 1 "register_operand" "0")] 1))]
- "! TARGET_NO_FANCY_MATH_387 && TARGET_80387
+ "! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && !TARGET_64BIT
&& flag_unsafe_math_optimizations"
"fsin"
[(set_attr "type" "fpspc")
(define_insn "cosxf2"
[(set (match_operand:XF 0 "register_operand" "=f")
(unspec:XF [(match_operand:XF 1 "register_operand" "0")] 2))]
- "! TARGET_NO_FANCY_MATH_387 && TARGET_80387
+ "! TARGET_NO_FANCY_MATH_387 && TARGET_80387
&& flag_unsafe_math_optimizations"
"fcos"
[(set_attr "type" "fpspc")
[(reg 17) (const_int 0)])
(match_operand:DF 2 "nonimmediate_operand" "f,0,rm,0")
(match_operand:DF 3 "nonimmediate_operand" "0,f,0,rm")))]
- "TARGET_CMOVE
+ "TARGET_CMOVE && !TARGET_64BIT
&& (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)"
"@
fcmov%F1\\t{%2, %0|%0, %2}
[(set_attr "type" "fcmov,fcmov,multi,multi")
(set_attr "mode" "DF")])
+(define_insn "*movdfcc_1_rex64"
+ [(set (match_operand:DF 0 "register_operand" "=f,f,&r,&r")
+ (if_then_else:DF (match_operator 1 "fcmov_comparison_operator"
+ [(reg 17) (const_int 0)])
+ (match_operand:DF 2 "nonimmediate_operand" "f,0,rm,0")
+ (match_operand:DF 3 "nonimmediate_operand" "0,f,0,rm")))]
+ "TARGET_CMOVE && TARGET_64BIT
+ && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)"
+ "@
+ fcmov%F1\\t{%2, %0|%0, %2}
+ fcmov%f1\\t{%3, %0|%0, %3}
+ cmov%C1\\t{%2, %0|%0, %2}
+ cmov%c1\\t{%3, %0|%0, %3}"
+ [(set_attr "type" "fcmov,fcmov,icmov,icmov")
+ (set_attr "mode" "DF")])
+
(define_split
[(set (match_operand:DF 0 "register_operand" "")
(if_then_else:DF (match_operator 1 "fcmov_comparison_operator"
[(match_operand 4 "" "") (const_int 0)])
(match_operand:DF 2 "nonimmediate_operand" "")
(match_operand:DF 3 "nonimmediate_operand" "")))]
- "!ANY_FP_REG_P (operands[0]) && reload_completed"
+ "!ANY_FP_REG_P (operands[0]) && reload_completed && !TARGET_64BIT"
[(set (match_dup 2)
(if_then_else:SI (match_op_dup 1 [(match_dup 4) (const_int 0)])
(match_dup 5)
(if_then_else:XF (match_operand 1 "comparison_operator" "")
(match_operand:XF 2 "register_operand" "")
(match_operand:XF 3 "register_operand" "")))]
- "TARGET_CMOVE"
+ "TARGET_CMOVE && !TARGET_64BIT"
"if (! ix86_expand_fp_movcc (operands)) FAIL; DONE;")
(define_expand "movtfcc"
[(reg 17) (const_int 0)])
(match_operand:XF 2 "register_operand" "f,0")
(match_operand:XF 3 "register_operand" "0,f")))]
- "TARGET_CMOVE"
+ "TARGET_CMOVE && !TARGET_64BIT"
"@
fcmov%F1\\t{%2, %0|%0, %2}
fcmov%f1\\t{%3, %0|%0, %3}"
(match_operand:SI 2 "" "")))
(set (reg:SI 7) (plus:SI (reg:SI 7)
(match_operand:SI 3 "immediate_operand" "")))]
- ""
+ "!TARGET_64BIT"
"*
{
if (SIBLING_CALL_P (insn))
(match_operand:SI 2 "" "")))
(set (reg:SI 7) (plus:SI (reg:SI 7)
(match_operand:SI 3 "immediate_operand" "i")))]
- ""
+ "!TARGET_64BIT"
"*
{
if (constant_call_address_operand (operands[1], QImode))