sbc100 created this revision.
Herald added subscribers: llvm-commits, cfe-commits, wingo, ecnelises, sunfish, 
hiraditya, jgravelle-google, dschuff.
Herald added projects: clang, LLVM.
sbc100 requested review of this revision.
Herald added a subscriber: aheejin.

These builtins don't have any actual users in the real
world.  We can add these back later if we find a genuine
use for them.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D91222

Files:
  clang/include/clang/Basic/BuiltinsWebAssembly.def
  clang/lib/CodeGen/CGBuiltin.cpp
  clang/test/CodeGen/builtins-wasm.c
  llvm/include/llvm/IR/IntrinsicsWebAssembly.td
  llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp
  llvm/test/CodeGen/WebAssembly/tls-general-dynamic.ll
  llvm/test/CodeGen/WebAssembly/tls-local-exec.ll

Index: llvm/test/CodeGen/WebAssembly/tls-local-exec.ll
===================================================================
--- llvm/test/CodeGen/WebAssembly/tls-local-exec.ll
+++ llvm/test/CodeGen/WebAssembly/tls-local-exec.ll
@@ -62,15 +62,6 @@
   ret void
 }
 
-; CHECK-LABEL: tls_size:
-; CHECK-NEXT: .functype tls_size () -> (i32)
-define i32 @tls_size() {
-; CHECK-NEXT: global.get __tls_size
-; CHECK-NEXT: return
-  %1 = call i32 @llvm.wasm.tls.size.i32()
-  ret i32 %1
-}
-
 ; CHECK: .type tls,@object
 ; TLS-NEXT: .section .tbss.tls,"",@
 ; NO-TLS-NEXT: .section .bss.tls,"",@
@@ -78,5 +69,3 @@
 ; CHECK-NEXT: tls:
 ; CHECK-NEXT: .int32 0
 @tls = internal thread_local(localexec) global i32 0
-
-declare i32 @llvm.wasm.tls.size.i32()
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
@@ -66,44 +66,6 @@
   ret void
 }
 
-; CHECK-LABEL: tls_size:
-; CHECK-NEXT: .functype tls_size () -> (i32)
-define i32 @tls_size() {
-; CHECK-NEXT: global.get __tls_size
-; CHECK-NEXT: return
-  %1 = call i32 @llvm.wasm.tls.size.i32()
-  ret i32 %1
-}
-
-; CHECK-LABEL: tls_align:
-; CHECK-NEXT: .functype tls_align () -> (i32)
-define i32 @tls_align() {
-; CHECK-NEXT: global.get __tls_align
-; CHECK-NEXT: return
-  %1 = call i32 @llvm.wasm.tls.align.i32()
-  ret i32 %1
-}
-
-; CHECK-LABEL: tls_base:
-; CHECK-NEXT: .functype tls_base () -> (i32)
-define i8* @tls_base() {
-; CHECK-NEXT: global.get __tls_base
-; CHECK-NEXT: return
-  %1 = call i8* @llvm.wasm.tls.base()
-  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,"",@
@@ -111,7 +73,3 @@
 ; CHECK-NEXT: tls:
 ; CHECK-NEXT: .int32 0
 @tls = internal thread_local global i32 0
-
-declare i32 @llvm.wasm.tls.size.i32()
-declare i32 @llvm.wasm.tls.align.i32()
-declare i8* @llvm.wasm.tls.base()
Index: llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp
===================================================================
--- llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp
+++ llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp
@@ -161,40 +161,6 @@
     return;
   }
 
-  case ISD::INTRINSIC_WO_CHAIN: {
-    unsigned IntNo = cast<ConstantSDNode>(Node->getOperand(0))->getZExtValue();
-    switch (IntNo) {
-    case Intrinsic::wasm_tls_size: {
-      MachineSDNode *TLSSize = CurDAG->getMachineNode(
-          GlobalGetIns, DL, PtrVT,
-          CurDAG->getTargetExternalSymbol("__tls_size", PtrVT));
-      ReplaceNode(Node, TLSSize);
-      return;
-    }
-    case Intrinsic::wasm_tls_align: {
-      MachineSDNode *TLSAlign = CurDAG->getMachineNode(
-          GlobalGetIns, DL, PtrVT,
-          CurDAG->getTargetExternalSymbol("__tls_align", PtrVT));
-      ReplaceNode(Node, TLSAlign);
-      return;
-    }
-    }
-    break;
-  }
-  case ISD::INTRINSIC_W_CHAIN: {
-    unsigned IntNo = cast<ConstantSDNode>(Node->getOperand(1))->getZExtValue();
-    switch (IntNo) {
-    case Intrinsic::wasm_tls_base: {
-      MachineSDNode *TLSBase = CurDAG->getMachineNode(
-          GlobalGetIns, DL, PtrVT, MVT::Other,
-          CurDAG->getTargetExternalSymbol("__tls_base", PtrVT),
-          Node->getOperand(0));
-      ReplaceNode(Node, TLSBase);
-      return;
-    }
-    }
-    break;
-  }
   case WebAssemblyISD::CALL:
   case WebAssemblyISD::RET_CALL: {
     // CALL has both variable operands and variable results, but ISel only
Index: llvm/include/llvm/IR/IntrinsicsWebAssembly.td
===================================================================
--- llvm/include/llvm/IR/IntrinsicsWebAssembly.td
+++ llvm/include/llvm/IR/IntrinsicsWebAssembly.td
@@ -301,23 +301,4 @@
             [llvm_v2i64_ty, llvm_v2i64_ty],
             [IntrNoMem, IntrSpeculatable]>;
 
-//===----------------------------------------------------------------------===//
-// Thread-local storage intrinsics
-//===----------------------------------------------------------------------===//
-
-def int_wasm_tls_size :
-  Intrinsic<[llvm_anyint_ty],
-            [],
-            [IntrNoMem, IntrSpeculatable]>;
-
-def int_wasm_tls_align :
-  Intrinsic<[llvm_anyint_ty],
-            [],
-            [IntrNoMem, IntrSpeculatable]>;
-
-def int_wasm_tls_base :
-  Intrinsic<[llvm_ptr_ty],
-            [],
-            [IntrReadMem]>;
-
 } // TargetPrefix = "wasm"
