sbc100 updated this revision to Diff 256713.
sbc100 added a comment.

err.. arc diff did something funny.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77908/new/

https://reviews.llvm.org/D77908

Files:
  clang/lib/Basic/Targets/WebAssembly.cpp
  clang/test/CodeGen/builtins-wasm.c
  clang/test/Preprocessor/wasm-target-features.c
  lld/test/wasm/alias.ll
  lld/test/wasm/call-indirect.ll
  lld/test/wasm/cxx-mangling.ll
  lld/test/wasm/data-layout.ll
  lld/test/wasm/function-imports-first.ll
  lld/test/wasm/function-imports.ll
  lld/test/wasm/gc-imports.ll
  lld/test/wasm/gc-sections.ll
  lld/test/wasm/import-memory.test
  lld/test/wasm/init-fini.ll
  lld/test/wasm/load-undefined.test
  lld/test/wasm/local-symbols.ll
  lld/test/wasm/locals-duplicate.test
  lld/test/wasm/relocatable.ll
  lld/test/wasm/signature-mismatch-export.ll
  lld/test/wasm/signature-mismatch.ll
  lld/test/wasm/stack-pointer.ll
  lld/test/wasm/undefined-weak-call.ll
  lld/test/wasm/weak-alias-overide.ll
  lld/test/wasm/weak-alias.ll
  lld/test/wasm/weak-symbols.ll
  lld/test/wasm/weak-undefined.ll
  llvm/lib/Target/WebAssembly/WebAssembly.td
  llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
  llvm/test/CodeGen/WebAssembly/conv.ll
  llvm/test/CodeGen/WebAssembly/multivalue.ll
  llvm/test/CodeGen/WebAssembly/mutable-globals.ll
  llvm/test/CodeGen/WebAssembly/reference-types.ll
  llvm/test/CodeGen/WebAssembly/tailcall.ll
  llvm/test/CodeGen/WebAssembly/target-features-tls.ll
  llvm/test/MC/WebAssembly/array-fill.ll
  llvm/test/MC/WebAssembly/assembler-binary.ll
  llvm/test/MC/WebAssembly/basic-assembly-errors.s
  llvm/test/MC/WebAssembly/basic-assembly.s
  llvm/test/MC/WebAssembly/bss.ll
  llvm/test/MC/WebAssembly/comdat.ll
  llvm/test/MC/WebAssembly/data-section.s
  llvm/test/MC/WebAssembly/debug-info.ll
  llvm/test/MC/WebAssembly/explicit-sections.ll
  llvm/test/MC/WebAssembly/global-ctor-dtor.ll
  llvm/test/MC/WebAssembly/objdump.s
  llvm/test/MC/WebAssembly/type-index.s
  llvm/test/MC/WebAssembly/visibility.ll

Index: llvm/test/MC/WebAssembly/visibility.ll
===================================================================
--- llvm/test/MC/WebAssembly/visibility.ll
+++ llvm/test/MC/WebAssembly/visibility.ll
@@ -25,4 +25,5 @@
 ; CHECK-NEXT:         Name:            hiddenVis
 ; CHECK-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]
 ; CHECK-NEXT:         Function:        1
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: llvm/test/MC/WebAssembly/type-index.s
===================================================================
--- llvm/test/MC/WebAssembly/type-index.s
+++ llvm/test/MC/WebAssembly/type-index.s
@@ -1,6 +1,6 @@
-# RUN: llvm-mc -triple=wasm32-unknown-unknown -mattr=+unimplemented-simd128,+nontrapping-fptoint,+exception-handling < %s | FileCheck %s
+# RUN: llvm-mc -triple=wasm32-unknown-unknown -mattr=+unimplemented-simd128,+exception-handling < %s | FileCheck %s
 # Check that it converts to .o without errors:
-# RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj -mattr=+unimplemented-simd128,+nontrapping-fptoint,+exception-handling < %s | obj2yaml | FileCheck -check-prefix=BIN %s
+# RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj -mattr=+unimplemented-simd128,+exception-handling < %s | obj2yaml | FileCheck -check-prefix=BIN %s
 
 # Minimal test for type indices in call_indirect.
 
Index: llvm/test/MC/WebAssembly/objdump.s
===================================================================
--- llvm/test/MC/WebAssembly/objdump.s
+++ llvm/test/MC/WebAssembly/objdump.s
@@ -1,4 +1,4 @@
-# RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj -o %t.o -mattr=+simd128,+nontrapping-fptoint,+exception-handling < %s
+# RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj -o %t.o -mattr=+simd128,+exception-handling < %s
 # RUN: llvm-objdump --triple=wasm32-unknown-unknown -d %t.o | FileCheck %s
 
 test0:
