/* Generated automatically from machmode.def and config/aarch64/aarch64-modes.def
   by genmodes.  */

#ifndef GCC_INSN_MODES_INLINE_H
#define GCC_INSN_MODES_INLINE_H

#if !defined (USED_FOR_TARGET) && GCC_VERSION >= 4001

#ifdef __cplusplus
inline __attribute__((__always_inline__))
#else
extern __inline__ __attribute__((__always_inline__, __gnu_inline__))
#endif
poly_uint16
mode_size_inline (machine_mode mode)
{
  extern poly_uint16_pod mode_size[NUM_MACHINE_MODES];
  gcc_assert (mode >= 0 && mode < NUM_MACHINE_MODES);
  switch (mode)
    {
    case E_VOIDmode: return 0;
    case E_BLKmode: return 0;
    case E_CCmode: return 4;
    case E_CCFPmode: return 4;
    case E_CCFPEmode: return 4;
    case E_CC_SWPmode: return 4;
    case E_CC_NZCmode: return 4;
    case E_CC_NZmode: return 4;
    case E_CC_Zmode: return 4;
    case E_CC_Cmode: return 4;
    case E_CC_ADCmode: return 4;
    case E_CC_Vmode: return 4;
    case E_BImode: return 1;
    case E_QImode: return 1;
    case E_HImode: return 2;
    case E_SImode: return 4;
    case E_DImode: return 8;
    case E_TImode: return 16;
    case E_OImode: return 32;
    case E_CImode: return 48;
    case E_XImode: return 64;
    case E_QQmode: return 1;
    case E_HQmode: return 2;
    case E_SQmode: return 4;
    case E_DQmode: return 8;
    case E_TQmode: return 16;
    case E_UQQmode: return 1;
    case E_UHQmode: return 2;
    case E_USQmode: return 4;
    case E_UDQmode: return 8;
    case E_UTQmode: return 16;
    case E_HAmode: return 2;
    case E_SAmode: return 4;
    case E_DAmode: return 8;
    case E_TAmode: return 16;
    case E_UHAmode: return 2;
    case E_USAmode: return 4;
    case E_UDAmode: return 8;
    case E_UTAmode: return 16;
    case E_HFmode: return 2;
    case E_BFmode: return 2;
    case E_SFmode: return 4;
    case E_DFmode: return 8;
    case E_TFmode: return 16;
    case E_SDmode: return 4;
    case E_DDmode: return 8;
    case E_TDmode: return 16;
    case E_CQImode: return 2;
    case E_CHImode: return 4;
    case E_CSImode: return 8;
    case E_CDImode: return 16;
    case E_CTImode: return 32;
    case E_COImode: return 64;
    case E_CCImode: return 96;
    case E_CXImode: return 128;
    case E_BCmode: return 4;
    case E_HCmode: return 4;
    case E_SCmode: return 8;
    case E_DCmode: return 16;
    case E_TCmode: return 32;
    case E_V8QImode: return 8;
    case E_V4HImode: return 8;
    case E_V2SImode: return 8;
    case E_V16QImode: return 16;
    case E_V8HImode: return 16;
    case E_V4SImode: return 16;
    case E_V2DImode: return 16;
    case E_VNx2TImode: return 32;
    case E_VNx3TImode: return 48;
    case E_VNx4TImode: return 64;
    case E_VNx2OImode: return 64;
    case E_V2HFmode: return 4;
    case E_V4BFmode: return 8;
    case E_V4HFmode: return 8;
    case E_V2SFmode: return 8;
    case E_V1DFmode: return 8;
    case E_V8BFmode: return 16;
    case E_V8HFmode: return 16;
    case E_V4SFmode: return 16;
    case E_V2DFmode: return 16;
    case E_VNx2BFmode: return 4;
    case E_VNx4BFmode: return 8;
    default: return mode_size[mode];
    }
}

