jit_value jit_function::new_constant(jit_float32 value, jit_type_t type) { if(!type) { type = jit_type_float32; } value_wrap(jit_value_create_float32_constant(func, type, value)); }
/*@ * @deftypefun jit_value_t jit_value_create_constant (jit_function_t @var{func}, const jit_constant_t *@var{const_value}) * Create a new constant from a generic constant structure in the specified * function. Returns NULL if out of memory or if the type in * @var{const_value} is not suitable for a constant. * @end deftypefun @*/ jit_value_t jit_value_create_constant(jit_function_t func, const jit_constant_t *const_value) { jit_type_t stripped = jit_type_remove_tags(const_value->type); if(!stripped) { return 0; } switch(stripped->kind) { case JIT_TYPE_SBYTE: case JIT_TYPE_UBYTE: case JIT_TYPE_SHORT: case JIT_TYPE_USHORT: case JIT_TYPE_INT: case JIT_TYPE_UINT: return jit_value_create_nint_constant(func, const_value->type, const_value->un.int_value); case JIT_TYPE_NINT: case JIT_TYPE_NUINT: case JIT_TYPE_PTR: case JIT_TYPE_SIGNATURE: return jit_value_create_nint_constant(func, const_value->type, const_value->un.nint_value); case JIT_TYPE_LONG: case JIT_TYPE_ULONG: return jit_value_create_long_constant(func, const_value->type, const_value->un.long_value); case JIT_TYPE_FLOAT32: return jit_value_create_float32_constant(func, const_value->type, const_value->un.float32_value); case JIT_TYPE_FLOAT64: return jit_value_create_float64_constant(func, const_value->type, const_value->un.float64_value); case JIT_TYPE_NFLOAT: return jit_value_create_nfloat_constant(func, const_value->type, const_value->un.nfloat_value); } return 0; }