summaryrefslogtreecommitdiff
path: root/gcc/config/i860
diff options
context:
space:
mode:
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>1992-07-23 06:07:10 +0000
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>1992-07-23 06:07:10 +0000
commitaaede071c5e882a619209e405cdbcf309fe20183 (patch)
tree2fca4847c3a334eab619cb75d33e6bbcb5316563 /gcc/config/i860
parentad9afbbd2fd2d6ae68c706717b46983f122d7927 (diff)
downloadgcc-aaede071c5e882a619209e405cdbcf309fe20183.tar.gz
(mulsi3_little, mulsi3_big): New define_expand patterns.
(mulsi3): Just use one of them. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@1668 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i860')
-rw-r--r--gcc/config/i860/i860.md31
1 files changed, 31 insertions, 0 deletions
diff --git a/gcc/config/i860/i860.md b/gcc/config/i860/i860.md
index ef15a40f74a..6e510aa2e8f 100644
--- a/gcc/config/i860/i860.md
+++ b/gcc/config/i860/i860.md
@@ -1699,6 +1699,37 @@
""
"
{
+ if (WORDS_BIG_ENDIAN)
+ return gen_mulsi3_big (operands[0], operands[1], operands[2]);
+ else
+ return gen_mulsi3_little (operands[0], operands[1], operands[2]);
+}")
+
+(define_expand "mulsi3_little"
+ [(set (subreg:SI (match_dup 4) 0) (match_operand:SI 1 "general_operand" ""))
+ (set (subreg:SI (match_dup 5) 0) (match_operand:SI 2 "general_operand" ""))
+ (clobber (match_dup 3))
+ (set (subreg:SI (match_dup 3) 0)
+ (mult:SI (subreg:SI (match_dup 4) 0) (subreg:SI (match_dup 5) 0)))
+ (set (match_operand:SI 0 "register_operand" "") (subreg:SI (match_dup 3) 0))]
+ "! WORDS_BIG_ENDIAN"
+ "
+{
+ operands[3] = gen_reg_rtx (DImode);
+ operands[4] = gen_reg_rtx (DImode);
+ operands[5] = gen_reg_rtx (DImode);
+}")
+
+(define_expand "mulsi3_big"
+ [(set (subreg:SI (match_dup 4) 1) (match_operand:SI 1 "general_operand" ""))
+ (set (subreg:SI (match_dup 5) 1) (match_operand:SI 2 "general_operand" ""))
+ (clobber (match_dup 3))
+ (set (subreg:SI (match_dup 3) 0)
+ (mult:SI (subreg:SI (match_dup 4) 0) (subreg:SI (match_dup 5) 0)))
+ (set (match_operand:SI 0 "register_operand" "") (subreg:SI (match_dup 3) 0))]
+ "WORDS_BIG_ENDIAN"
+ "
+{
operands[3] = gen_reg_rtx (DImode);
operands[4] = gen_reg_rtx (DImode);
operands[5] = gen_reg_rtx (DImode);