Index: llvm/test/MC/WebAssembly/global-ctor-dtor.ll
===================================================================
--- llvm/test/MC/WebAssembly/global-ctor-dtor.ll
+++ llvm/test/MC/WebAssembly/global-ctor-dtor.ll
@@ -183,4 +183,5 @@
 ; CHECK-NEXT:         Symbol: 10
 ; CHECK-NEXT:       - Priority: 65535
 ; CHECK-NEXT:         Symbol: 7
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: llvm/test/MC/WebAssembly/explicit-sections.ll
===================================================================
--- llvm/test/MC/WebAssembly/explicit-sections.ll
+++ llvm/test/MC/WebAssembly/explicit-sections.ll
@@ -70,4 +70,5 @@
 ; CHECK-NEXT:         Name:            .sec2
 ; CHECK-NEXT:         Alignment:       3
 ; CHECK-NEXT:         Flags:           [ ]
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: llvm/test/MC/WebAssembly/debug-info.ll
===================================================================
--- llvm/test/MC/WebAssembly/debug-info.ll
+++ llvm/test/MC/WebAssembly/debug-info.ll
@@ -129,6 +129,12 @@
 ; CHECK-NEXT:    Offset: 1013
 ; CHECK-NEXT:    Name: producers
 ; CHECK-NEXT:  }
