Research Article
Inastemp: A Novel Intrinsics-as-Template Library for Portable SIMD-Vectorization
Code 11
Inastemp static condition statements.
| (1) // Considering InaVecBestType can contain 4 doubles | | (2) InaVecBestType<double> a_value = ; | | (3) | | (4) // Return 10 where condition is true (a_value < 10) else return false | | (5) InaVecBestType<double> res = InaVecBestType<double>::IfElse(a_value < 10, 10., 20.); | | (6) // res => | | (7) | | (8) // Return res 2 where condition is false (a_value == res) else return 0 | | (9) res += InaVecBestType<double>::IfFalse(a_value == res, res 2); | | (10) // res => + | | (11) // res => | | (12) | | (13) // Return res where condition is true (res != 10) else return 0 | | (14) res = InaVecBestType<double>::IfTrue(res != 60, res); | | (15) // res => | | (16) | | (17) // Equivalent to: if(0 < a_value) a_value += 10; | | (18) InaVecBestType<double>::MaskType a_is_positive_mask = 0 < a_value; | | (19) a_value += InaVecBestType<double>::IfTrue(a_is_positive_mask, 10.0); | | (20) | | (21) // Equivalent to: if(a_value < another_value) a_value += another_value − 1 | | (22) a_value += InaVecBestType<double>::IfTrue(a_value < another_value, (another_value − 1.)); |
|