-
-(define_expand "copysigntf3"
- [(match_operand:TF 0 "general_operand" "")
- (match_operand:TF 1 "general_operand" "")
- (match_operand:TF 2 "general_operand" "")]
- "(DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_DARWIN)
- && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128"
-{
- rtx target, op0, op1, temp;
- bool op0_is_abs = false;
-
- target = operands[0];
- op0 = operands[1];
- op1 = operands[2];
-
- if (GET_CODE (op0) == CONST_DOUBLE)
- {
- if (real_isneg (CONST_DOUBLE_REAL_VALUE (op0)))
- op0 = simplify_unary_operation (ABS, TFmode, op0, TFmode);
- op0_is_abs = true;
- }
-
- temp = expand_copysign_absneg (TFmode, op0, op1, target, 127, op0_is_abs);
- if (temp != target)
- emit_move_insn (target, temp);
- DONE;
-})