<div dir="ltr">Hi,<div><br></div><div>I am using builtin_convertvector extension on clang 3.4</div><div><br></div><div>my code is as below</div><div>int main ()</div><div>{</div><div><div>typedef float  vector4float   __attribute__((ext_vector_type(4)));</div>

<div>typedef short  vector4short   __attribute__((ext_vector_type(4)));</div></div><div><div>  vector4float vf; </div><div>    vector4short vs;</div><div><br></div><div>    vs.s0 = 0;</div><div>    vs.s1 = 2134;</div><div>

    vs.s2 = 654;</div><div>    vs.s3 = 252;</div><div><br></div><div>    vf.s0 = 234.234f;</div><div>    vf.s1 = 1234.54f;</div><div>    vf.s2 = 654.32f;</div><div>    vf.s3 = 252.98f;</div><div><br></div><div>    printf("OLD: %d %d %d %d \n", vs.s0, vs.s1, vs.s2, vs.s3);</div>

<div><br></div><div>    vs = __builtin_convertvector(vf, vector4short);<br></div></div><div><div>    printf("INPUT %f %f %f %f \n", vf.s0, vf.s1, vf.s2, vf.s3);</div><div>    printf("OUTPUT %d %d %d %d \n", vs.s0, vs.s1, vs.s2, vs.s3);</div>

</div><div><br></div><div>}</div><div><br></div><div><br></div><div>the output is as below</div><div>OLD 0 2134 654 252<br></div><div><div>INPUT 234.233994 1234.540039 654.320007 252.979996</div><div>OUTPUT 234 1234 654 252</div>
</div><div><br></div><div>if i ask for rounding mode using fgetround </div><div>it gave output "rounding using to-nearest"</div><div><br></div><div>It can be seen from the output that, it is truncated integer part of float value</div>
<div>can i change the rounding mode for __builtin_convertvector</div><div><br></div><div>how about when the limits of short are reached?</div><div><br></div><div><br></div><div>Thanks & Regards</div><div>Suneel</div></div>