+; CHECK-NEXT:  Section {
+; CHECK-NEXT:    Type: CUSTOM (0x0)
+; CHECK-NEXT:    Size: 22
+; CHECK-NEXT:    Offset: 1106
+; CHECK-NEXT:    Name: target_features
+; CHECK-NEXT:  }
 ; CHECK-NEXT:]
 ; CHECK-NEXT:Relocations [
 ; CHECK-NEXT:  Section (7) DATA {
Index: llvm/test/MC/WebAssembly/data-section.s
===================================================================
--- llvm/test/MC/WebAssembly/data-section.s
+++ llvm/test/MC/WebAssembly/data-section.s
@@ -1,6 +1,6 @@
-# RUN: llvm-mc -triple=wasm32-unknown-unknown -mattr=+unimplemented-simd128,+nontrapping-fptoint,+exception-handling < %s | FileCheck %s
+# RUN: llvm-mc -triple=wasm32-unknown-unknown -mattr=+unimplemented-simd128,+exception-handling < %s | FileCheck %s
 # Check that it converts to .o without errors:
-# RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj -mattr=+unimplemented-simd128,+nontrapping-fptoint,+exception-handling < %s | obj2yaml | FileCheck -check-prefix=BIN %s
+# RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj -mattr=+unimplemented-simd128,+exception-handling < %s | obj2yaml | FileCheck -check-prefix=BIN %s
 
 # Minimal test for data sections.
 
Index: llvm/test/MC/WebAssembly/comdat.ll
===================================================================
--- llvm/test/MC/WebAssembly/comdat.ll
+++ llvm/test/MC/WebAssembly/comdat.ll
@@ -122,4 +122,5 @@
 ; CHECK-NEXT:            Index:           3
 ; CHECK-NEXT:          - Kind:            DATA
 ; CHECK-NEXT:            Index:           0
-; CHECK-NEXT: ...
+; CHECK-NEXT:  - Type:            CUSTOM
+; CHECK-NEXT:    Name:            target_features
Index: llvm/test/MC/WebAssembly/bss.ll
===================================================================
--- llvm/test/MC/WebAssembly/bss.ll
+++ llvm/test/MC/WebAssembly/bss.ll
@@ -78,4 +78,5 @@
 ; CHECK-NEXT:         Name:            .bss.bar
 ; CHECK-NEXT:         Alignment:       0
 ; CHECK-NEXT:         Flags:           [ ]
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: llvm/test/MC/WebAssembly/basic-assembly.s
===================================================================
--- llvm/test/MC/WebAssembly/basic-assembly.s
+++ llvm/test/MC/WebAssembly/basic-assembly.s
@@ -1,6 +1,6 @@
-# RUN: llvm-mc -triple=wasm32-unknown-unknown -mattr=+atomics,+unimplemented-simd128,+nontrapping-fptoint,+exception-handling < %s | FileCheck %s
+# RUN: llvm-mc -triple=wasm32-unknown-unknown -mattr=+atomics,+unimplemented-simd128,+exception-handling < %s | FileCheck %s
 # Check that it converts to .o without errors, but don't check any output:
-# RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj -mattr=+atomics,+unimplemented-simd128,+nontrapping-fptoint,+exception-handling -o %t.o < %s
+# RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj -mattr=+atomics,+unimplemented-simd128,+exception-handling -o %t.o < %s
 
 
 empty_func:
Index: llvm/test/MC/WebAssembly/basic-assembly-errors.s
===================================================================
--- llvm/test/MC/WebAssembly/basic-assembly-errors.s
+++ llvm/test/MC/WebAssembly/basic-assembly-errors.s
@@ -1,4 +1,4 @@
-# RUN: not llvm-mc -triple=wasm32-unknown-unknown -mattr=+simd128,+nontrapping-fptoint,+exception-handling < %s 2>&1 | FileCheck %s
+# RUN: not llvm-mc -triple=wasm32-unknown-unknown -mattr=+simd128,+exception-handling < %s 2>&1 | FileCheck %s
 
 # CHECK: invalid operand for instruction
 # (must be 0.0 or similar)
Index: llvm/test/MC/WebAssembly/assembler-binary.ll
===================================================================
--- llvm/test/MC/WebAssembly/assembler-binary.ll
+++ llvm/test/MC/WebAssembly/assembler-binary.ll
@@ -87,4 +87,5 @@
 ; CHECK-NEXT:         Name:            bar
 ; CHECK-NEXT:         Flags:           [ UNDEFINED ]
 ; CHECK-NEXT:         Function:        0
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: llvm/test/MC/WebAssembly/array-fill.ll
===================================================================
--- llvm/test/MC/WebAssembly/array-fill.ll
+++ llvm/test/MC/WebAssembly/array-fill.ll
@@ -24,4 +24,3 @@
 ; CHECK-NEXT:         Name:            .data
 ; CHECK-NEXT:         Alignment:       0
 ; CHECK-NEXT:         Flags:           [ ]
-; CHECK-NEXT: ...
Index: llvm/test/CodeGen/WebAssembly/target-features-tls.ll
===================================================================
--- llvm/test/CodeGen/WebAssembly/target-features-tls.ll
+++ llvm/test/CodeGen/WebAssembly/target-features-tls.ll
@@ -11,16 +11,22 @@
 
 ; -bulk-memory
 ; NO-BULK-MEM-LABEL: .custom_section.target_features,"",@
-; NO-BULK-MEM-NEXT: .int8 1
+; NO-BULK-MEM-NEXT: .int8 2
 ; NO-BULK-MEM-NEXT: .int8 45
 ; NO-BULK-MEM-NEXT: .int8 7
 ; NO-BULK-MEM-NEXT: .ascii "atomics"
+; NO-BULK-MEM-NEXT: .int8 43
+; NO-BULK-MEM-NEXT: .int8 19
+; NO-BULK-MEM-NEXT: .ascii "nontrapping-fptoint"
 ; NO-BULK-MEM-NEXT: .bss.foo,"",@
 
 ; +bulk-memory
 ; BULK-MEM-LABEL: .custom_section.target_features,"",@
-; BULK-MEM-NEXT: .int8 1
+; BULK-MEM-NEXT: .int8 2
 ; BULK-MEM-NEXT: .int8 43
 ; BULK-MEM-NEXT: .int8 11
 ; BULK-MEM-NEXT: .ascii "bulk-memory"
+; BULK-MEM-NEXT: .int8 43
+; BULK-MEM-NEXT: .int8 19
+; BULK-MEM-NEXT: .ascii "nontrapping-fptoint"
 ; BULK-MEM-NEXT: .tbss.foo,"",@
Index: llvm/test/CodeGen/WebAssembly/tailcall.ll
===================================================================
--- llvm/test/CodeGen/WebAssembly/tailcall.ll
+++ llvm/test/CodeGen/WebAssembly/tailcall.ll
@@ -259,7 +259,10 @@
 }
 
 ; CHECK-LABEL: .section .custom_section.target_features
-; CHECK-NEXT: .int8 1
+; CHECK-NEXT: .int8 2
+; CHECK-NEXT: .int8 43
+; CHECK-NEXT: .int8 19
+; CHECK-NEXT: .ascii "nontrapping-fptoint"
 ; CHECK-NEXT: .int8 43
 ; CHECK-NEXT: .int8 9
 ; CHECK-NEXT: .ascii "tail-call"
Index: llvm/test/CodeGen/WebAssembly/reference-types.ll
===================================================================
--- llvm/test/CodeGen/WebAssembly/reference-types.ll
+++ llvm/test/CodeGen/WebAssembly/reference-types.ll
@@ -8,7 +8,10 @@
   ret void
 }
 
