| ... | ... | @@ -7995,14 +7995,14 @@ fn appendConstraints( |
| 7995 | 7995 | fn intrinsicsAllowed(kind: enum { compiler_rt, libc }, scalar_ty: Type, target: *const std.Target) bool { |
| 7996 | 7996 | if (!scalar_ty.isRuntimeFloat()) return true; |
| 7997 | 7997 | const bits = scalar_ty.floatBits(target); |
| 7998 | | // Since upstream musl/msvc do not actually define the *f128 functions, llvm decides |
| 7999 | | // that it is a much better idea to just emit a call to the entirely wrong function as |
| 8000 | | // a fallback. We wouldn't want any linker errors when trying to perform an operation |
| 8001 | | // that isn't actually implemented anywhere, now would we! |
| 8002 | | if (bits == 128 and target.cpu.arch.isX86() and !target.abi.isGnu()) return switch (kind) { |
| 8003 | | .compiler_rt => true, |
| 8004 | | .libc => false, |
| 8005 | | }; |
| 7998 | switch (kind) { |
| 7999 | .compiler_rt => {}, |
| 8000 | // Since upstream musl/msvc do not actually define the *f128 functions, llvm decides |
| 8001 | // that it is a much better idea to just emit a call to the entirely wrong function as |
| 8002 | // a fallback. We wouldn't want any linker errors when trying to perform an operation |
| 8003 | // that isn't actually implemented anywhere, now would we! |
| 8004 | .libc => if (bits == 128 and target.cpu.arch.isX86() and !target.abi.isGnu()) return false, |
| 8005 | } |
| 8006 | 8006 | return switch (std.zig.target.compilerRtFloatAbi(target, bits)) { |
| 8007 | 8007 | .hard => true, |
| 8008 | 8008 | .soft => false, |