Update repo
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
% var moduleName = "fastintdiv"
|
||||
% let Common = system.getScript("/driverlib/Common.js");
|
||||
% var module = system.modules['/libraries/math/FASTINTDIV' + '/' + moduleName + '.js'];
|
||||
% var instance = module.$instances[0];
|
||||
%
|
||||
%if (module != null)
|
||||
%{
|
||||
//
|
||||
// IMPORTANT NOTE: The standard is to use data types in the format as int32_t, but the structs
|
||||
// as part of the stdlib.h file do not use these types, so their corresponding
|
||||
// data types are used here.
|
||||
//
|
||||
// Return type is ldiv_t:
|
||||
//
|
||||
// typedef struct {
|
||||
// int32_t quot;
|
||||
// int32_t rem;
|
||||
// } ldiv_t;
|
||||
//
|
||||
// Example:
|
||||
// int32_t numerator = 2000000000;
|
||||
// int32_t denominator = -500;
|
||||
// ldiv_t result = FID_COMP_I16_BY_I16_T(numerator, denominator);
|
||||
// int32_t quotient = result.quot;
|
||||
// int32_t remainder = result.rem;
|
||||
//
|
||||
#define `instance.fid_0` __traditional_div_i16byi16
|
||||
#define `instance.fid_2` __traditional_div_i32byi32
|
||||
#define `instance.fid_3` __traditional_div_i32byu32
|
||||
#define `instance.fid_8` __traditional_div_i32byi16
|
||||
|
||||
#define `instance.fid_13` __modulo_div_i16byi16
|
||||
#define `instance.fid_14` __modulo_div_i32byi32
|
||||
#define `instance.fid_15` __modulo_div_i32byu32
|
||||
#define `instance.fid_18` __modulo_div_i32byi16
|
||||
|
||||
#define `instance.fid_21` __euclidean_div_i16byi16
|
||||
#define `instance.fid_22` __euclidean_div_i32byi32
|
||||
#define `instance.fid_25` __euclidean_div_i32byi16
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Return type is __uldiv_t:
|
||||
//
|
||||
// typedef struct {
|
||||
// uint32_t quot;
|
||||
// uint32_t rem;
|
||||
// } __uldiv_t;
|
||||
//
|
||||
// Example:
|
||||
// uint32_t numerator = 3000000000;
|
||||
// uint32_t denominator = 50000000;
|
||||
// __uldiv_t result = FID_COMP_U32_BY_U32_T(numerator, denominator);
|
||||
// uint32_t quotient = result.quot;
|
||||
// uint32_t remainder = result.rem;
|
||||
//
|
||||
#define `instance.fid_1` __traditional_div_u16byu16
|
||||
#define `instance.fid_4` __traditional_div_u32byu32
|
||||
#define `instance.fid_9` __traditional_div_u32byu16
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Return type is lldiv_t:
|
||||
//
|
||||
// typedef struct {
|
||||
// int64_t quot;
|
||||
// int64_t rem;
|
||||
// } lldiv_t;
|
||||
//
|
||||
// Example:
|
||||
// int64_t numerator = -2000000000000000000;
|
||||
// int64_t denominator = 500000000;
|
||||
// lldiv_t result = FID_COMP_I64_BY_I64_T(numerator, denominator);
|
||||
// int64_t quotient = result.quot;
|
||||
// int64_t remainder = result.rem;
|
||||
//
|
||||
#define `instance.fid_5` __traditional_div_i64byi64
|
||||
#define `instance.fid_6` __traditional_div_i64byu64
|
||||
#define `instance.fid_11` __traditional_div_i64byu32
|
||||
|
||||
#define `instance.fid_16` __modulo_div_i64byi64
|
||||
#define `instance.fid_17` __modulo_div_i64byu64
|
||||
|
||||
#define `instance.fid_23` __euclidean_div_i64byi64
|
||||
#define `instance.fid_24` __euclidean_div_i64byu64
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Return type is __ulldiv_t:
|
||||
//
|
||||
// typedef struct {
|
||||
// uint64_t quot;
|
||||
// uint64_t rem;
|
||||
// } __ulldiv_t;
|
||||
//
|
||||
// Example:
|
||||
// uint64_t numerator = 18000000000000000000;
|
||||
// uint64_t denominator = 5000000000000;
|
||||
// __ulldiv_t result = FID_COMP_U64_BY_U64_T(numerator, denominator);
|
||||
// uint64_t quotient = result.quot;
|
||||
// uint64_t remainder = result.rem;
|
||||
//
|
||||
#define `instance.fid_7` __traditional_div_u64byu64
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Return type is __llldiv_t:
|
||||
//
|
||||
// typedef struct {
|
||||
// int64_t quot;
|
||||
// int32_t rem;
|
||||
// } __llldiv_t;
|
||||
//
|
||||
// Example:
|
||||
// int64_t numerator = -2000000000000000000;
|
||||
// int32_t denominator = -2000000000;
|
||||
// __llldiv_t result = FID_COMP_I64_BY_I32_T(numerator, denominator);
|
||||
// int64_t quotient = result.quot;
|
||||
// int32_t remainder = result.rem;
|
||||
//
|
||||
#define `instance.fid_10` __traditional_div_i64byi32
|
||||
|
||||
#define `instance.fid_19` __modulo_div_i64byi32
|
||||
#define `instance.fid_20` __modulo_div_i64byu32
|
||||
|
||||
#define `instance.fid_26` __euclidean_div_i64byi32
|
||||
#define `instance.fid_27` __euclidean_div_i64byu32
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Return type is __ullldiv_t:
|
||||
//
|
||||
// typedef struct {
|
||||
// uint64_t quot;
|
||||
// uint32_t rem;
|
||||
// } __ullldiv_t;
|
||||
//
|
||||
// Example:
|
||||
// uint64_t numerator = 18000000000000000000;
|
||||
// uint32_t denominator = 3000000000;
|
||||
// __ullldiv_t result = FID_COMP_U64_BY_U32_T(numerator, denominator);
|
||||
// uint64_t quotient = result.quot;
|
||||
// uint32_t remainder = result.rem;
|
||||
//
|
||||
#define `instance.fid_12` __traditional_div_u64byu32
|
||||
%}
|
||||
%
|
||||
@@ -0,0 +1 @@
|
||||
--idiv_support=idiv0
|
||||
Reference in New Issue
Block a user