| ... | @@ -1423,8 +1423,10 @@ pub const Value = extern union { | ... | @@ -1423,8 +1423,10 @@ pub const Value = extern union { |
| 1423 | .float_16 => @rem(self.castTag(.float_16).?.data, 1) != 0, | 1423 | .float_16 => @rem(self.castTag(.float_16).?.data, 1) != 0, |
| 1424 | .float_32 => @rem(self.castTag(.float_32).?.data, 1) != 0, | 1424 | .float_32 => @rem(self.castTag(.float_32).?.data, 1) != 0, |
| 1425 | .float_64 => @rem(self.castTag(.float_64).?.data, 1) != 0, | 1425 | .float_64 => @rem(self.castTag(.float_64).?.data, 1) != 0, |
| 1426 | .float_80 => @rem(self.castTag(.float_80).?.data, 1) != 0, | 1426 | //.float_80 => @rem(self.castTag(.float_80).?.data, 1) != 0, |
| 1427 | .float_128 => @rem(self.castTag(.float_128).?.data, 1) != 0, | 1427 | .float_80 => @panic("TODO implement __remx in compiler-rt"), |
| | 1428 | //.float_128 => @rem(self.castTag(.float_128).?.data, 1) != 0, |
| | 1429 | .float_128 => @panic("TODO implement fmodl in compiler-rt"), |
| 1428 | | 1430 | |
| 1429 | else => unreachable, | 1431 | else => unreachable, |
| 1430 | }; | 1432 | }; |
| ... | @@ -2819,11 +2821,17 @@ pub const Value = extern union { | ... | @@ -2819,11 +2821,17 @@ pub const Value = extern union { |
| 2819 | return Value.Tag.float_64.create(arena, @rem(lhs_val, rhs_val)); | 2821 | return Value.Tag.float_64.create(arena, @rem(lhs_val, rhs_val)); |
| 2820 | }, | 2822 | }, |
| 2821 | 80 => { | 2823 | 80 => { |
| | 2824 | if (true) { |
| | 2825 | @panic("TODO implement compiler_rt __remx"); |
| | 2826 | } |
| 2822 | const lhs_val = lhs.toFloat(f80); | 2827 | const lhs_val = lhs.toFloat(f80); |
| 2823 | const rhs_val = rhs.toFloat(f80); | 2828 | const rhs_val = rhs.toFloat(f80); |
| 2824 | return Value.Tag.float_80.create(arena, @rem(lhs_val, rhs_val)); | 2829 | return Value.Tag.float_80.create(arena, @rem(lhs_val, rhs_val)); |
| 2825 | }, | 2830 | }, |
| 2826 | 128 => { | 2831 | 128 => { |
| | 2832 | if (true) { |
| | 2833 | @panic("TODO implement compiler_rt fmodl"); |
| | 2834 | } |
| 2827 | const lhs_val = lhs.toFloat(f128); | 2835 | const lhs_val = lhs.toFloat(f128); |
| 2828 | const rhs_val = rhs.toFloat(f128); | 2836 | const rhs_val = rhs.toFloat(f128); |
| 2829 | return Value.Tag.float_128.create(arena, @rem(lhs_val, rhs_val)); | 2837 | return Value.Tag.float_128.create(arena, @rem(lhs_val, rhs_val)); |
| ... | @@ -2850,11 +2858,17 @@ pub const Value = extern union { | ... | @@ -2850,11 +2858,17 @@ pub const Value = extern union { |
| 2850 | return Value.Tag.float_64.create(arena, @mod(lhs_val, rhs_val)); | 2858 | return Value.Tag.float_64.create(arena, @mod(lhs_val, rhs_val)); |
| 2851 | }, | 2859 | }, |
| 2852 | 80 => { | 2860 | 80 => { |
| | 2861 | if (true) { |
| | 2862 | @panic("TODO implement compiler_rt __modx"); |
| | 2863 | } |
| 2853 | const lhs_val = lhs.toFloat(f80); | 2864 | const lhs_val = lhs.toFloat(f80); |
| 2854 | const rhs_val = rhs.toFloat(f80); | 2865 | const rhs_val = rhs.toFloat(f80); |
| 2855 | return Value.Tag.float_80.create(arena, @mod(lhs_val, rhs_val)); | 2866 | return Value.Tag.float_80.create(arena, @mod(lhs_val, rhs_val)); |
| 2856 | }, | 2867 | }, |
| 2857 | 128 => { | 2868 | 128 => { |
| | 2869 | if (true) { |
| | 2870 | @panic("TODO implement compiler_rt fmodl"); |
| | 2871 | } |
| 2858 | const lhs_val = lhs.toFloat(f128); | 2872 | const lhs_val = lhs.toFloat(f128); |
| 2859 | const rhs_val = rhs.toFloat(f128); | 2873 | const rhs_val = rhs.toFloat(f128); |
| 2860 | return Value.Tag.float_128.create(arena, @mod(lhs_val, rhs_val)); | 2874 | return Value.Tag.float_128.create(arena, @mod(lhs_val, rhs_val)); |
| ... | @@ -3113,6 +3127,9 @@ pub const Value = extern union { | ... | @@ -3113,6 +3127,9 @@ pub const Value = extern union { |
| 3113 | return Value.Tag.float_64.create(arena, lhs_val / rhs_val); | 3127 | return Value.Tag.float_64.create(arena, lhs_val / rhs_val); |
| 3114 | }, | 3128 | }, |
| 3115 | 80 => { | 3129 | 80 => { |
| | 3130 | if (true) { |
| | 3131 | @panic("TODO implement compiler_rt __divxf3"); |
| | 3132 | } |
| 3116 | const lhs_val = lhs.toFloat(f80); | 3133 | const lhs_val = lhs.toFloat(f80); |
| 3117 | const rhs_val = rhs.toFloat(f80); | 3134 | const rhs_val = rhs.toFloat(f80); |
| 3118 | return Value.Tag.float_80.create(arena, lhs_val / rhs_val); | 3135 | return Value.Tag.float_80.create(arena, lhs_val / rhs_val); |
| ... | @@ -3150,6 +3167,9 @@ pub const Value = extern union { | ... | @@ -3150,6 +3167,9 @@ pub const Value = extern union { |
| 3150 | return Value.Tag.float_64.create(arena, @divFloor(lhs_val, rhs_val)); | 3167 | return Value.Tag.float_64.create(arena, @divFloor(lhs_val, rhs_val)); |
| 3151 | }, | 3168 | }, |
| 3152 | 80 => { | 3169 | 80 => { |
| | 3170 | if (true) { |
| | 3171 | @panic("TODO implement compiler_rt __floorx"); |
| | 3172 | } |
| 3153 | const lhs_val = lhs.toFloat(f80); | 3173 | const lhs_val = lhs.toFloat(f80); |
| 3154 | const rhs_val = rhs.toFloat(f80); | 3174 | const rhs_val = rhs.toFloat(f80); |
| 3155 | return Value.Tag.float_80.create(arena, @divFloor(lhs_val, rhs_val)); | 3175 | return Value.Tag.float_80.create(arena, @divFloor(lhs_val, rhs_val)); |
| ... | @@ -3187,6 +3207,9 @@ pub const Value = extern union { | ... | @@ -3187,6 +3207,9 @@ pub const Value = extern union { |
| 3187 | return Value.Tag.float_64.create(arena, @divTrunc(lhs_val, rhs_val)); | 3207 | return Value.Tag.float_64.create(arena, @divTrunc(lhs_val, rhs_val)); |
| 3188 | }, | 3208 | }, |
| 3189 | 80 => { | 3209 | 80 => { |
| | 3210 | if (true) { |
| | 3211 | @panic("TODO implement compiler_rt __truncx"); |
| | 3212 | } |
| 3190 | const lhs_val = lhs.toFloat(f80); | 3213 | const lhs_val = lhs.toFloat(f80); |
| 3191 | const rhs_val = rhs.toFloat(f80); | 3214 | const rhs_val = rhs.toFloat(f80); |
| 3192 | return Value.Tag.float_80.create(arena, @divTrunc(lhs_val, rhs_val)); | 3215 | return Value.Tag.float_80.create(arena, @divTrunc(lhs_val, rhs_val)); |
| ... | @@ -3224,6 +3247,9 @@ pub const Value = extern union { | ... | @@ -3224,6 +3247,9 @@ pub const Value = extern union { |
| 3224 | return Value.Tag.float_64.create(arena, lhs_val * rhs_val); | 3247 | return Value.Tag.float_64.create(arena, lhs_val * rhs_val); |
| 3225 | }, | 3248 | }, |
| 3226 | 80 => { | 3249 | 80 => { |
| | 3250 | if (true) { |
| | 3251 | @panic("TODO implement compiler_rt __mulxf3"); |
| | 3252 | } |
| 3227 | const lhs_val = lhs.toFloat(f80); | 3253 | const lhs_val = lhs.toFloat(f80); |
| 3228 | const rhs_val = rhs.toFloat(f80); | 3254 | const rhs_val = rhs.toFloat(f80); |
| 3229 | return Value.Tag.float_80.create(arena, lhs_val * rhs_val); | 3255 | return Value.Tag.float_80.create(arena, lhs_val * rhs_val); |