| ... | ... | @@ -1780,92 +1780,6 @@ pub const Target = struct { |
| 1780 | 1780 | }; |
| 1781 | 1781 | } |
| 1782 | 1782 | |
| 1783 | | pub inline fn longDoubleIs(target: Target, comptime F: type) bool { |
| 1784 | | switch (target.os.tag) { |
| 1785 | | .windows, .uefi => switch (target.abi) { |
| 1786 | | .gnu, .gnuilp32, .cygnus => switch (target.cpu.arch) { |
| 1787 | | .i386 => return F == f80, |
| 1788 | | .x86_64 => return F == f128, |
| 1789 | | else => return F == f64, |
| 1790 | | }, |
| 1791 | | else => return F == f64, |
| 1792 | | }, |
| 1793 | | else => {}, |
| 1794 | | } |
| 1795 | | |
| 1796 | | if (target.abi == .android and target.cpu.arch == .i386) |
| 1797 | | return F == f64; |
| 1798 | | |
| 1799 | | switch (target.cpu.arch) { |
| 1800 | | .aarch64, |
| 1801 | | .aarch64_be, |
| 1802 | | .aarch64_32, |
| 1803 | | => switch (target.os.tag) { |
| 1804 | | // According to Apple's official guide: |
| 1805 | | // > The long double type is a double precision IEEE754 binary floating-point type, |
| 1806 | | // > which makes it identical to the double type. This behavior contrasts to the |
| 1807 | | // > standard specification, in which a long double is a quad-precision, IEEE754 |
| 1808 | | // > binary, floating-point type. |
| 1809 | | // https://developer.apple.com/documentation/xcode/writing-arm64-code-for-apple-platforms |
| 1810 | | .ios, .macos, .watchos, .tvos => return F == f64, |
| 1811 | | .windows, .uefi => return F == f64, |
| 1812 | | else => return F == f128, |
| 1813 | | }, |
| 1814 | | |
| 1815 | | .i386 => return F == f80, |
| 1816 | | .x86_64 => return F == f80, |
| 1817 | | |
| 1818 | | .mips64, |
| 1819 | | .mips64el, |
| 1820 | | => switch (target.os.tag) { |
| 1821 | | .freebsd => return F == f64, |
| 1822 | | else => return F == f128, |
| 1823 | | }, |
| 1824 | | |
| 1825 | | .powerpc, |
| 1826 | | .powerpcle, |
| 1827 | | => switch (target.abi) { |
| 1828 | | .musl, |
| 1829 | | .musleabi, |
| 1830 | | .musleabihf, |
| 1831 | | .muslx32, |
| 1832 | | => return F == f64, |
| 1833 | | else => switch (target.os.tag) { |
| 1834 | | .freebsd, .netbsd, .openbsd => return F == f64, |
| 1835 | | else => return F == f128, |
| 1836 | | }, |
| 1837 | | }, |
| 1838 | | |
| 1839 | | .powerpc64, |
| 1840 | | .powerpc64le, |
| 1841 | | => switch (target.abi) { |
| 1842 | | .musl, |
| 1843 | | .musleabi, |
| 1844 | | .musleabihf, |
| 1845 | | .muslx32, |
| 1846 | | => return F == f64, |
| 1847 | | else => switch (target.os.tag) { |
| 1848 | | .freebsd, .openbsd => return F == f64, |
| 1849 | | else => return F == f128, |
| 1850 | | }, |
| 1851 | | }, |
| 1852 | | |
| 1853 | | .riscv32, |
| 1854 | | .riscv64, |
| 1855 | | .s390x, |
| 1856 | | .sparc, |
| 1857 | | .sparc64, |
| 1858 | | .sparcel, |
| 1859 | | .wasm32, |
| 1860 | | .wasm64, |
| 1861 | | => return F == f128, |
| 1862 | | |
| 1863 | | .avr, .tce, .tcele => return F == f32, |
| 1864 | | |
| 1865 | | else => return F == f64, |
| 1866 | | } |
| 1867 | | } |
| 1868 | | |
| 1869 | 1783 | pub inline fn maxIntAlignment(target: Target) u16 { |
| 1870 | 1784 | return switch (target.cpu.arch) { |
| 1871 | 1785 | .avr => 1, |