s390.md ("movti"): Add Q->Q alternative.

* config/s390/s390.md ("movti"): Add Q->Q alternative.
	("*movdi_64", "*movdi_31", "*movsi", "movhi", "movqi_64",
	"movqi", "*movdf_64", "*movdf_31", "*movsf"): Likewise.

	("*movti_ss", "*movdi_ss", "*movsi_ss", "*movdf_ss",
	"*movsf_ss"): Remove.

From-SVN: r56765
This commit is contained in:
Ulrich Weigand 2002-09-03 18:33:56 +00:00 committed by Ulrich Weigand
parent 710ba35f4f
commit 9b7c75b993
2 changed files with 68 additions and 89 deletions

View File

@ -1,3 +1,12 @@
2002-09-03 Ulrich Weigand <uweigand@de.ibm.com>
* config/s390/s390.md ("movti"): Add Q->Q alternative.
("*movdi_64", "*movdi_31", "*movsi", "movhi", "movqi_64",
"movqi", "*movdf_64", "*movdf_31", "*movsf"): Likewise.
("*movti_ss", "*movdi_ss", "*movsi_ss", "*movdf_ss",
"*movsf_ss"): Remove.
2002-09-03 John David Anglin <dave@hiauly1.hia.nrc.ca> 2002-09-03 John David Anglin <dave@hiauly1.hia.nrc.ca>
* pa32-regs.h (CLASS_CANNOT_CHANGE_MODE, CLASS_CANNOT_CHANGE_MODE_P): * pa32-regs.h (CLASS_CANNOT_CHANGE_MODE, CLASS_CANNOT_CHANGE_MODE_P):

View File

