(const_string "other"))
;; Main data type used by the insn
-(define_attr "mode" "unknown,none,QI,HI,SI,DI,unknownfp,SF,DF,XF"
+(define_attr "mode" "unknown,none,QI,HI,SI,DI,unknownfp,SF,DF,XF,TI"
(const_string "unknown"))
;; Set for i387 operations.
(set (mem:SF (reg:SI 7)) (match_dup 1))])
(define_insn "*movsf_1"
- [(set (match_operand:SF 0 "nonimmediate_operand" "=f#xr,m,f#xr,r#xf,m,x#rf,m")
- (match_operand:SF 1 "general_operand" "fm#rx,f#rx,G,rmF#fx,Fr#fx,xm#rf,x#rf"))]
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=f#xr,m,f#xr,r#xf,m,x#rf,x#rf,x#rf,m")
+ (match_operand:SF 1 "general_operand" "fm#rx,f#rx,G,rmF#fx,Fr#fx,H,x,xm#rf,x#rf"))]
"(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
&& (reload_in_progress || reload_completed
|| GET_CODE (operands[1]) != CONST_DOUBLE
case 4:
return \"mov{l}\\t{%1, %0|%0, %1}\";
case 5:
+ return \"pxor\\t%0, %0\";
case 6:
- if (TARGET_PARTIAL_REG_DEPENDENCY
- && register_operand (operands[0], VOIDmode)
- && register_operand (operands[1], VOIDmode))
+ if (TARGET_PARTIAL_REG_DEPENDENCY)
return \"movaps\\t{%1, %0|%0, %1}\";
+ else
+ return \"movss\\t{%1, %0|%0, %1}\";
+ case 7:
+ case 8:
return \"movss\\t{%1, %0|%0, %1}\";
default:
abort();
}
}"
- [(set_attr "type" "fmov,fmov,fmov,imov,imov,sse,sse")
- (set_attr "mode" "SF,SF,SF,SI,SI,SF,SF")])
-
-(define_split
- [(set (match_operand:SF 0 "nonimmediate_operand" "")
- (match_operand:SF 1 "memory_operand" ""))]
- "reload_completed
- && GET_CODE (operands[1]) == MEM
- && GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF
- && CONSTANT_POOL_ADDRESS_P (XEXP (operands[1], 0))
- && !(SSE_REG_P (operands[0])
- || (GET_CODE (operands[0]) == SUBREG && SSE_REG_P (operands[0])))
- && (!(FP_REG_P (operands[0]) ||
- (GET_CODE (operands[0]) == SUBREG
- && FP_REG_P (SUBREG_REG (operands[0]))))
- || standard_80387_constant_p (get_pool_constant (XEXP (operands[1], 0))))"
- [(set (match_dup 0)
- (match_dup 1))]
- "operands[1] = get_pool_constant (XEXP (operands[1], 0));")
+ [(set_attr "type" "fmov,fmov,fmov,imov,imov,sse,sse,sse,sse")
+ (set_attr "mode" "SF,SF,SF,SI,SI,TI,SF,SF,SF")])
(define_insn "*swapsf"
[(set (match_operand:SF 0 "register_operand" "+f")
;; when optimizing for size.
(define_insn "*movdf_nointeger"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=f#Y,m,f#Y,*r,o,Y#f,m")
- (match_operand:DF 1 "general_operand" "fm#Y,f#Y,G,*roF,F*r,Ym#f,Y#f"))]
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=f#Y,m,f#Y,*r,o,Y#f,Y#f,Y#f,m")
+ (match_operand:DF 1 "general_operand" "fm#Y,f#Y,G,*roF,F*r,H,Y#f,YHm#f,Y#f"))]
"(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
&& (optimize_size || !TARGET_INTEGER_DFMODE_MOVES)
&& (reload_in_progress || reload_completed
case 4:
return \"#\";
case 5:
+ return \"pxor\\t%0, %0\";
case 6:
- if (TARGET_PARTIAL_REG_DEPENDENCY
- && register_operand (operands[0], VOIDmode)
- && register_operand (operands[1], VOIDmode))
+ if (TARGET_PARTIAL_REG_DEPENDENCY)
return \"movapd\\t{%1, %0|%0, %1}\";
- return \"movsd\\t{%1, %0|%0, %1}\";
+ else
+ return \"movsd\\t{%1, %0|%0, %1}\";
+ case 7:
+ case 8:
+ return \"movsd\\t{%1, %0|%0, %1}\";
default:
abort();
}
}"
- [(set_attr "type" "fmov,fmov,fmov,multi,multi,sse,sse")
- (set_attr "mode" "DF,DF,DF,SI,SI,DF,DF")])
+ [(set_attr "type" "fmov,fmov,fmov,multi,multi,sse,sse,sse,sse")
+ (set_attr "mode" "DF,DF,DF,SI,SI,TI,DF,DF,DF")])
(define_insn "*movdf_integer"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=f#Yr,m,f#Yr,r#Yf,o,Y#rf,m")
- (match_operand:DF 1 "general_operand" "fm#Yr,f#Yr,G,roF#Yf,Fr#Yf,Ym#rf,Y#rf"))]
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=f#Yr,m,f#Yr,r#Yf,o,Y#rf,Y#rf,Y#rf,m")
+ (match_operand:DF 1 "general_operand" "fm#Yr,f#Yr,G,roF#Yf,Fr#Yf,H,Y#rf,Ym#rf,Y#rf"))]
"(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
&& !optimize_size && TARGET_INTEGER_DFMODE_MOVES
&& (reload_in_progress || reload_completed
return \"#\";
case 5:
+ return \"pxor\\t%0, %0\";
case 6:
+ if (TARGET_PARTIAL_REG_DEPENDENCY)
+ return \"movapd\\t{%1, %0|%0, %1}\";
+ else
+ return \"movsd\\t{%1, %0|%0, %1}\";
+ case 7:
+ case 8:
return \"movsd\\t{%1, %0|%0, %1}\";
default:
abort();
}
}"
- [(set_attr "type" "fmov,fmov,fmov,multi,multi,sse,sse")
- (set_attr "mode" "DF,DF,DF,SI,SI,DF,DF")])
+ [(set_attr "type" "fmov,fmov,fmov,multi,multi,sse,sse,sse,sse")
+ (set_attr "mode" "DF,DF,DF,SI,SI,TI,DF,DF,DF")])
(define_split
[(set (match_operand:DF 0 "nonimmediate_operand" "")
(set (match_dup 3) (match_dup 6))]
"if (ix86_split_long_move (operands)) DONE;")
-(define_split
- [(set (match_operand:DF 0 "register_operand" "")
- (match_operand:DF 1 "memory_operand" ""))]
- "reload_completed
- && GET_CODE (operands[1]) == MEM
- && GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF
- && CONSTANT_POOL_ADDRESS_P (XEXP (operands[1], 0))
- && !(SSE_REG_P (operands[0])
- || (GET_CODE (operands[0]) == SUBREG && SSE_REG_P (operands[0])))
- && standard_80387_constant_p (get_pool_constant (XEXP (operands[1], 0)))"
- [(set (match_dup 0)
- (match_dup 1))]
- "operands[1] = get_pool_constant (XEXP (operands[1], 0));")
-
(define_insn "*swapdf"
[(set (match_operand:DF 0 "register_operand" "+f")
(match_operand:DF 1 "register_operand" "+f"))
(match_operand 1 "memory_operand" ""))]
"reload_completed
&& GET_CODE (operands[1]) == MEM
- && (GET_MODE (operands[0]) == XFmode || GET_MODE (operands[0]) == TFmode)
+ && (GET_MODE (operands[0]) == XFmode || GET_MODE (operands[0]) == TFmode
+ || GET_MODE (operands[0]) == SFmode || GET_MODE (operands[0]) == DFmode)
&& GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF
&& CONSTANT_POOL_ADDRESS_P (XEXP (operands[1], 0))
- && standard_80387_constant_p (get_pool_constant (XEXP (operands[1], 0)))"
+ && (!(SSE_REG_P (operands[0]) ||
+ (GET_CODE (operands[0]) == SUBREG
+ && SSE_REG_P (SUBREG_REG (operands[0]))))
+ || standard_sse_constant_p (get_pool_constant (XEXP (operands[1], 0))))
+ && (!(FP_REG_P (operands[0]) ||
+ (GET_CODE (operands[0]) == SUBREG
+ && FP_REG_P (SUBREG_REG (operands[0]))))
+ || standard_80387_constant_p (get_pool_constant (XEXP (operands[1], 0))))"
[(set (match_dup 0)
(match_dup 1))]
"operands[1] = get_pool_constant (XEXP (operands[1], 0));")