| ; RUN: llc < %s -mcpu=mvp | FileCheck %s --check-prefixes MVP | |
| ; RUN: llc < %s -mcpu=generic | FileCheck %s --check-prefixes GENERIC | |
| ; RUN: llc < %s -mcpu=lime1 | FileCheck %s --check-prefixes LIME1 | |
| ; RUN: llc < %s | FileCheck %s --check-prefixes GENERIC | |
| ; RUN: llc < %s -mcpu=bleeding-edge | FileCheck %s --check-prefixes BLEEDING-EDGE | |
| ; Test that the target features section contains the correct set of features | |
| ; depending on -mcpu= options. | |
| target triple = "wasm32-unknown-unknown" | |
| ; mvp: should not contain the target features section | |
| ; MVP-NOT: .custom_section.target_features,"",@ | |
| ; generic: +call-indirect-overlong, +multivalue, +mutable-globals, +reference-types, +sign-ext | |
| ; GENERIC-LABEL: .custom_section.target_features,"",@ | |
| ; GENERIC-NEXT: .int8 8 | |
| ; GENERIC-NEXT: .int8 43 | |
| ; GENERIC-NEXT: .int8 11 | |
| ; GENERIC-NEXT: .ascii "bulk-memory" | |
| ; GENERIC-NEXT: .int8 43 | |
| ; GENERIC-NEXT: .int8 15 | |
| ; GENERIC-NEXT: .ascii "bulk-memory-opt" | |
| ; GENERIC-NEXT: .int8 43 | |
| ; GENERIC-NEXT: .int8 22 | |
| ; GENERIC-NEXT: .ascii "call-indirect-overlong" | |
| ; GENERIC-NEXT: .int8 43 | |
| ; GENERIC-NEXT: .int8 10 | |
| ; GENERIC-NEXT: .ascii "multivalue" | |
| ; GENERIC-NEXT: .int8 43 | |
| ; GENERIC-NEXT: .int8 15 | |
| ; GENERIC-NEXT: .ascii "mutable-globals" | |
| ; GENERIC-NEXT: .int8 43 | |
| ; GENERIC-NEXT: .int8 19 | |
| ; GENERIC-NEXT: .ascii "nontrapping-fptoint" | |
| ; GENERIC-NEXT: .int8 43 | |
| ; GENERIC-NEXT: .int8 15 | |
| ; GENERIC-NEXT: .ascii "reference-types" | |
| ; GENERIC-NEXT: .int8 43 | |
| ; GENERIC-NEXT: .int8 8 | |
| ; GENERIC-NEXT: .ascii "sign-ext" | |
| ; lime1: +bulk-memory-opt, +call-indirect-overlong, +extended-const, +multivalue, | |
| ; +mutable-globals, +nontrapping-fptoint, +sign-ext | |
| ; LIME1-LABEL: .custom_section.target_features,"",@ | |
| ; LIME1-NEXT: .int8 7 | |
| ; LIME1-NEXT: .int8 43 | |
| ; LIME1-NEXT: .int8 15 | |
| ; LIME1-NEXT: .ascii "bulk-memory-opt" | |
| ; LIME1-NEXT: .int8 43 | |
| ; LIME1-NEXT: .int8 22 | |
| ; LIME1-NEXT: .ascii "call-indirect-overlong" | |
| ; LIME1-NEXT: .int8 43 | |
| ; LIME1-NEXT: .int8 14 | |
| ; LIME1-NEXT: .ascii "extended-const" | |
| ; LIME1-NEXT: .int8 43 | |
| ; LIME1-NEXT: .int8 10 | |
| ; LIME1-NEXT: .ascii "multivalue" | |
| ; LIME1-NEXT: .int8 43 | |
| ; LIME1-NEXT: .int8 15 | |
| ; LIME1-NEXT: .ascii "mutable-globals" | |
| ; LIME1-NEXT: .int8 43 | |
| ; LIME1-NEXT: .int8 19 | |
| ; LIME1-NEXT: .ascii "nontrapping-fptoint" | |
| ; LIME1-NEXT: .int8 43 | |
| ; LIME1-NEXT: .int8 8 | |
| ; LIME1-NEXT: .ascii "sign-ext" | |
| ; bleeding-edge: +atomics, +bulk-memory, +bulk-memory-opt, | |
| ; +call-indirect-overlong, +exception-handling, | |
| ; +extended-const, +fp16, +gc, +multimemory, +multivalue, | |
| ; +mutable-globals, +nontrapping-fptoint, +relaxed-simd, | |
| ; +reference-types, +simd128, +sign-ext, +tail-call | |
| ; BLEEDING-EDGE-LABEL: .section .custom_section.target_features,"",@ | |
| ; BLEEDING-EDGE-NEXT: .int8 17 | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 7 | |
| ; BLEEDING-EDGE-NEXT: .ascii "atomics" | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 11 | |
| ; BLEEDING-EDGE-NEXT: .ascii "bulk-memory" | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 15 | |
| ; BLEEDING-EDGE-NEXT: .ascii "bulk-memory-opt" | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 22 | |
| ; BLEEDING-EDGE-NEXT: .ascii "call-indirect-overlong" | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 18 | |
| ; BLEEDING-EDGE-NEXT: .ascii "exception-handling" | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 14 | |
| ; BLEEDING-EDGE-NEXT: .ascii "extended-const" | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 4 | |
| ; BLEEDING-EDGE-NEXT: .ascii "fp16" | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 2 | |
| ; BLEEDING-EDGE-NEXT: .ascii "gc" | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 11 | |
| ; BLEEDING-EDGE-NEXT: .ascii "multimemory" | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 10 | |
| ; BLEEDING-EDGE-NEXT: .ascii "multivalue" | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 15 | |
| ; BLEEDING-EDGE-NEXT: .ascii "mutable-globals" | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 19 | |
| ; BLEEDING-EDGE-NEXT: .ascii "nontrapping-fptoint" | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 15 | |
| ; BLEEDING-EDGE-NEXT: .ascii "reference-types" | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 12 | |
| ; BLEEDING-EDGE-NEXT: .ascii "relaxed-simd" | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 8 | |
| ; BLEEDING-EDGE-NEXT: .ascii "sign-ext" | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 7 | |
| ; BLEEDING-EDGE-NEXT: .ascii "simd128" | |
| ; BLEEDING-EDGE-NEXT: .int8 43 | |
| ; BLEEDING-EDGE-NEXT: .int8 9 | |
| ; BLEEDING-EDGE-NEXT: .ascii "tail-call" |