OSDN Git Service

Support AVX for cmpss/cmpsd.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.target / i386 / 990130-1.c
1 /* { dg-do compile } */
2 /* { dg-options -O0 } */
3
4 typedef          int SItype     __attribute__ ((mode (SI)));
5 typedef          int DItype     __attribute__ ((mode (DI)));
6 typedef unsigned int USItype    __attribute__ ((mode (SI)));
7   struct DIstruct {SItype low, high;};
8 typedef union
9 {
10   struct DIstruct s;
11   DItype ll;
12 } DIunion;
13 DItype
14 __muldi3 (DItype u, DItype v)
15 {
16   DIunion w;
17   DIunion uu, vv;
18   uu.ll = u,
19   vv.ll = v;
20   w.ll = ({DIunion __w; __asm__ ("mull %3"      : "=a" ((USItype) (  __w.s.low )),      "=d" ((USItype) ( __w.s.high )) : "%0" ((USItype) (   uu.s.low  )),     "rm" ((USItype) (    vv.s.low  ))) ;    __w.ll; }) ;
21   w.s.high += ((USItype) uu.s.low * (USItype) vv.s.high
22                + (USItype) uu.s.high * (USItype) vv.s.low);
23   return w.ll;
24 }