<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>