diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2022-03-02 17:08:16 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2022-03-02 17:08:16 +0100 |
| commit | b0bb1583cb03e2125b2b407d762baf42e7cfd527 (patch) | |
| tree | 23df17361a5dbc8488ac232d220aa9fec8118050 /src/codegen.zig | |
| parent | c9d1db7e8eda6374bfc5ba51097e24d93ab91ddb (diff) | |
| download | zig-b0bb1583cb03e2125b2b407d762baf42e7cfd527.tar.gz zig-b0bb1583cb03e2125b2b407d762baf42e7cfd527.zip | |
codegen: leave f80 explicitly unhandled for now
Diffstat (limited to 'src/codegen.zig')
| -rw-r--r-- | src/codegen.zig | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/src/codegen.zig b/src/codegen.zig index 56888cab36..f0cf8da3b3 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -141,26 +141,13 @@ pub fn generateFunction( } fn writeFloat(comptime F: type, f: F, target: Target, endian: std.builtin.Endian, code: []u8) void { - if (F == f80) { - switch (target.cpu.arch) { - .i386, .x86_64 => { - const repr = math.break_f80(f); - mem.writeIntLittle(u64, code[0..8], repr.fraction); - mem.writeIntLittle(u16, code[8..10], repr.exp); - // TODO set the rest of the bytes to undefined. should we use 0xaa - // or is there a different way? - return; - }, - else => {}, - } - } else { - const Int = @Type(.{ .Int = .{ - .signedness = .unsigned, - .bits = @typeInfo(F).Float.bits, - } }); - const int = @bitCast(Int, f); - mem.writeInt(Int, code[0..@sizeOf(Int)], int, endian); - } + _ = target; + const Int = @Type(.{ .Int = .{ + .signedness = .unsigned, + .bits = @typeInfo(F).Float.bits, + } }); + const int = @bitCast(Int, f); + mem.writeInt(Int, code[0..@sizeOf(Int)], int, endian); } pub fn generateSymbol( @@ -202,7 +189,14 @@ pub fn generateSymbol( 16 => writeFloat(f16, typed_value.val.toFloat(f16), target, endian, try code.addManyAsArray(2)), 32 => writeFloat(f32, typed_value.val.toFloat(f32), target, endian, try code.addManyAsArray(4)), 64 => writeFloat(f64, typed_value.val.toFloat(f64), target, endian, try code.addManyAsArray(8)), - 80 => writeFloat(f80, typed_value.val.toFloat(f80), target, endian, try code.addManyAsArray(10)), + 80 => return Result{ + .fail = try ErrorMsg.create( + bin_file.allocator, + src_loc, + "TODO handle f80 in generateSymbol", + .{}, + ), + }, 128 => writeFloat(f128, typed_value.val.toFloat(f128), target, endian, try code.addManyAsArray(16)), else => unreachable, } |