Index: clang/test/CodeGen/builtins-wasm.c
===================================================================
--- clang/test/CodeGen/builtins-wasm.c
+++ clang/test/CodeGen/builtins-wasm.c
@@ -26,23 +26,6 @@
   // WEBASSEMBLY64: call i64 @llvm.wasm.memory.grow.i64(i32 0, i64 %{{.*}})
 }
 
-__SIZE_TYPE__ tls_size() {
-  return __builtin_wasm_tls_size();
-  // WEBASSEMBLY32: call i32 @llvm.wasm.tls.size.i32()
-  // WEBASSEMBLY64: call i64 @llvm.wasm.tls.size.i64()
-}
-
-__SIZE_TYPE__ tls_align() {
-  return __builtin_wasm_tls_align();
-  // WEBASSEMBLY32: call i32 @llvm.wasm.tls.align.i32()
-  // WEBASSEMBLY64: call i64 @llvm.wasm.tls.align.i64()
-}
-
-void *tls_base() {
-  return __builtin_wasm_tls_base();
-  // WEBASSEMBLY: call i8* @llvm.wasm.tls.base()
-}
-
 void throw(void *obj) {
   return __builtin_wasm_throw(0, obj);
   // WEBASSEMBLY32: call void @llvm.wasm.throw(i32 0, i8* %{{.*}})
Index: clang/lib/CodeGen/CGBuiltin.cpp
===================================================================
--- clang/lib/CodeGen/CGBuiltin.cpp
+++ clang/lib/CodeGen/CGBuiltin.cpp
@@ -16388,20 +16388,6 @@
         CGM.getIntrinsic(Intrinsic::wasm_memory_grow, ResultType);
     return Builder.CreateCall(Callee, Args);
   }
-  case WebAssembly::BI__builtin_wasm_tls_size: {
-    llvm::Type *ResultType = ConvertType(E->getType());
-    Function *Callee = CGM.getIntrinsic(Intrinsic::wasm_tls_size, ResultType);
-    return Builder.CreateCall(Callee);
-  }
-  case WebAssembly::BI__builtin_wasm_tls_align: {
-    llvm::Type *ResultType = ConvertType(E->getType());
-    Function *Callee = CGM.getIntrinsic(Intrinsic::wasm_tls_align, ResultType);
-    return Builder.CreateCall(Callee);
-  }
-  case WebAssembly::BI__builtin_wasm_tls_base: {
-    Function *Callee = CGM.getIntrinsic(Intrinsic::wasm_tls_base);
-    return Builder.CreateCall(Callee);
-  }
   case WebAssembly::BI__builtin_wasm_throw: {
     Value *Tag = EmitScalarExpr(E->getArg(0));
     Value *Obj = EmitScalarExpr(E->getArg(1));
Index: clang/include/clang/Basic/BuiltinsWebAssembly.def
===================================================================
--- clang/include/clang/Basic/BuiltinsWebAssembly.def
+++ clang/include/clang/Basic/BuiltinsWebAssembly.def
@@ -25,11 +25,6 @@
 BUILTIN(__builtin_wasm_memory_size, "zIi", "n")
 BUILTIN(__builtin_wasm_memory_grow, "zIiz", "n")
 
-// Thread-local storage
-TARGET_BUILTIN(__builtin_wasm_tls_size, "z", "nc", "bulk-memory")
-TARGET_BUILTIN(__builtin_wasm_tls_align, "z", "nc", "bulk-memory")
-TARGET_BUILTIN(__builtin_wasm_tls_base, "v*", "nU", "bulk-memory")
-
 // Floating point min/max
 BUILTIN(__builtin_wasm_min_f32, "fff", "nc")
 BUILTIN(__builtin_wasm_max_f32, "fff", "nc")
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to