1  /* { dg-do compile } */
       2  
       3  void ice_mult32 (int x)
       4  {
       5    register long reg __asm ("22");
       6    __asm volatile (" " :: "r" (reg = 0x12345 * x));
       7  }
       8  
       9  void ice_mult24 (int x)
      10  {
      11    register __int24 reg __asm ("20");
      12    __asm volatile (" " :: "r" (reg = 0x12345 * x));
      13  }
      14  
      15  void ice_sh24 (__int24 x)
      16  {
      17    register __int24 reg __asm ("20");
      18    __asm volatile (" " :: "r" (reg = x << 3));
      19  }
      20  
      21  void ice_sh24b (__int24 x)
      22  {
      23    register __int24 reg __asm ("20");
      24    __asm volatile (" " :: "r" (reg = x << 22));
      25  }
      26  
      27  void ice_s16s16 (int x)
      28  {
      29    register long reg __asm ("20");
      30    __asm volatile (" " :: "r" (reg = (long) x*x));
      31  }
      32  
      33  void ice_u16s16 (int x)
      34  {
      35    register long reg __asm ("20");
      36    __asm volatile (" " :: "r" (reg = (long) x*0x1234u));
      37  }