| ; 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" |