#ifdef __cplusplus
inline __attribute__((__always_inline__))
#else
extern __inline__ __attribute__((__always_inline__, __gnu_inline__))
#endif
poly_uint16
mode_nunits_inline (machine_mode mode)
{
  extern poly_uint16_pod mode_nunits[NUM_MACHINE_MODES];
  switch (mode)
    {
    case E_VOIDmode: return 0;
    case E_BLKmode: return 0;
    case E_CCmode: return 1;
    case E_CCFPmode: return 1;
    case E_CCFPEmode: return 1;
    case E_CC_SWPmode: return 1;
    case E_CC_NZCmode: return 1;
    case E_CC_NZmode: return 1;
    case E_CC_Zmode: return 1;
    case E_CC_Cmode: return 1;
    case E_CC_ADCmode: return 1;
    case E_CC_Vmode: return 1;
    case E_BImode: return 1;
    case E_QImode: return 1;
    case E_HImode: return 1;
    case E_SImode: return 1;
    case E_DImode: return 1;
    case E_TImode: return 1;
    case E_OImode: return 1;
    case E_CImode: return 1;
    case E_XImode: return 1;
    case E_QQmode: return 1;
    case E_HQmode: return 1;
    case E_SQmode: return 1;
    case E_DQmode: return 1;
    case E_TQmode: return 1;
    case E_UQQmode: return 1;
    case E_UHQmode: return 1;
    case E_USQmode: return 1;
    case E_UDQmode: return 1;
    case E_UTQmode: return 1;
    case E_HAmode: return 1;
    case E_SAmode: return 1;
    case E_DAmode: return 1;
    case E_TAmode: return 1;
    case E_UHAmode: return 1;
    case E_USAmode: return 1;
    case E_UDAmode: return 1;
    case E_UTAmode: return 1;
    case E_HFmode: return 1;
    case E_BFmode: return 1;
    case E_SFmode: return 1;
    case E_DFmode: return 1;
    case E_TFmode: return 1;
    case E_SDmode: return 1;
    case E_DDmode: return 1;
    case E_TDmode: return 1;
    case E_CQImode: return 2;
    case E_CHImode: return 2;
    case E_CSImode: return 2;
    case E_CDImode: return 2;
    case E_CTImode: return 2;
    case E_COImode: return 2;
    case E_CCImode: return 2;
    case E_CXImode: return 2;
    case E_BCmode: return 2;
    case E_HCmode: return 2;
    case E_SCmode: return 2;
    case E_DCmode: return 2;
    case E_TCmode: return 2;
    case E_V8QImode: return 8;
    case E_V4HImode: return 4;
    case E_V2SImode: return 2;
    case E_V16QImode: return 16;
    case E_V8HImode: return 8;
    case E_V4SImode: return 4;
    case E_V2DImode: return 2;
    case E_VNx2TImode: return 2;
    case E_VNx3TImode: return 3;
    case E_VNx4TImode: return 4;
    case E_VNx2OImode: return 2;
    case E_V2HFmode: return 2;
    case E_V4BFmode: return 4;
    case E_V4HFmode: return 4;
    case E_V2SFmode: return 2;
    case E_V1DFmode: return 1;
    case E_V8BFmode: return 8;
    case E_V8HFmode: return 8;
    case E_V4SFmode: return 4;
    case E_V2DFmode: return 2;
    case E_VNx2BFmode: return 2;
    case E_VNx4BFmode: return 4;
    default: return mode_nunits[mode];
    }
}

