WebAssembly, some symbols are available with @_extern(c) others not

Got undefined symbol: __builtin_wasm_tls_size error on linking stage trying to compile:

@_extern(c, "__builtin_wasm_tls_size")
private func __builtin_wasm_tls_size() -> Int

If I create C wrapper and call it from Swift, everything complies and works successfully:

extern unsigned long __builtin_wasm_tls_size();

unsigned long tls_size() {
    return __builtin_wasm_tls_size();
}

Meanwhile other symbols compiles inside Swift directly without touching C:

@_extern(c, "__wasm_init_tls")
private func __wasm_init_tls(_ memory: UnsafeMutableRawPointer?)

Who can explain what's going on and is it possible to get rid from C wrappers?

I think you need to use:

@_extern(c, "llvm.wasm.tls.size.i32")
private func __builtin_wasm_tls_size() -> Int32

Unfortunately that's leads to Swift compiler fatal error

note: Cannot select: intrinsic <<INTERNAL ERROR: unparseable argument index in diagnostic text>>.wasm.tls.size

Swift 6.3