PipelineC
PipelineC copied to clipboard
No Modulo / Remainder Operator "%" for integer types
The integer modulo (remainder) Operator "%" insn't implemented...
Demo code:
#include "intN_t.h"
#pragma MAIN_MHZ test 100.0
int32_t test(int32_t a, int32_t b){
return a % b; // not implemented
}
Tool Output:
GET_BIN_OP_MOD_C_CODE Only mod between float for now!
Possible [Slow | Non-Generic] Fix is overloading the operator:
int32_t BIN_OP_MOD_int32_t_int32_t(int32_t left, int32_t right){
return left - ((left / right) * right);
}
This generates:
BIN_OP_DIV_int32_t_int32_t BIN_OP_MINUS_uint32_t_uint1_t UNARY_OP_NOT_uint32_t MUX_uint1_t_uint32_t_uint32_t BIN_OP_DIV_uint32_t_uint32_t BIN_OP_GTE_uint32_t_uint32_t BIN_OP_MINUS_int33_t_int33_t UNARY_OP_NOT_uint1_t BIN_OP_MINUS_uint32_t_uint32_t BIN_OP_XOR_uint1_t_uint1_t MUX_uint1_t_int32_t_int32_t UNARY_OP_NEGATE_uint32_t UNARY_OP_NOT_uint33_t BIN_OP_PLUS_uint33_t_uint1_t BIN_OP_INFERRED_MULT_int32_t_int32_t BIN_OP_MINUS_int32_t_int64_t