def get_intrinsic_name(signature):
    """
    Get the intrinsic name from the signature of the intrinsic.

    >>> get_intrinsic_name("int8x8_t vadd_s8(int8x8_t a, int8x8_t b)")
    'vadd_s8'

    >>> get_intrinsic_name("int32x4_t vaddl_high_s16(int16x8_t a, int16x8_t b)")
    'vaddl_high_s16'

    >>> get_intrinsic_name("float64x2_t vfmsq_lane_f64(float64x2_t a, float64x2_t b, float64x1_t v, __builtin_constant_p(lane))")
    'vfmsq_lane_f64'

    >>> get_intrinsic_name("poly16x8_t vsriq_n_p16(poly16x8_t a, poly16x8_t b, __builtin_constant_p(n))")
    'vsriq_n_p16'

    >>> get_intrinsic_name("uint8x16_t [__arm_]vddupq_m[_n_u8](uint8x16_t inactive, uint32_t a, const int imm, mve_pred16_t p)")
    '[__arm_]vddupq_m[_n_u8]'
    """
    tmp = signature.split(' ')

    tmp = tmp[1].split('(')
    return tmp[0]