quantum updated this revision to Diff 210675. quantum added a comment. Add a test with a memory dependency on __builtin_wasm_tls_base.
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D64949/new/ https://reviews.llvm.org/D64949 Files: clang/include/clang/Basic/BuiltinsWebAssembly.def llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp llvm/test/CodeGen/WebAssembly/tls-general-dynamic.ll Index: llvm/test/CodeGen/WebAssembly/tls-general-dynamic.ll =================================================================== --- llvm/test/CodeGen/WebAssembly/tls-general-dynamic.ll +++ llvm/test/CodeGen/WebAssembly/tls-general-dynamic.ll @@ -84,6 +84,17 @@ ret i8* %1 } +; CHECK-LABEL: tls_base_write: +; CHECK-NEXT: .functype tls_base_write (i32) -> () +define void @tls_base_write(i8** %output) { +; CHECK-NEXT: global.get __tls_base +; CHECK-NEXT: i32.store 0 +; CHECK-NEXT: return + %1 = call i8* @llvm.wasm.tls.base() + store i8* %1, i8** %output + ret void +} + ; CHECK: .type tls,@object ; TLS-NEXT: .section .tbss.tls,"",@ ; NO-TLS-NEXT: .section .bss.tls,"",@ Index: llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp =================================================================== --- llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp +++ llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp @@ -235,7 +235,7 @@ assert(PtrVT == MVT::i32 && "only wasm32 is supported for now"); MachineSDNode *TLSBase = CurDAG->getMachineNode( - WebAssembly::GLOBAL_GET_I32, DL, MVT::i32, + WebAssembly::GLOBAL_GET_I32, DL, MVT::i32, MVT::Other, CurDAG->getTargetExternalSymbol("__tls_base", PtrVT), Node->getOperand(0)); ReplaceNode(Node, TLSBase); Index: clang/include/clang/Basic/BuiltinsWebAssembly.def =================================================================== --- clang/include/clang/Basic/BuiltinsWebAssembly.def +++ clang/include/clang/Basic/BuiltinsWebAssembly.def @@ -31,7 +31,7 @@ // Thread-local storage TARGET_BUILTIN(__builtin_wasm_tls_size, "z", "nc", "bulk-memory") -TARGET_BUILTIN(__builtin_wasm_tls_base, "v*", "n", "bulk-memory") +TARGET_BUILTIN(__builtin_wasm_tls_base, "v*", "nU", "bulk-memory") // Floating point min/max BUILTIN(__builtin_wasm_min_f32, "fff", "nc")
Index: llvm/test/CodeGen/WebAssembly/tls-general-dynamic.ll =================================================================== --- llvm/test/CodeGen/WebAssembly/tls-general-dynamic.ll +++ llvm/test/CodeGen/WebAssembly/tls-general-dynamic.ll @@ -84,6 +84,17 @@ ret i8* %1 } +; CHECK-LABEL: tls_base_write: +; CHECK-NEXT: .functype tls_base_write (i32) -> () +define void @tls_base_write(i8** %output) { +; CHECK-NEXT: global.get __tls_base +; CHECK-NEXT: i32.store 0 +; CHECK-NEXT: return + %1 = call i8* @llvm.wasm.tls.base() + store i8* %1, i8** %output + ret void +} + ; CHECK: .type tls,@object ; TLS-NEXT: .section .tbss.tls,"",@ ; NO-TLS-NEXT: .section .bss.tls,"",@ Index: llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp =================================================================== --- llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp +++ llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp @@ -235,7 +235,7 @@ assert(PtrVT == MVT::i32 && "only wasm32 is supported for now"); MachineSDNode *TLSBase = CurDAG->getMachineNode( - WebAssembly::GLOBAL_GET_I32, DL, MVT::i32, + WebAssembly::GLOBAL_GET_I32, DL, MVT::i32, MVT::Other, CurDAG->getTargetExternalSymbol("__tls_base", PtrVT), Node->getOperand(0)); ReplaceNode(Node, TLSBase); Index: clang/include/clang/Basic/BuiltinsWebAssembly.def =================================================================== --- clang/include/clang/Basic/BuiltinsWebAssembly.def +++ clang/include/clang/Basic/BuiltinsWebAssembly.def @@ -31,7 +31,7 @@ // Thread-local storage TARGET_BUILTIN(__builtin_wasm_tls_size, "z", "nc", "bulk-memory") -TARGET_BUILTIN(__builtin_wasm_tls_base, "v*", "n", "bulk-memory") +TARGET_BUILTIN(__builtin_wasm_tls_base, "v*", "nU", "bulk-memory") // Floating point min/max BUILTIN(__builtin_wasm_min_f32, "fff", "nc")
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits