aboutsummaryrefslogtreecommitdiff
path: root/src/value.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/value.zig')
-rw-r--r--src/value.zig16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/value.zig b/src/value.zig
index 6f0f786072..454b1d76a2 100644
--- a/src/value.zig
+++ b/src/value.zig
@@ -2693,16 +2693,14 @@ pub const Value = extern union {
if (int_ty.zigTypeTag() == .Vector) {
const result_data = try arena.alloc(Value, int_ty.vectorLen());
for (result_data) |*scalar, i| {
- scalar.* = try intToFloatScalar(val.indexVectorlike(i), arena, int_ty.scalarType(), float_ty.scalarType(), target);
+ scalar.* = try intToFloatScalar(val.indexVectorlike(i), arena, float_ty.scalarType(), target);
}
return Value.Tag.aggregate.create(arena, result_data);
}
- return intToFloatScalar(val, arena, int_ty, float_ty, target);
+ return intToFloatScalar(val, arena, float_ty, target);
}
- pub fn intToFloatScalar(val: Value, arena: Allocator, int_ty: Type, float_ty: Type, target: Target) !Value {
- assert(int_ty.isNumeric() and !int_ty.isAnyFloat());
- assert(float_ty.isAnyFloat());
+ pub fn intToFloatScalar(val: Value, arena: Allocator, float_ty: Type, target: Target) !Value {
switch (val.tag()) {
.undef, .zero, .one => return val,
.the_only_possible_value => return Value.initTag(.zero), // for i0, u0
@@ -2754,16 +2752,14 @@ pub const Value = extern union {
if (float_ty.zigTypeTag() == .Vector) {
const result_data = try arena.alloc(Value, float_ty.vectorLen());
for (result_data) |*scalar, i| {
- scalar.* = try floatToIntScalar(val.indexVectorlike(i), arena, float_ty.scalarType(), int_ty.scalarType(), target);
+ scalar.* = try floatToIntScalar(val.indexVectorlike(i), arena, int_ty.scalarType(), target);
}
return Value.Tag.aggregate.create(arena, result_data);
}
- return floatToIntScalar(val, arena, float_ty, int_ty, target);
+ return floatToIntScalar(val, arena, int_ty, target);
}
- pub fn floatToIntScalar(val: Value, arena: Allocator, float_ty: Type, int_ty: Type, target: Target) error{ FloatCannotFit, OutOfMemory }!Value {
- assert(float_ty.isAnyFloat());
- assert(int_ty.isInt());
+ pub fn floatToIntScalar(val: Value, arena: Allocator, int_ty: Type, target: Target) error{ FloatCannotFit, OutOfMemory }!Value {
const Limb = std.math.big.Limb;
var value = val.toFloat(f64); // TODO: f128 ?