aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-12-11 17:08:02 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1996-12-11 17:08:02 -0500
commit555919ac3ca07295751472e0e88b8c0a3f05345f (patch)
treec6806973049c73f9aca2141f431c5c967cdecc4e /gcc
parent44afaf6deae43c560c3bf50c3e87532ff55104c3 (diff)
downloadgcc-555919ac3ca07295751472e0e88b8c0a3f05345f.zip
gcc-555919ac3ca07295751472e0e88b8c0a3f05345f.tar.gz
gcc-555919ac3ca07295751472e0e88b8c0a3f05345f.tar.bz2
(mov[hq]i unnamed): Split up for TARGET_BYTE_OPS and not.
From-SVN: r13284
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/alpha/alpha.md40
1 files changed, 36 insertions, 4 deletions
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md
index 178634b..a4dfb33 100644
--- a/gcc/config/alpha/alpha.md
+++ b/gcc/config/alpha/alpha.md
@@ -3613,10 +3613,26 @@
[(set_attr "type" "ilog,ilog,ilog,iadd,iadd,ldsym,ld,st,fcpys,fcpys,ld,st")])
(define_insn ""
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,r,r,f,f")
+ (match_operand:HI 1 "input_operand" "r,J,I,n,f,J"))]
+ "! TARGET_BYTE_OPS
+ && (register_operand (operands[0], HImode)
+ || register_operand (operands[1], HImode))"
+ "@
+ bis %1,%1,%0
+ bis $31,$31,%0
+ bis $31,%1,%0
+ lda %0,%L1
+ cpys %1,%1,%0
+ cpys $f31,$f31,%0"
+ [(set_attr "type" "ilog,ilog,ilog,iadd,fcpys,fcpys")])
+
+(define_insn ""
[(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,r,r,r,m,f,f")
(match_operand:HI 1 "input_operand" "r,J,I,n,m,rJ,f,J"))]
- "register_operand (operands[0], HImode)
- || reg_or_0_operand (operands[1], HImode)"
+ "TARGET_BYTE_OPS
+ && (register_operand (operands[0], HImode)
+ || reg_or_0_operand (operands[1], HImode))"
"@
bis %1,%1,%0
bis $31,$31,%0
@@ -3629,10 +3645,26 @@
[(set_attr "type" "ilog,ilog,ilog,iadd,ld,st,fcpys,fcpys")])
(define_insn ""
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,r,r,f,f")
+ (match_operand:QI 1 "input_operand" "r,J,I,n,f,J"))]
+ "! TARGET_BYTE_OPS
+ && (register_operand (operands[0], QImode)
+ || register_operand (operands[1], QImode))"
+ "@
+ bis %1,%1,%0
+ bis $31,$31,%0
+ bis $31,%1,%0
+ lda %0,%L1
+ cpys %1,%1,%0
+ cpys $f31,$f31,%0"
+ [(set_attr "type" "ilog,ilog,ilog,iadd,fcpys,fcpys")])
+
+(define_insn ""
[(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,r,r,r,m,f,f")
(match_operand:QI 1 "input_operand" "r,J,I,n,m,rJ,f,J"))]
- "register_operand (operands[0], QImode)
- || reg_or_0_operand (operands[1], QImode)"
+ "TARGET_BYTE_OPS
+ && (register_operand (operands[0], QImode)
+ || reg_or_0_operand (operands[1], QImode))"
"@
bis %1,%1,%0
bis $31,$31,%0