Viewing file: bics_3.c (1.17 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do run } */ /* { dg-options "-O2 --save-temps" } */
extern void abort (void);
int __attribute__ ((noinline)) bics_si_test (int a, int b) { if (a & ~b) return 1; else return 0; }
int __attribute__ ((noinline)) bics_si_test2 (int a, int b) { if (a & ~ (b << 2)) return 1; else return 0; }
typedef long long s64;
int __attribute__ ((noinline)) bics_di_test (s64 a, s64 b) { if (a & ~b) return 1; else return 0; }
int __attribute__ ((noinline)) bics_di_test2 (s64 a, s64 b) { if (a & ~(b << 2)) return 1; else return 0; }
int main (void) { int a = 5; int b = 5; int c = 20; s64 d = 5; s64 e = 5; s64 f = 20; if (bics_si_test (a, b)) abort (); if (bics_si_test2 (c, b)) abort (); if (bics_di_test (d, e)) abort (); if (bics_di_test2 (f, e)) abort (); return 0; }
/* { dg-final { scan-assembler-times "bics\twzr, w\[0-9\]+, w\[0-9\]+" 2 } } */ /* { dg-final { scan-assembler-times "bics\twzr, w\[0-9\]+, w\[0-9\]+, lsl 2" 1 } } */ /* { dg-final { scan-assembler-times "bics\txzr, x\[0-9\]+, x\[0-9\]+" 2 } } */ /* { dg-final { scan-assembler-times "bics\txzr, x\[0-9\]+, x\[0-9\]+, lsl 2" 1 } } */
|