@ -779,24 +779,17 @@
; movti instruction pattern(s). ; movti instruction pattern(s).
; ;
(define_insn "*movti_ss"
[(set (match_operand:TI 0 "s_operand" "=Q")
(match_operand:TI 1 "s_imm_operand" "Q"))]
""
"mvc\\t%O0(16,%R0),%1"
[(set_attr "op_type" "SS")
(set_attr "atype" "mem")])
(define_insn "movti" (define_insn "movti"
[(set (match_operand:TI 0 "nonimmediate_operand" "=d,Q,d,m") [(set (match_operand:TI 0 "nonimmediate_operand" "=d,Q,d,m,Q")
(match_operand:TI 1 "general_operand" "Q,d,dKm,d"))] (match_operand:TI 1 "general_operand" "Q,d,dKm,d,Q"))]
"TARGET_64BIT" "TARGET_64BIT"
"@ "@
lmg\\t%0,%N0,%1 lmg\\t%0,%N0,%1
stmg\\t%1,%N1,%0 stmg\\t%1,%N1,%0
# #
#" #
[(set_attr "op_type" "RSE,RSE,NN,NN") mvc\\t%O0(16,%R0),%1"
[(set_attr "op_type" "RSE,RSE,NN,NN,SS")
(set_attr "atype" "mem")]) (set_attr "atype" "mem")])
(define_split (define_split
@ -913,17 +906,9 @@
(set_attr "atype" "reg") (set_attr "atype" "reg")
(set_attr "type" "la")]) (set_attr "type" "la")])
(define_insn "*movdi_ss"
[(set (match_operand:DI 0 "s_operand" "=Q")
(match_operand:DI 1 "s_imm_operand" "Q"))]
""
"mvc\\t%O0(8,%R0),%1"
[(set_attr "op_type" "SS")
(set_attr "atype" "mem")])
(define_insn "*movdi_64" (define_insn "*movdi_64"
[(set (match_operand:DI 0 "nonimmediate_operand" "=d,d,m,!*f,!*f,!m") [(set (match_operand:DI 0 "nonimmediate_operand" "=d,d,m,!*f,!*f,!m,Q")
(match_operand:DI 1 "general_operand" "d,m,d,*f,m,*f"))] (match_operand:DI 1 "general_operand" "d,m,d,*f,m,*f,Q"))]
"TARGET_64BIT" "TARGET_64BIT"
"@ "@
lgr\\t%0,%1 lgr\\t%0,%1
@ -931,13 +916,14 @@
stg\\t%1,%0 stg\\t%1,%0
ldr\\t%0,%1 ldr\\t%0,%1
ld\\t%0,%1 ld\\t%0,%1
std\\t%1,%0" std\\t%1,%0
[(set_attr "op_type" "RR,RXE,RXE,RR,RX,RX") mvc\\t%O0(8,%R0),%1"
(set_attr "atype" "reg,mem,mem,reg,mem,mem")]) [(set_attr "op_type" "RR,RXE,RXE,RR,RX,RX,SS")
(set_attr "atype" "reg,mem,mem,reg,mem,mem,mem")])
(define_insn "*movdi_31" (define_insn "*movdi_31"
[(set (match_operand:DI 0 "nonimmediate_operand" "=d,Q,d,m,!*f,!*f,!m") [(set (match_operand:DI 0 "nonimmediate_operand" "=d,Q,d,m,!*f,!*f,!m,Q")
(match_operand:DI 1 "general_operand" "Q,d,dKm,d,*f,m,*f"))] (match_operand:DI 1 "general_operand" "Q,d,dKm,d,*f,m,*f,Q"))]
"!TARGET_64BIT" "!TARGET_64BIT"
"@ "@
lm\\t%0,%N0,%1 lm\\t%0,%N0,%1
@ -946,9 +932,10 @@
# #
ldr\\t%0,%1 ldr\\t%0,%1
ld\\t%0,%1 ld\\t%0,%1
std\\t%1,%0" std\\t%1,%0
[(set_attr "op_type" "RS,RS,NN,NN,RR,RX,RX") mvc\\t%O0(8,%R0),%1"
(set_attr "atype" "mem,mem,*,*,reg,mem,mem")]) [(set_attr "op_type" "RS,RS,NN,NN,RR,RX,RX,SS")
(set_attr "atype" "mem,mem,*,*,reg,mem,mem,mem")])
(define_split (define_split
[(set (match_operand:DI 0 "nonimmediate_operand" "") [(set (match_operand:DI 0 "nonimmediate_operand" "")
@ -1066,17 +1053,9 @@
}" }"
[(set_attr "op_type" "RI")]) [(set_attr "op_type" "RI")])
(define_insn "*movsi_ss"
[(set (match_operand:SI 0 "s_operand" "=Q")
(match_operand:SI 1 "s_imm_operand" "Q"))]
""
"mvc\\t%O0(4,%R0),%1"
[(set_attr "op_type" "SS")
(set_attr "atype" "mem")])
(define_insn "*movsi" (define_insn "*movsi"
[(set (match_operand:SI 0 "nonimmediate_operand" "=d,d,m,!*f,!*f,!m") [(set (match_operand:SI 0 "nonimmediate_operand" "=d,d,m,!*f,!*f,!m,Q")
(match_operand:SI 1 "general_operand" "d,m,d,*f,m,*f"))] (match_operand:SI 1 "general_operand" "d,m,d,*f,m,*f,Q"))]
"" ""
"@ "@
lr\\t%0,%1 lr\\t%0,%1
@ -1084,9 +1063,10 @@
st\\t%1,%0 st\\t%1,%0
ler\\t%0,%1 ler\\t%0,%1
le\\t%0,%1 le\\t%0,%1
ste\\t%1,%0" ste\\t%1,%0
[(set_attr "op_type" "RR,RX,RX,RR,RX,RX") mvc\\t%O0(4,%R0),%1"
(set_attr "atype" "reg,mem,mem,reg,mem,mem")]) [(set_attr "op_type" "RR,RX,RX,RR,RX,RX,SS")
(set_attr "atype" "reg,mem,mem,reg,mem,mem,mem")])
; ;
@ -1094,16 +1074,17 @@
; ;
(define_insn "movhi" (define_insn "movhi"
[(set (match_operand:HI 0 "nonimmediate_operand" "=d,d,d,m") [(set (match_operand:HI 0 "nonimmediate_operand" "=d,d,d,m,Q")
(match_operand:HI 1 "general_operand" "d,n,m,d"))] (match_operand:HI 1 "general_operand" "d,n,m,d,Q"))]
"" ""
"@ "@
lr\\t%0,%1 lr\\t%0,%1
lhi\\t%0,%h1 lhi\\t%0,%h1
lh\\t%0,%1 lh\\t%0,%1
sth\\t%1,%0" sth\\t%1,%0
[(set_attr "op_type" "RR,RI,RX,RX") mvc\\t%O0(2,%R0),%1"
(set_attr "atype" "reg,reg,mem,mem")]) [(set_attr "op_type" "RR,RI,RX,RX,SS")
(set_attr "atype" "reg,reg,mem,mem,mem")])
; ;
@ -1111,31 +1092,33 @@
; ;
(define_insn "movqi_64" (define_insn "movqi_64"
[(set (match_operand:QI 0 "nonimmediate_operand" "=d,d,d,m,Q") [(set (match_operand:QI 0 "nonimmediate_operand" "=d,d,d,m,Q,Q")
(match_operand:QI 1 "general_operand" "d,n,m,d,n"))] (match_operand:QI 1 "general_operand" "d,n,m,d,n,Q"))]
"TARGET_64BIT" "TARGET_64BIT"
"@ "@
lr\\t%0,%1 lr\\t%0,%1
lhi\\t%0,%b1 lhi\\t%0,%b1
llgc\\t%0,%1 llgc\\t%0,%1
stc\\t%1,%0 stc\\t%1,%0
mvi\\t%0,%b1" mvi\\t%0,%b1
[(set_attr "op_type" "RR,RI,RXE,RX,SI") mvc\\t%O0(1,%R0),%1"
(set_attr "atype" "reg,reg,mem,mem,mem")]) [(set_attr "op_type" "RR,RI,RXE,RX,SI,SS")
(set_attr "atype" "reg,reg,mem,mem,mem,mem")])
(define_insn "movqi" (define_insn "movqi"
[(set (match_operand:QI 0 "nonimmediate_operand" "=d,d,d,m,Q") [(set (match_operand:QI 0 "nonimmediate_operand" "=d,d,d,m,Q,Q")
(match_operand:QI 1 "general_operand" "d,n,m,d,n"))] (match_operand:QI 1 "general_operand" "d,n,m,d,n,Q"))]
"" ""
"@ "@
lr\\t%0,%1 lr\\t%0,%1
lhi\\t%0,%b1 lhi\\t%0,%b1
ic\\t%0,%1 ic\\t%0,%1
stc\\t%1,%0 stc\\t%1,%0
mvi\\t%0,%b1" mvi\\t%0,%b1
[(set_attr "op_type" "RR,RI,RX,RX,SI") mvc\\t%O0(1,%R0),%1"
(set_attr "atype" "reg,reg,mem,mem,mem")]) [(set_attr "op_type" "RR,RI,RX,RX,SI,SS")
(set_attr "atype" "reg,reg,mem,mem,mem,mem")])
; ;
@ -1196,17 +1179,9 @@
operands[1] = force_const_mem (DFmode, operands[1]); operands[1] = force_const_mem (DFmode, operands[1]);
}") }")
(define_insn "*movdf_ss"
[(set (match_operand:DF 0 "s_operand" "=Q")
(match_operand:DF 1 "s_imm_operand" "Q"))]
""
"mvc\\t%O0(8,%R0),%1"
[(set_attr "op_type" "SS")
(set_attr "atype" "mem")])
(define_insn "*movdf_64" (define_insn "*movdf_64"
[(set (match_operand:DF 0 "nonimmediate_operand" "=f,f,m,d,d,m") [(set (match_operand:DF 0 "nonimmediate_operand" "=f,f,m,d,d,m,Q")
(match_operand:DF 1 "general_operand" "f,m,f,d,m,d"))] (match_operand:DF 1 "general_operand" "f,m,f,d,m,d,Q"))]
"TARGET_64BIT" "TARGET_64BIT"
"@ "@
ldr\\t%0,%1 ldr\\t%0,%1
@ -1214,13 +1189,14 @@
std\\t%1,%0 std\\t%1,%0
lgr\\t%0,%1 lgr\\t%0,%1
lg\\t%0,%1 lg\\t%0,%1
stg\\t%1,%0" stg\\t%1,%0
[(set_attr "op_type" "RR,RX,RX,RR,RXE,RXE") mvc\\t%O0(8,%R0),%1"
(set_attr "atype" "reg,mem,mem,reg,mem,mem")]) [(set_attr "op_type" "RR,RX,RX,RR,RXE,RXE,SS")
(set_attr "atype" "reg,mem,mem,reg,mem,mem,mem")])
(define_insn "*movdf_31" (define_insn "*movdf_31"
[(set (match_operand:DF 0 "nonimmediate_operand" "=f,f,m,d,Q,d,m") [(set (match_operand:DF 0 "nonimmediate_operand" "=f,f,m,d,Q,d,m,Q")
(match_operand:DF 1 "general_operand" "f,m,f,Q,d,dKm,d"))] (match_operand:DF 1 "general_operand" "f,m,f,Q,d,dKm,d,Q"))]
"!TARGET_64BIT" "!TARGET_64BIT"
"@ "@
ldr\\t%0,%1 ldr\\t%0,%1
@ -1229,9 +1205,10 @@
lm\\t%0,%N0,%1 lm\\t%0,%N0,%1
stm\\t%1,%N1,%0 stm\\t%1,%N1,%0
# #
#" #
[(set_attr "op_type" "RR,RX,RX,RS,RS,NN,NN") mvc\\t%O0(8,%R0),%1"
(set_attr "atype" "reg,mem,mem,mem,mem,*,*")]) [(set_attr "op_type" "RR,RX,RX,RS,RS,NN,NN,SS")
(set_attr "atype" "reg,mem,mem,mem,mem,*,*,mem")])
(define_split (define_split
[(set (match_operand:DF 0 "nonimmediate_operand" "") [(set (match_operand:DF 0 "nonimmediate_operand" "")
@ -1299,17 +1276,9 @@
operands[1] = force_const_mem (SFmode, operands[1]); operands[1] = force_const_mem (SFmode, operands[1]);
}") }")
(define_insn "*movsf_ss"
[(set (match_operand:SF 0 "s_operand" "=Q")
(match_operand:SF 1 "s_imm_operand" "Q"))]
""
"mvc\\t%O0(4,%R0),%1"
[(set_attr "op_type" "SS")
(set_attr "atype" "mem")])
(define_insn "*movsf" (define_insn "*movsf"
[(set (match_operand:SF 0 "nonimmediate_operand" "=f,f,m,d,d,m") [(set (match_operand:SF 0 "nonimmediate_operand" "=f,f,m,d,d,m,Q")
(match_operand:SF 1 "general_operand" "f,m,f,d,m,d"))] (match_operand:SF 1 "general_operand" "f,m,f,d,m,d,Q"))]
"" ""
"@ "@
ler\\t%0,%1 ler\\t%0,%1
@ -1317,9 +1286,10 @@
ste\\t%1,%0 ste\\t%1,%0
lr\\t%0,%1 lr\\t%0,%1
l\\t%0,%1 l\\t%0,%1
st\\t%1,%0" st\\t%1,%0
[(set_attr "op_type" "RR,RX,RX,RR,RX,RX") mvc\\t%O0(4,%R0),%1"
(set_attr "atype" "reg,mem,mem,reg,mem,mem")]) [(set_attr "op_type" "RR,RX,RX,RR,RX,RX,SS")
(set_attr "atype" "reg,mem,mem,reg,mem,mem,mem")])
; ;
; load_multiple pattern(s). ; load_multiple pattern(s).