mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-17 20:11:06 +08:00
rs6000.md (ctz<mode>2, [...]): Tidy.
2014-09-21 Segher Boessenkool <segher@kernel.crashing.org> * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2, popcntb<mode>2, popcntd<mode>2, parity<mode>2, parity<mode>2_cmpb): Tidy. From-SVN: r215435
This commit is contained in:
parent
9f31288f44
commit
f4e0b104a6
@ -1,3 +1,9 @@
|
||||
2014-09-21 Segher Boessenkool <segher@kernel.crashing.org>
|
||||
|
||||
* config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
|
||||
popcntb<mode>2, popcntd<mode>2, parity<mode>2, parity<mode>2_cmpb):
|
||||
Tidy.
|
||||
|
||||
2014-09-21 Segher Boessenkool <segher@kernel.crashing.org>
|
||||
|
||||
* config/rs6000/rs6000.md (strlensi): Don't use subsi3 with a
|
||||
|
@ -1797,12 +1797,12 @@
|
||||
(match_dup 4)))
|
||||
(clobber (reg:GPR CA_REGNO))])]
|
||||
""
|
||||
{
|
||||
operands[2] = gen_reg_rtx (<MODE>mode);
|
||||
operands[3] = gen_reg_rtx (<MODE>mode);
|
||||
operands[4] = gen_reg_rtx (<MODE>mode);
|
||||
operands[5] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode) - 1);
|
||||
})
|
||||
{
|
||||
operands[2] = gen_reg_rtx (<MODE>mode);
|
||||
operands[3] = gen_reg_rtx (<MODE>mode);
|
||||
operands[4] = gen_reg_rtx (<MODE>mode);
|
||||
operands[5] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode) - 1);
|
||||
})
|
||||
|
||||
(define_expand "ffs<mode>2"
|
||||
[(set (match_dup 2)
|
||||
@ -1817,55 +1817,55 @@
|
||||
(match_dup 4)))
|
||||
(clobber (reg:GPR CA_REGNO))])]
|
||||
""
|
||||
{
|
||||
operands[2] = gen_reg_rtx (<MODE>mode);
|
||||
operands[3] = gen_reg_rtx (<MODE>mode);
|
||||
operands[4] = gen_reg_rtx (<MODE>mode);
|
||||
operands[5] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode));
|
||||
})
|
||||
{
|
||||
operands[2] = gen_reg_rtx (<MODE>mode);
|
||||
operands[3] = gen_reg_rtx (<MODE>mode);
|
||||
operands[4] = gen_reg_rtx (<MODE>mode);
|
||||
operands[5] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode));
|
||||
})
|
||||
|
||||
|
||||
(define_expand "popcount<mode>2"
|
||||
[(set (match_operand:GPR 0 "gpc_reg_operand" "")
|
||||
(popcount:GPR (match_operand:GPR 1 "gpc_reg_operand" "")))]
|
||||
"TARGET_POPCNTB || TARGET_POPCNTD"
|
||||
{
|
||||
rs6000_emit_popcount (operands[0], operands[1]);
|
||||
DONE;
|
||||
})
|
||||
|
||||
(define_insn "popcntb<mode>2"
|
||||
[(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
|
||||
(unspec:GPR [(match_operand:GPR 1 "gpc_reg_operand" "r")]
|
||||
UNSPEC_POPCNTB))]
|
||||
(unspec:GPR [(match_operand:GPR 1 "gpc_reg_operand" "r")]
|
||||
UNSPEC_POPCNTB))]
|
||||
"TARGET_POPCNTB"
|
||||
"popcntb %0,%1"
|
||||
[(set_attr "length" "4")
|
||||
(set_attr "type" "popcnt")])
|
||||
[(set_attr "type" "popcnt")])
|
||||
|
||||
(define_insn "popcntd<mode>2"
|
||||
[(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
|
||||
(popcount:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")))]
|
||||
"TARGET_POPCNTD"
|
||||
"popcnt<wd> %0,%1"
|
||||
[(set_attr "length" "4")
|
||||
(set_attr "type" "popcnt")])
|
||||
[(set_attr "type" "popcnt")])
|
||||
|
||||
(define_expand "popcount<mode>2"
|
||||
|
||||
(define_expand "parity<mode>2"
|
||||
[(set (match_operand:GPR 0 "gpc_reg_operand" "")
|
||||
(popcount:GPR (match_operand:GPR 1 "gpc_reg_operand" "")))]
|
||||
"TARGET_POPCNTB || TARGET_POPCNTD"
|
||||
{
|
||||
rs6000_emit_popcount (operands[0], operands[1]);
|
||||
DONE;
|
||||
})
|
||||
(parity:GPR (match_operand:GPR 1 "gpc_reg_operand" "")))]
|
||||
"TARGET_POPCNTB"
|
||||
{
|
||||
rs6000_emit_parity (operands[0], operands[1]);
|
||||
DONE;
|
||||
})
|
||||
|
||||
(define_insn "parity<mode>2_cmpb"
|
||||
[(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
|
||||
(unspec:GPR [(match_operand:GPR 1 "gpc_reg_operand" "r")] UNSPEC_PARITY))]
|
||||
"TARGET_CMPB && TARGET_POPCNTB"
|
||||
"prty<wd> %0,%1"
|
||||
[(set_attr "length" "4")
|
||||
(set_attr "type" "popcnt")])
|
||||
[(set_attr "type" "popcnt")])
|
||||
|
||||
(define_expand "parity<mode>2"
|
||||
[(set (match_operand:GPR 0 "gpc_reg_operand" "")
|
||||
(parity:GPR (match_operand:GPR 1 "gpc_reg_operand" "")))]
|
||||
"TARGET_POPCNTB"
|
||||
{
|
||||
rs6000_emit_parity (operands[0], operands[1]);
|
||||
DONE;
|
||||
})
|
||||
|
||||
;; Since the hardware zeros the upper part of the register, save generating the
|
||||
;; AND immediate if we are converting to unsigned
|
||||
|
Loading…
x
Reference in New Issue
Block a user