#ifdef __cplusplus
inline __attribute__((__always_inline__))
#else
extern __inline__ __attribute__((__always_inline__, __gnu_inline__))
#endif
unsigned char
mode_inner_inline (machine_mode mode)
{
  extern const unsigned char mode_inner[NUM_MACHINE_MODES];
  gcc_assert (mode >= 0 && mode < NUM_MACHINE_MODES);
  switch (mode)
    {
    case E_VOIDmode: return E_VOIDmode;
    case E_BLKmode: return E_BLKmode;
    case E_CCmode: return E_CCmode;
    case E_CCFPmode: return E_CCFPmode;
    case E_CCFPEmode: return E_CCFPEmode;
    case E_CC_SWPmode: return E_CC_SWPmode;
    case E_CC_NZCmode: return E_CC_NZCmode;
    case E_CC_NZmode: return E_CC_NZmode;
    case E_CC_Zmode: return E_CC_Zmode;
    case E_CC_Cmode: return E_CC_Cmode;
    case E_CC_ADCmode: return E_CC_ADCmode;
    case E_CC_Vmode: return E_CC_Vmode;
    case E_BImode: return E_BImode;
    case E_QImode: return E_QImode;
    case E_HImode: return E_HImode;
    case E_SImode: return E_SImode;
    case E_DImode: return E_DImode;
    case E_TImode: return E_TImode;
    case E_OImode: return E_OImode;
    case E_CImode: return E_CImode;
    case E_XImode: return E_XImode;
    case E_QQmode: return E_QQmode;
    case E_HQmode: return E_HQmode;
    case E_SQmode: return E_SQmode;
    case E_DQmode: return E_DQmode;
    case E_TQmode: return E_TQmode;
    case E_UQQmode: return E_UQQmode;
    case E_UHQmode: return E_UHQmode;
    case E_USQmode: return E_USQmode;
    case E_UDQmode: return E_UDQmode;
    case E_UTQmode: return E_UTQmode;
    case E_HAmode: return E_HAmode;
    case E_SAmode: return E_SAmode;
    case E_DAmode: return E_DAmode;
    case E_TAmode: return E_TAmode;
    case E_UHAmode: return E_UHAmode;
    case E_USAmode: return E_USAmode;
    case E_UDAmode: return E_UDAmode;
    case E_UTAmode: return E_UTAmode;
    case E_HFmode: return E_HFmode;
    case E_BFmode: return E_BFmode;
    case E_SFmode: return E_SFmode;
    case E_DFmode: return E_DFmode;
    case E_TFmode: return E_TFmode;
    case E_SDmode: return E_SDmode;
    case E_DDmode: return E_DDmode;
    case E_TDmode: return E_TDmode;
    case E_CQImode: return E_QImode;
    case E_CHImode: return E_HImode;
    case E_CSImode: return E_SImode;
    case E_CDImode: return E_DImode;
    case E_CTImode: return E_TImode;
    case E_COImode: return E_OImode;
    case E_CCImode: return E_CImode;
    case E_CXImode: return E_XImode;
    case E_BCmode: return E_BFmode;
    case E_HCmode: return E_HFmode;
    case E_SCmode: return E_SFmode;
    case E_DCmode: return E_DFmode;
    case E_TCmode: return E_TFmode;
    case E_VNx16BImode: return E_BImode;
    case E_VNx8BImode: return E_BImode;
    case E_VNx4BImode: return E_BImode;
    case E_VNx2BImode: return E_BImode;
    case E_V8QImode: return E_QImode;
    case E_V4HImode: return E_HImode;
    case E_V2SImode: return E_SImode;
    case E_V16QImode: return E_QImode;
    case E_VNx16QImode: return E_QImode;
    case E_V8HImode: return E_HImode;
    case E_VNx8HImode: return E_HImode;
    case E_V4SImode: return E_SImode;
    case E_VNx4SImode: return E_SImode;
    case E_V2DImode: return E_DImode;
    case E_VNx2DImode: return E_DImode;
    case E_VNx32QImode: return E_QImode;
    case E_VNx16HImode: return E_HImode;
    case E_VNx8SImode: return E_SImode;
    case E_VNx4DImode: return E_DImode;
    case E_VNx2TImode: return E_TImode;
    case E_VNx48QImode: return E_QImode;
    case E_VNx24HImode: return E_HImode;
    case E_VNx12SImode: return E_SImode;
    case E_VNx6DImode: return E_DImode;
    case E_VNx3TImode: return E_TImode;
    case E_VNx64QImode: return E_QImode;
    case E_VNx32HImode: return E_HImode;
    case E_VNx16SImode: return E_SImode;
    case E_VNx8DImode: return E_DImode;
    case E_VNx4TImode: return E_TImode;
    case E_VNx2OImode: return E_OImode;
    case E_VNx2QImode: return E_QImode;
    case E_VNx4QImode: return E_QImode;
    case E_VNx2HImode: return E_HImode;
    case E_VNx8QImode: return E_QImode;
    case E_VNx4HImode: return E_HImode;
    case E_VNx2SImode: return E_SImode;
    case E_V2HFmode: return E_HFmode;
    case E_V4BFmode: return E_BFmode;
    case E_V4HFmode: return E_HFmode;
    case E_V2SFmode: return E_SFmode;
    case E_V1DFmode: return E_DFmode;
    case E_V8BFmode: return E_BFmode;
    case E_V8HFmode: return E_HFmode;
    case E_VNx8BFmode: return E_BFmode;
    case E_VNx8HFmode: return E_HFmode;
    case E_V4SFmode: return E_SFmode;
    case E_VNx4SFmode: return E_SFmode;
    case E_V2DFmode: return E_DFmode;
    case E_VNx2DFmode: return E_DFmode;
    case E_VNx16BFmode: return E_BFmode;
    case E_VNx16HFmode: return E_HFmode;
    case E_VNx8SFmode: return E_SFmode;
    case E_VNx4DFmode: return E_DFmode;
    case E_VNx24BFmode: return E_BFmode;
    case E_VNx24HFmode: return E_HFmode;
    case E_VNx12SFmode: return E_SFmode;
    case E_VNx6DFmode: return E_DFmode;
    case E_VNx32BFmode: return E_BFmode;
    case E_VNx32HFmode: return E_HFmode;
    case E_VNx16SFmode: return E_SFmode;
    case E_VNx8DFmode: return E_DFmode;
    case E_VNx2BFmode: return E_BFmode;
    case E_VNx2HFmode: return E_HFmode;
    case E_VNx4BFmode: return E_BFmode;
    case E_VNx4HFmode: return E_HFmode;
    case E_VNx2SFmode: return E_SFmode;
    default: return mode_inner[mode];
    }
}