-; CHECK:      .int8 1
+; CHECK:      .int8 2
+; CHECK-NEXT: .int8 43
+; CHECK-NEXT: .int8 19
+; CHECK-NEXT: .ascii "nontrapping-fptoint"
 ; CHECK-NEXT: .int8 43
 ; CHECK-NEXT: .int8 15
 ; CHECK-NEXT: .ascii "reference-types"
Index: llvm/test/CodeGen/WebAssembly/mutable-globals.ll
===================================================================
--- llvm/test/CodeGen/WebAssembly/mutable-globals.ll
+++ llvm/test/CodeGen/WebAssembly/mutable-globals.ll
@@ -10,7 +10,7 @@
 }
 
 ; CHECK-LABEL: .custom_section.target_features
-; CHECK-NEXT: .int8 1
+; CHECK-NEXT: .int8 2
 ; CHECK-NEXT: .int8 43
 ; CHECK-NEXT: .int8 15
 ; CHECK-NEXT: .ascii "mutable-globals"
Index: llvm/test/CodeGen/WebAssembly/multivalue.ll
===================================================================
--- llvm/test/CodeGen/WebAssembly/multivalue.ll
+++ llvm/test/CodeGen/WebAssembly/multivalue.ll
@@ -1,5 +1,5 @@
-; RUN: llc < %s -asm-verbose=false -verify-machineinstrs -mattr=+multivalue,+tail-call | FileCheck %s
-; RUN: llc < %s -asm-verbose=false -verify-machineinstrs -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -mattr=+multivalue,+tail-call | FileCheck %s --check-prefix REGS
+; RUN: llc < %s -asm-verbose=false -verify-machineinstrs -mcpu=mvp -mattr=+multivalue,+tail-call | FileCheck %s
+; RUN: llc < %s -asm-verbose=false -verify-machineinstrs -mcpu=mvp -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -mattr=+multivalue,+tail-call | FileCheck %s --check-prefix REGS
 ; RUN: llc < %s --filetype=obj -mattr=+multivalue,+tail-call | obj2yaml | FileCheck %s --check-prefix OBJ
 
 ; Test that the multivalue calls, returns, function types, and block
Index: llvm/test/CodeGen/WebAssembly/conv.ll
===================================================================
--- llvm/test/CodeGen/WebAssembly/conv.ll
+++ llvm/test/CodeGen/WebAssembly/conv.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -mattr=+nontrapping-fptoint | FileCheck %s
+; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers | FileCheck %s
 
 ; Test that basic conversion operations assemble as expected.
 
Index: llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
===================================================================
--- llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+++ llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
@@ -219,9 +219,14 @@
 
   std::string getFeatureString(const FeatureBitset &Features) {
     std::string Ret;
+    FeatureBitset Defaults =
+        WasmTM->getSubtargetImpl(std::string(WasmTM->getTargetCPU()), "")
+            ->getFeatureBits();
     for (const SubtargetFeatureKV &KV : WebAssemblyFeatureKV) {
-      if (Features[KV.Value])
+      if (Features[KV.Value] && !Defaults[KV.Value])
         Ret += (StringRef("+") + KV.Key + ",").str();
+      if (!Features[KV.Value] && Defaults[KV.Value])
+        Ret += (StringRef("-") + KV.Key + ",").str();
     }
     return Ret;
   }
Index: llvm/lib/Target/WebAssembly/WebAssembly.td
===================================================================
--- llvm/lib/Target/WebAssembly/WebAssembly.td
+++ llvm/lib/Target/WebAssembly/WebAssembly.td
@@ -96,7 +96,7 @@
 def : ProcessorModel<"mvp", NoSchedModel, []>;
 
 // Generic processor: latest stable version.
-def : ProcessorModel<"generic", NoSchedModel, []>;
+def : ProcessorModel<"generic", NoSchedModel, [FeatureNontrappingFPToInt]>;
 
 // Latest and greatest experimental version of WebAssembly. Bugs included!
 def : ProcessorModel<"bleeding-edge", NoSchedModel,
Index: lld/test/wasm/weak-undefined.ll
===================================================================
--- lld/test/wasm/weak-undefined.ll
+++ lld/test/wasm/weak-undefined.ll
@@ -79,4 +79,5 @@
 ; CHECK-NEXT:       - Index:           2
 ; CHECK-NEXT:         Locals:
 ; CHECK-NEXT:         Body:            1081808080001A1080808080001A0B
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: lld/test/wasm/weak-symbols.ll
===================================================================
--- lld/test/wasm/weak-symbols.ll
+++ lld/test/wasm/weak-symbols.ll
@@ -114,4 +114,5 @@
 ; CHECK-NEXT:         Name:            exportWeak1
 ; CHECK-NEXT:       - Index:           3
 ; CHECK-NEXT:         Name:            exportWeak2
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: lld/test/wasm/weak-alias.ll
===================================================================
--- lld/test/wasm/weak-alias.ll
+++ lld/test/wasm/weak-alias.ll
@@ -120,7 +120,8 @@
 ; CHECK-NEXT:         Name:            call_alias_ptr
 ; CHECK-NEXT:       - Index:           5
 ; CHECK-NEXT:         Name:            call_direct_ptr
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
 
 ; RUN: wasm-ld --relocatable %t.o %t2.o -o %t.reloc.o
 ; RUN: obj2yaml %t.reloc.o | FileCheck %s -check-prefix=RELOC
@@ -286,4 +287,5 @@
 ; RELOC-NEXT:         Name:            call_alias_ptr
 ; RELOC-NEXT:       - Index:           5
 ; RELOC-NEXT:         Name:            call_direct_ptr
-; RELOC-NEXT: ...
+; RELOC-NEXT:   - Type:            CUSTOM
+; RELOC-NEXT:     Name:            target_features
Index: lld/test/wasm/weak-alias-overide.ll
===================================================================
--- lld/test/wasm/weak-alias-overide.ll
+++ lld/test/wasm/weak-alias-overide.ll
@@ -128,4 +128,5 @@
 ; CHECK-NEXT:         Name:            call_alias_ptr
 ; CHECK-NEXT:       - Index:           6
 ; CHECK-NEXT:         Name:            call_direct_ptr
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: lld/test/wasm/undefined-weak-call.ll
===================================================================
--- lld/test/wasm/undefined-weak-call.ll
+++ lld/test/wasm/undefined-weak-call.ll
@@ -95,4 +95,5 @@
 ; CHECK-NEXT:         Name:            'undefined:weakFunc3'
 ; CHECK-NEXT:       - Index:           3
 ; CHECK-NEXT:         Name:            callWeakFuncs
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: lld/test/wasm/stack-pointer.ll
===================================================================
--- lld/test/wasm/stack-pointer.ll
+++ lld/test/wasm/stack-pointer.ll
@@ -68,4 +68,5 @@
 ; CHECK-NEXT:     FunctionNames:
 ; CHECK-NEXT:       - Index:           0
 ; CHECK-NEXT:         Name:            _start
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: lld/test/wasm/signature-mismatch.ll
===================================================================
--- lld/test/wasm/signature-mismatch.ll
+++ lld/test/wasm/signature-mismatch.ll
@@ -47,5 +47,5 @@
 ; YAML-NEXT:         Name:            ret32
 ; YAML-NEXT:       - Index:           3
 ; YAML-NEXT:         Name:            call_ret32
-; YAML-NEXT: ...
-
+; YAML-NEXT:   - Type:            CUSTOM
+; YAML-NEXT:     Name:            target_features
Index: lld/test/wasm/signature-mismatch-export.ll
===================================================================
--- lld/test/wasm/signature-mismatch-export.ll
+++ lld/test/wasm/signature-mismatch-export.ll
@@ -27,4 +27,5 @@
 ; CHECK-NEXT:         Name:            _start
 ; CHECK-NEXT:       - Index:           2
 ; CHECK-NEXT:         Name:            ret32
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: lld/test/wasm/relocatable.ll
===================================================================
--- lld/test/wasm/relocatable.ll
+++ lld/test/wasm/relocatable.ll
@@ -290,4 +290,5 @@
 ; NORMAL-NEXT:        Name:            my_func
 ; NORMAL-NEXT:      - Index:           5
 ; NORMAL-NEXT:        Name:            func_comdat
-; NORMAL-NEXT:...
+; NORMAL-NEXT:  - Type:            CUSTOM
+; NORMAL-NEXT:    Name:            target_features
Index: lld/test/wasm/locals-duplicate.test
===================================================================
--- lld/test/wasm/locals-duplicate.test
+++ lld/test/wasm/locals-duplicate.test
@@ -208,7 +208,8 @@
 ; CHECK-NEXT:         Name:            get_func2B
 ; CHECK-NEXT:       - Index:           17
 ; CHECK-NEXT:         Name:            get_func3B
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
 
 
 ; RUN: wasm-ld -r --no-entry -o %t.reloc.wasm %t1.o %t2.o
