From 3ebf8ce9704647686a9f9654c59e0be17bc78984 Mon Sep 17 00:00:00 2001 From: Jacob Young Date: Sun, 6 Aug 2023 02:01:29 -0400 Subject: [PATCH] Builder: fix builtin pseudo-instruction dumping --- src/codegen/llvm/Builder.zig | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/codegen/llvm/Builder.zig b/src/codegen/llvm/Builder.zig index d500b5d362..95c1218b70 100644 --- a/src/codegen/llvm/Builder.zig +++ b/src/codegen/llvm/Builder.zig @@ -7727,7 +7727,14 @@ pub fn printUnbuffered( }, .fneg, .@"fneg fast", - .ret, + => |tag| { + const val: Value = @enumFromInt(instruction.data); + try writer.print(" %{} = {s} {%}\n", .{ + instruction_index.name(&function).fmt(self), + @tagName(tag), + val.fmt(function_index, self), + }); + }, .@"llvm.ceil.", .@"llvm.cos.", .@"llvm.exp.", @@ -7746,8 +7753,12 @@ pub fn printUnbuffered( .@"llvm.ctpop.", => |tag| { const val: Value = @enumFromInt(instruction.data); - try writer.print(" {s} {%}\n", .{ + const ty = val.typeOf(function_index, self); + try writer.print(" %{} = call {%} @{s}{m}({%})\n", .{ + instruction_index.name(&function).fmt(self), + ty.fmt(self), @tagName(tag), + ty.fmt(self), val.fmt(function_index, self), }); }, @@ -7872,6 +7883,13 @@ pub fn printUnbuffered( } try writer.writeByte('\n'); }, + .ret => |tag| { + const val: Value = @enumFromInt(instruction.data); + try writer.print(" {s} {%}\n", .{ + @tagName(tag), + val.fmt(function_index, self), + }); + }, .@"ret void", .@"unreachable", => |tag| try writer.print(" {s}\n", .{@tagName(tag)}), @@ -7966,13 +7984,14 @@ pub fn printUnbuffered( extra.type.fmt(self), }); }, - .@"llvm.fma." => { + .@"llvm.fma." => |tag| { const extra = function.extraData(Function.Instruction.FusedMultiplyAdd, instruction.data); const ty = instruction_index.typeOf(function_index, self); - try writer.print(" %{} = call {%} @llvm.fma.{m}({%}, {%}, {%})\n", .{ + try writer.print(" %{} = call {%} @{s}{m}({%}, {%}, {%})\n", .{ instruction_index.name(&function).fmt(self), ty.fmt(self), + @tagName(tag), ty.fmt(self), extra.a.fmt(function_index, self), extra.b.fmt(function_index, self),