#ifdef __cplusplus
inline __attribute__((__always_inline__))
#else
extern __inline__ __attribute__((__always_inline__, __gnu_inline__))
#endif
unsigned char
mode_unit_size_inline (machine_mode mode)
{
  extern CONST_MODE_UNIT_SIZE unsigned char mode_unit_size[NUM_MACHINE_MODES];
  gcc_assert (mode >= 0 && mode < NUM_MACHINE_MODES);
  switch (mode)
    {
    case E_VOIDmode: return 0;
    case E_BLKmode: return 0;
    case E_CCmode: return 4;
    case E_CCFPmode: return 4;
    case E_CCFPEmode: return 4;
    case E_CC_SWPmode: return 4;
    case E_CC_NZCmode: return 4;
    case E_CC_NZmode: return 4;
    case E_CC_Zmode: return 4;
    case E_CC_Cmode: return 4;
    case E_CC_ADCmode: return 4;
    case E_CC_Vmode: return 4;
    case E_BImode: return 1;
    case E_QImode: return 1;
    case E_HImode: return 2;
    case E_SImode: return 4;
    case E_DImode: return 8;
    case E_TImode: return 16;
    case E_OImode: return 32;
    case E_CImode: return 48;
    case E_XImode: return 64;
    case E_QQmode: return 1;
    case E_HQmode: return 2;
    case E_SQmode: return 4;
    case E_DQmode: return 8;
    case E_TQmode: return 16;
    case E_UQQmode: return 1;
    case E_UHQmode: return 2;
    case E_USQmode: return 4;
    case E_UDQmode: return 8;
    case E_UTQmode: return 16;
    case E_HAmode: return 2;
    case E_SAmode: return 4;
    case E_DAmode: return 8;
    case E_TAmode: return 16;
    case E_UHAmode: return 2;
    case E_USAmode: return 4;
    case E_UDAmode: return 8;
    case E_UTAmode: return 16;
    case E_HFmode: return 2;
    case E_BFmode: return 2;
    case E_SFmode: return 4;
    case E_DFmode: return 8;
    case E_TFmode: return 16;
    case E_SDmode: return 4;
    case E_DDmode: return 8;
    case E_TDmode: return 16;
    case E_CQImode: return 1;
    case E_CHImode: return 2;
    case E_CSImode: return 4;
    case E_CDImode: return 8;
    case E_CTImode: return 16;
    case E_COImode: return 32;
    case E_CCImode: return 48;
    case E_CXImode: return 64;
    case E_BCmode: return 2;
    case E_HCmode: return 2;
    case E_SCmode: return 4;
    case E_DCmode: return 8;
    case E_TCmode: return 16;
    case E_VNx16BImode: return 1;
    case E_VNx8BImode: return 1;
    case E_VNx4BImode: return 1;
    case E_VNx2BImode: return 1;
    case E_V8QImode: return 1;
    case E_V4HImode: return 2;
    case E_V2SImode: return 4;
    case E_V16QImode: return 1;
    case E_VNx16QImode: return 1;
    case E_V8HImode: return 2;
    case E_VNx8HImode: return 2;
    case E_V4SImode: return 4;
    case E_VNx4SImode: return 4;
    case E_V2DImode: return 8;
    case E_VNx2DImode: return 8;
    case E_VNx32QImode: return 1;
    case E_VNx16HImode: return 2;
    case E_VNx8SImode: return 4;
    case E_VNx4DImode: return 8;
    case E_VNx2TImode: return 16;
    case E_VNx48QImode: return 1;
    case E_VNx24HImode: return 2;
    case E_VNx12SImode: return 4;
    case E_VNx6DImode: return 8;
    case E_VNx3TImode: return 16;
    case E_VNx64QImode: return 1;
    case E_VNx32HImode: return 2;
    case E_VNx16SImode: return 4;
    case E_VNx8DImode: return 8;
    case E_VNx4TImode: return 16;
    case E_VNx2OImode: return 32;
    case E_VNx2QImode: return 1;
    case E_VNx4QImode: return 1;
    case E_VNx2HImode: return 2;
    case E_VNx8QImode: return 1;
    case E_VNx4HImode: return 2;
    case E_VNx2SImode: return 4;
    case E_V2HFmode: return 2;
    case E_V4BFmode: return 2;
    case E_V4HFmode: return 2;
    case E_V2SFmode: return 4;
    case E_V1DFmode: return 8;
    case E_V8BFmode: return 2;
    case E_V8HFmode: return 2;
    case E_VNx8BFmode: return 2;
    case E_VNx8HFmode: return 2;
    case E_V4SFmode: return 4;
    case E_VNx4SFmode: return 4;
    case E_V2DFmode: return 8;
    case E_VNx2DFmode: return 8;
    case E_VNx16BFmode: return 2;
    case E_VNx16HFmode: return 2;
    case E_VNx8SFmode: return 4;
    case E_VNx4DFmode: return 8;
    case E_VNx24BFmode: return 2;
    case E_VNx24HFmode: return 2;
    case E_VNx12SFmode: return 4;
    case E_VNx6DFmode: return 8;
    case E_VNx32BFmode: return 2;
    case E_VNx32HFmode: return 2;
    case E_VNx16SFmode: return 4;
    case E_VNx8DFmode: return 8;
    case E_VNx2BFmode: return 2;
    case E_VNx2HFmode: return 2;
    case E_VNx4BFmode: return 2;
    case E_VNx4HFmode: return 2;
    case E_VNx2SFmode: return 4;
    default: return mode_unit_size[mode];
    }
}

