xref: /llvm-project/llvm/test/CodeGen/WebAssembly/disable-feature.ll (revision c3536b263f253a69fb336fb0617ee33a01a5c5dd)
15561beaeSCongcong Cai; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*c3536b26SDan Gohman; RUN: llc < %s -mattr=-sign-ext,-bulk-memory,-bulk-memory-opt | FileCheck %s
35561beaeSCongcong Cai
45561beaeSCongcong Caitarget triple = "wasm32-unknown-unknown"
55561beaeSCongcong Cai
65561beaeSCongcong Caidefine i8 @not_use_extend8_s(i8 %v, i8 %x) {
75561beaeSCongcong Cai; CHECK-LABEL: not_use_extend8_s:
85561beaeSCongcong Cai; CHECK:         .functype not_use_extend8_s (i32, i32) -> (i32)
95561beaeSCongcong Cai; CHECK-NEXT:  # %bb.0:
105561beaeSCongcong Cai; CHECK-NEXT:    local.get 0
115561beaeSCongcong Cai; CHECK-NEXT:    i32.const 24
125561beaeSCongcong Cai; CHECK-NEXT:    i32.shl
135561beaeSCongcong Cai; CHECK-NEXT:    i32.const 24
145561beaeSCongcong Cai; CHECK-NEXT:    i32.shr_s
155561beaeSCongcong Cai; CHECK-NEXT:    local.get 1
165561beaeSCongcong Cai; CHECK-NEXT:    i32.const 255
175561beaeSCongcong Cai; CHECK-NEXT:    i32.and
185561beaeSCongcong Cai; CHECK-NEXT:    i32.shr_s
195561beaeSCongcong Cai; CHECK-NEXT:    # fallthrough-return
205561beaeSCongcong Cai  %a = ashr i8 %v, %x
215561beaeSCongcong Cai  ret i8 %a
225561beaeSCongcong Cai}
235561beaeSCongcong Cai
24*c3536b26SDan Gohmanattributes #0 = { "target-features"="+bulk-memory-opt" }
255561beaeSCongcong Cai
265561beaeSCongcong Caideclare void @llvm.memset.p0.i32(ptr, i8, i32, i1)
275561beaeSCongcong Cai
285561beaeSCongcong Caidefine void @lower_bulk_memory(i8 %val) #0 {
295561beaeSCongcong Cai; CHECK-LABEL: lower_bulk_memory:
305561beaeSCongcong Cai; CHECK:         .functype lower_bulk_memory (i32) -> ()
315561beaeSCongcong Cai; CHECK-NEXT:    .local i32
325561beaeSCongcong Cai; CHECK-NEXT:  # %bb.0:
335561beaeSCongcong Cai; CHECK-NEXT:    global.get __stack_pointer
345561beaeSCongcong Cai; CHECK-NEXT:    i32.const 112
355561beaeSCongcong Cai; CHECK-NEXT:    i32.sub
365561beaeSCongcong Cai; CHECK-NEXT:    local.tee 1
375561beaeSCongcong Cai; CHECK-NEXT:    global.set __stack_pointer
385561beaeSCongcong Cai; CHECK-NEXT:    local.get 1
395561beaeSCongcong Cai; CHECK-NEXT:    i32.const 12
405561beaeSCongcong Cai; CHECK-NEXT:    i32.add
415561beaeSCongcong Cai; CHECK-NEXT:    local.get 0
425561beaeSCongcong Cai; CHECK-NEXT:    i32.const 100
435561beaeSCongcong Cai; CHECK-NEXT:    call memset
445561beaeSCongcong Cai; CHECK-NEXT:    drop
455561beaeSCongcong Cai; CHECK-NEXT:    local.get 1
465561beaeSCongcong Cai; CHECK-NEXT:    i32.const 112
475561beaeSCongcong Cai; CHECK-NEXT:    i32.add
485561beaeSCongcong Cai; CHECK-NEXT:    global.set __stack_pointer
495561beaeSCongcong Cai; CHECK-NEXT:    # fallthrough-return
505561beaeSCongcong Cai  %a = alloca [100 x i8]
515561beaeSCongcong Cai  call void @llvm.memset.p0.i32(ptr %a, i8 %val, i32 100, i1 false)
525561beaeSCongcong Cai  ret void
535561beaeSCongcong Cai}
54