clang __builtin_convertvector


I am using builtin_convertvector extension on clang 3.4

my code is as below
int main ()

typedef float vector4float attribute((ext_vector_type(4)));
typedef short vector4short attribute((ext_vector_type(4)));

vector4float vf;
vector4short vs;

vs.s0 = 0;
vs.s1 = 2134;
vs.s2 = 654;
vs.s3 = 252;

vf.s0 = 234.234f;
vf.s1 = 1234.54f;
vf.s2 = 654.32f;
vf.s3 = 252.98f;

printf(“OLD: %d %d %d %d \n”, vs.s0, vs.s1, vs.s2, vs.s3);

vs = __builtin_convertvector(vf, vector4short);

printf(“INPUT %f %f %f %f \n”, vf.s0, vf.s1, vf.s2, vf.s3);
printf(“OUTPUT %d %d %d %d \n”, vs.s0, vs.s1, vs.s2, vs.s3);


the output is as below
OLD 0 2134 654 252

INPUT 234.233994 1234.540039 654.320007 252.979996
OUTPUT 234 1234 654 252

if i ask for rounding mode using fgetround
it gave output “rounding using to-nearest”

It can be seen from the output that, it is truncated integer part of float value
can i change the rounding mode for __builtin_convertvector

how about when the limits of short are reached?

Thanks & Regards