(root)/
gcc-13.2.0/
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  }