SPRACN6 July 2019 F29H850TU , F29H859TU-Q1 , TMS320F28384D , TMS320F28384D-Q1 , TMS320F28384S , TMS320F28384S-Q1 , TMS320F28386D , TMS320F28386D-Q1 , TMS320F28386S , TMS320F28386S-Q1 , TMS320F28388D , TMS320F28388S , TMS320F28P550SJ , TMS320F28P559SJ-Q1 , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
To ease development of applications using the Fast Integer Division (FID) unit, TI also provides demo examples inside the library section of C2000WARE (libraries\math\FASTINTDIV) [4] to showcase the usage of various integer division intrinsics. This example provides users with the usage of each of the 21 intrinsics. The cycles can be measured to see the significant gain provided by using the TI’s FID unit. The entire process of using the acceleration provided by the FID unit has been made very simple through the intrinsics and example provided. Table 3 provides the list of intrinsics and cycles.
Division Type | Intrinsic | Cycles |
---|---|---|
16-bit by 16-bit traditional | __traditional_div_i16byi16() or int/int | 16 |
16-bit by 16-bit Euclidean | __euclidean_div_i16byi16() | 14 |
16-bit by 16-bit Modulo | __modulo_div_i16byi16() | 14 |
16-bit by 16-bit traditional unsigned | __traditional_div_u16byu16() or uint16_t/uint16_t | 14 |
32-bit by 32-bit traditional | __traditional_div_i32byi32() or long/long | 13 |
32-bit by 32-bit Euclidean | __euclidean_div_i32byi32() | 14 |
32-bit by 32-bit Modulo | __modulo_div_i32byi32() | 14 |
32-bit by 32-bit traditional - long/unsigned long | __traditional_div_i32byu32() or long/unsigned long | 14 |
32-bit by 32-bit Modulo | __modul0_div_i32byu32() | 14 |
32-bit by 32-bit traditional - unsigned long/unsigned long | __traditional_div_u32byu32() or unsigned long/unsigned long | 12 |
32-bit by 16-bit traditional | __traditional_div_i32by16() or long/int | 18 |
32-bit by 16-bit Euclidean | __euclidean_div_i32bi16() | 16 |
32-bit by 16-bit Modulo | __modulo_div_i32byi16() | 16 |
32-bit by 16-bit traditional unsigned long/unsigned int | __traditional_div_u32byu16() or unsigned long/uint16_t | 13 |
64-bit by 64-bit traditional | __traditional_div_i64byi64() or long long/long long | 42 |
64-bit by 64-bit Euclidean | __euclidean_div_i64byi64() | 42 |
32-bit by 64-bit Modulo | __modulo_div_i64byi64() | 42 |
64-bit by 64-bit traditional - long long/unsigned long long | __traditional_div_i64byu64() or long long/unsigned long long | 42 |
64-bit by 64-bit Modulo | __euclidean_div_i64byu64() | 42 |
64-bit by 64-bit Modulo | __modulo_div_i64byu64() | 42 |
64-bit by 64-bit traditional - unsigned long long/unsigned long long | __traditional_div_u64byu64() or unsigned long long/unsigned long long | 42 |