diff options
| author | William Sengir <william@sengir.com> | 2022-03-20 01:11:21 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-03-21 16:54:19 -0700 |
| commit | c9598c4cd38f742e75a54d5a28d169351104b61d (patch) | |
| tree | 01de9914d3bdc663b0c02c2ff83a6c49f04d9d71 /src/value.zig | |
| parent | afdcfb005ea32849f30e2abd7361ce1f33d0ee74 (diff) | |
| download | zig-c9598c4cd38f742e75a54d5a28d169351104b61d.tar.gz zig-c9598c4cd38f742e75a54d5a28d169351104b61d.zip | |
behavior tests: enable all vector tests for the stage2 LLVM backend
Diffstat (limited to 'src/value.zig')
| -rw-r--r-- | src/value.zig | 16 |
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 ? |
