blob: 51495195eaea745b62df00e47f590faaaba348ae [file]
/* { dg-do compile } */
/* { dg-additional-options "--save-temps -O1" } */
/* { dg-final { check-function-bodies "**" "" "" } } */
#include <stdint.h>
#pragma GCC target "+cssc"
#define MIN(X, Y) ((X) > (Y) ? (Y) : (X))
#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
#define FUNC(T, OP, IMM) \
T \
T##_##OP##_##IMM (T a) \
{ \
return OP (a, IMM); \
} \
#define FUNCNEG(T, OP, IMM) \
T \
T##_##OP##_m##IMM (T a) \
{ \
return OP (a, - (IMM)); \
} \
/*
** uint32_t_MIN_255:
** umin w0, w0, 255
** ret
*/
FUNC (uint32_t, MIN, 255)
/*
** uint64_t_MIN_255:
** umin x0, x0, 255
** ret
*/
FUNC (uint64_t, MIN, 255)
/*
** uint32_t_MAX_255:
** umax w0, w0, 255
** ret
*/
FUNC (uint32_t, MAX, 255)
/*
** uint64_t_MAX_255:
** umax x0, x0, 255
** ret
*/
FUNC (uint64_t, MAX, 255)
/*
** int32_t_MIN_m128:
** smin w0, w0, -128
** ret
*/
FUNCNEG (int32_t, MIN, 128)
/*
** int32_t_MIN_127:
** smin w0, w0, 127
** ret
*/
FUNC (int32_t, MIN, 127)
/*
** int64_t_MIN_m128:
** smin x0, x0, -128
** ret
*/
FUNCNEG (int64_t, MIN, 128)
/*
** int64_t_MIN_127:
** smin x0, x0, 127
** ret
*/
FUNC (int64_t, MIN, 127)
/*
** int32_t_MAX_m128:
** smax w0, w0, -128
** ret
*/
FUNCNEG (int32_t, MAX, 128)
/*
** int32_t_MAX_127:
** smax w0, w0, 127
** ret
*/
FUNC (int32_t, MAX, 127)
/*
** int64_t_MAX_m128:
** smax x0, x0, -128
** ret
*/
FUNCNEG (int64_t, MAX, 128)
/*
** int64_t_MAX_127:
** smax x0, x0, 127
** ret
*/
FUNC (int64_t, MAX, 127)
/*
** int32_t_MIN_0:
** smin w0, w0, 0
** ret
*/
FUNC (int32_t, MIN, 0)
/*
** int64_t_MIN_0:
** smin x0, x0, 0
** ret
*/
FUNC (int64_t, MIN, 0)
/*
** int32_t_MAX_0:
** smax w0, w0, 0
** ret
*/
FUNC (int32_t, MAX, 0)
/*
** int64_t_MAX_0:
** smax x0, x0, 0
** ret
*/
FUNC (int64_t, MAX, 0)