@@ -541,4 +542,5 @@
 ; RELOC-NEXT:         Name:            get_func2B
 ; RELOC-NEXT:       - Index:           17
 ; RELOC-NEXT:         Name:            get_func3B
-; RELOC-NEXT: ...
+; RELOC-NEXT:   - Type:            CUSTOM
+; RELOC-NEXT:     Name:            target_features
Index: lld/test/wasm/local-symbols.ll
===================================================================
--- lld/test/wasm/local-symbols.ll
+++ lld/test/wasm/local-symbols.ll
@@ -93,4 +93,5 @@
 ; CHECK-NEXT:         Name:            baz
 ; CHECK-NEXT:       - Index:           1
 ; CHECK-NEXT:         Name:            _start
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: lld/test/wasm/load-undefined.test
===================================================================
--- lld/test/wasm/load-undefined.test
+++ lld/test/wasm/load-undefined.test
@@ -21,7 +21,8 @@
 ; CHECK-NEXT:        Name:            ret64
 ; CHECK-NEXT:      - Index:           3
 ; CHECK-NEXT:        Name:            ret32
-; CHECK-NEXT: ...
+; CHECK-NEXT:  - Type:            CUSTOM
+; CHECK-NEXT:    Name:            target_features
 
 ; NO-LOAD:         Name:            name
 ; NO-LOAD-NEXT:    FunctionNames:   
@@ -31,7 +32,8 @@
 ; NO-LOAD-NEXT:        Name:            _start
 ; NO-LOAD-NEXT:      - Index:           2
 ; NO-LOAD-NEXT:        Name:            ret64
-; NO-LOAD-NEXT: ...
+; NO-LOAD-NEXT:  - Type:            CUSTOM
+; NO-LOAD-NEXT:    Name:            target_features
 
 ; Verify that referencing a symbol that is not found doesn't result in a link
 ; failure.  This matches the behaviour of the ELF linker.
Index: lld/test/wasm/init-fini.ll
===================================================================
--- lld/test/wasm/init-fini.ll
+++ lld/test/wasm/init-fini.ll
@@ -127,7 +127,8 @@
 ; CHECK-NEXT:         Name:            .Lcall_dtors.2002
 ; CHECK-NEXT:       - Index:           22
 ; CHECK-NEXT:         Name:            .Lregister_call_dtors.2002
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
 
 ; RUN: wasm-ld -r %t.o %t.global-ctor-dtor.o -o %t.reloc.wasm
 ; RUN: llvm-readobj --symbols --sections %t.reloc.wasm | FileCheck -check-prefix=RELOC %s
Index: lld/test/wasm/import-memory.test
===================================================================
--- lld/test/wasm/import-memory.test
+++ lld/test/wasm/import-memory.test
@@ -1,4 +1,4 @@
-# RUN: llc -filetype=obj %p/Inputs/start.ll -o %t.start.o
+# RUN: llc -mcpu=mvp -filetype=obj %p/Inputs/start.ll -o %t.start.o
 # RUN: wasm-ld --import-memory -o %t.wasm %t.start.o
 # RUN: obj2yaml %t.wasm | FileCheck %s
 
Index: lld/test/wasm/gc-sections.ll
===================================================================
--- lld/test/wasm/gc-sections.ll
+++ lld/test/wasm/gc-sections.ll
@@ -82,7 +82,8 @@
 ; CHECK-NEXT:         Name:            _start
 ; CHECK-NEXT:       - Index:           2
 ; CHECK-NEXT:         Name:            use_global
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
 
 ; RUN: wasm-ld -print-gc-sections --no-gc-sections -o %t1.no-gc.wasm \
 ; RUN:     %t.o %t_globals.o
@@ -150,7 +151,8 @@
 ; NO-GC-NEXT:         Name:            _start
 ; NO-GC-NEXT:       - Index:           4
 ; NO-GC-NEXT:         Name:            use_global
-; NO-GC-NEXT: ...
+; NO-GC-NEXT:   - Type:            CUSTOM
+; NO-GC-NEXT:     Name:            target_features
 
 ; RUN: not wasm-ld --gc-sections --relocatable -o %t1.no-gc.wasm %t.o 2>&1 | FileCheck %s -check-prefix=CHECK-ERROR
 ; CHECK-ERROR: error: -r and --gc-sections may not be used together
