| ... | @@ -7725,33 +7725,14 @@ static void float_div_trunc(ConstExprValue *out_val, ConstExprValue *op1, ConstE | ... | @@ -7725,33 +7725,14 @@ static void float_div_trunc(ConstExprValue *out_val, ConstExprValue *op1, ConstE |
| 7725 | } else if (op1->type->id == TypeTableEntryIdFloat) { | 7725 | } else if (op1->type->id == TypeTableEntryIdFloat) { |
| 7726 | switch (op1->type->data.floating.bit_count) { | 7726 | switch (op1->type->data.floating.bit_count) { |
| 7727 | case 16: | 7727 | case 16: |
| 7728 | { | 7728 | out_val->data.x_f16 = f16_div(op1->data.x_f16, op2->data.x_f16); |
| 7729 | double a = zig_f16_to_double(op1->data.x_f16); | 7729 | out_val->data.x_f16 = f16_roundToInt(out_val->data.x_f16, softfloat_round_minMag, false); |
| 7730 | double b = zig_f16_to_double(op2->data.x_f16); | 7730 | return; |
| 7731 | double c = a / b; | | |
| 7732 | if (c >= 0.0) { | | |
| 7733 | c = floor(c); | | |
| 7734 | } else { | | |
| 7735 | c = ceil(c); | | |
| 7736 | } | | |
| 7737 | out_val->data.x_f16 = zig_double_to_f16(c); | | |
| 7738 | return; | | |
| 7739 | } | | |
| 7740 | case 32: | 7731 | case 32: |
| 7741 | out_val->data.x_f32 = op1->data.x_f32 / op2->data.x_f32; | 7732 | out_val->data.x_f32 = truncf(op1->data.x_f32 / op2->data.x_f32); |
| 7742 | if (out_val->data.x_f32 >= 0.0) { | | |
| 7743 | out_val->data.x_f32 = floorf(out_val->data.x_f32); | | |
| 7744 | } else { | | |
| 7745 | out_val->data.x_f32 = ceilf(out_val->data.x_f32); | | |
| 7746 | } | | |
| 7747 | return; | 7733 | return; |
| 7748 | case 64: | 7734 | case 64: |
| 7749 | out_val->data.x_f64 = op1->data.x_f64 / op2->data.x_f64; | 7735 | out_val->data.x_f64 = trunc(op1->data.x_f64 / op2->data.x_f64); |
| 7750 | if (out_val->data.x_f64 >= 0.0) { | | |
| 7751 | out_val->data.x_f64 = floor(out_val->data.x_f64); | | |
| 7752 | } else { | | |
| 7753 | out_val->data.x_f64 = ceil(out_val->data.x_f64); | | |
| 7754 | } | | |
| 7755 | return; | 7736 | return; |
| 7756 | case 128: | 7737 | case 128: |
| 7757 | f128M_div(&op1->data.x_f128, &op2->data.x_f128, &out_val->data.x_f128); | 7738 | f128M_div(&op1->data.x_f128, &op2->data.x_f128, &out_val->data.x_f128); |