re PR target/57264 (cld not emitted when string instructions used, and '-mcld' on command line)
PR target/57264 Backport from mainline 2013-01-22 Jakub Jelinek <jakub@redhat.com> PR target/55686 * config/i386/i386.md (UNSPEC_STOS): New. (strset_singleop, *strsetdi_rex_1, *strsetsi_1, *strsethi_1, *strsetqi_1): Add UNSPEC_STOS. testsuite/ChangeLog: PR target/57264 * gcc.target/i386/pr57264.c: New test. From-SVN: r198837
This commit is contained in:
parent
d7f48e4d08
commit
ad02b21dea
|
@ -1,3 +1,14 @@
|
|||
2013-05-13 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/57264
|
||||
Backport from mainline
|
||||
2013-01-22 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/55686
|
||||
* config/i386/i386.md (UNSPEC_STOS): New.
|
||||
(strset_singleop, *strsetdi_rex_1, *strsetsi_1, *strsethi_1,
|
||||
*strsetqi_1): Add UNSPEC_STOS.
|
||||
|
||||
2013-05-10 Joey Ye <joey.ye@arm.com>
|
||||
|
||||
Backport from mainline
|
||||
|
|
|
@ -109,6 +109,7 @@
|
|||
UNSPEC_CALL_NEEDS_VZEROUPPER
|
||||
UNSPEC_PAUSE
|
||||
UNSPEC_LEA_ADDR
|
||||
UNSPEC_STOS
|
||||
|
||||
;; For SSE/MMX support:
|
||||
UNSPEC_FIX_NOTRUNC
|
||||
|
@ -15912,7 +15913,8 @@
|
|||
[(parallel [(set (match_operand 1 "memory_operand" "")
|
||||
(match_operand 2 "register_operand" ""))
|
||||
(set (match_operand 0 "register_operand" "")
|
||||
(match_operand 3 "" ""))])]
|
||||
(match_operand 3 "" ""))
|
||||
(unspec [(const_int 0)] UNSPEC_STOS)])]
|
||||
""
|
||||
"ix86_current_function_needs_cld = 1;")
|
||||
|
||||
|
@ -15921,7 +15923,8 @@
|
|||
(match_operand:DI 2 "register_operand" "a"))
|
||||
(set (match_operand:DI 0 "register_operand" "=D")
|
||||
(plus:DI (match_dup 1)
|
||||
(const_int 8)))]
|
||||
(const_int 8)))
|
||||
(unspec [(const_int 0)] UNSPEC_STOS)]
|
||||
"TARGET_64BIT
|
||||
&& !(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
|
||||
"stosq"
|
||||
|
@ -15934,7 +15937,8 @@
|
|||
(match_operand:SI 2 "register_operand" "a"))
|
||||
(set (match_operand:P 0 "register_operand" "=D")
|
||||
(plus:P (match_dup 1)
|
||||
(const_int 4)))]
|
||||
(const_int 4)))
|
||||
(unspec [(const_int 0)] UNSPEC_STOS)]
|
||||
"!(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
|
||||
"stos{l|d}"
|
||||
[(set_attr "type" "str")
|
||||
|
@ -15946,7 +15950,8 @@
|
|||
(match_operand:HI 2 "register_operand" "a"))
|
||||
(set (match_operand:P 0 "register_operand" "=D")
|
||||
(plus:P (match_dup 1)
|
||||
(const_int 2)))]
|
||||
(const_int 2)))
|
||||
(unspec [(const_int 0)] UNSPEC_STOS)]
|
||||
"!(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
|
||||
"stosw"
|
||||
[(set_attr "type" "str")
|
||||
|
@ -15958,7 +15963,8 @@
|
|||
(match_operand:QI 2 "register_operand" "a"))
|
||||
(set (match_operand:P 0 "register_operand" "=D")
|
||||
(plus:P (match_dup 1)
|
||||
(const_int 1)))]
|
||||
(const_int 1)))
|
||||
(unspec [(const_int 0)] UNSPEC_STOS)]
|
||||
"!(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
|
||||
"stosb"
|
||||
[(set_attr "type" "str")
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2013-05-13 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/57264
|
||||
* gcc.target/i386/pr57264.c: New test.
|
||||
|
||||
2013-05-07 Michael Meissner <meissner@linux.vnet.ibm.com>
|
||||
|
||||
Backport from trunk
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1 -mcld" } */
|
||||
|
||||
void test (int x, int **pp)
|
||||
{
|
||||
while (x)
|
||||
{
|
||||
int *ip = *pp;
|
||||
int *op = *pp;
|
||||
while (*ip)
|
||||
{
|
||||
int v = *ip++;
|
||||
*op++ = v + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler-not "stosl" } } */
|
Loading…
Reference in New Issue