Index: lld/test/wasm/gc-imports.ll
===================================================================
--- lld/test/wasm/gc-imports.ll
+++ lld/test/wasm/gc-imports.ll
@@ -46,7 +46,8 @@
 ; CHECK-NEXT:         Name:            _start
 ; CHECK-NEXT:       - Index:           2
 ; CHECK-NEXT:         Name:            use_undef_global
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
 
 ; RUN: wasm-ld --no-gc-sections --allow-undefined \
 ; RUN:     -o %t1.no-gc.wasm %t.o %t_globals.o
@@ -88,4 +89,5 @@
 ; NO-GC-NEXT:         Name:            _start
 ; NO-GC-NEXT:       - Index:           5
 ; NO-GC-NEXT:         Name:            use_undef_global
-; NO-GC-NEXT: ...
+; NO-GC-NEXT:   - Type:            CUSTOM
+; NO-GC-NEXT:     Name:            target_features
Index: lld/test/wasm/function-imports.ll
===================================================================
--- lld/test/wasm/function-imports.ll
+++ lld/test/wasm/function-imports.ll
@@ -37,4 +37,5 @@
 ; CHECK-NEXT:        Name:            ret32
 ; CHECK-NEXT:      - Index:           1
 ; CHECK-NEXT:        Name:            _start
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: lld/test/wasm/function-imports-first.ll
===================================================================
--- lld/test/wasm/function-imports-first.ll
+++ lld/test/wasm/function-imports-first.ll
@@ -41,4 +41,5 @@
 ; CHECK-NEXT:         Name:            _start
 ; CHECK-NEXT:       - Index:           1
 ; CHECK-NEXT:         Name:            ret32
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: lld/test/wasm/data-layout.ll
===================================================================
--- lld/test/wasm/data-layout.ll
+++ lld/test/wasm/data-layout.ll
@@ -1,5 +1,5 @@
-; RUN: llc -filetype=obj %p/Inputs/hello.ll -o %t.hello.o
-; RUN: llc -filetype=obj %s -o %t.o
+; RUN: llc -mcpu=mvp -filetype=obj %p/Inputs/hello.ll -o %t.hello.o
+; RUN: llc -mcpu=mvp -filetype=obj %s -o %t.o
 
 target triple = "wasm32-unknown-unknown"
 
Index: lld/test/wasm/cxx-mangling.ll
===================================================================
--- lld/test/wasm/cxx-mangling.ll
+++ lld/test/wasm/cxx-mangling.ll
@@ -54,4 +54,5 @@
 ; MANGLE-NEXT:        Name:            _Z3fooi
 ; CHECK-NEXT:       - Index:           2
 ; CHECK-NEXT:         Name:            _start
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: lld/test/wasm/call-indirect.ll
===================================================================
--- lld/test/wasm/call-indirect.ll
+++ lld/test/wasm/call-indirect.ll
@@ -154,4 +154,5 @@
 ; CHECK-NEXT:         Name:            _start
 ; CHECK-NEXT:       - Index:           4
 ; CHECK-NEXT:         Name:            call_ptr
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: lld/test/wasm/alias.ll
===================================================================
--- lld/test/wasm/alias.ll
+++ lld/test/wasm/alias.ll
@@ -62,4 +62,5 @@
 ; CHECK-NEXT:     FunctionNames:
 ; CHECK-NEXT:       - Index:           0
 ; CHECK-NEXT:         Name:            _start
-; CHECK-NEXT: ...
+; CHECK-NEXT:   - Type:            CUSTOM
+; CHECK-NEXT:     Name:            target_features
Index: clang/test/Preprocessor/wasm-target-features.c
===================================================================
--- clang/test/Preprocessor/wasm-target-features.c
+++ clang/test/Preprocessor/wasm-target-features.c
@@ -1,3 +1,12 @@
+// RUN: %clang -E -dM %s -o - 2>&1 \
+// RUN:     -target wasm32-unknown-unknown \
+// RUN:   | FileCheck %s -check-prefix=DEFAULT
+// RUN: %clang -E -dM %s -o - 2>&1 \
+// RUN:     -target wasm64-unknown-unknown \
+// RUN:   | FileCheck %s -check-prefix=DEFAULT
+
+// DEFAULT:#define __wasm_nontrapping_fptoint__ 1{{$}}
+
 // RUN: %clang -E -dM %s -o - 2>&1 \
 // RUN:     -target wasm32-unknown-unknown -msimd128 \
 // RUN:   | FileCheck %s -check-prefix=SIMD128
@@ -17,13 +26,13 @@
 // SIMD128-UNIMPLEMENTED:#define __wasm_unimplemented_simd128__ 1{{$}}
 
 // RUN: %clang -E -dM %s -o - 2>&1 \
