| 11 | #include "GB_stringify.h" |
| 12 | |
| 13 | void GB_enumify_identity |
| 14 | ( |
| 15 | // output: |
| 16 | int *ecode, // enumerated identity, 0 to 31 |
| 17 | // inputs: |
| 18 | GB_Opcode opcode, // built-in binary opcode of a monoid |
| 19 | GB_Type_code zcode // type code of the operator |
| 20 | ) |
| 21 | { |
| 22 | |
| 23 | int e = 31 ; // default: use the monoid->identity bytes |
| 24 | |
| 25 | switch (opcode) |
| 26 | { |
| 27 | |
| 28 | case GB_PLUS_binop_code : e = 0 ; break ; // 0 |
| 29 | |
| 30 | case GB_TIMES_binop_code : e = 1 ; break ; // 1 |
| 31 | |
| 32 | case GB_LAND_binop_code : |
| 33 | case GB_EQ_binop_code : // LXNOR |
| 34 | e = (zcode == GB_BOOL_code) ? 2 : (31) ; break ; // true |
| 35 | |
| 36 | case GB_LOR_binop_code : |
| 37 | case GB_LXOR_binop_code : |
| 38 | e = (zcode == GB_BOOL_code) ? 3 : (31) ; break ; // false |
| 39 | |
| 40 | case GB_MIN_binop_code : |
| 41 | |
| 42 | switch (zcode) |
| 43 | { |
| 44 | case GB_BOOL_code : e = 2 ; break ; // true |
| 45 | case GB_INT8_code : e = 4 ; break ; // INT8_MAX |
| 46 | case GB_INT16_code : e = 5 ; break ; // INT16_MAX |
| 47 | case GB_INT32_code : e = 6 ; break ; // INT32_MAX |
| 48 | case GB_INT64_code : e = 7 ; break ; // INT64_MAX |
| 49 | case GB_UINT8_code : e = 8 ; break ; // UINT8_MAX |
| 50 | case GB_UINT16_code : e = 9 ; break ; // UINT16_MAX |
| 51 | case GB_UINT32_code : e = 10 ; break ; // UINT32_MAX |
| 52 | case GB_UINT64_code : e = 11 ; break ; // UINT64_MAX |
| 53 | case GB_FP32_code : |
| 54 | case GB_FP64_code : e = 12 ; break ; // INFINITY |
| 55 | default: ; |
| 56 | } |
| 57 | break ; |
| 58 | |
| 59 | case GB_MAX_binop_code : |
| 60 | |
| 61 | switch (zcode) |
| 62 | { |
| 63 | case GB_BOOL_code : e = 3 ; break ; // false |
| 64 | case GB_INT8_code : e = 13 ; break ; // INT8_MIN |
| 65 | case GB_INT16_code : e = 14 ; break ; // INT16_MIN |
| 66 | case GB_INT32_code : e = 15 ; break ; // INT32_MIN |
| 67 | case GB_INT64_code : e = 16 ; break ; // INT64_MIN |
| 68 | case GB_UINT8_code : |
| 69 | case GB_UINT16_code : |
| 70 | case GB_UINT32_code : |
no outgoing calls
no test coverage detected