Viewing file: neg_1.c (1.07 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do run } */ /* { dg-options "-O2 -fno-inline --save-temps" } */
extern void abort (void);
long long neg64 (long long a) { /* { dg-final { scan-assembler "neg\tx\[0-9\]+" } } */ return 0 - a; }
long long neg64_in_dreg (long long a) { /* { dg-final { scan-assembler "neg\td\[0-9\]+, d\[0-9\]+" } } */ register long long x asm ("d8") = a; register long long y asm ("d9"); asm volatile ("" : : "w" (x)); y = 0 - x; asm volatile ("" : : "w" (y)); return y; }
int neg32 (int a) { /* { dg-final { scan-assembler "neg\tw\[0-9\]+" } } */ return 0 - a; }
int neg32_in_sreg (int a) { /* { dg-final { scan-assembler "neg\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ register int x asm ("s8") = a; register int y asm ("s9"); asm volatile ("" : : "w" (x)); y = 0 - x; asm volatile ("" : : "w" (y)); return y; }
int main (void) { long long a; int b; a = 61; b = 313;
if (neg64 (a) != -61) abort ();
if (neg64_in_dreg (a) != -61) abort ();
if (neg32 (b) != -313) abort ();
if (neg32_in_sreg (b) != -313) abort ();
return 0; }
|