-// RUN:     -target wasm32-unknown-unknown -mnontrapping-fptoint \
-// RUN:   | FileCheck %s -check-prefix=NONTRAPPING-FPTOINT
+// RUN:     -target wasm32-unknown-unknown -mno-nontrapping-fptoint \
+// RUN:   | FileCheck %s -check-prefix=NO-NONTRAPPING-FPTOINT
 // RUN: %clang -E -dM %s -o - 2>&1 \
-// RUN:     -target wasm64-unknown-unknown -mnontrapping-fptoint \
-// RUN:   | FileCheck %s -check-prefix=NONTRAPPING-FPTOINT
+// RUN:     -target wasm64-unknown-unknown -mno-nontrapping-fptoint \
+// RUN:   | FileCheck %s -check-prefix=NO-NONTRAPPING-FPTOINT
 //
-// NONTRAPPING-FPTOINT:#define __wasm_nontrapping_fptoint__ 1{{$}}
+// NO-NONTRAPPING-FPTOINT-NOT:#define __wasm_nontrapping_fptoint__ 1{{$}}
 
 // RUN: %clang -E -dM %s -o - 2>&1 \
 // RUN:     -target wasm32-unknown-unknown -msign-ext \
Index: clang/test/CodeGen/builtins-wasm.c
===================================================================
--- clang/test/CodeGen/builtins-wasm.c
+++ clang/test/CodeGen/builtins-wasm.c
@@ -1,6 +1,6 @@
-// RUN: %clang_cc1 -triple wasm32-unknown-unknown -target-feature +unimplemented-simd128 -target-feature +nontrapping-fptoint -target-feature +exception-handling -target-feature +bulk-memory -flax-vector-conversions=none -O3 -emit-llvm -o - %s | FileCheck %s -check-prefixes WEBASSEMBLY,WEBASSEMBLY32
-// RUN: %clang_cc1 -triple wasm64-unknown-unknown -target-feature +unimplemented-simd128 -target-feature +nontrapping-fptoint -target-feature +exception-handling -target-feature +bulk-memory -flax-vector-conversions=none -O3 -emit-llvm -o - %s | FileCheck %s -check-prefixes WEBASSEMBLY,WEBASSEMBLY64
-// RUN: not %clang_cc1 -triple wasm64-unknown-unknown -target-feature +nontrapping-fptoint -target-feature +exception-handling -target-feature +bulk-memory -flax-vector-conversions=none -O3 -emit-llvm -o - %s 2>&1 | FileCheck %s -check-prefixes MISSING-SIMD
+// RUN: %clang_cc1 -triple wasm32-unknown-unknown -target-feature +unimplemented-simd128 -target-feature +exception-handling -target-feature +bulk-memory -flax-vector-conversions=none -O3 -emit-llvm -o - %s | FileCheck %s -check-prefixes WEBASSEMBLY,WEBASSEMBLY32
+// RUN: %clang_cc1 -triple wasm64-unknown-unknown -target-feature +unimplemented-simd128 -target-feature +exception-handling -target-feature +bulk-memory -flax-vector-conversions=none -O3 -emit-llvm -o - %s | FileCheck %s -check-prefixes WEBASSEMBLY,WEBASSEMBLY64
+// RUN: not %clang_cc1 -triple wasm64-unknown-unknown -target-feature +exception-handling -target-feature +bulk-memory -flax-vector-conversions=none -O3 -emit-llvm -o - %s 2>&1 | FileCheck %s -check-prefixes MISSING-SIMD
 
 // SIMD convenience types
 typedef char i8x16 __attribute((vector_size(16)));
Index: clang/lib/Basic/Targets/WebAssembly.cpp
===================================================================
--- clang/lib/Basic/Targets/WebAssembly.cpp
+++ clang/lib/Basic/Targets/WebAssembly.cpp
@@ -112,6 +112,10 @@
 bool WebAssemblyTargetInfo::initFeatureMap(
     llvm::StringMap<bool> &Features, DiagnosticsEngine &Diags, StringRef CPU,
     const std::vector<std::string> &FeaturesVec) const {
+  if (CPU == "generic") {
+    Features["nontrapping-fptoint"] = true;
+  }
+
   if (CPU == "bleeding-edge") {
     Features["nontrapping-fptoint"] = true;
     Features["sign-ext"] = true;
@@ -121,6 +125,7 @@
     Features["tail-call"] = true;
     setSIMDLevel(Features, SIMD128);
   }
+
   // Other targets do not consider user-configured features here, but while we
   // are actively developing new features it is useful to let user-configured
   // features control availability of builtins
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to