From 4ec27a4e2508049ce0d9b6e3cc149c0403c7014b Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 22 Nov 2022 23:33:58 -0700 Subject: C backend: implement vector reduce and overflow intrinsics --- src/target.zig | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src/target.zig') diff --git a/src/target.zig b/src/target.zig index 90cc50db23..debcfb3776 100644 --- a/src/target.zig +++ b/src/target.zig @@ -729,3 +729,43 @@ pub fn supportsTailCall(target: std.Target, backend: std.builtin.CompilerBackend else => return false, } } + +pub fn libcFloatPrefix(float_bits: u16) []const u8 { + return switch (float_bits) { + 16, 80 => "__", + 32, 64, 128 => "", + else => unreachable, + }; +} + +pub fn libcFloatSuffix(float_bits: u16) []const u8 { + return switch (float_bits) { + 16 => "h", // Non-standard + 32 => "f", + 64 => "", + 80 => "x", // Non-standard + 128 => "q", // Non-standard (mimics convention in GCC libquadmath) + else => unreachable, + }; +} + +pub fn compilerRtFloatAbbrev(float_bits: u16) []const u8 { + return switch (float_bits) { + 16 => "h", + 32 => "s", + 64 => "d", + 80 => "x", + 128 => "t", + else => unreachable, + }; +} + +pub fn compilerRtIntAbbrev(bits: u16) []const u8 { + return switch (bits) { + 16 => "h", + 32 => "s", + 64 => "d", + 128 => "t", + else => "o", // Non-standard + }; +} -- cgit v1.2.3