diff --git a/gcc/testsuite/gcc.target/arm/wmul-5.c b/gcc/testsuite/gcc.target/arm/wmul-5.c index 9f29a81c0b8..282e007d9be 100644 --- a/gcc/testsuite/gcc.target/arm/wmul-5.c +++ b/gcc/testsuite/gcc.target/arm/wmul-5.c @@ -8,4 +8,6 @@ foo (long long a, char *b, char *c) return a + *b * *c; } -/* { dg-final { scan-assembler "umlal" } } */ +/* smlalbb after zero-extending the chars to HImode, or either signed- or + unsigned-widening multiply after extending them to SImode. */ +/* { dg-final { scan-assembler {(?:smlalbb|[us]mlal)} } } */ diff --git a/gcc/testsuite/gcc.target/arm/wmul-6.c b/gcc/testsuite/gcc.target/arm/wmul-6.c index babdaab1efd..05247e00c5e 100644 --- a/gcc/testsuite/gcc.target/arm/wmul-6.c +++ b/gcc/testsuite/gcc.target/arm/wmul-6.c @@ -8,4 +8,6 @@ foo (long long a, unsigned char *b, signed char *c) return a + (long long)*b * (long long)*c; } -/* { dg-final { scan-assembler "smlalbb" } } */ +/* After zero-extending B and sign-extending C to [HS]imode, either + signed-widening multiply will do. */ +/* { dg-final { scan-assembler {smlal(?:bb)?} } } */ diff --git a/gcc/testsuite/gcc.target/arm/wmul-7.c b/gcc/testsuite/gcc.target/arm/wmul-7.c index 2db4ad4e10d..26933c42401 100644 --- a/gcc/testsuite/gcc.target/arm/wmul-7.c +++ b/gcc/testsuite/gcc.target/arm/wmul-7.c @@ -8,4 +8,6 @@ foo (unsigned long long a, unsigned char *b, unsigned short *c) return a + *b * *c; } -/* { dg-final { scan-assembler "umlal" } } */ +/* After zero-extending both to SImode, either signed- or unsigned-widening + multiply will do. */ +/* { dg-final { scan-assembler {[us]mlal} } } */