Commit c63165be by Richard Earnshaw

(all output patterns): Use new capabilities of arm_print_operand to simplify output sequences.

(all output patterns): Use new capabilities of arm_print_operand to
simplify output sequences.  Mark position of condition code with '%?'.

From-SVN: r7425
parent ef65c0dc
...@@ -177,12 +177,8 @@ ...@@ -177,12 +177,8 @@
"* "*
if (GET_CODE (operands[2]) == CONST_INT if (GET_CODE (operands[2]) == CONST_INT
&& !const_ok_for_arm (INTVAL (operands[2]))) && !const_ok_for_arm (INTVAL (operands[2])))
{ return \"sub%?\\t%0, %1, #%n2\";
operands[2] = GEN_INT (-INTVAL (operands[2])); return \"add%?\\t%0, %1, %2\";
output_asm_insn (\"sub\\t%0, %1, %2\", operands);
return \"\";
}
return \"add\\t%0, %1, %2\";
") ")
(define_insn "" (define_insn ""
...@@ -196,12 +192,8 @@ ...@@ -196,12 +192,8 @@
"* "*
if (GET_CODE (operands[2]) == CONST_INT if (GET_CODE (operands[2]) == CONST_INT
&& !const_ok_for_arm (INTVAL (operands[2]))) && !const_ok_for_arm (INTVAL (operands[2])))
{ return \"sub%?s\\t%0, %1, #%n2\";
operands[2] = GEN_INT (-INTVAL (operands[2])); return \"add%?s\\t%0, %1, %2\";
output_asm_insn (\"subs\\t%0, %1, %2\", operands);
return \"\";
}
return \"adds\\t%0, %1, %2\";
" "
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
...@@ -215,12 +207,8 @@ ...@@ -215,12 +207,8 @@
"* "*
if (GET_CODE (operands[2]) == CONST_INT if (GET_CODE (operands[2]) == CONST_INT
&& !const_ok_for_arm (INTVAL (operands[2]))) && !const_ok_for_arm (INTVAL (operands[2])))
{ return \"sub%?s\\t%0, %1, #%n2\";
operands[2] = GEN_INT (-INTVAL (operands[2])); return \"add%?s\\t%0, %1, %2\";
output_asm_insn (\"subs\\t%0, %1, %2\", operands);
return \"\";
}
return \"adds\\t%0, %1, %2\";
" "
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
...@@ -306,12 +294,12 @@ ...@@ -306,12 +294,12 @@
switch (which_alternative) switch (which_alternative)
{ {
case 0: case 0:
return \"adfs\\t%0, %1, %2\"; return \"adf%?s\\t%0, %1, %2\";
case 1: case 1:
REAL_VALUE_FROM_CONST_DOUBLE (r, operands[2]); REAL_VALUE_FROM_CONST_DOUBLE (r, operands[2]);
r = REAL_VALUE_NEGATE (r); r = REAL_VALUE_NEGATE (r);
operands[2] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[2])); operands[2] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[2]));
output_asm_insn (\"sufs\\t%0, %1, %2\", operands); output_asm_insn (\"suf%?s\\t%0, %1, %2\", operands);
return \"\"; return \"\";
} }
} }
...@@ -330,12 +318,12 @@ ...@@ -330,12 +318,12 @@
switch (which_alternative) switch (which_alternative)
{ {
case 0: case 0:
return \"adfd\\t%0, %1, %2\"; return \"adf%?d\\t%0, %1, %2\";
case 1: case 1:
REAL_VALUE_FROM_CONST_DOUBLE (r, operands[2]); REAL_VALUE_FROM_CONST_DOUBLE (r, operands[2]);
r = REAL_VALUE_NEGATE (r); r = REAL_VALUE_NEGATE (r);
operands[2] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[2])); operands[2] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[2]));
output_asm_insn (\"sufd\\t%0, %1, %2\", operands); output_asm_insn (\"suf%?d\\t%0, %1, %2\", operands);
return \"\"; return \"\";
} }
} }
...@@ -355,12 +343,12 @@ ...@@ -355,12 +343,12 @@
switch (which_alternative) switch (which_alternative)
{ {
case 0: case 0:
return \"adfd\\t%0, %1, %2\"; return \"adf%?d\\t%0, %1, %2\";
case 1: case 1:
REAL_VALUE_FROM_CONST_DOUBLE (r, operands[2]); REAL_VALUE_FROM_CONST_DOUBLE (r, operands[2]);
r = REAL_VALUE_NEGATE (r); r = REAL_VALUE_NEGATE (r);
operands[2] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[2])); operands[2] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[2]));
output_asm_insn (\"sufd\\t%0, %1, %2\", operands); output_asm_insn (\"suf%?d\\t%0, %1, %2\", operands);
return \"\"; return \"\";
} }
} }
...@@ -373,7 +361,7 @@ ...@@ -373,7 +361,7 @@
(float_extend:DF (float_extend:DF
(match_operand:SF 2 "s_register_operand" "f"))))] (match_operand:SF 2 "s_register_operand" "f"))))]
"" ""
"adfd\\t%0, %1, %2" "adf%?d\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "" (define_insn ""
...@@ -383,7 +371,7 @@ ...@@ -383,7 +371,7 @@
(float_extend:DF (float_extend:DF
(match_operand:SF 2 "s_register_operand" "f"))))] (match_operand:SF 2 "s_register_operand" "f"))))]
"" ""
"adfd\\t%0, %1, %2" "adf%?d\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "addxf3" (define_insn "addxf3"
...@@ -398,12 +386,12 @@ ...@@ -398,12 +386,12 @@
switch (which_alternative) switch (which_alternative)
{ {
case 0: case 0:
return \"adfe\\t%0, %1, %2\"; return \"adf%?e\\t%0, %1, %2\";
case 1: case 1:
REAL_VALUE_FROM_CONST_DOUBLE (r, operands[2]); REAL_VALUE_FROM_CONST_DOUBLE (r, operands[2]);
r = REAL_VALUE_NEGATE (r); r = REAL_VALUE_NEGATE (r);
operands[2] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[2])); operands[2] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[2]));
output_asm_insn (\"sufe\\t%0, %1, %2\", operands); output_asm_insn (\"suf%?e\\t%0, %1, %2\", operands);
return \"\"; return \"\";
} }
} }
...@@ -482,8 +470,8 @@ ...@@ -482,8 +470,8 @@
(match_operand:SI 2 "arm_rhs_operand" "rI,r")))] (match_operand:SI 2 "arm_rhs_operand" "rI,r")))]
"" ""
"@ "@
sub\\t%0, %1, %2 sub%?\\t%0, %1, %2
rsb\\t%0, %2, %1") rsb%?\\t%0, %2, %1")
(define_insn "" (define_insn ""
[(set (reg:CC_NOOV 24) [(set (reg:CC_NOOV 24)
...@@ -494,8 +482,8 @@ ...@@ -494,8 +482,8 @@
(minus:SI (match_dup 1) (match_dup 2)))] (minus:SI (match_dup 1) (match_dup 2)))]
"" ""
"@ "@
subs\\t%0, %1, %2 sub%?s\\t%0, %1, %2
rsbs\\t%0, %2, %1" rsb%?s\\t%0, %2, %1"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "decscc" (define_insn "decscc"
...@@ -516,8 +504,8 @@ ...@@ -516,8 +504,8 @@
(match_operand:SF 2 "fpu_rhs_operand" "fG,f")))] (match_operand:SF 2 "fpu_rhs_operand" "fG,f")))]
"" ""
"@ "@
sufs\\t%0, %1, %2 suf%?s\\t%0, %1, %2
rsfs\\t%0, %2, %1" rsf%?s\\t%0, %2, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "subdf3" (define_insn "subdf3"
...@@ -526,8 +514,8 @@ ...@@ -526,8 +514,8 @@
(match_operand:DF 2 "fpu_rhs_operand" "fG,f")))] (match_operand:DF 2 "fpu_rhs_operand" "fG,f")))]
"" ""
"@ "@
sufd\\t%0, %1, %2 suf%?d\\t%0, %1, %2
rsfd\\t%0, %2, %1" rsf%?d\\t%0, %2, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "" (define_insn ""
...@@ -536,7 +524,7 @@ ...@@ -536,7 +524,7 @@
(match_operand:SF 1 "s_register_operand" "f")) (match_operand:SF 1 "s_register_operand" "f"))
(match_operand:DF 2 "fpu_rhs_operand" "fG")))] (match_operand:DF 2 "fpu_rhs_operand" "fG")))]
"" ""
"sufd\\t%0, %1, %2" "suf%?d\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "" (define_insn ""
...@@ -546,8 +534,8 @@ ...@@ -546,8 +534,8 @@
(match_operand:SF 2 "s_register_operand" "f,f"))))] (match_operand:SF 2 "s_register_operand" "f,f"))))]
"" ""
"@ "@
sufd\\t%0, %1, %2 suf%?d\\t%0, %1, %2
rsfd\\t%0, %2, %1" rsf%?d\\t%0, %2, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "" (define_insn ""
...@@ -557,7 +545,7 @@ ...@@ -557,7 +545,7 @@
(float_extend:DF (float_extend:DF
(match_operand:SF 2 "s_register_operand" "f"))))] (match_operand:SF 2 "s_register_operand" "f"))))]
"" ""
"sufd\\t%0, %1, %2" "suf%?d\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "subxf3" (define_insn "subxf3"
...@@ -566,8 +554,8 @@ ...@@ -566,8 +554,8 @@
(match_operand:XF 2 "fpu_rhs_operand" "fG,f")))] (match_operand:XF 2 "fpu_rhs_operand" "fG,f")))]
"ENABLE_XF_PATTERNS" "ENABLE_XF_PATTERNS"
"@ "@
sufe\\t%0, %1, %2 suf%?e\\t%0, %1, %2
rsfe\\t%0, %2, %1" rsf%?e\\t%0, %2, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
;; Multiplication insns ;; Multiplication insns
...@@ -578,7 +566,7 @@ ...@@ -578,7 +566,7 @@
(mult:SI (match_operand:SI 2 "s_register_operand" "r,r") (mult:SI (match_operand:SI 2 "s_register_operand" "r,r")
(match_operand:SI 1 "s_register_operand" "%?r,0")))] (match_operand:SI 1 "s_register_operand" "%?r,0")))]
"" ""
"mul\\t%0, %2, %1") "mul%?\\t%0, %2, %1")
(define_insn "" (define_insn ""
[(set (reg:CC_NOOV 24) [(set (reg:CC_NOOV 24)
...@@ -589,7 +577,7 @@ ...@@ -589,7 +577,7 @@
(set (match_operand:SI 0 "s_register_operand" "=&r,&r") (set (match_operand:SI 0 "s_register_operand" "=&r,&r")
(mult:SI (match_dup 2) (match_dup 1)))] (mult:SI (match_dup 2) (match_dup 1)))]
"" ""
"muls\\t%0, %2, %1" "mul%?s\\t%0, %2, %1"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -600,7 +588,7 @@ ...@@ -600,7 +588,7 @@
(const_int 0))) (const_int 0)))
(clobber (match_scratch:SI 0 "=&r,&r"))] (clobber (match_scratch:SI 0 "=&r,&r"))]
"" ""
"muls\\t%0, %2, %1" "mul%?s\\t%0, %2, %1"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
;; Unnamed templates to match MLA instruction. ;; Unnamed templates to match MLA instruction.
...@@ -612,7 +600,7 @@ ...@@ -612,7 +600,7 @@
(match_operand:SI 1 "s_register_operand" "%r,0,r,0")) (match_operand:SI 1 "s_register_operand" "%r,0,r,0"))
(match_operand:SI 3 "s_register_operand" "?r,r,0,0")))] (match_operand:SI 3 "s_register_operand" "?r,r,0,0")))]
"" ""
"mla\\t%0, %2, %1, %3") "mla%?\\t%0, %2, %1, %3")
(define_insn "" (define_insn ""
[(set (reg:CC_NOOV 24) [(set (reg:CC_NOOV 24)
...@@ -626,7 +614,7 @@ ...@@ -626,7 +614,7 @@
(plus:SI (mult:SI (match_dup 2) (match_dup 1)) (plus:SI (mult:SI (match_dup 2) (match_dup 1))
(match_dup 3)))] (match_dup 3)))]
"" ""
"mlas\\t%0, %2, %1, %3" "mla%?s\\t%0, %2, %1, %3"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -639,7 +627,7 @@ ...@@ -639,7 +627,7 @@
(const_int 0))) (const_int 0)))
(clobber (match_scratch:SI 0 "=&r,&r,&r,&r"))] (clobber (match_scratch:SI 0 "=&r,&r,&r,&r"))]
"" ""
"mlas\\t%0, %2, %1, %3" "mla%?s\\t%0, %2, %1, %3"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "mulsf3" (define_insn "mulsf3"
...@@ -647,7 +635,7 @@ ...@@ -647,7 +635,7 @@
(mult:SF (match_operand:SF 1 "s_register_operand" "f") (mult:SF (match_operand:SF 1 "s_register_operand" "f")
(match_operand:SF 2 "fpu_rhs_operand" "fG")))] (match_operand:SF 2 "fpu_rhs_operand" "fG")))]
"" ""
"fmls\\t%0, %1, %2" "fml%?s\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "muldf3" (define_insn "muldf3"
...@@ -655,7 +643,7 @@ ...@@ -655,7 +643,7 @@
(mult:DF (match_operand:DF 1 "s_register_operand" "f") (mult:DF (match_operand:DF 1 "s_register_operand" "f")
(match_operand:DF 2 "fpu_rhs_operand" "fG")))] (match_operand:DF 2 "fpu_rhs_operand" "fG")))]
"" ""
"mufd\\t%0, %1, %2" "muf%?d\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "" (define_insn ""
...@@ -664,7 +652,7 @@ ...@@ -664,7 +652,7 @@
(match_operand:SF 1 "s_register_operand" "f")) (match_operand:SF 1 "s_register_operand" "f"))
(match_operand:DF 2 "fpu_rhs_operand" "fG")))] (match_operand:DF 2 "fpu_rhs_operand" "fG")))]
"" ""
"mufd\\t%0, %1, %2" "muf%?d\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "" (define_insn ""
...@@ -673,7 +661,7 @@ ...@@ -673,7 +661,7 @@
(float_extend:DF (float_extend:DF
(match_operand:SF 2 "s_register_operand" "f"))))] (match_operand:SF 2 "s_register_operand" "f"))))]
"" ""
"mufd\\t%0, %1, %2" "muf%?d\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "" (define_insn ""
...@@ -683,7 +671,7 @@ ...@@ -683,7 +671,7 @@
(float_extend:DF (float_extend:DF
(match_operand:SF 2 "s_register_operand" "f"))))] (match_operand:SF 2 "s_register_operand" "f"))))]
"" ""
"mufd\\t%0, %1, %2" "muf%?d\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "mulxf3" (define_insn "mulxf3"
...@@ -691,7 +679,7 @@ ...@@ -691,7 +679,7 @@
(mult:XF (match_operand:XF 1 "s_register_operand" "f") (mult:XF (match_operand:XF 1 "s_register_operand" "f")
(match_operand:XF 2 "fpu_rhs_operand" "fG")))] (match_operand:XF 2 "fpu_rhs_operand" "fG")))]
"ENABLE_XF_PATTERNS" "ENABLE_XF_PATTERNS"
"mufe\\t%0, %1, %2" "muf%?e\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
;; Division insns ;; Division insns
...@@ -702,8 +690,8 @@ ...@@ -702,8 +690,8 @@
(match_operand:SF 2 "fpu_rhs_operand" "fG,f")))] (match_operand:SF 2 "fpu_rhs_operand" "fG,f")))]
"" ""
"@ "@
fdvs\\t%0, %1, %2 fdv%?s\\t%0, %1, %2
frds\\t%0, %2, %1" frd%?s\\t%0, %2, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "divdf3" (define_insn "divdf3"
...@@ -712,8 +700,8 @@ ...@@ -712,8 +700,8 @@
(match_operand:DF 2 "fpu_rhs_operand" "fG,f")))] (match_operand:DF 2 "fpu_rhs_operand" "fG,f")))]
"" ""
"@ "@
dvfd\\t%0, %1, %2 dvf%?d\\t%0, %1, %2
rdfd\\t%0, %2, %1" rdf%?d\\t%0, %2, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "" (define_insn ""
...@@ -722,7 +710,7 @@ ...@@ -722,7 +710,7 @@
(match_operand:SF 1 "s_register_operand" "f")) (match_operand:SF 1 "s_register_operand" "f"))
(match_operand:DF 2 "fpu_rhs_operand" "fG")))] (match_operand:DF 2 "fpu_rhs_operand" "fG")))]
"" ""
"dvfd\\t%0, %1, %2" "dvf%?d\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "" (define_insn ""
...@@ -731,7 +719,7 @@ ...@@ -731,7 +719,7 @@
(float_extend:DF (float_extend:DF
(match_operand:SF 2 "s_register_operand" "f"))))] (match_operand:SF 2 "s_register_operand" "f"))))]
"" ""
"rdfd\\t%0, %2, %1" "rdf%?d\\t%0, %2, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "" (define_insn ""
...@@ -741,7 +729,7 @@ ...@@ -741,7 +729,7 @@
(float_extend:DF (float_extend:DF
(match_operand:SF 2 "s_register_operand" "f"))))] (match_operand:SF 2 "s_register_operand" "f"))))]
"" ""
"dvfd\\t%0, %1, %2" "dvf%?d\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "divxf3" (define_insn "divxf3"
...@@ -750,8 +738,8 @@ ...@@ -750,8 +738,8 @@
(match_operand:XF 2 "fpu_rhs_operand" "fG,f")))] (match_operand:XF 2 "fpu_rhs_operand" "fG,f")))]
"ENABLE_XF_PATTERNS" "ENABLE_XF_PATTERNS"
"@ "@
dvfe\\t%0, %1, %2 dvf%?e\\t%0, %1, %2
rdfe\\t%0, %2, %1" rdf%?e\\t%0, %2, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
;; Modulo insns ;; Modulo insns
...@@ -761,7 +749,7 @@ ...@@ -761,7 +749,7 @@
(mod:SF (match_operand:SF 1 "s_register_operand" "f") (mod:SF (match_operand:SF 1 "s_register_operand" "f")
(match_operand:SF 2 "fpu_rhs_operand" "fG")))] (match_operand:SF 2 "fpu_rhs_operand" "fG")))]
"" ""
"rmfs\\t%0, %1, %2" "rmf%?s\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "moddf3" (define_insn "moddf3"
...@@ -769,7 +757,7 @@ ...@@ -769,7 +757,7 @@
(mod:DF (match_operand:DF 1 "s_register_operand" "f") (mod:DF (match_operand:DF 1 "s_register_operand" "f")
(match_operand:DF 2 "fpu_rhs_operand" "fG")))] (match_operand:DF 2 "fpu_rhs_operand" "fG")))]
"" ""
"rmfd\\t%0, %1, %2" "rmf%?d\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "" (define_insn ""
...@@ -778,7 +766,7 @@ ...@@ -778,7 +766,7 @@
(match_operand:SF 1 "s_register_operand" "f")) (match_operand:SF 1 "s_register_operand" "f"))
(match_operand:DF 2 "fpu_rhs_operand" "fG")))] (match_operand:DF 2 "fpu_rhs_operand" "fG")))]
"" ""
"rmfd\\t%0, %1, %2" "rmf%?d\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "" (define_insn ""
...@@ -787,7 +775,7 @@ ...@@ -787,7 +775,7 @@
(float_extend:DF (float_extend:DF
(match_operand:SF 2 "s_register_operand" "f"))))] (match_operand:SF 2 "s_register_operand" "f"))))]
"" ""
"rmfd\\t%0, %1, %2" "rmf%?d\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "" (define_insn ""
...@@ -797,7 +785,7 @@ ...@@ -797,7 +785,7 @@
(float_extend:DF (float_extend:DF
(match_operand:SF 2 "s_register_operand" "f"))))] (match_operand:SF 2 "s_register_operand" "f"))))]
"" ""
"rmfd\\t%0, %1, %2" "rmf%?d\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "modxf3" (define_insn "modxf3"
...@@ -805,7 +793,7 @@ ...@@ -805,7 +793,7 @@
(mod:XF (match_operand:XF 1 "s_register_operand" "f") (mod:XF (match_operand:XF 1 "s_register_operand" "f")
(match_operand:XF 2 "fpu_rhs_operand" "fG")))] (match_operand:XF 2 "fpu_rhs_operand" "fG")))]
"ENABLE_XF_PATTERNS" "ENABLE_XF_PATTERNS"
"rmfe\\t%0, %1, %2" "rmf%?e\\t%0, %1, %2"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
;; Boolean and,ior,xor insns ;; Boolean and,ior,xor insns
...@@ -815,7 +803,7 @@ ...@@ -815,7 +803,7 @@
(and:DI (match_operand:DI 1 "s_register_operand" "%0,0") (and:DI (match_operand:DI 1 "s_register_operand" "%0,0")
(match_operand:DI 2 "s_register_operand" "r,0")))] (match_operand:DI 2 "s_register_operand" "r,0")))]
"" ""
"and\\t%0, %1, %2\;and\\t%R0, %R1, %R2" "and%?\\t%0, %1, %2\;and%?\\t%R0, %R1, %R2"
[(set_attr "length" "8")]) [(set_attr "length" "8")])
(define_insn "" (define_insn ""
...@@ -824,7 +812,7 @@ ...@@ -824,7 +812,7 @@
(match_operand:SI 2 "s_register_operand" "r,r")) (match_operand:SI 2 "s_register_operand" "r,r"))
(match_operand:DI 1 "s_register_operand" "?r,0")))] (match_operand:DI 1 "s_register_operand" "?r,0")))]
"" ""
"and\\t%0, %1, %2\;mov\\t%R0, #0" "and%?\\t%0, %1, %2\;mov%?\\t%R0, #0"
[(set_attr "length" "8")]) [(set_attr "length" "8")])
(define_insn "" (define_insn ""
...@@ -833,7 +821,7 @@ ...@@ -833,7 +821,7 @@
(match_operand:SI 2 "s_register_operand" "r,r")) (match_operand:SI 2 "s_register_operand" "r,r"))
(match_operand:DI 1 "s_register_operand" "?r,0")))] (match_operand:DI 1 "s_register_operand" "?r,0")))]
"" ""
"and\\t%0, %1, %2\;and\\t%R0, %R1, %2, asr #31" "and%?\\t%0, %1, %2\;and%?\\t%R0, %R1, %2, asr #31"
[(set_attr "length" "8")]) [(set_attr "length" "8")])
(define_insn "andsi3" (define_insn "andsi3"
...@@ -846,10 +834,10 @@ ...@@ -846,10 +834,10 @@
&& !const_ok_for_arm (INTVAL (operands[2]))) && !const_ok_for_arm (INTVAL (operands[2])))
{ {
operands[2] = GEN_INT (~INTVAL (operands[2])); operands[2] = GEN_INT (~INTVAL (operands[2]));
output_asm_insn (\"bic\\t%0, %1, %2\", operands); output_asm_insn (\"bic%?\\t%0, %1, %2\", operands);
return \"\"; return \"\";
} }
return \"and\\t%0, %1, %2\"; return \"and%?\\t%0, %1, %2\";
") ")
(define_insn "" (define_insn ""
...@@ -865,10 +853,10 @@ ...@@ -865,10 +853,10 @@
&& !const_ok_for_arm (INTVAL (operands[2]))) && !const_ok_for_arm (INTVAL (operands[2])))
{ {
operands[2] = GEN_INT (~INTVAL (operands[2])); operands[2] = GEN_INT (~INTVAL (operands[2]));
output_asm_insn (\"bics\\t%0, %1, %2\", operands); output_asm_insn (\"bic%?s\\t%0, %1, %2\", operands);
return \"\"; return \"\";
} }
return \"ands\\t%0, %1, %2\"; return \"and%?s\\t%0, %1, %2\";
" "
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
...@@ -878,7 +866,7 @@ ...@@ -878,7 +866,7 @@
(match_operand:SI 1 "arm_rhs_operand" "rI")) (match_operand:SI 1 "arm_rhs_operand" "rI"))
(const_int 0)))] (const_int 0)))]
"" ""
"tst\\t%0, %1" "tst%?\\t%0, %1"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -890,7 +878,7 @@ ...@@ -890,7 +878,7 @@
"const_ok_for_arm (~INTVAL (operands[1]))" "const_ok_for_arm (~INTVAL (operands[1]))"
"* "*
operands[1] = GEN_INT (~INTVAL (operands[1])); operands[1] = GEN_INT (~INTVAL (operands[1]));
output_asm_insn (\"bics\\t%3, %0, %1\", operands); output_asm_insn (\"bic%?s\\t%3, %0, %1\", operands);
return \"\"; return \"\";
" "
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
...@@ -914,7 +902,7 @@ ...@@ -914,7 +902,7 @@
while (cnt--) while (cnt--)
mask = (mask << 1) | 1; mask = (mask << 1) | 1;
operands[1] = GEN_INT (mask << INTVAL (operands[2])); operands[1] = GEN_INT (mask << INTVAL (operands[2]));
output_asm_insn (\"tst\\t%0, %1\", operands); output_asm_insn (\"tst%?\\t%0, %1\", operands);
return \"\"; return \"\";
} }
" "
...@@ -938,8 +926,8 @@ ...@@ -938,8 +926,8 @@
while (cnt--) while (cnt--)
mask = (mask << 1) | 1; mask = (mask << 1) | 1;
operands[1] = GEN_INT (mask << INTVAL (operands[2])); operands[1] = GEN_INT (mask << INTVAL (operands[2]));
output_asm_insn (\"ldrb\\t%3, %0\", operands); output_asm_insn (\"ldr%?b\\t%3, %0\", operands);
output_asm_insn (\"tst\\t%3, %1\", operands); output_asm_insn (\"tst%?\\t%3, %1\", operands);
return \"\"; return \"\";
} }
" "
...@@ -952,7 +940,7 @@ ...@@ -952,7 +940,7 @@
(and:DI (not:DI (match_operand:DI 2 "s_register_operand" "r,0")) (and:DI (not:DI (match_operand:DI 2 "s_register_operand" "r,0"))
(match_operand:DI 1 "s_register_operand" "0,r")))] (match_operand:DI 1 "s_register_operand" "0,r")))]
"" ""
"bic\\t%0, %1, %2\;bic\\t%R0, %R1, %R2" "bic%?\\t%0, %1, %2\;bic%?\\t%R0, %R1, %R2"
[(set_attr "length" "8")]) [(set_attr "length" "8")])
(define_insn "" (define_insn ""
...@@ -962,8 +950,8 @@ ...@@ -962,8 +950,8 @@
(match_operand:DI 1 "s_register_operand" "0,?r")))] (match_operand:DI 1 "s_register_operand" "0,?r")))]
"" ""
"@ "@
bic\\t%0, %1, %2 bic%?\\t%0, %1, %2
bic\\t%0, %1, %2\;mov\\t%R0, %R1" bic%?\\t%0, %1, %2\;mov%?\\t%R0, %R1"
[(set_attr "length" "4,8")]) [(set_attr "length" "4,8")])
(define_insn "" (define_insn ""
...@@ -972,7 +960,7 @@ ...@@ -972,7 +960,7 @@
(match_operand:SI 2 "s_register_operand" "r,r"))) (match_operand:SI 2 "s_register_operand" "r,r")))
(match_operand:DI 1 "s_register_operand" "?r,0")))] (match_operand:DI 1 "s_register_operand" "?r,0")))]
"" ""
"bic\\t%0, %1, %2\;bic\\t%R0, %R1, %2, asr #31" "bic%?\\t%0, %1, %2\;bic%?\\t%R0, %R1, %2, asr #31"
[(set_attr "length" "8")]) [(set_attr "length" "8")])
(define_insn "" (define_insn ""
...@@ -980,7 +968,7 @@ ...@@ -980,7 +968,7 @@
(and:SI (not:SI (match_operand:SI 2 "s_register_operand" "r")) (and:SI (not:SI (match_operand:SI 2 "s_register_operand" "r"))
(match_operand:SI 1 "s_register_operand" "r")))] (match_operand:SI 1 "s_register_operand" "r")))]
"" ""
"bic\\t%0, %1, %2") "bic%?\\t%0, %1, %2")
(define_insn "" (define_insn ""
[(set (reg:CC_NOOV 24) [(set (reg:CC_NOOV 24)
...@@ -991,7 +979,7 @@ ...@@ -991,7 +979,7 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(and:SI (not:SI (match_dup 2)) (match_dup 1)))] (and:SI (not:SI (match_dup 2)) (match_dup 1)))]
"" ""
"bics\\t%0, %1, %2" "bic%?s\\t%0, %1, %2"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -1002,7 +990,7 @@ ...@@ -1002,7 +990,7 @@
(const_int 0))) (const_int 0)))
(clobber (match_scratch:SI 0 "=r"))] (clobber (match_scratch:SI 0 "=r"))]
"" ""
"bics\\t%0, %1, %2" "bic%?s\\t%0, %1, %2"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "iordi3" (define_insn "iordi3"
...@@ -1010,7 +998,7 @@ ...@@ -1010,7 +998,7 @@
(ior:DI (match_operand:DI 1 "s_register_operand" "%0") (ior:DI (match_operand:DI 1 "s_register_operand" "%0")
(match_operand:DI 2 "s_register_operand" "r")))] (match_operand:DI 2 "s_register_operand" "r")))]
"" ""
"orr\\t%0, %1, %2\;orr\\t%R0, %R1, %R2" "orr%?\\t%0, %1, %2\;orr%?\\t%R0, %R1, %R2"
[(set_attr "length" "8")]) [(set_attr "length" "8")])
(define_insn "" (define_insn ""
...@@ -1020,8 +1008,8 @@ ...@@ -1020,8 +1008,8 @@
(match_operand:DI 1 "s_register_operand" "0,?r")))] (match_operand:DI 1 "s_register_operand" "0,?r")))]
"" ""
"@ "@
orr\\t%0, %1, %2 orr%?\\t%0, %1, %2
orr\\t%0, %1, %2\;mov\\t%R0, %R1" orr%?\\t%0, %1, %2\;mov%?\\t%R0, %R1"
[(set_attr "length" "4,8")]) [(set_attr "length" "4,8")])
(define_insn "" (define_insn ""
...@@ -1030,7 +1018,7 @@ ...@@ -1030,7 +1018,7 @@
(match_operand:SI 2 "s_register_operand" "r,r")) (match_operand:SI 2 "s_register_operand" "r,r"))
(match_operand:DI 1 "s_register_operand" "?r,0")))] (match_operand:DI 1 "s_register_operand" "?r,0")))]
"" ""
"orr\\t%0, %1, %2\;orr\\t%R0, %R1, %2, asr #31" "orr%?\\t%0, %1, %2\;orr%?\\t%R0, %R1, %2, asr #31"
[(set_attr "length" "8")]) [(set_attr "length" "8")])
(define_insn "iorsi3" (define_insn "iorsi3"
...@@ -1038,7 +1026,7 @@ ...@@ -1038,7 +1026,7 @@
(ior:SI (match_operand:SI 1 "s_register_operand" "r") (ior:SI (match_operand:SI 1 "s_register_operand" "r")
(match_operand:SI 2 "arm_rhs_operand" "rI")))] (match_operand:SI 2 "arm_rhs_operand" "rI")))]
"" ""
"orr\\t%0, %1, %2") "orr%?\\t%0, %1, %2")
(define_insn "" (define_insn ""
[(set (reg:CC_NOOV 24) [(set (reg:CC_NOOV 24)
...@@ -1048,7 +1036,7 @@ ...@@ -1048,7 +1036,7 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(ior:SI (match_dup 1) (match_dup 2)))] (ior:SI (match_dup 1) (match_dup 2)))]
"" ""
"orrs\\t%0, %1, %2" "orr%?s\\t%0, %1, %2"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -1058,7 +1046,7 @@ ...@@ -1058,7 +1046,7 @@
(const_int 0))) (const_int 0)))
(clobber (match_scratch:SI 0 "=r"))] (clobber (match_scratch:SI 0 "=r"))]
"" ""
"orrs\\t%0, %1, %2" "orr%?s\\t%0, %1, %2"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "xordi3" (define_insn "xordi3"
...@@ -1066,7 +1054,7 @@ ...@@ -1066,7 +1054,7 @@
(xor:DI (match_operand:DI 1 "s_register_operand" "%0,0") (xor:DI (match_operand:DI 1 "s_register_operand" "%0,0")
(match_operand:DI 2 "s_register_operand" "r,0")))] (match_operand:DI 2 "s_register_operand" "r,0")))]
"" ""
"eor\\t%0, %1, %2\;eor\\t%R0, %R1, %R2" "eor%?\\t%0, %1, %2\;eor%?\\t%R0, %R1, %R2"
[(set_attr "length" "8")]) [(set_attr "length" "8")])
(define_insn "" (define_insn ""
...@@ -1076,8 +1064,8 @@ ...@@ -1076,8 +1064,8 @@
(match_operand:DI 1 "s_register_operand" "0,?r")))] (match_operand:DI 1 "s_register_operand" "0,?r")))]
"" ""
"@ "@
eor\\t%0, %1, %2 eor%?\\t%0, %1, %2
eor\\t%0, %1, %2\;mov\\t%R0, %R1" eor%?\\t%0, %1, %2\;mov%?\\t%R0, %R1"
[(set_attr "length" "4,8")]) [(set_attr "length" "4,8")])
(define_insn "" (define_insn ""
...@@ -1086,7 +1074,7 @@ ...@@ -1086,7 +1074,7 @@
(match_operand:SI 2 "s_register_operand" "r,r")) (match_operand:SI 2 "s_register_operand" "r,r"))
(match_operand:DI 1 "s_register_operand" "?r,0")))] (match_operand:DI 1 "s_register_operand" "?r,0")))]
"" ""
"eor\\t%0, %1, %2\;eor\\t%R0, %R1, %2, asr #31" "eor%?\\t%0, %1, %2\;eor%?\\t%R0, %R1, %2, asr #31"
[(set_attr "length" "8")]) [(set_attr "length" "8")])
(define_insn "xorsi3" (define_insn "xorsi3"
...@@ -1094,7 +1082,7 @@ ...@@ -1094,7 +1082,7 @@
(xor:SI (match_operand:SI 1 "s_register_operand" "r") (xor:SI (match_operand:SI 1 "s_register_operand" "r")
(match_operand:SI 2 "arm_rhs_operand" "rI")))] (match_operand:SI 2 "arm_rhs_operand" "rI")))]
"" ""
"eor\\t%0, %1, %2") "eor%?\\t%0, %1, %2")
(define_insn "" (define_insn ""
[(set (reg:CC_NOOV 24) [(set (reg:CC_NOOV 24)
...@@ -1104,7 +1092,7 @@ ...@@ -1104,7 +1092,7 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(xor:SI (match_dup 1) (match_dup 2)))] (xor:SI (match_dup 1) (match_dup 2)))]
"" ""
"eors\\t%0, %1, %2" "eor%?s\\t%0, %1, %2"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -1113,7 +1101,7 @@ ...@@ -1113,7 +1101,7 @@
(match_operand:SI 1 "arm_rhs_operand" "rI")) (match_operand:SI 1 "arm_rhs_operand" "rI"))
(const_int 0)))] (const_int 0)))]
"" ""
"teq\\t%0, %1" "teq%?\\t%0, %1"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
;; by splitting (IOR (AND (NOT A) (NOT B)) C) as D = AND (IOR A B) (NOT C), ;; by splitting (IOR (AND (NOT A) (NOT B)) C) as D = AND (IOR A B) (NOT C),
...@@ -1139,7 +1127,7 @@ ...@@ -1139,7 +1127,7 @@
(match_operand:SI 2 "arm_rhs_operand" "rI,0,rI")) (match_operand:SI 2 "arm_rhs_operand" "rI,0,rI"))
(not:SI (match_operand:SI 3 "arm_rhs_operand" "rI,rI,rI"))))] (not:SI (match_operand:SI 3 "arm_rhs_operand" "rI,rI,rI"))))]
"" ""
"orr\\t%0, %1, %2\;bic\\t%0, %0, %3" "orr%?\\t%0, %1, %2\;bic%?\\t%0, %0, %3"
[(set_attr "length" "8")]) [(set_attr "length" "8")])
...@@ -1228,21 +1216,15 @@ ...@@ -1228,21 +1216,15 @@
"" ""
"* "*
{ {
char buf[100];
enum rtx_code code = GET_CODE (operands[4]); enum rtx_code code = GET_CODE (operands[4]);
char *inst = arithmetic_instr (operands[4], TRUE);
operands[5] = gen_rtx (minmax_code (operands[5]), SImode, operands[2], operands[5] = gen_rtx (minmax_code (operands[5]), SImode, operands[2],
operands[3]); operands[3]);
output_asm_insn (\"cmp\\t%2, %3\", operands); output_asm_insn (\"cmp\\t%2, %3\", operands);
sprintf (buf, \"%s%%d5\\t%%0, %%1, %%2\", inst); output_asm_insn (\"%i4%d5\\t%0, %1, %2\", operands);
output_asm_insn (buf, operands);
if (which_alternative != 0 || operands[3] != const0_rtx if (which_alternative != 0 || operands[3] != const0_rtx
|| (code != PLUS && code != MINUS && code != IOR && code != XOR)) || (code != PLUS && code != MINUS && code != IOR && code != XOR))
{ output_asm_insn (\"%i4%D5\\t%0, %1, %3\", operands);
sprintf (buf, \"%s%%D5\\t%%0, %%1, %%3\", inst);
output_asm_insn (buf, operands);
}
return \"\"; return \"\";
} }
" "
...@@ -1257,27 +1239,21 @@ ...@@ -1257,27 +1239,21 @@
(ashift:SI (match_operand:SI 1 "s_register_operand" "r") (ashift:SI (match_operand:SI 1 "s_register_operand" "r")
(match_operand:SI 2 "arm_rhs_operand" "rn")))] (match_operand:SI 2 "arm_rhs_operand" "rn")))]
"" ""
"* "mov%?\\t%0, %1, asl %2")
return (output_shifted_move (ASHIFT, operands));
")
(define_insn "ashrsi3" (define_insn "ashrsi3"
[(set (match_operand:SI 0 "s_register_operand" "=r") [(set (match_operand:SI 0 "s_register_operand" "=r")
(ashiftrt:SI (match_operand:SI 1 "s_register_operand" "r") (ashiftrt:SI (match_operand:SI 1 "s_register_operand" "r")
(match_operand:SI 2 "arm_rhs_operand" "rn")))] (match_operand:SI 2 "arm_rhs_operand" "rn")))]
"" ""
"* "mov%?\\t%0, %1, asr %2")
return (output_shifted_move (ASHIFTRT, operands));
")
(define_insn "lshrsi3" (define_insn "lshrsi3"
[(set (match_operand:SI 0 "s_register_operand" "=r") [(set (match_operand:SI 0 "s_register_operand" "=r")
(lshiftrt:SI (match_operand:SI 1 "s_register_operand" "r") (lshiftrt:SI (match_operand:SI 1 "s_register_operand" "r")
(match_operand:SI 2 "arm_rhs_operand" "rn")))] (match_operand:SI 2 "arm_rhs_operand" "rn")))]
"" ""
"* "mov%?\\t%0, %1, lsr %2")
return (output_shifted_move (LSHIFTRT, operands));
")
;; rotlsi3 is not defined yet to see what happens ;; rotlsi3 is not defined yet to see what happens
...@@ -1290,11 +1266,11 @@ ...@@ -1290,11 +1266,11 @@
switch (which_alternative) switch (which_alternative)
{ {
case 0: case 0:
return \"mov\\t%0, %1, ror %2\"; return \"mov%?\\t%0, %1, ror %2\";
case 1: case 1:
if (INTVAL(operands[2]) > 31) if (INTVAL(operands[2]) > 31)
operands[2] = GEN_INT (INTVAL (operands[2]) % 32); operands[2] = GEN_INT (INTVAL (operands[2]) % 32);
output_asm_insn (\"mov\\t%0, %1, ror %2\", operands); output_asm_insn (\"mov%?\\t%0, %1, ror %2\", operands);
return \"\"; return \"\";
} }
") ")
...@@ -1308,16 +1284,7 @@ ...@@ -1308,16 +1284,7 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(match_op_dup 1 [(match_dup 2) (match_dup 3)]))] (match_op_dup 1 [(match_dup 2) (match_dup 3)]))]
"" ""
"* "mov%?s\\t%0, %2, %S1"
{
char buf[100];
sprintf (buf, \"movs\\t%%0, %%2, %s %%3\",
shift_instr (GET_CODE (operands[1]), &operands[3]));
output_asm_insn (buf, operands);
return \"\";
}
"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -1328,16 +1295,7 @@ ...@@ -1328,16 +1295,7 @@
(const_int 0))) (const_int 0)))
(clobber (match_scratch:SI 0 "=r"))] (clobber (match_scratch:SI 0 "=r"))]
"" ""
"* "mov%?s\\t%0, %2, %S1"
{
char buf[100];
sprintf (buf, \"movs\\t%%0, %%2, %s %%3\",
shift_instr (GET_CODE (operands[1]), &operands[3]));
output_asm_insn (buf, operands);
return \"\";
}
"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -1346,15 +1304,7 @@ ...@@ -1346,15 +1304,7 @@
[(match_operand:SI 2 "s_register_operand" "r") [(match_operand:SI 2 "s_register_operand" "r")
(match_operand:SI 3 "arm_rhs_operand" "rn")])))] (match_operand:SI 3 "arm_rhs_operand" "rn")])))]
"" ""
"* "mvn%?\\t%0, %2, %S1")
{
char buf[100];
sprintf (buf, \"mvn\\t%%0, %%2, %s %%3\",
shift_instr (GET_CODE (operands[1]), &operands[3]));
output_asm_insn (buf, operands);
return \"\";
}
")
(define_insn "" (define_insn ""
[(set (reg:CC_NOOV 24) [(set (reg:CC_NOOV 24)
...@@ -1365,15 +1315,7 @@ ...@@ -1365,15 +1315,7 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(not:SI (match_op_dup 1 [(match_dup 2) (match_dup 3)])))] (not:SI (match_op_dup 1 [(match_dup 2) (match_dup 3)])))]
"" ""
"* "mvn%?s\\t%0, %2, %S1"
{
char buf[100];
sprintf (buf, \"mvns\\t%%0, %%2, %s %%3\",
shift_instr (GET_CODE (operands[1]), &operands[3]));
output_asm_insn (buf, operands);
return \"\";
}
"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -1384,15 +1326,7 @@ ...@@ -1384,15 +1326,7 @@
(const_int 0))) (const_int 0)))
(clobber (match_scratch:SI 0 "=r"))] (clobber (match_scratch:SI 0 "=r"))]
"" ""
"* "mvn%?s\\t%0, %2, %S1"
{
char buf[100];
sprintf (buf, \"mvns\\t%%0, %%2, %s %%3\",
shift_instr (GET_CODE (operands[1]), &operands[3]));
output_asm_insn (buf, operands);
return \"\";
}
"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
...@@ -1410,20 +1344,20 @@ ...@@ -1410,20 +1344,20 @@
[(set (match_operand:SI 0 "s_register_operand" "=r") [(set (match_operand:SI 0 "s_register_operand" "=r")
(neg:SI (match_operand:SI 1 "s_register_operand" "r")))] (neg:SI (match_operand:SI 1 "s_register_operand" "r")))]
"" ""
"rsb\\t%0, %1, #0") "rsb%?\\t%0, %1, #0")
(define_insn "negsf2" (define_insn "negsf2"
[(set (match_operand:SF 0 "s_register_operand" "=f") [(set (match_operand:SF 0 "s_register_operand" "=f")
(neg:SF (match_operand:SF 1 "s_register_operand" "f")))] (neg:SF (match_operand:SF 1 "s_register_operand" "f")))]
"" ""
"mnfs\\t%0, %1" "mnf%?s\\t%0, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "negdf2" (define_insn "negdf2"
[(set (match_operand:DF 0 "s_register_operand" "=f") [(set (match_operand:DF 0 "s_register_operand" "=f")
(neg:DF (match_operand:DF 1 "s_register_operand" "f")))] (neg:DF (match_operand:DF 1 "s_register_operand" "f")))]
"" ""
"mnfd\\t%0, %1" "mnf%?d\\t%0, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "" (define_insn ""
...@@ -1431,14 +1365,14 @@ ...@@ -1431,14 +1365,14 @@
(neg:DF (float_extend:DF (neg:DF (float_extend:DF
(match_operand:SF 1 "s_register_operand" "f"))))] (match_operand:SF 1 "s_register_operand" "f"))))]
"" ""
"mnfd\\t%0, %1" "mnf%?d\\t%0, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "negxf2" (define_insn "negxf2"
[(set (match_operand:XF 0 "s_register_operand" "=f") [(set (match_operand:XF 0 "s_register_operand" "=f")
(neg:XF (match_operand:XF 1 "s_register_operand" "f")))] (neg:XF (match_operand:XF 1 "s_register_operand" "f")))]
"ENABLE_XF_PATTERNS" "ENABLE_XF_PATTERNS"
"mnfe\\t%0, %1" "mnf%?e\\t%0, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
;; abssi2 doesn't really clobber the condition codes if a different register ;; abssi2 doesn't really clobber the condition codes if a different register
...@@ -1453,7 +1387,7 @@ ...@@ -1453,7 +1387,7 @@
"" ""
"@ "@
cmp\\t%0, #0\;rsblt\\t%0, %0, #0 cmp\\t%0, #0\;rsblt\\t%0, %0, #0
eor\\t%0, %1, %1, asr #31\;sub\\t%0, %0, %1, asr #31" eor%?\\t%0, %1, %1, asr #31\;sub%?\\t%0, %0, %1, asr #31"
[(set_attr "conds" "clob,*") [(set_attr "conds" "clob,*")
(set_attr "length" "8")]) (set_attr "length" "8")])
...@@ -1464,7 +1398,7 @@ ...@@ -1464,7 +1398,7 @@
"" ""
"@ "@
cmp\\t%0, #0\;rsbgt\\t%0, %0, #0 cmp\\t%0, #0\;rsbgt\\t%0, %0, #0
eor\\t%0, %1, %1, asr #31\;rsb\\t%0, %0, %1, asr #31" eor%?\\t%0, %1, %1, asr #31\;rsb%?\\t%0, %0, %1, asr #31"
[(set_attr "conds" "clob,*") [(set_attr "conds" "clob,*")
(set_attr "length" "8")]) (set_attr "length" "8")])
...@@ -1472,14 +1406,14 @@ ...@@ -1472,14 +1406,14 @@
[(set (match_operand:SF 0 "s_register_operand" "=f") [(set (match_operand:SF 0 "s_register_operand" "=f")
(abs:SF (match_operand:SF 1 "s_register_operand" "f")))] (abs:SF (match_operand:SF 1 "s_register_operand" "f")))]
"" ""
"abss\\t%0, %1" "abs%?s\\t%0, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "absdf2" (define_insn "absdf2"
[(set (match_operand:DF 0 "s_register_operand" "=f") [(set (match_operand:DF 0 "s_register_operand" "=f")
(abs:DF (match_operand:DF 1 "s_register_operand" "f")))] (abs:DF (match_operand:DF 1 "s_register_operand" "f")))]
"" ""
"absd\\t%0, %1" "abs%?d\\t%0, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "" (define_insn ""
...@@ -1487,28 +1421,28 @@ ...@@ -1487,28 +1421,28 @@
(abs:DF (float_extend:DF (abs:DF (float_extend:DF
(match_operand:SF 1 "s_register_operand" "f"))))] (match_operand:SF 1 "s_register_operand" "f"))))]
"" ""
"absd\\t%0, %1" "abs%?d\\t%0, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "absxf2" (define_insn "absxf2"
[(set (match_operand:XF 0 "s_register_operand" "=f") [(set (match_operand:XF 0 "s_register_operand" "=f")
(abs:XF (match_operand:XF 1 "s_register_operand" "f")))] (abs:XF (match_operand:XF 1 "s_register_operand" "f")))]
"ENABLE_XF_PATTERNS" "ENABLE_XF_PATTERNS"
"abse\\t%0, %1" "abs%?e\\t%0, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "sqrtsf2" (define_insn "sqrtsf2"
[(set (match_operand:SF 0 "s_register_operand" "=f") [(set (match_operand:SF 0 "s_register_operand" "=f")
(sqrt:SF (match_operand:SF 1 "s_register_operand" "f")))] (sqrt:SF (match_operand:SF 1 "s_register_operand" "f")))]
"" ""
"sqts\\t%0, %1" "sqt%?s\\t%0, %1"
[(set_attr "type" "float_em")]) [(set_attr "type" "float_em")])
(define_insn "sqrtdf2" (define_insn "sqrtdf2"
[(set (match_operand:DF 0 "s_register_operand" "=f") [(set (match_operand:DF 0 "s_register_operand" "=f")
(sqrt:DF (match_operand:DF 1 "s_register_operand" "f")))] (sqrt:DF (match_operand:DF 1 "s_register_operand" "f")))]
"" ""
"sqtd\\t%0, %1" "sqt%?d\\t%0, %1"
[(set_attr "type" "float_em")]) [(set_attr "type" "float_em")])
(define_insn "" (define_insn ""
...@@ -1516,28 +1450,28 @@ ...@@ -1516,28 +1450,28 @@
(sqrt:DF (float_extend:DF (sqrt:DF (float_extend:DF
(match_operand:SF 1 "s_register_operand" "f"))))] (match_operand:SF 1 "s_register_operand" "f"))))]
"" ""
"sqtd\\t%0, %1" "sqt%?d\\t%0, %1"
[(set_attr "type" "float_em")]) [(set_attr "type" "float_em")])
(define_insn "sqrtxf2" (define_insn "sqrtxf2"
[(set (match_operand:XF 0 "s_register_operand" "=f") [(set (match_operand:XF 0 "s_register_operand" "=f")
(sqrt:XF (match_operand:XF 1 "s_register_operand" "f")))] (sqrt:XF (match_operand:XF 1 "s_register_operand" "f")))]
"ENABLE_XF_PATTERNS" "ENABLE_XF_PATTERNS"
"sqte\\t%0, %1" "sqt%?e\\t%0, %1"
[(set_attr "type" "float_em")]) [(set_attr "type" "float_em")])
(define_insn "sinsf2" (define_insn "sinsf2"
[(set (match_operand:SF 0 "s_register_operand" "=f") [(set (match_operand:SF 0 "s_register_operand" "=f")
(unspec:SF [(match_operand:SF 1 "s_register_operand" "f")] 0))] (unspec:SF [(match_operand:SF 1 "s_register_operand" "f")] 0))]
"" ""
"sins\\t%0, %1" "sin%?s\\t%0, %1"
[(set_attr "type" "float_em")]) [(set_attr "type" "float_em")])
(define_insn "sindf2" (define_insn "sindf2"
[(set (match_operand:DF 0 "s_register_operand" "=f") [(set (match_operand:DF 0 "s_register_operand" "=f")
(unspec:DF [(match_operand:DF 1 "s_register_operand" "f")] 0))] (unspec:DF [(match_operand:DF 1 "s_register_operand" "f")] 0))]
"" ""
"sind\\t%0, %1" "sin%?d\\t%0, %1"
[(set_attr "type" "float_em")]) [(set_attr "type" "float_em")])
(define_insn "" (define_insn ""
...@@ -1545,28 +1479,28 @@ ...@@ -1545,28 +1479,28 @@
(unspec:DF [(float_extend:DF (unspec:DF [(float_extend:DF
(match_operand:SF 1 "s_register_operand" "f"))] 0))] (match_operand:SF 1 "s_register_operand" "f"))] 0))]
"" ""
"sind\\t%0, %1" "sin%?d\\t%0, %1"
[(set_attr "type" "float_em")]) [(set_attr "type" "float_em")])
(define_insn "sinxf2" (define_insn "sinxf2"
[(set (match_operand:XF 0 "s_register_operand" "=f") [(set (match_operand:XF 0 "s_register_operand" "=f")
(unspec:XF [(match_operand:XF 1 "s_register_operand" "f")] 0))] (unspec:XF [(match_operand:XF 1 "s_register_operand" "f")] 0))]
"ENABLE_XF_PATTERNS" "ENABLE_XF_PATTERNS"
"sine\\t%0, %1" "sin%?e\\t%0, %1"
[(set_attr "type" "float_em")]) [(set_attr "type" "float_em")])
(define_insn "cossf2" (define_insn "cossf2"
[(set (match_operand:SF 0 "s_register_operand" "=f") [(set (match_operand:SF 0 "s_register_operand" "=f")
(unspec:SF [(match_operand:SF 1 "s_register_operand" "f")] 1))] (unspec:SF [(match_operand:SF 1 "s_register_operand" "f")] 1))]
"" ""
"coss\\t%0, %1" "cos%?s\\t%0, %1"
[(set_attr "type" "float_em")]) [(set_attr "type" "float_em")])
(define_insn "cosdf2" (define_insn "cosdf2"
[(set (match_operand:DF 0 "s_register_operand" "=f") [(set (match_operand:DF 0 "s_register_operand" "=f")
(unspec:DF [(match_operand:DF 1 "s_register_operand" "f")] 1))] (unspec:DF [(match_operand:DF 1 "s_register_operand" "f")] 1))]
"" ""
"cosd\\t%0, %1" "cos%?d\\t%0, %1"
[(set_attr "type" "float_em")]) [(set_attr "type" "float_em")])
(define_insn "" (define_insn ""
...@@ -1574,28 +1508,28 @@ ...@@ -1574,28 +1508,28 @@
(unspec:DF [(float_extend:DF (unspec:DF [(float_extend:DF
(match_operand:SF 1 "s_register_operand" "f"))] 1))] (match_operand:SF 1 "s_register_operand" "f"))] 1))]
"" ""
"cosd\\t%0, %1" "cos%?d\\t%0, %1"
[(set_attr "type" "float_em")]) [(set_attr "type" "float_em")])
(define_insn "cosxf2" (define_insn "cosxf2"
[(set (match_operand:XF 0 "s_register_operand" "=f") [(set (match_operand:XF 0 "s_register_operand" "=f")
(unspec:XF [(match_operand:XF 1 "s_register_operand" "f")] 1))] (unspec:XF [(match_operand:XF 1 "s_register_operand" "f")] 1))]
"ENABLE_XF_PATTERNS" "ENABLE_XF_PATTERNS"
"cose\\t%0, %1" "cos%?e\\t%0, %1"
[(set_attr "type" "float_em")]) [(set_attr "type" "float_em")])
(define_insn "one_cmpldi2" (define_insn "one_cmpldi2"
[(set (match_operand:DI 0 "s_register_operand" "=&r,&r") [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
(not:DI (match_operand:DI 1 "s_register_operand" "?r,0")))] (not:DI (match_operand:DI 1 "s_register_operand" "?r,0")))]
"" ""
"mvn\\t%0, %1\;mvn\\t%R0, %R1" "mvn%?\\t%0, %1\;mvn%?\\t%R0, %R1"
[(set_attr "length" "8")]) [(set_attr "length" "8")])
(define_insn "one_cmplsi2" (define_insn "one_cmplsi2"
[(set (match_operand:SI 0 "s_register_operand" "=r") [(set (match_operand:SI 0 "s_register_operand" "=r")
(not:SI (match_operand:SI 1 "s_register_operand" "r")))] (not:SI (match_operand:SI 1 "s_register_operand" "r")))]
"" ""
"mvn\\t%0, %1") "mvn%?\\t%0, %1")
(define_insn "" (define_insn ""
[(set (reg:CC_NOOV 24) [(set (reg:CC_NOOV 24)
...@@ -1604,7 +1538,7 @@ ...@@ -1604,7 +1538,7 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(not:SI (match_dup 1)))] (not:SI (match_dup 1)))]
"" ""
"mvns\\t%0, %1" "mvn%?s\\t%0, %1"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -1613,7 +1547,7 @@ ...@@ -1613,7 +1547,7 @@
(const_int 0))) (const_int 0)))
(clobber (match_scratch:SI 0 "=r"))] (clobber (match_scratch:SI 0 "=r"))]
"" ""
"mvns\\t%0, %1" "mvn%?s\\t%0, %1"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
;; Fixed <--> Floating conversion insns ;; Fixed <--> Floating conversion insns
...@@ -1622,42 +1556,42 @@ ...@@ -1622,42 +1556,42 @@
[(set (match_operand:SF 0 "s_register_operand" "=f") [(set (match_operand:SF 0 "s_register_operand" "=f")
(float:SF (match_operand:SI 1 "s_register_operand" "r")))] (float:SF (match_operand:SI 1 "s_register_operand" "r")))]
"" ""
"flts\\t%0, %1" "flt%?s\\t%0, %1"
[(set_attr "type" "r_2_f")]) [(set_attr "type" "r_2_f")])
(define_insn "floatsidf2" (define_insn "floatsidf2"
[(set (match_operand:DF 0 "s_register_operand" "=f") [(set (match_operand:DF 0 "s_register_operand" "=f")
(float:DF (match_operand:SI 1 "s_register_operand" "r")))] (float:DF (match_operand:SI 1 "s_register_operand" "r")))]
"" ""
"fltd\\t%0, %1" "flt%?d\\t%0, %1"
[(set_attr "type" "r_2_f")]) [(set_attr "type" "r_2_f")])
(define_insn "floatsixf2" (define_insn "floatsixf2"
[(set (match_operand:XF 0 "s_register_operand" "=f") [(set (match_operand:XF 0 "s_register_operand" "=f")
(float:XF (match_operand:SI 1 "s_register_operand" "r")))] (float:XF (match_operand:SI 1 "s_register_operand" "r")))]
"ENABLE_XF_PATTERNS" "ENABLE_XF_PATTERNS"
"flte\\t%0, %1" "flt%?e\\t%0, %1"
[(set_attr "type" "r_2_f")]) [(set_attr "type" "r_2_f")])
(define_insn "fix_truncsfsi2" (define_insn "fix_truncsfsi2"
[(set (match_operand:SI 0 "s_register_operand" "=r") [(set (match_operand:SI 0 "s_register_operand" "=r")
(fix:SI (match_operand:SF 1 "s_register_operand" "f")))] (fix:SI (match_operand:SF 1 "s_register_operand" "f")))]
"" ""
"fixz\\t%0, %1" "fix%?z\\t%0, %1"
[(set_attr "type" "f_2_r")]) [(set_attr "type" "f_2_r")])
(define_insn "fix_truncdfsi2" (define_insn "fix_truncdfsi2"
[(set (match_operand:SI 0 "s_register_operand" "=r") [(set (match_operand:SI 0 "s_register_operand" "=r")
(fix:SI (match_operand:DF 1 "s_register_operand" "f")))] (fix:SI (match_operand:DF 1 "s_register_operand" "f")))]
"" ""
"fixz\\t%0, %1" "fix%?z\\t%0, %1"
[(set_attr "type" "f_2_r")]) [(set_attr "type" "f_2_r")])
(define_insn "fix_truncxfsi2" (define_insn "fix_truncxfsi2"
[(set (match_operand:SI 0 "s_register_operand" "=r") [(set (match_operand:SI 0 "s_register_operand" "=r")
(fix:SI (match_operand:XF 1 "s_register_operand" "f")))] (fix:SI (match_operand:XF 1 "s_register_operand" "f")))]
"ENABLE_XF_PATTERNS" "ENABLE_XF_PATTERNS"
"fixz\\t%0, %1" "fix%?z\\t%0, %1"
[(set_attr "type" "f_2_r")]) [(set_attr "type" "f_2_r")])
;; Truncation insns ;; Truncation insns
...@@ -1667,7 +1601,7 @@ ...@@ -1667,7 +1601,7 @@
(float_truncate:SF (float_truncate:SF
(match_operand:DF 1 "s_register_operand" "f")))] (match_operand:DF 1 "s_register_operand" "f")))]
"" ""
"mvfs\\t%0, %1" "mvf%?s\\t%0, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "truncxfsf2" (define_insn "truncxfsf2"
...@@ -1675,7 +1609,7 @@ ...@@ -1675,7 +1609,7 @@
(float_truncate:SF (float_truncate:SF
(match_operand:XF 1 "s_register_operand" "f")))] (match_operand:XF 1 "s_register_operand" "f")))]
"ENABLE_XF_PATTERNS" "ENABLE_XF_PATTERNS"
"mvfs\\t%0, %1" "mvf%?s\\t%0, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "truncxfdf2" (define_insn "truncxfdf2"
...@@ -1683,7 +1617,7 @@ ...@@ -1683,7 +1617,7 @@
(float_truncate:DF (float_truncate:DF
(match_operand:XF 1 "s_register_operand" "f")))] (match_operand:XF 1 "s_register_operand" "f")))]
"ENABLE_XF_PATTERNS" "ENABLE_XF_PATTERNS"
"mvfd\\t%0, %1" "mvf%?d\\t%0, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
;; Zero and sign extension instructions. ;; Zero and sign extension instructions.
...@@ -1694,8 +1628,8 @@ ...@@ -1694,8 +1628,8 @@
"" ""
"* "*
if (REGNO (operands[1]) != REGNO (operands[0])) if (REGNO (operands[1]) != REGNO (operands[0]))
output_asm_insn (\"mov\\t%0, %1\", operands); output_asm_insn (\"mov%?\\t%0, %1\", operands);
return \"mov\\t%R0, #0\"; return \"mov%?\\t%R0, #0\";
" "
[(set_attr "length" "8")]) [(set_attr "length" "8")])
...@@ -1704,8 +1638,8 @@ ...@@ -1704,8 +1638,8 @@
(zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "r,m")))] (zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
"" ""
"@ "@
and\\t%0, %1, #255\;mov\\t%R0, #0 and%?\\t%0, %1, #255\;mov%?\\t%R0, #0
ldrb\\t%0, %1\;mov\\t%R0, #0" ldr%?b\\t%0, %1\;mov%?\\t%R0, #0"
[(set_attr "length" "8") [(set_attr "length" "8")
(set_attr "type" "*,load")]) (set_attr "type" "*,load")])
...@@ -1715,8 +1649,8 @@ ...@@ -1715,8 +1649,8 @@
"" ""
"* "*
if (REGNO (operands[1]) != REGNO (operands[0])) if (REGNO (operands[1]) != REGNO (operands[0]))
output_asm_insn (\"mov\\t%0, %1\", operands); output_asm_insn (\"mov%?\\t%0, %1\", operands);
return \"mov\\t%R0, %0, asr #31\"; return \"mov%?\\t%R0, %0, asr #31\";
" "
[(set_attr "length" "8")]) [(set_attr "length" "8")])
...@@ -1737,7 +1671,7 @@ ...@@ -1737,7 +1671,7 @@
(zero_extend:HI (zero_extend:HI
(match_operand:QI 1 "s_register_operand" "r")))] (match_operand:QI 1 "s_register_operand" "r")))]
"" ""
"and\\t%0, %1, #255\\t@ zero_extendqihi2") "and%?\\t%0, %1, #255\\t%@ zero_extendqihi2")
(define_insn "" (define_insn ""
[(set (reg:CC_NOOV 24) [(set (reg:CC_NOOV 24)
...@@ -1746,7 +1680,7 @@ ...@@ -1746,7 +1680,7 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(zero_extend:HI (match_dup 1)))] (zero_extend:HI (match_dup 1)))]
"" ""
"ands\\t%0, %1, #255" "and%?s\\t%0, %1, #255"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -1754,7 +1688,7 @@ ...@@ -1754,7 +1688,7 @@
(compare:CC_NOOV (match_operand:QI 0 "s_register_operand" "r") (compare:CC_NOOV (match_operand:QI 0 "s_register_operand" "r")
(const_int 0)))] (const_int 0)))]
"" ""
"tst\\t%0, #255" "tst%?\\t%0, #255"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "zero_extendqisi2" (define_insn "zero_extendqisi2"
...@@ -1763,8 +1697,8 @@ ...@@ -1763,8 +1697,8 @@
(match_operand:QI 1 "nonimmediate_operand" "r,m")))] (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
"" ""
"@ "@
and\\t%0, %1, #255\\t@ zero_extendqisi2 and%?\\t%0, %1, #255\\t%@ zero_extendqisi2
ldrb\\t%0, %1\\t@ zero_extendqisi2" ldr%?b\\t%0, %1\\t%@ zero_extendqisi2"
[(set_attr "type" "*,load")]) [(set_attr "type" "*,load")])
(define_insn "" (define_insn ""
...@@ -1774,7 +1708,7 @@ ...@@ -1774,7 +1708,7 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(zero_extend:SI (match_dup 1)))] (zero_extend:SI (match_dup 1)))]
"" ""
"ands\\t%0, %1, #255" "and%?s\\t%0, %1, #255"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -1784,7 +1718,7 @@ ...@@ -1784,7 +1718,7 @@
(set (match_operand:QI 0 "s_register_operand" "=r") (set (match_operand:QI 0 "s_register_operand" "=r")
(match_dup 1))] (match_dup 1))]
"" ""
"ands\\t%0, %1, #255" "and%?s\\t%0, %1, #255"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_expand "extendhisi2" (define_expand "extendhisi2"
...@@ -1828,20 +1762,20 @@ ...@@ -1828,20 +1762,20 @@
[(set (match_operand:DF 0 "s_register_operand" "=f") [(set (match_operand:DF 0 "s_register_operand" "=f")
(float_extend:DF (match_operand:SF 1 "s_register_operand" "f")))] (float_extend:DF (match_operand:SF 1 "s_register_operand" "f")))]
"" ""
"mvfd\\t%0, %1" "mvf%?d\\t%0, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
(define_insn "extendsfxf2" (define_insn "extendsfxf2"
[(set (match_operand:XF 0 "s_register_operand" "=f") [(set (match_operand:XF 0 "s_register_operand" "=f")
(float_extend:XF (match_operand:SF 1 "s_register_operand" "f")))] (float_extend:XF (match_operand:SF 1 "s_register_operand" "f")))]
"ENABLE_XF_PATTERNS" "ENABLE_XF_PATTERNS"
"mvfe\\t%0, %1") "mvf%?e\\t%0, %1")
(define_insn "extenddfxf2" (define_insn "extenddfxf2"
[(set (match_operand:XF 0 "s_register_operand" "=f") [(set (match_operand:XF 0 "s_register_operand" "=f")
(float_extend:XF (match_operand:DF 1 "s_register_operand" "f")))] (float_extend:XF (match_operand:DF 1 "s_register_operand" "f")))]
"ENABLE_XF_PATTERNS" "ENABLE_XF_PATTERNS"
"mvfe\\t%0, %1" "mvf%?e\\t%0, %1"
[(set_attr "type" "float")]) [(set_attr "type" "float")])
...@@ -2049,15 +1983,16 @@ ...@@ -2049,15 +1983,16 @@
{ {
/* ... so modify the operands here. */ /* ... so modify the operands here. */
operands[1] = XEXP (operands[1], 0); operands[1] = XEXP (operands[1], 0);
output_asm_insn (\"sub\\t%0, pc, #(8 + . - %a1) & ~4095\", operands); output_asm_insn (\"sub%?\\t%0, pc, #(8 + . - %a1) & ~4095\",
output_asm_insn (\"ldr\\t%0, [%0, #- ((4 + . - %a1) & 4095)]\", operands);
output_asm_insn (\"ldr%?\\t%0, [%0, #- ((4 + . - %a1) & 4095)]\",
operands); operands);
} }
else else
{ {
/* ... and here. */ /* ... and here. */
operands[1] = XEXP (operands[1], 0); operands[1] = XEXP (operands[1], 0);
output_asm_insn (\"ldr\\t%0, [pc, %1 - . - 8]\", operands); output_asm_insn (\"ldr%?\\t%0, [pc, %1 - . - 8]\", operands);
} }
return \"\"; return \"\";
...@@ -2065,20 +2000,20 @@ ...@@ -2065,20 +2000,20 @@
if (GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF if (GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF
&& CONSTANT_POOL_ADDRESS_P (XEXP (operands[1], 0))) && CONSTANT_POOL_ADDRESS_P (XEXP (operands[1], 0)))
abort (); abort ();
return \"ldr\\t%0, %1\"; return \"ldr%?\\t%0, %1\";
case 3: case 3:
return \"mov\\t%0, %1\"; return \"mov%?\\t%0, %1\";
case 2: case 2:
if (!const_ok_for_arm (INTVAL (operands[1]))) if (!const_ok_for_arm (INTVAL (operands[1])))
{ {
operands[1] = GEN_INT (~INTVAL (operands[1])); operands[1] = GEN_INT (~INTVAL (operands[1]));
output_asm_insn (\"mvn\\t%0, %1\", operands); output_asm_insn (\"mvn%?\\t%0, %1\", operands);
return \"\"; return \"\";
} }
return \"mov\\t%0, %1\"; return \"mov%?\\t%0, %1\";
case 4: case 4:
return \"str\\t%1, %0\"; return \"str%?\\t%1, %0\";
case 5: case 5:
return output_load_symbol (insn, operands); return output_load_symbol (insn, operands);
} }
...@@ -2106,8 +2041,8 @@ ...@@ -2106,8 +2041,8 @@
(set (match_operand:SI 0 "s_register_operand" "=r,r") (match_dup 1))] (set (match_operand:SI 0 "s_register_operand" "=r,r") (match_dup 1))]
"" ""
"@ "@
cmp\\t%0, #0 cmp%?\\t%0, #0
subs\\t%0, %1, #0" sub%?s\\t%0, %1, #0"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
;; Subroutine to store a half word from a register into memory. ;; Subroutine to store a half word from a register into memory.
...@@ -2247,16 +2182,16 @@ ...@@ -2247,16 +2182,16 @@
if (!const_ok_for_arm (INTVAL (operands[1]))) if (!const_ok_for_arm (INTVAL (operands[1])))
{ {
operands[1] = GEN_INT (~INTVAL (operands[1])); operands[1] = GEN_INT (~INTVAL (operands[1]));
output_asm_insn (\"mvn\\t%0, %1\", operands); output_asm_insn (\"mvn%?\\t%0, %1\", operands);
return \"\"; return \"\";
} }
/* fall through */ /* fall through */
case 0: case 0:
return \"mov\\t%0, %1\\t@movhi\"; return \"mov%?\\t%0, %1\\t%@ movhi\";
case 2: case 2:
return \"ldr\\t%0, %1\\t@movhi\"; return \"ldr%?\\t%0, %1\\t%@ movhi\";
case 3: case 3:
return \"str\\t%1, %0\\t@movhi\"; return \"str%?\\t%1, %0\\t%@ movhi\";
} }
" "
[(set_attr "type" "*,*,load,store1")]) [(set_attr "type" "*,*,load,store1")])
...@@ -2304,15 +2239,15 @@ ...@@ -2304,15 +2239,15 @@
if (INTVAL (operands[1]) < 0) if (INTVAL (operands[1]) < 0)
{ {
operands[1] = GEN_INT (~INTVAL (operands[1])); operands[1] = GEN_INT (~INTVAL (operands[1]));
output_asm_insn (\"mvn\\t%0, %1\", operands); output_asm_insn (\"mvn%?\\t%0, %1\", operands);
return \"\"; return \"\";
} }
case 0: case 0:
return \"mov\\t%0, %1\"; return \"mov%?\\t%0, %1\";
case 2: case 2:
return \"ldrb\\t%0, %1\"; return \"ldr%?b\\t%0, %1\";
case 3: case 3:
return \"strb\\t%1, %0\"; return \"str%?b\\t%1, %0\";
} }
" "
[(set_attr "type" "*,*,load,store1")]) [(set_attr "type" "*,*,load,store1")])
...@@ -2328,27 +2263,27 @@ ...@@ -2328,27 +2263,27 @@
switch (which_alternative) switch (which_alternative)
{ {
case 0: case 0:
return \"mvfs\\t%0, %1\"; return \"mvf%?s\\t%0, %1\";
case 1: case 1:
REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]); REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
r = REAL_VALUE_NEGATE (r); r = REAL_VALUE_NEGATE (r);
operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1])); operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1]));
output_asm_insn (\"mnfs\\t%0, %1\", operands); output_asm_insn (\"mnf%?s\\t%0, %1\", operands);
return \"\"; return \"\";
case 2: case 2:
return \"ldfs\\t%0, %1\"; return \"ldf%?s\\t%0, %1\";
case 3: case 3:
return \"stfs\\t%1, %0\"; return \"stf%?s\\t%1, %0\";
case 4: case 4:
return \"stmfd\\tsp!, {%1}\;ldfs\\t%0, [sp],#4\"; return \"str%?\\t%1, [sp, #-4]!\;ldf%?s\\t%0, [sp], #4\";
case 5: case 5:
return \"stfs\\t%1, [sp,#-4]!\;ldmfd\\tsp!, {%0}\"; return \"stf%?s\\t%1, [sp, #-4]!\;ldr%?\\t%0, [sp], #4\";
case 6: case 6:
return \"mov\\t%0, %1\"; return \"mov%?\\t%0, %1\";
case 7: case 7:
return \"ldr\\t%0, %1\\t@ float\"; return \"ldr%?\\t%0, %1\\t%@ float\";
case 8: case 8:
return \"str\\t%1, %0\\t@ float\"; return \"str%?\\t%1, %0\\t%@ float\";
} }
} }
" "
...@@ -2388,50 +2323,44 @@ ...@@ -2388,50 +2323,44 @@
switch (which_alternative) switch (which_alternative)
{ {
case 0: case 0:
operands[1] = XEXP (operands[1], 0); return \"ldm%?ia\\t%m1, {%0, %R0}\\t%@ double\";
output_asm_insn (\"ldmia\\t%1, {%0, %R0}\\t@ double\",
operands);
return \"\";
case 1: case 1:
operands[0] = XEXP (operands[0], 0); return \"stm%?ia\\t%m0, {%1, %R1}\\t%@ double\";
output_asm_insn (\"stmia\\t%0, {%1, %R1}\\t@ double\",
operands);
return \"\";
case 2: case 2:
ops[0] = operands[0]; ops[0] = operands[0];
ops[1] = XEXP (XEXP (operands[1], 0), 0); ops[1] = XEXP (XEXP (operands[1], 0), 0);
ops[2] = XEXP (XEXP (operands[1], 0), 1); ops[2] = XEXP (XEXP (operands[1], 0), 1);
if (!INTVAL (ops[2]) || const_ok_for_arm (INTVAL (ops[2]))) if (!INTVAL (ops[2]) || const_ok_for_arm (INTVAL (ops[2])))
output_asm_insn (\"add\\t%0, %1, %2\", ops); output_asm_insn (\"add%?\\t%0, %1, %2\", ops);
else else
output_asm_insn (\"sub\\t%0, %1, #%n2\", ops); output_asm_insn (\"sub%?\\t%0, %1, #%n2\", ops);
return \"ldmia\\t%0, {%0, %R0}\\t@ double\"; return \"ldm%?ia\\t%0, {%0, %R0}\\t%@ double\";
case 3: case 3:
ops[0] = operands[2]; ops[0] = operands[2];
ops[1] = XEXP (XEXP (operands[0], 0), 0); ops[1] = XEXP (XEXP (operands[0], 0), 0);
ops[2] = XEXP (XEXP (operands[0], 0), 1); ops[2] = XEXP (XEXP (operands[0], 0), 1);
if (!INTVAL (ops[2]) || const_ok_for_arm (INTVAL (ops[2]))) if (!INTVAL (ops[2]) || const_ok_for_arm (INTVAL (ops[2])))
output_asm_insn (\"add\\t%0, %1, %2\", ops); output_asm_insn (\"add%?\\t%0, %1, %2\", ops);
else else
output_asm_insn (\"sub\\t%0, %1, #%n2\", ops); output_asm_insn (\"sub%?\\t%0, %1, #%n2\", ops);
return \"stmia\\t%2, {%1, %R1}\\t@ double\"; return \"stm%?ia\\t%2, {%1, %R1}\\t%@ double\";
case 4: case 4:
case 5: case 5:
return \"mvfd\\t%0, %1\"; return \"mvf%?d\\t%0, %1\";
case 6: case 6:
REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]); REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
r = REAL_VALUE_NEGATE (r); r = REAL_VALUE_NEGATE (r);
operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1])); operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1]));
output_asm_insn (\"mnfd\\t%0, %1\", operands); output_asm_insn (\"mnf%?d\\t%0, %1\", operands);
return \"\"; return \"\";
case 7: return \"ldfd\\t%0, %1\"; case 7: return \"ldf%?d\\t%0, %1\";
case 8: return \"stfd\\t%1, %0\"; case 8: return \"stf%?d\\t%1, %0\";
case 9: return output_mov_double_fpu_from_arm (operands); case 9: return output_mov_double_fpu_from_arm (operands);
case 10: return output_mov_double_arm_from_fpu (operands); case 10: return output_mov_double_arm_from_fpu (operands);
case 11: return output_move_double (operands); case 11: return output_move_double (operands);
...@@ -2452,16 +2381,16 @@ ...@@ -2452,16 +2381,16 @@
switch (which_alternative) switch (which_alternative)
{ {
case 0: return \"mvfe\\t%0, %1\"; case 0: return \"mvf%?e\\t%0, %1\";
case 1: case 1:
REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]); REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
r = REAL_VALUE_NEGATE (r); r = REAL_VALUE_NEGATE (r);
operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1])); operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1]));
output_asm_insn (\"mnfe\\t%0, %1\", operands); output_asm_insn (\"mnf%?e\\t%0, %1\", operands);
return \"\"; return \"\";
case 2: return \"ldfe\\t%0, %1\"; case 2: return \"ldf%?e\\t%0, %1\";
case 3: return \"stfe\\t%1, %0\"; case 3: return \"stf%?e\\t%1, %0\";
case 4: return output_mov_long_double_fpu_from_arm (operands); case 4: return output_mov_long_double_fpu_from_arm (operands);
case 5: return output_mov_long_double_arm_from_fpu (operands); case 5: return output_mov_long_double_arm_from_fpu (operands);
case 6: return output_mov_long_double_arm_from_arm (operands); case 6: return output_mov_long_double_arm_from_arm (operands);
...@@ -2517,7 +2446,7 @@ ...@@ -2517,7 +2446,7 @@
ops[1] = SET_DEST (XVECEXP (operands[0], 0, 1)); ops[1] = SET_DEST (XVECEXP (operands[0], 0, 1));
ops[2] = SET_DEST (XVECEXP (operands[0], 0, count - 2)); ops[2] = SET_DEST (XVECEXP (operands[0], 0, count - 2));
output_asm_insn (\"ldmia\\t%0!, {%1-%2}\\t@ load multiple\", ops); output_asm_insn (\"ldm%?ia\\t%0!, {%1-%2}\\t%@ load multiple\", ops);
return \"\"; return \"\";
} }
" "
...@@ -2539,7 +2468,7 @@ ...@@ -2539,7 +2468,7 @@
ops[1] = SET_DEST (XVECEXP (operands[0], 0, 0)); ops[1] = SET_DEST (XVECEXP (operands[0], 0, 0));
ops[2] = SET_DEST (XVECEXP (operands[0], 0, count - 1)); ops[2] = SET_DEST (XVECEXP (operands[0], 0, count - 1));
output_asm_insn (\"ldmia\\t%0, {%1-%2}\\t@ load multiple\", ops); output_asm_insn (\"ldm%?ia\\t%0, {%1-%2}\\t%@ load multiple\", ops);
return \"\"; return \"\";
} }
" "
...@@ -2586,7 +2515,7 @@ ...@@ -2586,7 +2515,7 @@
ops[1] = SET_SRC (XVECEXP (operands[0], 0, 1)); ops[1] = SET_SRC (XVECEXP (operands[0], 0, 1));
ops[2] = SET_SRC (XVECEXP (operands[0], 0, count - 2)); ops[2] = SET_SRC (XVECEXP (operands[0], 0, count - 2));
output_asm_insn (\"stmia\\t%0!, {%1-%2}\\t@ str multiple\", ops); output_asm_insn (\"stm%?ia\\t%0!, {%1-%2}\\t%@ str multiple\", ops);
return \"\"; return \"\";
} }
" "
...@@ -2613,7 +2542,7 @@ ...@@ -2613,7 +2542,7 @@
ops[1] = SET_SRC (XVECEXP (operands[0], 0, 0)); ops[1] = SET_SRC (XVECEXP (operands[0], 0, 0));
ops[2] = SET_SRC (XVECEXP (operands[0], 0, count - 1)); ops[2] = SET_SRC (XVECEXP (operands[0], 0, count - 1));
output_asm_insn (\"stmia\\t%0, {%1-%2}\\t@ str multiple\", ops); output_asm_insn (\"stm%?ia\\t%0, {%1-%2}\\t%@ str multiple\", ops);
return \"\"; return \"\";
} }
" "
...@@ -2784,8 +2713,8 @@ ...@@ -2784,8 +2713,8 @@
"* "*
if (GET_CODE (operands[2]) == CONST_INT if (GET_CODE (operands[2]) == CONST_INT
&& !const_ok_for_arm (INTVAL (operands[2]))) && !const_ok_for_arm (INTVAL (operands[2])))
return \"cmn\\t%1, #%n2\"; return \"cmn%?\\t%1, #%n2\";
return \"cmp\\t%1, %2\"; return \"cmp%?\\t%1, %2\";
" "
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
...@@ -2794,7 +2723,7 @@ ...@@ -2794,7 +2723,7 @@
(compare (match_operand:SI 1 "s_register_operand" "r") (compare (match_operand:SI 1 "s_register_operand" "r")
(neg:SI (match_operand:SI 2 "s_register_operand" "r"))))] (neg:SI (match_operand:SI 2 "s_register_operand" "r"))))]
"" ""
"cmn\\t%1, %2" "cmn%?\\t%1, %2"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -2804,9 +2733,7 @@ ...@@ -2804,9 +2733,7 @@
[(match_operand:SI 3 "s_register_operand" "r") [(match_operand:SI 3 "s_register_operand" "r")
(match_operand:SI 4 "arm_rhs_operand" "rn")])))] (match_operand:SI 4 "arm_rhs_operand" "rn")])))]
"" ""
"* "cmp%?\\t%1, %3, %S2"
return output_shift_compare (operands, FALSE);
"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -2816,9 +2743,7 @@ ...@@ -2816,9 +2743,7 @@
[(match_operand:SI 3 "s_register_operand" "r") [(match_operand:SI 3 "s_register_operand" "r")
(match_operand:SI 4 "arm_rhs_operand" "rn")]))))] (match_operand:SI 4 "arm_rhs_operand" "rn")]))))]
"" ""
"* "cmn%?\\t%1, %3, %S2"
return output_shift_compare (operands, TRUE);
"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -2833,12 +2758,12 @@ ...@@ -2833,12 +2758,12 @@
switch (which_alternative) switch (which_alternative)
{ {
case 0: case 0:
return \"cmf\\t%0, %1\"; return \"cmf%?\\t%0, %1\";
case 1: case 1:
REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]); REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
r = REAL_VALUE_NEGATE (r); r = REAL_VALUE_NEGATE (r);
operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1])); operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1]));
output_asm_insn (\"cnf\\t%0, %1\", operands); output_asm_insn (\"cnf%?\\t%0, %1\", operands);
return \"\"; return \"\";
} }
} }
...@@ -2858,12 +2783,12 @@ ...@@ -2858,12 +2783,12 @@
switch (which_alternative) switch (which_alternative)
{ {
case 0: case 0:
return \"cmf\\t%0, %1\"; return \"cmf%?\\t%0, %1\";
case 1: case 1:
REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]); REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
r = REAL_VALUE_NEGATE (r); r = REAL_VALUE_NEGATE (r);
operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1])); operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1]));
output_asm_insn (\"cnf\\t%0, %1\", operands); output_asm_insn (\"cnf%?\\t%0, %1\", operands);
return \"\"; return \"\";
} }
} }
...@@ -2884,12 +2809,12 @@ ...@@ -2884,12 +2809,12 @@
switch (which_alternative) switch (which_alternative)
{ {
case 0: case 0:
return \"cmf\\t%0, %1\"; return \"cmf%?\\t%0, %1\";
case 1: case 1:
REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]); REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
r = REAL_VALUE_NEGATE (r); r = REAL_VALUE_NEGATE (r);
operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1])); operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1]));
output_asm_insn (\"cnf\\t%0, %1\", operands); output_asm_insn (\"cnf%?\\t%0, %1\", operands);
return \"\"; return \"\";
} }
} }
...@@ -2903,7 +2828,7 @@ ...@@ -2903,7 +2828,7 @@
(float_extend:DF (float_extend:DF
(match_operand:SF 1 "s_register_operand" "f"))))] (match_operand:SF 1 "s_register_operand" "f"))))]
"" ""
"cmf\\t%0, %1" "cmf%?\\t%0, %1"
[(set_attr "conds" "set") [(set_attr "conds" "set")
(set_attr "type" "f_2_r")]) (set_attr "type" "f_2_r")])
...@@ -2919,12 +2844,12 @@ ...@@ -2919,12 +2844,12 @@
switch (which_alternative) switch (which_alternative)
{ {
case 0: case 0:
return \"cmf\\t%0, %1\"; return \"cmf%?\\t%0, %1\";
case 1: case 1:
REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]); REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
r = REAL_VALUE_NEGATE (r); r = REAL_VALUE_NEGATE (r);
operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1])); operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1]));
output_asm_insn (\"cnf\\t%0, %1\", operands); output_asm_insn (\"cnf%?\\t%0, %1\", operands);
return \"\"; return \"\";
} }
} }
...@@ -2944,12 +2869,12 @@ ...@@ -2944,12 +2869,12 @@
switch (which_alternative) switch (which_alternative)
{ {
case 0: case 0:
return \"cmfe\\t%0, %1\"; return \"cmf%?e\\t%0, %1\";
case 1: case 1:
REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]); REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
r = REAL_VALUE_NEGATE (r); r = REAL_VALUE_NEGATE (r);
operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1])); operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1]));
output_asm_insn (\"cnfe\\t%0, %1\", operands); output_asm_insn (\"cnf%?e\\t%0, %1\", operands);
return \"\"; return \"\";
} }
} }
...@@ -2969,12 +2894,12 @@ ...@@ -2969,12 +2894,12 @@
switch (which_alternative) switch (which_alternative)
{ {
case 0: case 0:
return \"cmfe\\t%0, %1\"; return \"cmf%?e\\t%0, %1\";
case 1: case 1:
REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]); REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
r = REAL_VALUE_NEGATE (r); r = REAL_VALUE_NEGATE (r);
operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1])); operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1]));
output_asm_insn (\"cnfe\\t%0, %1\", operands); output_asm_insn (\"cnf%?e\\t%0, %1\", operands);
return \"\"; return \"\";
} }
} }
...@@ -2995,12 +2920,12 @@ ...@@ -2995,12 +2920,12 @@
switch (which_alternative) switch (which_alternative)
{ {
case 0: case 0:
return \"cmfe\\t%0, %1\"; return \"cmf%?e\\t%0, %1\";
case 1: case 1:
REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]); REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
r = REAL_VALUE_NEGATE (r); r = REAL_VALUE_NEGATE (r);
operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1])); operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1]));
output_asm_insn (\"cnfe\\t%0, %1\", operands); output_asm_insn (\"cnf%?e\\t%0, %1\", operands);
return \"\"; return \"\";
} }
} }
...@@ -3014,7 +2939,7 @@ ...@@ -3014,7 +2939,7 @@
(float_extend:DF (float_extend:DF
(match_operand:SF 1 "s_register_operand" "f"))))] (match_operand:SF 1 "s_register_operand" "f"))))]
"" ""
"cmfe\\t%0, %1" "cmf%?e\\t%0, %1"
[(set_attr "conds" "set") [(set_attr "conds" "set")
(set_attr "type" "f_2_r")]) (set_attr "type" "f_2_r")])
...@@ -3030,12 +2955,12 @@ ...@@ -3030,12 +2955,12 @@
switch (which_alternative) switch (which_alternative)
{ {
case 0: case 0:
return \"cmfe\\t%0, %1\"; return \"cmf%?e\\t%0, %1\";
case 1: case 1:
REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]); REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
r = REAL_VALUE_NEGATE (r); r = REAL_VALUE_NEGATE (r);
operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1])); operands[1] = CONST_DOUBLE_FROM_REAL_VALUE (r, GET_MODE (operands[1]));
output_asm_insn (\"cnfe\\t%0, %1\", operands); output_asm_insn (\"cnf%?e\\t%0, %1\", operands);
return \"\"; return \"\";
} }
} }
...@@ -3052,7 +2977,7 @@ ...@@ -3052,7 +2977,7 @@
(define_insn "" (define_insn ""
[(set (match_operand 0 "cc_register" "") (match_dup 0))] [(set (match_operand 0 "cc_register" "") (match_dup 0))]
"" ""
"\\t@ deleted compare" "\\t%@ deleted compare"
[(set_attr "conds" "set") [(set_attr "conds" "set")
(set_attr "length" "0")]) (set_attr "length" "0")])
...@@ -3386,7 +3311,7 @@ ...@@ -3386,7 +3311,7 @@
arm_ccfsm_state += 2; arm_ccfsm_state += 2;
return \"\"; return \"\";
} }
return \"b\\t%l0\"; return \"b%?\\t%l0\";
}") }")
(define_expand "call" (define_expand "call"
...@@ -3475,7 +3400,7 @@ ...@@ -3475,7 +3400,7 @@
(match_operand:SI 1 "general_operand" "g")) (match_operand:SI 1 "general_operand" "g"))
(clobber (reg:SI 14))] (clobber (reg:SI 14))]
"GET_CODE (operands[0]) == SYMBOL_REF" "GET_CODE (operands[0]) == SYMBOL_REF"
"bl\\t%a0" "bl%?\\t%a0"
[(set (attr "conds") [(set (attr "conds")
(if_then_else (eq_attr "cpu" "arm6") (if_then_else (eq_attr "cpu" "arm6")
(const_string "clob") (const_string "clob")
...@@ -3488,7 +3413,7 @@ ...@@ -3488,7 +3413,7 @@
(match_operand:SI 2 "general_operand" "g"))) (match_operand:SI 2 "general_operand" "g")))
(clobber (reg:SI 14))] (clobber (reg:SI 14))]
"GET_CODE(operands[1]) == SYMBOL_REF" "GET_CODE(operands[1]) == SYMBOL_REF"
"bl\\t%a1" "bl%?\\t%a1"
[(set (attr "conds") [(set (attr "conds")
(if_then_else (eq_attr "cpu" "arm6") (if_then_else (eq_attr "cpu" "arm6")
(const_string "clob") (const_string "clob")
...@@ -3602,27 +3527,27 @@ ...@@ -3602,27 +3527,27 @@
(match_operand:SI 0 "s_register_operand" "r")) (match_operand:SI 0 "s_register_operand" "r"))
(use (label_ref (match_operand 1 "" "")))] (use (label_ref (match_operand 1 "" "")))]
"" ""
"mov\\tpc, %0\\t@ table jump, label %l1") "mov%?\\tpc, %0\\t%@ table jump, label %l1")
(define_insn "" (define_insn ""
[(set (pc) [(set (pc)
(match_operand:SI 0 "memory_operand" "m")) (match_operand:SI 0 "memory_operand" "m"))
(use (label_ref (match_operand 1 "" "")))] (use (label_ref (match_operand 1 "" "")))]
"" ""
"ldr\\tpc, %0\\t@ table jump, label %l1" "ldr%?\\tpc, %0\\t%@ table jump, label %l1"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
(define_insn "indirect_jump" (define_insn "indirect_jump"
[(set (pc) [(set (pc)
(match_operand:SI 0 "s_register_operand" "r"))] (match_operand:SI 0 "s_register_operand" "r"))]
"" ""
"mov\\tpc, %0\\t@ indirect jump") "mov%?\\tpc, %0\\t%@ indirect jump")
(define_insn "" (define_insn ""
[(set (pc) [(set (pc)
(match_operand:SI 0 "memory_operand" "m"))] (match_operand:SI 0 "memory_operand" "m"))]
"" ""
"ldr\\tpc, %0\\t@ indirect jump" "ldr%?\\tpc, %0\\t%@ indirect jump"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
;; Misc insns ;; Misc insns
...@@ -3630,7 +3555,7 @@ ...@@ -3630,7 +3555,7 @@
(define_insn "nop" (define_insn "nop"
[(const_int 0)] [(const_int 0)]
"" ""
"mov\\tr0, r0\\t@ nop") "mov%?\\tr0, r0\\t%@ nop")
;; Patterns to allow combination of arithmetic, cond code and shifts ;; Patterns to allow combination of arithmetic, cond code and shifts
...@@ -3642,9 +3567,7 @@ ...@@ -3642,9 +3567,7 @@
(match_operand:SI 5 "nonmemory_operand" "rI")]) (match_operand:SI 5 "nonmemory_operand" "rI")])
(match_operand:SI 2 "s_register_operand" "r")]))] (match_operand:SI 2 "s_register_operand" "r")]))]
"" ""
"* "%i1%?\\t%0, %2, %4, %S3")
return (output_arithmetic_with_shift (operands, TRUE, FALSE));
")
(define_insn "" (define_insn ""
[(set (reg:CC_NOOV 24) [(set (reg:CC_NOOV 24)
...@@ -3658,9 +3581,7 @@ ...@@ -3658,9 +3581,7 @@
(match_op_dup 1 [(match_op_dup 3 [(match_dup 4) (match_dup 5)]) (match_op_dup 1 [(match_op_dup 3 [(match_dup 4) (match_dup 5)])
(match_dup 2)]))] (match_dup 2)]))]
"" ""
"* "%i1%?s\\t%0, %2, %4, %S3"
return (output_arithmetic_with_shift (operands, TRUE, TRUE));
"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -3673,9 +3594,7 @@ ...@@ -3673,9 +3594,7 @@
(const_int 0))) (const_int 0)))
(clobber (match_scratch:SI 0 "=r"))] (clobber (match_scratch:SI 0 "=r"))]
"" ""
"* "%i1%?s\\t%0, %2, %4, %S3"
return (output_arithmetic_with_shift (operands, TRUE, TRUE));
"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
...@@ -3685,23 +3604,12 @@ ...@@ -3685,23 +3604,12 @@
[(match_operand:SI 3 "s_register_operand" "r") [(match_operand:SI 3 "s_register_operand" "r")
(match_operand:SI 4 "nonmemory_operand" "rn")])))] (match_operand:SI 4 "nonmemory_operand" "rn")])))]
"" ""
"* "sub%?\\t%0, %1, %3, %S2")
{
rtx ops[6];
ops[0] = operands[0];
ops[1] = gen_rtx (MINUS, SImode, operands[1], operands[2]);
ops[2] = operands[1];
ops[3] = operands[2];
ops[4] = operands[3];
ops[5] = operands[4];
return output_arithmetic_with_shift (ops, FALSE, FALSE);
}
")
(define_insn "" (define_insn ""
[(set (reg:CC_NOOV 24) [(set (reg:CC_NOOV 24)
(compare:CC_NOOV (minus:SI (match_operand:SI 1 "s_register_operand" "r") (compare:CC_NOOV
(minus:SI (match_operand:SI 1 "s_register_operand" "r")
(match_operator:SI 2 "shift_operator" (match_operator:SI 2 "shift_operator"
[(match_operand:SI 3 "s_register_operand" "r") [(match_operand:SI 3 "s_register_operand" "r")
(match_operand:SI 4 "nonmemory_operand" "rn")])) (match_operand:SI 4 "nonmemory_operand" "rn")]))
...@@ -3710,43 +3618,20 @@ ...@@ -3710,43 +3618,20 @@
(minus:SI (match_dup 1) (match_op_dup 2 [(match_dup 3) (minus:SI (match_dup 1) (match_op_dup 2 [(match_dup 3)
(match_dup 4)])))] (match_dup 4)])))]
"" ""
"* "sub%?s\\t%0, %1, %3, %S2"
{
rtx ops[6];
ops[0] = operands[0];
ops[1] = gen_rtx (MINUS, SImode, operands[1], operands[2]);
ops[2] = operands[1];
ops[3] = operands[2];
ops[4] = operands[3];
ops[5] = operands[4];
return output_arithmetic_with_shift (ops, FALSE, TRUE);
}
"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
(define_insn "" (define_insn ""
[(set (reg:CC_NOOV 24) [(set (reg:CC_NOOV 24)
(compare:CC_NOOV (minus:SI (match_operand:SI 1 "s_register_operand" "r") (compare:CC_NOOV
(minus:SI (match_operand:SI 1 "s_register_operand" "r")
(match_operator:SI 2 "shift_operator" (match_operator:SI 2 "shift_operator"
[(match_operand:SI 3 "s_register_operand" "r") [(match_operand:SI 3 "s_register_operand" "r")
(match_operand:SI 4 "nonmemory_operand" "rn")])) (match_operand:SI 4 "nonmemory_operand" "rn")]))
(const_int 0))) (const_int 0)))
(clobber (match_scratch:SI 0 "=r"))] (clobber (match_scratch:SI 0 "=r"))]
"" ""
"* "sub%?s\\t%0, %1, %3, %S2"
{
rtx ops[6];
ops[0] = operands[0];
ops[1] = gen_rtx (MINUS, SImode, operands[1], operands[2]);
ops[2] = operands[1];
ops[3] = operands[2];
ops[4] = operands[3];
ops[5] = operands[4];
return output_arithmetic_with_shift (ops, FALSE, TRUE);
}
"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
;; These variants of the above insns can occur if the first operand is the ;; These variants of the above insns can occur if the first operand is the
...@@ -3766,15 +3651,11 @@ ...@@ -3766,15 +3651,11 @@
(match_operand:SI 1 "const_int_operand" "n")))] (match_operand:SI 1 "const_int_operand" "n")))]
"reload_in_progress" "reload_in_progress"
"* "*
{ output_asm_insn (\"add%?\\t%0, %2, %3, %S5\", operands);
char instr[100];
sprintf (instr, \"add\\t%%0, %%2, %%3, %s %%4\",
shift_instr (GET_CODE (operands[5]), &operands[4]));
output_asm_insn (instr, operands);
operands[2] = operands[1]; operands[2] = operands[1];
operands[1] = operands[0]; operands[1] = operands[0];
return output_add_immediate (operands); return output_add_immediate (operands);
}" "
; we have no idea how long the add_immediate is, it could be up to 4. ; we have no idea how long the add_immediate is, it could be up to 4.
[(set_attr "length" "20")]) [(set_attr "length" "20")])
...@@ -3794,14 +3675,9 @@ ...@@ -3794,14 +3675,9 @@
(match_dup 2)))] (match_dup 2)))]
"reload_in_progress" "reload_in_progress"
"* "*
{
char instr[100];
sprintf (instr, \"adds\\t%%0, %%0, %%3, %s %%4\",
shift_instr (GET_CODE (operands[5]), &operands[4]));
output_add_immediate (operands); output_add_immediate (operands);
output_asm_insn (instr, operands); return \"add%?s\\t%0, %0, %3, %S5\";
return \"\"; "
}"
[(set_attr "conds" "set") [(set_attr "conds" "set")
(set_attr "length" "20")]) (set_attr "length" "20")])
...@@ -3818,14 +3694,9 @@ ...@@ -3818,14 +3694,9 @@
(clobber (match_scratch:SI 0 "=&r"))] (clobber (match_scratch:SI 0 "=&r"))]
"reload_in_progress" "reload_in_progress"
"* "*
{
char instr[100];
sprintf (instr, \"adds\\t%%0, %%0, %%3, %s %%4\",
shift_instr (GET_CODE (operands[5]), &operands[4]));
output_add_immediate (operands); output_add_immediate (operands);
output_asm_insn (instr, operands); return \"add%?s\\t%0, %0, %3, %S5\";
return \"\"; "
}"
[(set_attr "conds" "set") [(set_attr "conds" "set")
(set_attr "length" "20")]) (set_attr "length" "20")])
...@@ -3840,7 +3711,7 @@ ...@@ -3840,7 +3711,7 @@
(match_operand:SI 4 "const_int_operand" "n,n")))] (match_operand:SI 4 "const_int_operand" "n,n")))]
"reload_in_progress" "reload_in_progress"
"* "*
output_asm_insn (\"mla\\t%0, %2, %1, %3\", operands); output_asm_insn (\"mla%?\\t%0, %2, %1, %3\", operands);
operands[2] = operands[4]; operands[2] = operands[4];
operands[1] = operands[0]; operands[1] = operands[0];
return output_add_immediate (operands); return output_add_immediate (operands);
...@@ -3861,7 +3732,7 @@ ...@@ -3861,7 +3732,7 @@
"reload_in_progress" "reload_in_progress"
"* "*
output_add_immediate (operands); output_add_immediate (operands);
output_asm_insn (\"mlas\\t%0, %3, %4, %0\", operands); output_asm_insn (\"mla%?s\\t%0, %3, %4, %0\", operands);
return \"\"; return \"\";
" "
[(set_attr "length" "20") [(set_attr "length" "20")
...@@ -3879,7 +3750,7 @@ ...@@ -3879,7 +3750,7 @@
"reload_in_progress" "reload_in_progress"
"* "*
output_add_immediate (operands); output_add_immediate (operands);
return \"mlas\\t%0, %3, %4, %0\"; return \"mla%?s\\t%0, %3, %4, %0\";
" "
[(set_attr "length" "20") [(set_attr "length" "20")
(set_attr "conds" "set")]) (set_attr "conds" "set")])
...@@ -4139,25 +4010,15 @@ ...@@ -4139,25 +4010,15 @@
(clobber (reg 24))] (clobber (reg 24))]
"" ""
"* "*
{
char *instr = arithmetic_instr (operands[5], TRUE);
char pattern[100];
if (GET_CODE (operands[4]) == LT && operands[3] == const0_rtx) if (GET_CODE (operands[4]) == LT && operands[3] == const0_rtx)
{ return \"%i5\\t%0, %1, %2, lsr #31\";
sprintf (pattern, \"%s\\t%%0, %%1, %%2, lsr #31\", instr);
output_asm_insn (pattern, operands);
return \"\";
}
output_asm_insn (\"cmp\\t%2, %3\", operands); output_asm_insn (\"cmp\\t%2, %3\", operands);
if (GET_CODE (operands[5]) == AND) if (GET_CODE (operands[5]) == AND)
output_asm_insn (\"mov%D4\\t%0, #0\", operands); output_asm_insn (\"mov%D4\\t%0, #0\", operands);
else if (which_alternative != 0) else if (which_alternative != 0)
output_asm_insn (\"mov%D4\\t%0, %1\", operands); output_asm_insn (\"mov%D4\\t%0, %1\", operands);
sprintf (pattern, \"%s%%d4\\t%%0, %%1, #1\", instr); return \"%i5%d4\\t%0, %1, #1\";
output_asm_insn (pattern, operands);
return \"\";
}
" "
[(set_attr "conds" "clob") [(set_attr "conds" "clob")
(set_attr "length" "12")]) (set_attr "length" "12")])
...@@ -4413,22 +4274,12 @@ ...@@ -4413,22 +4274,12 @@
(clobber (reg 24))] (clobber (reg 24))]
"" ""
"* "*
{
char pattern[100];
if (GET_CODE (operands[6]) == CONST_INT if (GET_CODE (operands[6]) == CONST_INT
&& !const_ok_for_arm (INTVAL (operands[6]))) && !const_ok_for_arm (INTVAL (operands[6])))
output_asm_insn (\"cmn\\t%5, #%n6\", operands); output_asm_insn (\"cmn\\t%5, #%n6\", operands);
else else
output_asm_insn (\"cmp\\t%5, %6\", operands); output_asm_insn (\"cmp\\t%5, %6\", operands);
sprintf (pattern, \"%s%%d9\\t%%0, %%1, %%2\", arithmetic_instr (operands[8], return \"%I8%d9\\t%0, %1, %2\;%I7%D9\\t%0, %3, %4\";
FALSE));
output_asm_insn (pattern, operands);
sprintf (pattern, \"%s%%D9\\t%%0, %%3, %%4\", arithmetic_instr (operands[7],
FALSE));
output_asm_insn (pattern, operands);
return \"\";
}
" "
[(set_attr "conds" "clob") [(set_attr "conds" "clob")
(set_attr "length" "12")]) (set_attr "length" "12")])
...@@ -4445,9 +4296,6 @@ ...@@ -4445,9 +4296,6 @@
(clobber (reg 24))] (clobber (reg 24))]
"" ""
"* "*
{
char pattern[100];
/* If we have an operation where (op x 0) is the identity operation and /* If we have an operation where (op x 0) is the identity operation and
the condtional operator is LT or GE and we are comparing against zero and the condtional operator is LT or GE and we are comparing against zero and
everything is in registers then we can do this in two instructions */ everything is in registers then we can do this in two instructions */
...@@ -4459,39 +4307,24 @@ ...@@ -4459,39 +4307,24 @@
&& REGNO (operands[4]) != REGNO (operands[0])) && REGNO (operands[4]) != REGNO (operands[0]))
{ {
if (GET_CODE (operands[6]) == LT) if (GET_CODE (operands[6]) == LT)
{ return \"and\\t%0, %5, %2, asr #31\;%I7\\t%0, %4, %0\";
output_asm_insn (\"and\\t%0, %5, %2, asr #31\", operands);
sprintf (pattern, \"%s\\t%%0, %%4, %%0\",
arithmetic_instr (operands[7], FALSE));
output_asm_insn (pattern, operands);
return \"\";
}
else if (GET_CODE (operands[6]) == GE) else if (GET_CODE (operands[6]) == GE)
{ return \"bic\\t%0, %5, %2, asr #31\;%I7\\t%0, %4, %0\";
output_asm_insn (\"bic\\t%0, %5, %2, asr #31\", operands);
sprintf (pattern, \"%s\\t%%0, %%4, %%0\",
arithmetic_instr (operands[7], FALSE));
output_asm_insn (pattern, operands);
return \"\";
}
} }
if (GET_CODE (operands[3]) == CONST_INT if (GET_CODE (operands[3]) == CONST_INT
&& !const_ok_for_arm (INTVAL (operands[3]))) && !const_ok_for_arm (INTVAL (operands[3])))
output_asm_insn (\"cmn\\t%2, #%n3\", operands); output_asm_insn (\"cmn\\t%2, #%n3\", operands);
else else
output_asm_insn (\"cmp\\t%2, %3\", operands); output_asm_insn (\"cmp\\t%2, %3\", operands);
sprintf (pattern, \"%s%%d6\\t%%0, %%4, %%5\", arithmetic_instr (operands[7], output_asm_insn (\"%I7%d6\\t%0, %4, %5\", operands);
FALSE));
output_asm_insn (pattern, operands);
if (which_alternative != 0) if (which_alternative != 0)
{ {
if (GET_CODE (operands[1]) == MEM) if (GET_CODE (operands[1]) == MEM)
output_asm_insn (\"ldr%D6\\t%0, %1\", operands); return \"ldr%D6\\t%0, %1\";
else else
output_asm_insn (\"mov%D6\\t%0, %1\", operands); return \"mov%D6\\t%0, %1\";
} }
return \"\"; return \"\";
}
" "
[(set_attr "conds" "clob") [(set_attr "conds" "clob")
(set_attr "length" "8,12")]) (set_attr "length" "8,12")])
...@@ -4508,9 +4341,6 @@ ...@@ -4508,9 +4341,6 @@
(clobber (reg 24))] (clobber (reg 24))]
"" ""
"* "*
{
char pattern[100];
/* If we have an operation where (op x 0) is the identity operation and /* If we have an operation where (op x 0) is the identity operation and
the condtional operator is LT or GE and we are comparing against zero and the condtional operator is LT or GE and we are comparing against zero and
everything is in registers then we can do this in two instructions */ everything is in registers then we can do this in two instructions */
...@@ -4522,27 +4352,17 @@ ...@@ -4522,27 +4352,17 @@
&& REGNO (operands[2]) != REGNO (operands[0])) && REGNO (operands[2]) != REGNO (operands[0]))
{ {
if (GET_CODE (operands[6]) == GE) if (GET_CODE (operands[6]) == GE)
{ return \"and\\t%0, %3, %4, asr #31\;%I7\\t%0, %2, %0\";
output_asm_insn (\"and\\t%0, %3, %4, asr #31\", operands);
sprintf (pattern, \"%s\\t%%0, %%2, %%0\",
arithmetic_instr (operands[7], FALSE));
output_asm_insn (pattern, operands);
return \"\";
}
else if (GET_CODE (operands[6]) == LT) else if (GET_CODE (operands[6]) == LT)
{ return \"bic\\t%0, %3, %4, asr #31\;%I7\\t%0, %2, %0\";
output_asm_insn (\"bic\\t%0, %3, %4, asr #31\", operands);
sprintf (pattern, \"%s\\t%%0, %%2, %%0\",
arithmetic_instr (operands[7], FALSE));
output_asm_insn (pattern, operands);
return \"\";
}
} }
if (GET_CODE (operands[5]) == CONST_INT if (GET_CODE (operands[5]) == CONST_INT
&& !const_ok_for_arm (INTVAL (operands[5]))) && !const_ok_for_arm (INTVAL (operands[5])))
output_asm_insn (\"cmn\\t%4, #%n5\", operands); output_asm_insn (\"cmn\\t%4, #%n5\", operands);
else else
output_asm_insn (\"cmp\\t%4, %5\", operands); output_asm_insn (\"cmp\\t%4, %5\", operands);
if (which_alternative != 0) if (which_alternative != 0)
{ {
if (GET_CODE (operands[1]) == MEM) if (GET_CODE (operands[1]) == MEM)
...@@ -4550,11 +4370,7 @@ ...@@ -4550,11 +4370,7 @@
else else
output_asm_insn (\"mov%d6\\t%0, %1\", operands); output_asm_insn (\"mov%d6\\t%0, %1\", operands);
} }
sprintf (pattern, \"%s%%D6\\t%%0, %%2, %%3\", arithmetic_instr (operands[7], return \"%I7%D6\\t%0, %2, %3\";
FALSE));
output_asm_insn (pattern, operands);
return \"\";
}
" "
[(set_attr "conds" "clob") [(set_attr "conds" "clob")
(set_attr "length" "8,12")]) (set_attr "length" "8,12")])
...@@ -4685,9 +4501,6 @@ ...@@ -4685,9 +4501,6 @@
(clobber (reg 24))] (clobber (reg 24))]
"" ""
"* "*
{
char pattern[100];
if (GET_CODE (operands[5]) == CONST_INT if (GET_CODE (operands[5]) == CONST_INT
&& !const_ok_for_arm (INTVAL (operands[5]))) && !const_ok_for_arm (INTVAL (operands[5])))
output_asm_insn (\"cmn\\t%4, #%n5\", operands); output_asm_insn (\"cmn\\t%4, #%n5\", operands);
...@@ -4695,11 +4508,7 @@ ...@@ -4695,11 +4508,7 @@
output_asm_insn (\"cmp\\t%4, %5\", operands); output_asm_insn (\"cmp\\t%4, %5\", operands);
if (which_alternative != 0) if (which_alternative != 0)
output_asm_insn (\"mov%D6\\t%0, %1\", operands); output_asm_insn (\"mov%D6\\t%0, %1\", operands);
sprintf (pattern, \"mov%%d6\\t%%0, %%2, %s %%3\", return \"mov%d6\\t%0, %2, %S7\";
shift_instr (GET_CODE (operands[7]), &operands[3]));
output_asm_insn (pattern, operands);
return \"\";
}
" "
[(set_attr "conds" "clob") [(set_attr "conds" "clob")
(set_attr "length" "8,12")]) (set_attr "length" "8,12")])
...@@ -4716,9 +4525,6 @@ ...@@ -4716,9 +4525,6 @@
(clobber (reg 24))] (clobber (reg 24))]
"" ""
"* "*
{
char pattern[100];
if (GET_CODE (operands[5]) == CONST_INT if (GET_CODE (operands[5]) == CONST_INT
&& !const_ok_for_arm (INTVAL (operands[5]))) && !const_ok_for_arm (INTVAL (operands[5])))
output_asm_insn (\"cmn\\t%4, #%n5\", operands); output_asm_insn (\"cmn\\t%4, #%n5\", operands);
...@@ -4726,11 +4532,7 @@ ...@@ -4726,11 +4532,7 @@
output_asm_insn (\"cmp\\t%4, %5\", operands); output_asm_insn (\"cmp\\t%4, %5\", operands);
if (which_alternative != 0) if (which_alternative != 0)
output_asm_insn (\"mov%d6\\t%0, %1\", operands); output_asm_insn (\"mov%d6\\t%0, %1\", operands);
sprintf (pattern, \"mov%%D6\\t%%0, %%2, %s %%3\", return \"mov%D6\\t%0, %2, %S7\";
shift_instr (GET_CODE (operands[7]), &operands[3]));
output_asm_insn (pattern, operands);
return \"\";
}
" "
[(set_attr "conds" "clob") [(set_attr "conds" "clob")
(set_attr "length" "8,12")]) (set_attr "length" "8,12")])
...@@ -4749,22 +4551,12 @@ ...@@ -4749,22 +4551,12 @@
(clobber (reg 24))] (clobber (reg 24))]
"" ""
"* "*
{
char pattern[100];
if (GET_CODE (operands[6]) == CONST_INT if (GET_CODE (operands[6]) == CONST_INT
&& !const_ok_for_arm (INTVAL (operands[6]))) && !const_ok_for_arm (INTVAL (operands[6])))
output_asm_insn (\"cmn\\t%5, #%n6\", operands); output_asm_insn (\"cmn\\t%5, #%n6\", operands);
else else
output_asm_insn (\"cmp\\t%5, %6\", operands); output_asm_insn (\"cmp\\t%5, %6\", operands);
sprintf (pattern, \"mov%%d7\\t%%0, %%1, %s %%2\", return \"mov%d7\\t%0, %1, %S8\;mov%D7\\t%0, %3, %S9\";
shift_instr (GET_CODE (operands[8]), &operands[2]));
output_asm_insn (pattern, operands);
sprintf (pattern, \"mov%%D7\\t%%0, %%3, %s %%4\",
shift_instr (GET_CODE (operands[9]), &operands[4]));
output_asm_insn (pattern, operands);
return \"\";
}
" "
[(set_attr "conds" "clob") [(set_attr "conds" "clob")
(set_attr "length" "12")]) (set_attr "length" "12")])
...@@ -4781,20 +4573,12 @@ ...@@ -4781,20 +4573,12 @@
(clobber (reg 24))] (clobber (reg 24))]
"" ""
"* "*
{
char pattern[100];
if (GET_CODE (operands[5]) == CONST_INT if (GET_CODE (operands[5]) == CONST_INT
&& !const_ok_for_arm (INTVAL (operands[5]))) && !const_ok_for_arm (INTVAL (operands[5])))
output_asm_insn (\"cmn\\t%4, #%n5\", operands); output_asm_insn (\"cmn\\t%4, #%n5\", operands);
else else
output_asm_insn (\"cmp\\t%4, %5\", operands); output_asm_insn (\"cmp\\t%4, %5\", operands);
output_asm_insn (\"mvn%d6\\t%0, %1\", operands); return \"mvn%d6\\t%0, %1\;%I7%D6\\t%0, %2, %3\";
sprintf (pattern, \"%s%%D6\\t%%0, %%2, %%3\", arithmetic_instr (operands[7],
FALSE));
output_asm_insn (pattern, operands);
return \"\";
}
" "
[(set_attr "conds" "clob") [(set_attr "conds" "clob")
(set_attr "length" "12")]) (set_attr "length" "12")])
...@@ -4811,20 +4595,12 @@ ...@@ -4811,20 +4595,12 @@
(clobber (reg 24))] (clobber (reg 24))]
"" ""
"* "*
{
char pattern[100];
if (GET_CODE (operands[5]) == CONST_INT if (GET_CODE (operands[5]) == CONST_INT
&& !const_ok_for_arm (INTVAL (operands[5]))) && !const_ok_for_arm (INTVAL (operands[5])))
output_asm_insn (\"cmn\\t%4, #%n5\", operands); output_asm_insn (\"cmn\\t%4, #%n5\", operands);
else else
output_asm_insn (\"cmp\\t%4, %5\", operands); output_asm_insn (\"cmp\\t%4, %5\", operands);
output_asm_insn (\"mvn%D6\\t%0, %1\", operands); return \"mvn%D6\\t%0, %1\;%I7%d6\\t%0, %2, %3\";
sprintf (pattern, \"%s%%d6\\t%%0, %%2, %%3\", arithmetic_instr (operands[7],
FALSE));
output_asm_insn (pattern, operands);
return \"\";
}
" "
[(set_attr "conds" "clob") [(set_attr "conds" "clob")
(set_attr "length" "12")]) (set_attr "length" "12")])
...@@ -4886,11 +4662,8 @@ ...@@ -4886,11 +4662,8 @@
{ {
rtx ldm[3]; rtx ldm[3];
rtx arith[3]; rtx arith[3];
char pattern[100];
int val1 = 0, val2 = 0; int val1 = 0, val2 = 0;
sprintf (pattern, \"%s\\t%%0, %%1, %%2\",
arithmetic_instr (operands[1], FALSE));
if (REGNO (operands[0]) > REGNO (operands[4])) if (REGNO (operands[0]) > REGNO (operands[4]))
{ {
ldm[1] = operands[4]; ldm[1] = operands[4];
...@@ -4924,27 +4697,27 @@ ...@@ -4924,27 +4697,27 @@
ops[2] = XEXP (XEXP (operands[2], 0), 1); ops[2] = XEXP (XEXP (operands[2], 0), 1);
output_add_immediate (ops); output_add_immediate (ops);
if (val1 < val2) if (val1 < val2)
output_asm_insn (\"ldmia\\t%0, {%1, %2}\", ldm); output_asm_insn (\"ldm%?ia\\t%0, {%1, %2}\", ldm);
else else
output_asm_insn (\"ldmda\\t%0, {%1, %2}\", ldm); output_asm_insn (\"ldm%?da\\t%0, {%1, %2}\", ldm);
} }
else if (val1) else if (val1)
{ {
ldm[0] = XEXP (operands[3], 0); ldm[0] = XEXP (operands[3], 0);
if (val1 < val2) if (val1 < val2)
output_asm_insn (\"ldmda\\t%0, {%1, %2}\", ldm); output_asm_insn (\"ldm%?da\\t%0, {%1, %2}\", ldm);
else else
output_asm_insn (\"ldmia\\t%0, {%1, %2}\", ldm); output_asm_insn (\"ldm%?ia\\t%0, {%1, %2}\", ldm);
} }
else else
{ {
ldm[0] = XEXP (operands[2], 0); ldm[0] = XEXP (operands[2], 0);
if (val1 < val2) if (val1 < val2)
output_asm_insn (\"ldmia\\t%0, {%1, %2}\", ldm); output_asm_insn (\"ldm%?ia\\t%0, {%1, %2}\", ldm);
else else
output_asm_insn (\"ldmda\\t%0, {%1, %2}\", ldm); output_asm_insn (\"ldm%?da\\t%0, {%1, %2}\", ldm);
} }
output_asm_insn (pattern, arith); output_asm_insn (\"%I1%?\\t%0, %1, %2\", arith);
return \"\"; return \"\";
} }
" "
...@@ -4971,7 +4744,7 @@ ...@@ -4971,7 +4744,7 @@
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& (GET_CODE (operands[2]) != REG && (GET_CODE (operands[2]) != REG
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)" || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"strb\\t%3, [%0, %2]!" "str%?b\\t%3, [%0, %2]!"
[(set_attr "type" "store1")]) [(set_attr "type" "store1")])
(define_insn "" (define_insn ""
...@@ -4984,7 +4757,7 @@ ...@@ -4984,7 +4757,7 @@
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& (GET_CODE (operands[2]) != REG && (GET_CODE (operands[2]) != REG
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)" || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"strb\\t%3, [%0, -%2]!" "str%?b\\t%3, [%0, -%2]!"
[(set_attr "type" "store1")]) [(set_attr "type" "store1")])
(define_insn "" (define_insn ""
...@@ -4997,7 +4770,7 @@ ...@@ -4997,7 +4770,7 @@
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& (GET_CODE (operands[2]) != REG && (GET_CODE (operands[2]) != REG
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)" || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"ldrb\\t%3, [%0, %2]!" "ldr%?b\\t%3, [%0, %2]!"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
(define_insn "" (define_insn ""
...@@ -5010,7 +4783,7 @@ ...@@ -5010,7 +4783,7 @@
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& (GET_CODE (operands[2]) != REG && (GET_CODE (operands[2]) != REG
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)" || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"ldrb\\t%3, [%0, -%2]!" "ldr%?b\\t%3, [%0, -%2]!"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
(define_insn "" (define_insn ""
...@@ -5024,7 +4797,7 @@ ...@@ -5024,7 +4797,7 @@
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& (GET_CODE (operands[2]) != REG && (GET_CODE (operands[2]) != REG
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)" || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"ldrb\\t%3, [%0, %2]!\\t@ z_extendqisi" "ldr%?b\\t%3, [%0, %2]!\\t%@ z_extendqisi"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
(define_insn "" (define_insn ""
...@@ -5038,7 +4811,7 @@ ...@@ -5038,7 +4811,7 @@
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& (GET_CODE (operands[2]) != REG && (GET_CODE (operands[2]) != REG
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)" || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"ldrb\\t%3, [%0, -%2]!\\t@ z_extendqisi" "ldr%?b\\t%3, [%0, -%2]!\\t%@ z_extendqisi"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
(define_insn "" (define_insn ""
...@@ -5051,7 +4824,7 @@ ...@@ -5051,7 +4824,7 @@
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& (GET_CODE (operands[2]) != REG && (GET_CODE (operands[2]) != REG
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)" || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"str\\t%3, [%0, %2]!" "str%?\\t%3, [%0, %2]!"
[(set_attr "type" "store1")]) [(set_attr "type" "store1")])
(define_insn "" (define_insn ""
...@@ -5064,7 +4837,7 @@ ...@@ -5064,7 +4837,7 @@
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& (GET_CODE (operands[2]) != REG && (GET_CODE (operands[2]) != REG
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)" || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"str\\t%3, [%0, -%2]!" "str%?\\t%3, [%0, -%2]!"
[(set_attr "type" "store1")]) [(set_attr "type" "store1")])
(define_insn "" (define_insn ""
...@@ -5077,7 +4850,7 @@ ...@@ -5077,7 +4850,7 @@
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& (GET_CODE (operands[2]) != REG && (GET_CODE (operands[2]) != REG
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)" || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"ldr\\t%3, [%0, %2]!" "ldr%?\\t%3, [%0, %2]!"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
(define_insn "" (define_insn ""
...@@ -5090,7 +4863,7 @@ ...@@ -5090,7 +4863,7 @@
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& (GET_CODE (operands[2]) != REG && (GET_CODE (operands[2]) != REG
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)" || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"ldr\\t%3, [%0, -%2]!" "ldr%?\\t%3, [%0, -%2]!"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
(define_insn "" (define_insn ""
...@@ -5103,7 +4876,7 @@ ...@@ -5103,7 +4876,7 @@
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& (GET_CODE (operands[2]) != REG && (GET_CODE (operands[2]) != REG
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)" || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"ldr\\t%3, [%0, %2]!\\t@ loadhi" "ldr%?\\t%3, [%0, %2]!\\t%@ loadhi"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
(define_insn "" (define_insn ""
...@@ -5116,7 +4889,7 @@ ...@@ -5116,7 +4889,7 @@
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& (GET_CODE (operands[2]) != REG && (GET_CODE (operands[2]) != REG
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)" || REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"ldr\\t%3, [%0, -%2]!\\t@ loadhi" "ldr%?\\t%3, [%0, -%2]!\\t%@ loadhi"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
(define_insn "" (define_insn ""
...@@ -5131,16 +4904,7 @@ ...@@ -5131,16 +4904,7 @@
"REGNO (operands[0]) != FRAME_POINTER_REGNUM "REGNO (operands[0]) != FRAME_POINTER_REGNUM
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
"* "str%?b\\t%5, [%0, %3, %S2]!"
{
char instr[100];
sprintf (instr, \"strb\\t%%5, [%%0, %%3, %s %%4]!\",
shift_instr (GET_CODE (operands[2]), &operands[4]));
output_asm_insn (instr, operands);
return \"\";
}
"
[(set_attr "type" "store1")]) [(set_attr "type" "store1")])
(define_insn "" (define_insn ""
...@@ -5155,16 +4919,7 @@ ...@@ -5155,16 +4919,7 @@
"REGNO (operands[0]) != FRAME_POINTER_REGNUM "REGNO (operands[0]) != FRAME_POINTER_REGNUM
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
"* "str%?b\\t%5, [%0, -%3, %S2]!"
{
char instr[100];
sprintf (instr, \"strb\\t%%5, [%%0, -%%3, %s %%4]!\",
shift_instr (GET_CODE (operands[2]), &operands[4]));
output_asm_insn (instr, operands);
return \"\";
}
"
[(set_attr "type" "store1")]) [(set_attr "type" "store1")])
(define_insn "" (define_insn ""
...@@ -5179,16 +4934,7 @@ ...@@ -5179,16 +4934,7 @@
"REGNO (operands[0]) != FRAME_POINTER_REGNUM "REGNO (operands[0]) != FRAME_POINTER_REGNUM
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
"* "ldr%?b\\t%5, [%0, %3, %S2]!"
{
char instr[100];
sprintf (instr, \"ldrb\\t%%5, [%%0, %%3, %s %%4]!\",
shift_instr (GET_CODE (operands[2]), &operands[4]));
output_asm_insn (instr, operands);
return \"\";
}
"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
(define_insn "" (define_insn ""
...@@ -5203,16 +4949,7 @@ ...@@ -5203,16 +4949,7 @@
"REGNO (operands[0]) != FRAME_POINTER_REGNUM "REGNO (operands[0]) != FRAME_POINTER_REGNUM
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
"* "ldr%?b\\t%5, [%0, -%3, %S2]!"
{
char instr[100];
sprintf (instr, \"ldrb\\t%%5, [%%0, -%%3, %s %%4]!\",
shift_instr (GET_CODE (operands[2]), &operands[4]));
output_asm_insn (instr, operands);
return \"\";
}
"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
(define_insn "" (define_insn ""
...@@ -5227,16 +4964,7 @@ ...@@ -5227,16 +4964,7 @@
"REGNO (operands[0]) != FRAME_POINTER_REGNUM "REGNO (operands[0]) != FRAME_POINTER_REGNUM
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
"* "str%?\\t%5, [%0, %3, %S2]!"
{
char instr[100];
sprintf (instr, \"str\\t%%5, [%%0, %%3, %s %%4]!\",
shift_instr (GET_CODE (operands[2]), &operands[4]));
output_asm_insn (instr, operands);
return \"\";
}
"
[(set_attr "type" "store1")]) [(set_attr "type" "store1")])
(define_insn "" (define_insn ""
...@@ -5251,16 +4979,7 @@ ...@@ -5251,16 +4979,7 @@
"REGNO (operands[0]) != FRAME_POINTER_REGNUM "REGNO (operands[0]) != FRAME_POINTER_REGNUM
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
"* "str%?\\t%5, [%0, -%3, %S2]!"
{
char instr[100];
sprintf (instr, \"str\\t%%5, [%%0, -%%3, %s %%4]!\",
shift_instr (GET_CODE (operands[2]), &operands[4]));
output_asm_insn (instr, operands);
return \"\";
}
"
[(set_attr "type" "store1")]) [(set_attr "type" "store1")])
(define_insn "" (define_insn ""
...@@ -5275,16 +4994,7 @@ ...@@ -5275,16 +4994,7 @@
"REGNO (operands[0]) != FRAME_POINTER_REGNUM "REGNO (operands[0]) != FRAME_POINTER_REGNUM
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
"* "ldr%?\\t%5, [%0, %3, %S2]!"
{
char instr[100];
sprintf (instr, \"ldr\\t%%5, [%%0, %%3, %s %%4]!\",
shift_instr (GET_CODE (operands[2]), &operands[4]));
output_asm_insn (instr, operands);
return \"\";
}
"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
(define_insn "" (define_insn ""
...@@ -5299,16 +5009,7 @@ ...@@ -5299,16 +5009,7 @@
"REGNO (operands[0]) != FRAME_POINTER_REGNUM "REGNO (operands[0]) != FRAME_POINTER_REGNUM
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
"* "ldr%?\\t%5, [%0, -%3, %S2]!"
{
char instr[100];
sprintf (instr, \"ldr\\t%%5, [%%0, -%%3, %s %%4]!\",
shift_instr (GET_CODE (operands[2]), &operands[4]));
output_asm_insn (instr, operands);
return \"\";
}
"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
(define_insn "" (define_insn ""
...@@ -5323,16 +5024,7 @@ ...@@ -5323,16 +5024,7 @@
"REGNO (operands[0]) != FRAME_POINTER_REGNUM "REGNO (operands[0]) != FRAME_POINTER_REGNUM
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
"* "ldr%?\\t%5, [%0, %3, %S2]!\\t%@ loadhi"
{
char instr[100];
sprintf (instr, \"ldr\\t%%5, [%%0, %%3, %s %%4]!\\t@ loadhi\",
shift_instr (GET_CODE (operands[2]), &operands[4]));
output_asm_insn (instr, operands);
return \"\";
}
"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
(define_insn "" (define_insn ""
...@@ -5347,16 +5039,7 @@ ...@@ -5347,16 +5039,7 @@
"REGNO (operands[0]) != FRAME_POINTER_REGNUM "REGNO (operands[0]) != FRAME_POINTER_REGNUM
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && REGNO (operands[1]) != FRAME_POINTER_REGNUM
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && REGNO (operands[3]) != FRAME_POINTER_REGNUM"
"* "ldr%?\\t%5, [%0, -%3, %S2]!\\t%@ loadhi"
{
char instr[100];
sprintf (instr, \"ldr\\t%%5, [%%0, -%%3, %s %%4]!\\t@ loadhi\",
shift_instr (GET_CODE (operands[2]), &operands[4]));
output_asm_insn (instr, operands);
return \"\";
}
"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
; It can also support extended post-inc expressions, but combine doesn't ; It can also support extended post-inc expressions, but combine doesn't
...@@ -5383,7 +5066,7 @@ ...@@ -5383,7 +5066,7 @@
"REGNO(operands[0]) != REGNO(operands[1]) "REGNO(operands[0]) != REGNO(operands[1])
&& (GET_CODE (operands[2]) != REG && (GET_CODE (operands[2]) != REG
|| REGNO(operands[0]) != REGNO (operands[2]))" || REGNO(operands[0]) != REGNO (operands[2]))"
"ldrb\\t%0, [%1], %2") "ldr%?b\\t%0, [%1], %2")
(define_peephole (define_peephole
[(set (mem:SI (match_operand:SI 0 "s_register_operand" "+r")) [(set (mem:SI (match_operand:SI 0 "s_register_operand" "+r"))
...@@ -5391,7 +5074,7 @@ ...@@ -5391,7 +5074,7 @@
(set (match_dup 0) (set (match_dup 0)
(plus:SI (match_dup 0) (match_operand:SI 1 "index_operand" "rJ")))] (plus:SI (match_dup 0) (match_operand:SI 1 "index_operand" "rJ")))]
"" ""
"str\\t%2, [%0], %1") "str%?\\t%2, [%0], %1")
(define_peephole (define_peephole
[(set (match_operand:HI 0 "s_register_operand" "=r") [(set (match_operand:HI 0 "s_register_operand" "=r")
...@@ -5401,7 +5084,7 @@ ...@@ -5401,7 +5084,7 @@
"REGNO(operands[0]) != REGNO(operands[1]) "REGNO(operands[0]) != REGNO(operands[1])
&& (GET_CODE (operands[2]) != REG && (GET_CODE (operands[2]) != REG
|| REGNO(operands[0]) != REGNO (operands[2]))" || REGNO(operands[0]) != REGNO (operands[2]))"
"ldr\\t%0, [%1], %2\\t@ loadhi") "ldr%?\\t%0, [%1], %2\\t%@ loadhi")
(define_peephole (define_peephole
[(set (match_operand:SI 0 "s_register_operand" "=r") [(set (match_operand:SI 0 "s_register_operand" "=r")
...@@ -5411,7 +5094,7 @@ ...@@ -5411,7 +5094,7 @@
"REGNO(operands[0]) != REGNO(operands[1]) "REGNO(operands[0]) != REGNO(operands[1])
&& (GET_CODE (operands[2]) != REG && (GET_CODE (operands[2]) != REG
|| REGNO(operands[0]) != REGNO (operands[2]))" || REGNO(operands[0]) != REGNO (operands[2]))"
"ldr\\t%0, [%1], %2") "ldr%?\\t%0, [%1], %2")
; This pattern is never tried by combine, so do it as a peephole ; This pattern is never tried by combine, so do it as a peephole
...@@ -5421,7 +5104,7 @@ ...@@ -5421,7 +5104,7 @@
(set (match_operand 2 "cc_register" "") (set (match_operand 2 "cc_register" "")
(compare (match_dup 1) (const_int 0)))] (compare (match_dup 1) (const_int 0)))]
"" ""
"subs\\t%0, %1, #0" "sub%?s\\t%0, %1, #0"
[(set_attr "conds" "set")]) [(set_attr "conds" "set")])
; Peepholes to spot possible load- and store-multiples, if the ordering is ; Peepholes to spot possible load- and store-multiples, if the ordering is
...@@ -5451,7 +5134,7 @@ ...@@ -5451,7 +5134,7 @@
&& !MEM_VOLATILE_P (SET_SRC (PATTERN (prev_nonnote_insn && !MEM_VOLATILE_P (SET_SRC (PATTERN (prev_nonnote_insn
(prev_nonnote_insn (prev_nonnote_insn
(prev_nonnote_insn (insn))))))" (prev_nonnote_insn (insn))))))"
"ldmia\\t%1, {%4, %3, %2, %0}\\t@ phole ldm") "ldm%?ia\\t%1, {%4, %3, %2, %0}\\t%@ phole ldm")
(define_peephole (define_peephole
[(set (match_operand:SI 0 "s_register_operand" "=r") [(set (match_operand:SI 0 "s_register_operand" "=r")
...@@ -5470,7 +5153,7 @@ ...@@ -5470,7 +5153,7 @@
&& !MEM_VOLATILE_P (SET_SRC (PATTERN (prev_nonnote_insn (insn)))) && !MEM_VOLATILE_P (SET_SRC (PATTERN (prev_nonnote_insn (insn))))
&& !MEM_VOLATILE_P (SET_SRC (PATTERN (prev_nonnote_insn && !MEM_VOLATILE_P (SET_SRC (PATTERN (prev_nonnote_insn
(prev_nonnote_insn (insn)))))" (prev_nonnote_insn (insn)))))"
"ldmia\\t%1, {%3, %2, %0}\\t@ phole ldm") "ldm%?ia\\t%1, {%3, %2, %0}\\t%@ phole ldm")
(define_peephole (define_peephole
[(set (match_operand:SI 0 "s_register_operand" "=r") [(set (match_operand:SI 0 "s_register_operand" "=r")
...@@ -5483,7 +5166,7 @@ ...@@ -5483,7 +5166,7 @@
|| REGNO (operands[1]) == REGNO (operands[2])) || REGNO (operands[1]) == REGNO (operands[2]))
&& !MEM_VOLATILE_P (SET_SRC (PATTERN (insn))) && !MEM_VOLATILE_P (SET_SRC (PATTERN (insn)))
&& !MEM_VOLATILE_P (SET_SRC (PATTERN (prev_nonnote_insn (insn))))" && !MEM_VOLATILE_P (SET_SRC (PATTERN (prev_nonnote_insn (insn))))"
"ldmia\\t%1, {%2, %0}\\t@ phole ldm") "ldm%?ia\\t%1, {%2, %0}\\t%@ phole ldm")
(define_peephole (define_peephole
[(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "r") [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "r")
...@@ -5505,7 +5188,7 @@ ...@@ -5505,7 +5188,7 @@
&& !MEM_VOLATILE_P (SET_DEST (PATTERN (prev_nonnote_insn && !MEM_VOLATILE_P (SET_DEST (PATTERN (prev_nonnote_insn
(prev_nonnote_insn (prev_nonnote_insn
(prev_nonnote_insn (insn))))))" (prev_nonnote_insn (insn))))))"
"stmia\\t%1, {%4, %3, %2, %0}\\t@ phole stm") "stm%?ia\\t%1, {%4, %3, %2, %0}\\t%@ phole stm")
(define_peephole (define_peephole
[(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "r") [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "r")
...@@ -5521,7 +5204,7 @@ ...@@ -5521,7 +5204,7 @@
&& !MEM_VOLATILE_P (SET_DEST (PATTERN (prev_nonnote_insn (insn)))) && !MEM_VOLATILE_P (SET_DEST (PATTERN (prev_nonnote_insn (insn))))
&& !MEM_VOLATILE_P (SET_DEST (PATTERN (prev_nonnote_insn && !MEM_VOLATILE_P (SET_DEST (PATTERN (prev_nonnote_insn
(prev_nonnote_insn (insn)))))" (prev_nonnote_insn (insn)))))"
"stmia\\t%1, {%3, %2, %0}\\t@ phole stm") "stm%?ia\\t%1, {%3, %2, %0}\\t%@ phole stm")
(define_peephole (define_peephole
[(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "r") [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "r")
...@@ -5532,7 +5215,7 @@ ...@@ -5532,7 +5215,7 @@
"REGNO (operands[0]) > REGNO (operands[2]) "REGNO (operands[0]) > REGNO (operands[2])
&& !MEM_VOLATILE_P (SET_DEST (PATTERN (insn))) && !MEM_VOLATILE_P (SET_DEST (PATTERN (insn)))
&& !MEM_VOLATILE_P (SET_DEST (PATTERN (prev_nonnote_insn (insn))))" && !MEM_VOLATILE_P (SET_DEST (PATTERN (prev_nonnote_insn (insn))))"
"stmia\\t%1, {%2, %0}\\t@ phole stm") "stm%?ia\\t%1, {%2, %0}\\t%@ phole stm")
;; A call followed by return can be replaced by restoring the regs and ;; A call followed by return can be replaced by restoring the regs and
;; jumping to the subroutine, provided we aren't passing the address of ;; jumping to the subroutine, provided we aren't passing the address of
...@@ -5570,7 +5253,7 @@ ...@@ -5570,7 +5253,7 @@
} }
output_return_instruction (NULL, FALSE); output_return_instruction (NULL, FALSE);
return \"b\\t%a0\"; return \"b%?\\t%a0\";
}" }"
[(set (attr "conds") [(set (attr "conds")
(if_then_else (eq_attr "cpu" "arm6") (if_then_else (eq_attr "cpu" "arm6")
...@@ -5601,7 +5284,7 @@ ...@@ -5601,7 +5284,7 @@
} }
output_return_instruction (NULL, FALSE); output_return_instruction (NULL, FALSE);
return \"b\\t%a1\"; return \"b%?\\t%a1\";
}" }"
[(set (attr "conds") [(set (attr "conds")
(if_then_else (eq_attr "cpu" "arm6") (if_then_else (eq_attr "cpu" "arm6")
...@@ -5636,7 +5319,7 @@ ...@@ -5636,7 +5319,7 @@
} }
output_return_instruction (NULL, FALSE); output_return_instruction (NULL, FALSE);
return \"b\\t%a1\"; return \"b%?\\t%a1\";
}" }"
[(set (attr "conds") [(set (attr "conds")
(if_then_else (eq_attr "cpu" "arm6") (if_then_else (eq_attr "cpu" "arm6")
...@@ -5672,20 +5355,20 @@ ...@@ -5672,20 +5355,20 @@
if (TARGET_6) if (TARGET_6)
{ {
if (backward) if (backward)
output_asm_insn (\"sub\\tlr, pc, #(8 + . -%l2)\", operands); output_asm_insn (\"sub%?\\tlr, pc, #(8 + . -%l2)\", operands);
else else
output_asm_insn (\"add\\tlr, pc, #(%l2 - . -8)\", operands); output_asm_insn (\"add%?\\tlr, pc, #(%l2 - . -8)\", operands);
} }
else else
#endif #endif
{ {
output_asm_insn (\"mov\\tlr, pc\\t@ protect cc\", operands); output_asm_insn (\"mov%?\\tlr, pc\\t%@ protect cc\", operands);
if (backward) if (backward)
output_asm_insn (\"sub\\tlr, lr, #(4 + . -%l2)\", operands); output_asm_insn (\"sub%?\\tlr, lr, #(4 + . -%l2)\", operands);
else else
output_asm_insn (\"add\\tlr, lr, #(%l2 - . -4)\", operands); output_asm_insn (\"add%?\\tlr, lr, #(%l2 - . -4)\", operands);
} }
return \"b\\t%a0\"; return \"b%?\\t%a0\";
}" }"
[(set (attr "conds") [(set (attr "conds")
(if_then_else (eq_attr "cpu" "arm6") (if_then_else (eq_attr "cpu" "arm6")
...@@ -5718,20 +5401,20 @@ ...@@ -5718,20 +5401,20 @@
if (TARGET_6) if (TARGET_6)
{ {
if (backward) if (backward)
output_asm_insn (\"sub\\tlr, pc, #(8 + . -%l3)\", operands); output_asm_insn (\"sub%?\\tlr, pc, #(8 + . -%l3)\", operands);
else else
output_asm_insn (\"add\\tlr, pc, #(%l3 - . -8)\", operands); output_asm_insn (\"add%?\\tlr, pc, #(%l3 - . -8)\", operands);
} }
else else
#endif #endif
{ {
output_asm_insn (\"mov\\tlr, pc\\t@ protect cc\", operands); output_asm_insn (\"mov%?\\tlr, pc\\t%@ protect cc\", operands);
if (backward) if (backward)
output_asm_insn (\"sub\\tlr, lr, #(4 + . -%l3)\", operands); output_asm_insn (\"sub%?\\tlr, lr, #(4 + . -%l3)\", operands);
else else
output_asm_insn (\"add\\tlr, lr, #(%l3 - . -4)\", operands); output_asm_insn (\"add%?\\tlr, lr, #(%l3 - . -4)\", operands);
} }
return \"b\\t%a1\"; return \"b%?\\t%a1\";
}" }"
[(set (attr "conds") [(set (attr "conds")
(if_then_else (eq_attr "cpu" "arm6") (if_then_else (eq_attr "cpu" "arm6")
...@@ -5795,8 +5478,8 @@ ...@@ -5795,8 +5478,8 @@
== (((unsigned long) INTVAL (operands[1])) >> 24) << 24" == (((unsigned long) INTVAL (operands[1])) >> 24) << 24"
"* "*
operands[1] = GEN_INT (((unsigned long) INTVAL (operands[1])) >> 24); operands[1] = GEN_INT (((unsigned long) INTVAL (operands[1])) >> 24);
output_asm_insn (\"ldrb\\t%2, %0\", operands); output_asm_insn (\"ldr%?b\\t%2, %0\", operands);
output_asm_insn (\"cmp\\t%2, %1\", operands); output_asm_insn (\"cmp%?\\t%2, %1\", operands);
return \"\"; return \"\";
" "
[(set_attr "conds" "set") [(set_attr "conds" "set")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment