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