Viewing file: adc-2.c (3.51 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do run } */ /* { dg-options "-O2" } */
extern void abort (void);
/* This series of tests looks for the optimization: x = (a >= b) + c + d => cmp a, b adc x, c, d */
unsigned long ltu_add (unsigned long a, unsigned long b, unsigned long c, unsigned long d) { return (a < b) + c + d; }
unsigned long gtu_add (unsigned long a, unsigned long b, unsigned long c, unsigned long d) { return (a > b) + c + d; }
unsigned long leu_add (unsigned long a, unsigned long b, unsigned long c, unsigned long d) { return (a <= b) + c + d; }
unsigned long geu_add (unsigned long a, unsigned long b, unsigned long c, unsigned long d) { return (a >= b) + c + d; }
unsigned long equ_add (unsigned long a, unsigned long b, unsigned long c, unsigned long d) { return (a == b) + c + d; }
unsigned long neu_add (unsigned long a, unsigned long b, unsigned long c, unsigned long d) { return (a != b) + c + d; }
long lt_add ( long a, long b, long c, long d) { return (a < b) + c + d; }
long gt_add ( long a, long b, long c, long d) { return (a > b) + c + d; }
long le_add ( long a, long b, long c, long d) { return (a <= b) + c + d; }
long ge_add ( long a, long b, long c, long d) { return (a >= b) + c + d; }
long eq_add ( long a, long b, long c, long d) { return (a == b) + c + d; }
long ne_add ( long a, long b, long c, long d) { return (a != b) + c + d; }
int main () { if (ltu_add(1,2,3,4) != 8) { abort(); }
if (ltu_add(2,2,3,4) != 7) { abort(); }
if (ltu_add(3,2,3,4) != 7) { abort(); }
if (gtu_add(2,1,3,4) != 8) { abort(); }
if (gtu_add(2,2,3,4) != 7) { abort(); }
if (gtu_add(1,2,3,4) != 7) { abort(); }
if (leu_add(1,2,3,4) != 8) { abort(); }
if (leu_add(2,2,3,4) != 8) { abort(); }
if (leu_add(3,2,3,4) != 7) { abort(); }
if (leu_add(2,1,3,4) != 7) { abort(); }
if (geu_add(2,1,3,4) != 8) { abort(); } if (geu_add(2,2,3,4) != 8) { abort(); }
if (geu_add(1,2,3,4) != 7) { abort(); }
if (equ_add(1,2,3,4) != 7) { abort(); }
if (equ_add(2,2,3,4) != 8) { abort(); }
if (equ_add(3,2,3,4) != 7) { abort(); }
if (neu_add(1,2,3,4) != 8) { abort(); }
if (neu_add(2,2,3,4) != 7) { abort(); }
if (neu_add(3,2,3,4) != 8) { abort(); }
if (lt_add(1,2,3,4) != 8) { abort(); }
if (lt_add(2,2,3,4) != 7) { abort(); }
if (lt_add(3,2,3,4) != 7) { abort(); }
if (gt_add(2,1,3,4) != 8) { abort(); }
if (gt_add(2,2,3,4) != 7) { abort(); }
if (gt_add(1,2,3,4) != 7) { abort(); }
if (le_add(1,2,3,4) != 8) { abort(); }
if (le_add(2,2,3,4) != 8) { abort(); }
if (le_add(3,2,3,4) != 7) { abort(); }
if (le_add(2,1,3,4) != 7) { abort(); }
if (ge_add(2,1,3,4) != 8) { abort(); } if (ge_add(2,2,3,4) != 8) { abort(); }
if (ge_add(1,2,3,4) != 7) { abort(); }
if (eq_add(1,2,3,4) != 7) { abort(); }
if (eq_add(2,2,3,4) != 8) { abort(); }
if (eq_add(3,2,3,4) != 7) { abort(); }
if (ne_add(1,2,3,4) != 8) { abort(); }
if (ne_add(2,2,3,4) != 7) { abort(); }
if (ne_add(3,2,3,4) != 8) { abort(); } return 0; }
|