Commit 5665e398 by Ulrich Weigand Committed by Ulrich Weigand

s390.md ("divmodtidi3"): Use canonical RTL.

	* config/s390/s390.md ("divmodtidi3"): Use canonical RTL.
	("divmodtisi3"): Likewise.
	("udivmoddi4", "udivmodtidi3"): Likewise.
	("divmodsi4", "divmoddisi3"): Likewise.
	("udivmodsi4", "udivmoddisi3"): Likewise.
	("udivsi3", "umodsi3"): Likewise.

From-SVN: r78057
parent d76e8439
2004-02-18 Ulrich Weigand <uweigand@de.ibm.com> 2004-02-18 Ulrich Weigand <uweigand@de.ibm.com>
* config/s390/s390.md ("divmodtidi3"): Use canonical RTL.
("divmodtisi3"): Likewise.
("udivmoddi4", "udivmodtidi3"): Likewise.
("divmodsi4", "divmoddisi3"): Likewise.
("udivmodsi4", "udivmoddisi3"): Likewise.
("udivsi3", "umodsi3"): Likewise.
2004-02-18 Ulrich Weigand <uweigand@de.ibm.com>
* config/s390/s390.c (s390_mainpool_start): Delete the main pool * config/s390/s390.c (s390_mainpool_start): Delete the main pool
placeholder insn when chunkifying the pool. placeholder insn when chunkifying the pool.
......
...@@ -4575,14 +4575,12 @@ ...@@ -4575,14 +4575,12 @@
(define_insn "divmodtidi3" (define_insn "divmodtidi3"
[(set (match_operand:TI 0 "register_operand" "=d,d") [(set (match_operand:TI 0 "register_operand" "=d,d")
(ior:TI (ior:TI
(zero_extend:TI
(div:DI (match_operand:DI 1 "register_operand" "0,0")
(match_operand:DI 2 "general_operand" "d,m")))
(ashift:TI (ashift:TI
(zero_extend:TI (zero_extend:TI
(mod:DI (match_dup 1) (mod:DI (match_operand:DI 1 "register_operand" "0,0")
(match_dup 2))) (match_operand:DI 2 "general_operand" "d,m")))
(const_int 64))))] (const_int 64))
(zero_extend:TI (div:DI (match_dup 1) (match_dup 2)))))]
"TARGET_64BIT" "TARGET_64BIT"
"@ "@
dsgr\t%0,%2 dsgr\t%0,%2
...@@ -4593,14 +4591,14 @@ ...@@ -4593,14 +4591,14 @@
(define_insn "divmodtisi3" (define_insn "divmodtisi3"
[(set (match_operand:TI 0 "register_operand" "=d,d") [(set (match_operand:TI 0 "register_operand" "=d,d")
(ior:TI (ior:TI
(zero_extend:TI
(div:DI (match_operand:DI 1 "register_operand" "0,0")
(sign_extend:DI (match_operand:SI 2 "nonimmediate_operand" "d,m"))))
(ashift:TI (ashift:TI
(zero_extend:TI (zero_extend:TI
(mod:DI (match_dup 1) (mod:DI (match_operand:DI 1 "register_operand" "0,0")
(sign_extend:DI (match_dup 2)))) (sign_extend:DI
(const_int 64))))] (match_operand:SI 2 "nonimmediate_operand" "d,m"))))
(const_int 64))
(zero_extend:TI
(div:DI (match_dup 1) (sign_extend:DI (match_dup 2))))))]
"TARGET_64BIT" "TARGET_64BIT"
"@ "@
dsgfr\t%0,%2 dsgfr\t%0,%2
...@@ -4626,10 +4624,10 @@ ...@@ -4626,10 +4624,10 @@
div_equal = gen_rtx_UDIV (DImode, operands[1], operands[2]); div_equal = gen_rtx_UDIV (DImode, operands[1], operands[2]);
mod_equal = gen_rtx_UMOD (DImode, operands[1], operands[2]); mod_equal = gen_rtx_UMOD (DImode, operands[1], operands[2]);
equal = gen_rtx_IOR (TImode, equal = gen_rtx_IOR (TImode,
gen_rtx_ZERO_EXTEND (TImode, div_equal),
gen_rtx_ASHIFT (TImode, gen_rtx_ASHIFT (TImode,
gen_rtx_ZERO_EXTEND (TImode, mod_equal), gen_rtx_ZERO_EXTEND (TImode, mod_equal),
GEN_INT (64))); GEN_INT (64)),
gen_rtx_ZERO_EXTEND (TImode, div_equal));
operands[4] = gen_reg_rtx(TImode); operands[4] = gen_reg_rtx(TImode);
emit_insn (gen_rtx_CLOBBER (VOIDmode, operands[4])); emit_insn (gen_rtx_CLOBBER (VOIDmode, operands[4]));
...@@ -4652,16 +4650,17 @@ ...@@ -4652,16 +4650,17 @@
(define_insn "udivmodtidi3" (define_insn "udivmodtidi3"
[(set (match_operand:TI 0 "register_operand" "=d,d") [(set (match_operand:TI 0 "register_operand" "=d,d")
(ior:TI (zero_extend:TI (ior:TI
(truncate:DI (ashift:TI
(udiv:TI (match_operand:TI 1 "register_operand" "0,0") (zero_extend:TI
(zero_extend:TI (truncate:DI
(match_operand:DI 2 "nonimmediate_operand" "d,m"))))) (umod:TI (match_operand:TI 1 "register_operand" "0,0")
(ashift:TI (zero_extend:TI
(zero_extend:TI (match_operand:DI 2 "nonimmediate_operand" "d,m")))))
(truncate:DI (const_int 64))
(umod:TI (match_dup 1) (zero_extend:TI (match_dup 2))))) (zero_extend:TI
(const_int 64))))] (truncate:DI
(udiv:TI (match_dup 1) (zero_extend:TI (match_dup 2)))))))]
"TARGET_64BIT" "TARGET_64BIT"
"@ "@
dlgr\t%0,%2 dlgr\t%0,%2
...@@ -4687,10 +4686,10 @@ ...@@ -4687,10 +4686,10 @@
div_equal = gen_rtx_DIV (SImode, operands[1], operands[2]); div_equal = gen_rtx_DIV (SImode, operands[1], operands[2]);
mod_equal = gen_rtx_MOD (SImode, operands[1], operands[2]); mod_equal = gen_rtx_MOD (SImode, operands[1], operands[2]);
equal = gen_rtx_IOR (DImode, equal = gen_rtx_IOR (DImode,
gen_rtx_ZERO_EXTEND (DImode, div_equal),
gen_rtx_ASHIFT (DImode, gen_rtx_ASHIFT (DImode,
gen_rtx_ZERO_EXTEND (DImode, mod_equal), gen_rtx_ZERO_EXTEND (DImode, mod_equal),
GEN_INT (32))); GEN_INT (32)),
gen_rtx_ZERO_EXTEND (DImode, div_equal));
operands[4] = gen_reg_rtx(DImode); operands[4] = gen_reg_rtx(DImode);
emit_insn (gen_extendsidi2 (operands[4], operands[1])); emit_insn (gen_extendsidi2 (operands[4], operands[1]));
...@@ -4711,16 +4710,17 @@ ...@@ -4711,16 +4710,17 @@
(define_insn "divmoddisi3" (define_insn "divmoddisi3"
[(set (match_operand:DI 0 "register_operand" "=d,d") [(set (match_operand:DI 0 "register_operand" "=d,d")
(ior:DI (zero_extend:DI (ior:DI
(truncate:SI (ashift:DI
(div:DI (match_operand:DI 1 "register_operand" "0,0") (zero_extend:DI
(sign_extend:DI (truncate:SI
(match_operand:SI 2 "nonimmediate_operand" "d,R"))))) (mod:DI (match_operand:DI 1 "register_operand" "0,0")
(ashift:DI (sign_extend:DI
(zero_extend:DI (match_operand:SI 2 "nonimmediate_operand" "d,R")))))
(truncate:SI (const_int 32))
(mod:DI (match_dup 1) (sign_extend:SI (match_dup 2))))) (zero_extend:DI
(const_int 32))))] (truncate:SI
(div:DI (match_dup 1) (sign_extend:DI (match_dup 2)))))))]
"!TARGET_64BIT" "!TARGET_64BIT"
"@ "@
dr\t%0,%2 dr\t%0,%2
...@@ -4746,10 +4746,10 @@ ...@@ -4746,10 +4746,10 @@
div_equal = gen_rtx_UDIV (SImode, operands[1], operands[2]); div_equal = gen_rtx_UDIV (SImode, operands[1], operands[2]);
mod_equal = gen_rtx_UMOD (SImode, operands[1], operands[2]); mod_equal = gen_rtx_UMOD (SImode, operands[1], operands[2]);
equal = gen_rtx_IOR (DImode, equal = gen_rtx_IOR (DImode,
gen_rtx_ZERO_EXTEND (DImode, div_equal),
gen_rtx_ASHIFT (DImode, gen_rtx_ASHIFT (DImode,
gen_rtx_ZERO_EXTEND (DImode, mod_equal), gen_rtx_ZERO_EXTEND (DImode, mod_equal),
GEN_INT (32))); GEN_INT (32)),
gen_rtx_ZERO_EXTEND (DImode, div_equal));
operands[4] = gen_reg_rtx(DImode); operands[4] = gen_reg_rtx(DImode);
emit_insn (gen_rtx_CLOBBER (VOIDmode, operands[4])); emit_insn (gen_rtx_CLOBBER (VOIDmode, operands[4]));
...@@ -4772,16 +4772,17 @@ ...@@ -4772,16 +4772,17 @@
(define_insn "udivmoddisi3" (define_insn "udivmoddisi3"
[(set (match_operand:DI 0 "register_operand" "=d,d") [(set (match_operand:DI 0 "register_operand" "=d,d")
(ior:DI (zero_extend:DI (ior:DI
(truncate:SI (ashift:DI
(udiv:DI (match_operand:DI 1 "register_operand" "0,0") (zero_extend:DI
(zero_extend:DI (truncate:SI
(match_operand:SI 2 "nonimmediate_operand" "d,m"))))) (umod:DI (match_operand:DI 1 "register_operand" "0,0")
(ashift:DI (zero_extend:DI
(zero_extend:DI (match_operand:SI 2 "nonimmediate_operand" "d,m")))))
(truncate:SI (const_int 32))
(umod:DI (match_dup 1) (zero_extend:DI (match_dup 2))))) (zero_extend:DI
(const_int 32))))] (truncate:SI
(udiv:DI (match_dup 1) (zero_extend:DI (match_dup 2)))))))]
"!TARGET_64BIT && TARGET_CPU_ZARCH" "!TARGET_64BIT && TARGET_CPU_ZARCH"
"@ "@
dlr\t%0,%2 dlr\t%0,%2
...@@ -4801,10 +4802,10 @@ ...@@ -4801,10 +4802,10 @@
udiv_equal = gen_rtx_UDIV (SImode, operands[1], operands[2]); udiv_equal = gen_rtx_UDIV (SImode, operands[1], operands[2]);
umod_equal = gen_rtx_UMOD (SImode, operands[1], operands[2]); umod_equal = gen_rtx_UMOD (SImode, operands[1], operands[2]);
equal = gen_rtx_IOR (DImode, equal = gen_rtx_IOR (DImode,
gen_rtx_ZERO_EXTEND (DImode, udiv_equal),
gen_rtx_ASHIFT (DImode, gen_rtx_ASHIFT (DImode,
gen_rtx_ZERO_EXTEND (DImode, umod_equal), gen_rtx_ZERO_EXTEND (DImode, umod_equal),
GEN_INT (32))); GEN_INT (32)),
gen_rtx_ZERO_EXTEND (DImode, udiv_equal));
operands[3] = gen_reg_rtx (DImode); operands[3] = gen_reg_rtx (DImode);
...@@ -4892,10 +4893,10 @@ ...@@ -4892,10 +4893,10 @@
udiv_equal = gen_rtx_UDIV (SImode, operands[1], operands[2]); udiv_equal = gen_rtx_UDIV (SImode, operands[1], operands[2]);
umod_equal = gen_rtx_UMOD (SImode, operands[1], operands[2]); umod_equal = gen_rtx_UMOD (SImode, operands[1], operands[2]);
equal = gen_rtx_IOR (DImode, equal = gen_rtx_IOR (DImode,
gen_rtx_ZERO_EXTEND (DImode, udiv_equal),
gen_rtx_ASHIFT (DImode, gen_rtx_ASHIFT (DImode,
gen_rtx_ZERO_EXTEND (DImode, umod_equal), gen_rtx_ZERO_EXTEND (DImode, umod_equal),
GEN_INT (32))); GEN_INT (32)),
gen_rtx_ZERO_EXTEND (DImode, udiv_equal));
operands[3] = gen_reg_rtx (DImode); operands[3] = gen_reg_rtx (DImode);
......
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