ANNOUNCE();
assert(mode);
+ if (get_mode_vector_elems(mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
switch(get_mode_sort(mode))
{
case irms_reference:
ANNOUNCE();
assert(mode);
+ if (get_mode_vector_elems(mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
switch(get_mode_sort(mode))
{
case irms_reference:
ANNOUNCE();
assert(mode);
+ if (get_mode_vector_elems(mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
switch(get_mode_sort(mode))
{
case irms_control_flow:
ANNOUNCE();
assert(mode);
+ if (get_mode_vector_elems(mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
switch(get_mode_sort(mode))
{
case irms_control_flow:
ANNOUNCE();
assert(mode);
+ if (get_mode_vector_elems(mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
if (get_mode_sort(mode) == irms_float_number) {
switch(get_mode_size_bits(mode))
{
ANNOUNCE();
assert(mode);
+ if (get_mode_vector_elems(mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
if (get_mode_sort(mode) == irms_float_number) {
switch(get_mode_size_bits(mode))
{
ANNOUNCE();
assert(a);
+ if (get_mode_vector_elems(a->mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ assert(0 && "tarval_is_negative is not allowed for vector modes");
+ return 0;
+ }
+
switch (get_mode_sort(a->mode))
{
case irms_int_number:
if (a == tarval_bad || b == tarval_bad) assert(0 && "Comparison with tarval_bad");
if (a == tarval_undefined || b == tarval_undefined) return False;
if (a == b) return Eq;
- if (get_tarval_mode(a) != get_tarval_mode(b)) return False;
+ if (a->mode != b->mode) return False;
+
+ if (get_mode_vector_elems(a->mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ assert(0 && "cmp not implemented for vector modes");
+ }
/* Here the two tarvals are unequal and of the same mode */
switch (get_mode_sort(a->mode))
if (src->mode == m) return src;
+ if (get_mode_vector_elems(src->mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
switch (get_mode_sort(src->mode))
{
case irms_control_flow:
assert(a);
assert(mode_is_int(a->mode)); /* bitwise negation is only allowed for integer */
+ /* works for vector mode without changes */
+
switch (get_mode_sort(a->mode))
{
case irms_int_number:
assert(mode_is_num(a->mode)); /* negation only for numerical values */
assert(mode_is_signed(a->mode)); /* negation is difficult without negative numbers, isn't it */
+ if (get_mode_vector_elems(a->mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
switch (get_mode_sort(a->mode))
{
case irms_int_number:
assert(b);
assert((a->mode == b->mode) || (get_mode_sort(a->mode) == irms_character && mode_is_int(b->mode)));
+ if (get_mode_vector_elems(a->mode) > 1 || get_mode_vector_elems(b->mode)) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
switch (get_mode_sort(a->mode))
{
case irms_character:
assert(b);
assert((a->mode == b->mode) || (get_mode_sort(a->mode) == irms_character && mode_is_int(b->mode)));
+ if (get_mode_vector_elems(a->mode) > 1 || get_mode_vector_elems(b->mode)) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
switch (get_mode_sort(a->mode))
{
case irms_character:
assert(b);
assert((a->mode == b->mode) && mode_is_num(a->mode));
+ if (get_mode_vector_elems(a->mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
switch (get_mode_sort(a->mode))
{
case irms_int_number:
assert(b);
assert((a->mode == b->mode) && mode_is_float(a->mode));
+ if (get_mode_vector_elems(a->mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
fc_div(a->value, b->value, NULL);
return get_tarval_overflow(fc_get_buffer(), fc_get_buffer_length(), a->mode);
}
assert(b);
assert((a->mode == b->mode) && mode_is_int(a->mode));
+ if (get_mode_vector_elems(a->mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
/* x/0 error */
if (b == get_mode_null(b->mode)) return tarval_bad;
/* modes of a,b are equal */
assert(b);
assert((a->mode == b->mode) && mode_is_int(a->mode));
+ if (get_mode_vector_elems(a->mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
/* x/0 error */
if (b == get_mode_null(b->mode)) return tarval_bad;
/* modes of a,b are equal */
assert(a);
assert(mode_is_num(a->mode));
+ if (get_mode_vector_elems(a->mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
switch (get_mode_sort(a->mode))
{
case irms_int_number:
assert(b);
assert(a->mode == b->mode);
+ /* works even for vector modes */
+
switch(get_mode_sort(a->mode))
{
case irms_internal_boolean:
assert(b);
assert(a->mode == b->mode);
+ /* works even for vector modes */
+
switch (get_mode_sort(a->mode))
{
case irms_internal_boolean:
assert(b);
assert((a->mode == b->mode));
+ /* works even for vector modes */
+
switch (get_mode_sort(a->mode))
{
case irms_internal_boolean:
assert(b);
assert(mode_is_int(a->mode) && mode_is_int(b->mode));
+ if (get_mode_vector_elems(a->mode) > 1 || get_mode_vector_elems(a->mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
if (get_mode_modulo_shift(a->mode) != 0)
{
temp_val = alloca(sc_get_buffer_length());
assert(b);
assert(mode_is_int(a->mode) && mode_is_int(b->mode));
+ if (get_mode_vector_elems(a->mode) > 1 || get_mode_vector_elems(a->mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
if (get_mode_modulo_shift(a->mode) != 0)
{
temp_val = alloca(sc_get_buffer_length());
assert(b);
assert(mode_is_int(a->mode) && mode_is_int(b->mode));
+ if (get_mode_vector_elems(a->mode) > 1 || get_mode_vector_elems(a->mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
if (get_mode_modulo_shift(a->mode) != 0)
{
temp_val = alloca(sc_get_buffer_length());
assert(b);
assert(mode_is_int(a->mode) && mode_is_int(b->mode));
+ if (get_mode_vector_elems(a->mode) > 1 || get_mode_vector_elems(a->mode) > 1) {
+ /* vector arithmetic not implemented yet */
+ return tarval_bad;
+ }
+
if (get_mode_modulo_shift(a->mode) != 0)
{
temp_val = alloca(sc_get_buffer_length());