PipelineC icon indicating copy to clipboard operation
PipelineC copied to clipboard

No Modulo / Remainder Operator "%" for integer types

Open Paulo-D2000 opened this issue 6 days ago • 2 comments

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

Paulo-D2000 avatar Jul 02 '24 03:07 Paulo-D2000