#ifdef __cplusplus
inline __attribute__((__always_inline__))
#else
extern __inline__ __attribute__((__always_inline__, __gnu_inline__))
#endif
unsigned short
mode_unit_precision_inline (machine_mode mode)
{
  extern const unsigned short mode_unit_precision[NUM_MACHINE_MODES];
  gcc_assert (mode >= 0 && mode < NUM_MACHINE_MODES);
  switch (mode)
    {
    case E_VOIDmode: return 0;
    case E_BLKmode: return 0;
    case E_CCmode: return 4*BITS_PER_UNIT;
    case E_CCFPmode: return 4*BITS_PER_UNIT;
    case E_CCFPEmode: return 4*BITS_PER_UNIT;
    case E_CC_SWPmode: return 4*BITS_PER_UNIT;
    case E_CC_NZCmode: return 4*BITS_PER_UNIT;
    case E_CC_NZmode: return 4*BITS_PER_UNIT;
    case E_CC_Zmode: return 4*BITS_PER_UNIT;
    case E_CC_Cmode: return 4*BITS_PER_UNIT;
    case E_CC_ADCmode: return 4*BITS_PER_UNIT;
    case E_CC_Vmode: return 4*BITS_PER_UNIT;
    case E_BImode: return 1;
    case E_QImode: return 1*BITS_PER_UNIT;
    case E_HImode: return 2*BITS_PER_UNIT;
    case E_SImode: return 4*BITS_PER_UNIT;
    case E_DImode: return 8*BITS_PER_UNIT;
    case E_TImode: return 16*BITS_PER_UNIT;
    case E_OImode: return 32*BITS_PER_UNIT;
    case E_CImode: return 48*BITS_PER_UNIT;
    case E_XImode: return 64*BITS_PER_UNIT;
    case E_QQmode: return 1*BITS_PER_UNIT;
    case E_HQmode: return 2*BITS_PER_UNIT;
    case E_SQmode: return 4*BITS_PER_UNIT;
    case E_DQmode: return 8*BITS_PER_UNIT;
    case E_TQmode: return 16*BITS_PER_UNIT;
    case E_UQQmode: return 1*BITS_PER_UNIT;
    case E_UHQmode: return 2*BITS_PER_UNIT;
    case E_USQmode: return 4*BITS_PER_UNIT;
    case E_UDQmode: return 8*BITS_PER_UNIT;
    case E_UTQmode: return 16*BITS_PER_UNIT;
    case E_HAmode: return 2*BITS_PER_UNIT;
    case E_SAmode: return 4*BITS_PER_UNIT;
    case E_DAmode: return 8*BITS_PER_UNIT;
    case E_TAmode: return 16*BITS_PER_UNIT;
    case E_UHAmode: return 2*BITS_PER_UNIT;
    case E_USAmode: return 4*BITS_PER_UNIT;
    case E_UDAmode: return 8*BITS_PER_UNIT;
    case E_UTAmode: return 16*BITS_PER_UNIT;
    case E_HFmode: return 2*BITS_PER_UNIT;
    case E_BFmode: return 2*BITS_PER_UNIT;
    case E_SFmode: return 4*BITS_PER_UNIT;
    case E_DFmode: return 8*BITS_PER_UNIT;
    case E_TFmode: return 16*BITS_PER_UNIT;
    case E_SDmode: return 4*BITS_PER_UNIT;
    case E_DDmode: return 8*BITS_PER_UNIT;
    case E_TDmode: return 16*BITS_PER_UNIT;
    case E_CQImode: return 1*BITS_PER_UNIT;
    case E_CHImode: return 2*BITS_PER_UNIT;
    case E_CSImode: return 4*BITS_PER_UNIT;
    case E_CDImode: return 8*BITS_PER_UNIT;
    case E_CTImode: return 16*BITS_PER_UNIT;
    case E_COImode: return 32*BITS_PER_UNIT;
    case E_CCImode: return 48*BITS_PER_UNIT;
    case E_CXImode: return 64*BITS_PER_UNIT;
    case E_BCmode: return 2*BITS_PER_UNIT;
    case E_HCmode: return 2*BITS_PER_UNIT;
    case E_SCmode: return 4*BITS_PER_UNIT;
    case E_DCmode: return 8*BITS_PER_UNIT;
    case E_TCmode: return 16*BITS_PER_UNIT;
    case E_VNx16BImode: return 1;
    case E_VNx8BImode: return 1;
    case E_VNx4BImode: return 1;
    case E_VNx2BImode: return 1;
    case E_V8QImode: return 1*BITS_PER_UNIT;
    case E_V4HImode: return 2*BITS_PER_UNIT;
    case E_V2SImode: return 4*BITS_PER_UNIT;
    case E_V16QImode: return 1*BITS_PER_UNIT;
    case E_VNx16QImode: return 1*BITS_PER_UNIT;
    case E_V8HImode: return 2*BITS_PER_UNIT;
    case E_VNx8HImode: return 2*BITS_PER_UNIT;
    case E_V4SImode: return 4*BITS_PER_UNIT;
    case E_VNx4SImode: return 4*BITS_PER_UNIT;
    case E_V2DImode: return 8*BITS_PER_UNIT;
    case E_VNx2DImode: return 8*BITS_PER_UNIT;
    case E_VNx32QImode: return 1*BITS_PER_UNIT;
    case E_VNx16HImode: return 2*BITS_PER_UNIT;
    case E_VNx8SImode: return 4*BITS_PER_UNIT;
    case E_VNx4DImode: return 8*BITS_PER_UNIT;
    case E_VNx2TImode: return 16*BITS_PER_UNIT;
    case E_VNx48QImode: return 1*BITS_PER_UNIT;
    case E_VNx24HImode: return 2*BITS_PER_UNIT;
    case E_VNx12SImode: return 4*BITS_PER_UNIT;
    case E_VNx6DImode: return 8*BITS_PER_UNIT;
    case E_VNx3TImode: return 16*BITS_PER_UNIT;
    case E_VNx64QImode: return 1*BITS_PER_UNIT;
    case E_VNx32HImode: return 2*BITS_PER_UNIT;
    case E_VNx16SImode: return 4*BITS_PER_UNIT;
    case E_VNx8DImode: return 8*BITS_PER_UNIT;
    case E_VNx4TImode: return 16*BITS_PER_UNIT;
    case E_VNx2OImode: return 32*BITS_PER_UNIT;
    case E_VNx2QImode: return 1*BITS_PER_UNIT;
    case E_VNx4QImode: return 1*BITS_PER_UNIT;
    case E_VNx2HImode: return 2*BITS_PER_UNIT;
    case E_VNx8QImode: return 1*BITS_PER_UNIT;
    case E_VNx4HImode: return 2*BITS_PER_UNIT;
    case E_VNx2SImode: return 4*BITS_PER_UNIT;
    case E_V2HFmode: return 2*BITS_PER_UNIT;
    case E_V4BFmode: return 2*BITS_PER_UNIT;
    case E_V4HFmode: return 2*BITS_PER_UNIT;
    case E_V2SFmode: return 4*BITS_PER_UNIT;
    case E_V1DFmode: return 8*BITS_PER_UNIT;
    case E_V8BFmode: return 2*BITS_PER_UNIT;
    case E_V8HFmode: return 2*BITS_PER_UNIT;
    case E_VNx8BFmode: return 2*BITS_PER_UNIT;
    case E_VNx8HFmode: return 2*BITS_PER_UNIT;
    case E_V4SFmode: return 4*BITS_PER_UNIT;
    case E_VNx4SFmode: return 4*BITS_PER_UNIT;
    case E_V2DFmode: return 8*BITS_PER_UNIT;
    case E_VNx2DFmode: return 8*BITS_PER_UNIT;
    case E_VNx16BFmode: return 2*BITS_PER_UNIT;
    case E_VNx16HFmode: return 2*BITS_PER_UNIT;
    case E_VNx8SFmode: return 4*BITS_PER_UNIT;
    case E_VNx4DFmode: return 8*BITS_PER_UNIT;
    case E_VNx24BFmode: return 2*BITS_PER_UNIT;
    case E_VNx24HFmode: return 2*BITS_PER_UNIT;
    case E_VNx12SFmode: return 4*BITS_PER_UNIT;
    case E_VNx6DFmode: return 8*BITS_PER_UNIT;
    case E_VNx32BFmode: return 2*BITS_PER_UNIT;
    case E_VNx32HFmode: return 2*BITS_PER_UNIT;
    case E_VNx16SFmode: return 4*BITS_PER_UNIT;
    case E_VNx8DFmode: return 8*BITS_PER_UNIT;
    case E_VNx2BFmode: return 2*BITS_PER_UNIT;
    case E_VNx2HFmode: return 2*BITS_PER_UNIT;
    case E_VNx4BFmode: return 2*BITS_PER_UNIT;
    case E_VNx4HFmode: return 2*BITS_PER_UNIT;
    case E_VNx2SFmode: return 4*BITS_PER_UNIT;
    default: return mode_unit_precision[mode];
    }
}

#endif /* GCC_VERSION >= 4001 */

#endif /* insn-modes-inline.h */
