;; Uses of UNSPEC in this file:
(define_c_enum "unspec" [
+ UNSPEC_XFLT_COMPARE
UNSPEC_ARG_HOME
UNSPEC_LDGP1
UNSPEC_INSXH
UNSPECV_SETJMPR_ER ; builtin_setjmp_receiver fragment
UNSPECV_LL ; load-locked
UNSPECV_SC ; store-conditional
+ UNSPECV_CMPXCHG
])
;; On non-BWX targets, CQImode must be handled the similarly to HImode
(set_attr "trap_suffix" "u_su_sui")])
(define_expand "addtf3"
- [(use (match_operand 0 "register_operand" ""))
- (use (match_operand 1 "general_operand" ""))
- (use (match_operand 2 "general_operand" ""))]
+ [(use (match_operand:TF 0 "register_operand" ""))
+ (use (match_operand:TF 1 "general_operand" ""))
+ (use (match_operand:TF 2 "general_operand" ""))]
"TARGET_HAS_XFLOATING_LIBS"
"alpha_emit_xfloating_arith (PLUS, operands); DONE;")
(set_attr "trap_suffix" "u_su_sui")])
(define_expand "divtf3"
- [(use (match_operand 0 "register_operand" ""))
- (use (match_operand 1 "general_operand" ""))
- (use (match_operand 2 "general_operand" ""))]
+ [(use (match_operand:TF 0 "register_operand" ""))
+ (use (match_operand:TF 1 "general_operand" ""))
+ (use (match_operand:TF 2 "general_operand" ""))]
"TARGET_HAS_XFLOATING_LIBS"
"alpha_emit_xfloating_arith (DIV, operands); DONE;")
(set_attr "trap_suffix" "u_su_sui")])
(define_expand "multf3"
- [(use (match_operand 0 "register_operand" ""))
- (use (match_operand 1 "general_operand" ""))
- (use (match_operand 2 "general_operand" ""))]
+ [(use (match_operand:TF 0 "register_operand" ""))
+ (use (match_operand:TF 1 "general_operand" ""))
+ (use (match_operand:TF 2 "general_operand" ""))]
"TARGET_HAS_XFLOATING_LIBS"
"alpha_emit_xfloating_arith (MULT, operands); DONE;")
(set_attr "trap_suffix" "u_su_sui")])
(define_expand "subtf3"
- [(use (match_operand 0 "register_operand" ""))
- (use (match_operand 1 "general_operand" ""))
- (use (match_operand 2 "general_operand" ""))]
+ [(use (match_operand:TF 0 "register_operand" ""))
+ (use (match_operand:TF 1 "general_operand" ""))
+ (use (match_operand:TF 2 "general_operand" ""))]
"TARGET_HAS_XFLOATING_LIBS"
"alpha_emit_xfloating_arith (MINUS, operands); DONE;")
emit_move_insn (gen_rtx_REG (DImode, 25), operands[1]);
if (GET_CODE (operands[0]) == SYMBOL_REF)
{
- alpha_need_linkage (XSTR (operands[0], 0), 0);
-
operands[2] = const0_rtx;
}
else
emit_move_insn (gen_rtx_REG (DImode, 25), operands[2]);
if (GET_CODE (operands[1]) == SYMBOL_REF)
{
- alpha_need_linkage (XSTR (operands[1], 0), 0);
-
operands[3] = const0_rtx;
}
else
case 0:
return "mov %2,$27\;jsr $26,0\;ldq $27,0($29)";
case 1:
- operands [2] = alpha_use_linkage (operands [0], cfun->decl, 1, 0);
- operands [3] = alpha_use_linkage (operands [0], cfun->decl, 0, 0);
+ operands [2] = alpha_use_linkage (operands [0], true, false);
+ operands [3] = alpha_use_linkage (operands [0], false, false);
return "ldq $26,%3\;ldq $27,%2\;jsr $26,%0\;ldq $27,0($29)";
default:
gcc_unreachable ();
(clobber (reg:DI 27))])]
"TARGET_ABI_OPEN_VMS"
{
- operands[4] = alpha_need_linkage ("OTS$MOVE", 0);
+ operands[4] = gen_rtx_SYMBOL_REF (Pmode, "OTS$MOVE");
})
(define_insn "*movmemdi_1"
(clobber (reg:DI 27))]
"TARGET_ABI_OPEN_VMS"
{
- operands [5] = alpha_use_linkage (operands [4], cfun->decl, 0, 1);
+ operands [5] = alpha_use_linkage (operands [4], false, true);
switch (which_alternative)
{
case 0:
if (operands[2] != const0_rtx)
FAIL;
- operands[4] = alpha_need_linkage ("OTS$ZERO", 0);
+ operands[4] = gen_rtx_SYMBOL_REF (Pmode, "OTS$ZERO");
})
(define_insn "*clrmemdi_1"
(clobber (reg:DI 27))]
"TARGET_ABI_OPEN_VMS"
{
- operands [4] = alpha_use_linkage (operands [3], cfun->decl, 0, 1);
+ operands [4] = alpha_use_linkage (operands [3], false, true);
switch (which_alternative)
{
case 0:
case 0:
return "mov %3,$27\;jsr $26,0\;ldq $27,0($29)";
case 1:
- operands [3] = alpha_use_linkage (operands [1], cfun->decl, 1, 0);
- operands [4] = alpha_use_linkage (operands [1], cfun->decl, 0, 0);
+ operands [3] = alpha_use_linkage (operands [1], true, false);
+ operands [4] = alpha_use_linkage (operands [1], false, false);
return "ldq $26,%4\;ldq $27,%3\;jsr $26,%1\;ldq $27,0($29)";
default:
gcc_unreachable ();