aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorStuart Henderson <shenders@gcc.gnu.org>2011-05-03 16:50:30 +0000
committerStuart Henderson <shenders@gcc.gnu.org>2011-05-03 16:50:30 +0000
commit265b1d82bf8873b177f849d79509a90b3e753dc3 (patch)
treefd343e9de7cbbe00c76e8f963916550793fc82ff /gcc
parentc1fd8753c5ebe34277fa7e75e4e92c1e8bc08277 (diff)
downloadgcc-265b1d82bf8873b177f849d79509a90b3e753dc3.zip
gcc-265b1d82bf8873b177f849d79509a90b3e753dc3.tar.gz
gcc-265b1d82bf8873b177f849d79509a90b3e753dc3.tar.bz2
2011-05-03 Stuart Henderson <shenders@gcc.gnu.org>
From Bernd Schmidt: * config/bfin/bfin.md (MOVCC): New mode_macro. (mov<mode>cc_insn1, mov<mode>cc_insn2, mov<mode>cc): Renamed from movsicc_insn1, movsicc_insn2 and movsicc and macroized. Remove comments from generated assembly. From-SVN: r173330
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/bfin/bfin.md46
2 files changed, 32 insertions, 22 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8124e22..76908e5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,13 @@
2011-05-03 Stuart Henderson <shenders@gcc.gnu.org>
+ From Bernd Schmidt:
+ * config/bfin/bfin.md (MOVCC): New mode_macro.
+ (mov<mode>cc_insn1, mov<mode>cc_insn2, mov<mode>cc): Renamed from
+ movsicc_insn1, movsicc_insn2 and movsicc and macroized. Remove
+ comments from generated assembly.
+
+2011-05-03 Stuart Henderson <shenders@gcc.gnu.org>
+
From Bernd Schmidt
* config/bfin/t-bfin (LIB1ASMFUNCS): Add muldi3 and umulsi3_highpart.
* config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add muldi3.
diff --git a/gcc/config/bfin/bfin.md b/gcc/config/bfin/bfin.md
index 6f2c7a6..c4722d4 100644
--- a/gcc/config/bfin/bfin.md
+++ b/gcc/config/bfin/bfin.md
@@ -415,44 +415,46 @@
;; Conditional moves
-(define_expand "movsicc"
- [(set (match_operand:SI 0 "register_operand" "")
- (if_then_else:SI (match_operand 1 "comparison_operator" "")
- (match_operand:SI 2 "register_operand" "")
- (match_operand:SI 3 "register_operand" "")))]
+(define_mode_iterator CCMOV [QI HI SI])
+
+(define_expand "mov<mode>cc"
+ [(set (match_operand:CCMOV 0 "register_operand" "")
+ (if_then_else:CCMOV (match_operand 1 "comparison_operator" "")
+ (match_operand:CCMOV 2 "register_operand" "")
+ (match_operand:CCMOV 3 "register_operand" "")))]
""
{
- operands[1] = bfin_gen_compare (operands[1], SImode);
+ operands[1] = bfin_gen_compare (operands[1], <MODE>mode);
})
-(define_insn "*movsicc_insn1"
- [(set (match_operand:SI 0 "register_operand" "=da,da,da")
- (if_then_else:SI
+(define_insn "*mov<mode>cc_insn1"
+ [(set (match_operand:CCMOV 0 "register_operand" "=da,da,da")
+ (if_then_else:CCMOV
(eq:BI (match_operand:BI 3 "register_operand" "C,C,C")
(const_int 0))
- (match_operand:SI 1 "register_operand" "da,0,da")
- (match_operand:SI 2 "register_operand" "0,da,da")))]
+ (match_operand:CCMOV 1 "register_operand" "da,0,da")
+ (match_operand:CCMOV 2 "register_operand" "0,da,da")))]
""
"@
- if !cc %0 =%1; /* movsicc-1a */
- if cc %0 =%2; /* movsicc-1b */
- if !cc %0 =%1; if cc %0=%2; /* movsicc-1 */"
+ if !cc %0 = %1;
+ if cc %0 = %2;
+ if !cc %0 = %1; if cc %0 = %2;"
[(set_attr "length" "2,2,4")
(set_attr "type" "movcc")
(set_attr "seq_insns" "*,*,multi")])
-(define_insn "*movsicc_insn2"
- [(set (match_operand:SI 0 "register_operand" "=da,da,da")
- (if_then_else:SI
+(define_insn "*mov<mode>cc_insn2"
+ [(set (match_operand:CCMOV 0 "register_operand" "=da,da,da")
+ (if_then_else:CCMOV
(ne:BI (match_operand:BI 3 "register_operand" "C,C,C")
(const_int 0))
- (match_operand:SI 1 "register_operand" "0,da,da")
- (match_operand:SI 2 "register_operand" "da,0,da")))]
+ (match_operand:CCMOV 1 "register_operand" "0,da,da")
+ (match_operand:CCMOV 2 "register_operand" "da,0,da")))]
""
"@
- if !cc %0 =%2; /* movsicc-2b */
- if cc %0 =%1; /* movsicc-2a */
- if cc %0 =%1; if !cc %0=%2; /* movsicc-1 */"
+ if !cc %0 = %2;
+ if cc %0 = %1;
+ if cc %0 = %1; if !cc %0 = %2;"
[(set_attr "length" "2,2,4")
(set_attr "type" "movcc")
(set_attr "seq_insns" "*,*,multi")])