aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/arm/acle/sat_no_smlatb.c
blob: e0c53ed4dc9c9a2ff580d03a434ff34005db9ce6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* { dg-do compile } */
/* { dg-require-effective-target arm_dsp } */

/* Ensure the smlatb doesn't get generated when reading the Q flag
   from ACLE.  */

#include <arm_acle.h>

int
foo (int x, int in, int32_t c)
{
  short a = in & 0xffff;
  short b = (in & 0xffff0000) >> 16;
  
  int res =  x + b * a + __ssat (c, 24);
  return res + __saturation_occurred ();
}

/* { dg-final { scan-assembler-not "smlatb\\t" } } */