Research Article

Inastemp: A Novel Intrinsics-as-Template Library for Portable SIMD-Vectorization

Table 2

Pseudocode to convert a branch-based scalar algorithm to a vectorized code using simple conditional methods. Here and can be functions or a complete scope of instructions computed before the merge.

ScalarUsing simple conditional methods

if( test )res_A = A;
   res = A();res_B = B;
res = IfElse( test, res_A, res_B );
else  
   res = B();// or if A and B are functions
res = IfElse( test, A(), B() );

if( test )res_0 = IfTrue(test, A());
   res_0 = A();res_1 = IfFalse(test, B());
else  
   res_1 = B();
// then use res_0 and res_1