brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · 2d7bfbe Raw
113 lines · plain
1// RUN: yaml2obj %S/inputs/if.yaml.wasm -o - | mlir-translate --import-wasm | FileCheck %s2 3/* Source code used to create this test:4(module5(type $intMapper (func (param $input i32) (result i32)))6(func $if_else (type $intMapper)7  local.get 08  i32.const 19  i32.and10  if $isOdd (result i32)11    local.get 012    i32.const 313    i32.mul14    i32.const 115    i32.add16  else17    local.get 018    i32.const 119    i32.shr_u20  end21)22 23(func $if_only (type $intMapper)24  local.get 025  local.get 026  i32.const 127  i32.and28  if $isOdd (type $intMapper)29    i32.const 130    i32.add31  end32)33 34(func $if_if (type $intMapper)35  local.get 036  i32.ctz37  if $isEven (result i32)38    i32.const 239    local.get 040    i32.const 141    i32.shr_u42    i32.ctz43    if $isMultipleOfFour (type $intMapper)44      i32.const 245      i32.add46    end47  else48    i32.const 149  end50)51)52*/53// CHECK-LABEL:   wasmssa.func @func_0(54// CHECK-SAME:      %[[ARG0:.*]]: !wasmssa<local ref to i32>) -> i32 {55// CHECK:           %[[VAL_0:.*]] = wasmssa.local_get %[[ARG0]] :  ref to i3256// CHECK:           %[[VAL_1:.*]] = wasmssa.const 1 : i3257// CHECK:           %[[VAL_2:.*]] = wasmssa.and %[[VAL_0]] %[[VAL_1]] : i3258// CHECK:           wasmssa.if %[[VAL_2]] : {59// CHECK:             %[[VAL_3:.*]] = wasmssa.local_get %[[ARG0]] :  ref to i3260// CHECK:             %[[VAL_4:.*]] = wasmssa.const 3 : i3261// CHECK:             %[[VAL_5:.*]] = wasmssa.mul %[[VAL_3]] %[[VAL_4]] : i3262// CHECK:             %[[VAL_6:.*]] = wasmssa.const 1 : i3263// CHECK:             %[[VAL_7:.*]] = wasmssa.add %[[VAL_5]] %[[VAL_6]] : i3264// CHECK:             wasmssa.block_return %[[VAL_7]] : i3265// CHECK:           } "else "{66// CHECK:             %[[VAL_8:.*]] = wasmssa.local_get %[[ARG0]] :  ref to i3267// CHECK:             %[[VAL_9:.*]] = wasmssa.const 1 : i3268// CHECK:             %[[VAL_10:.*]] = wasmssa.shr_u %[[VAL_8]] by %[[VAL_9]] bits : i3269// CHECK:             wasmssa.block_return %[[VAL_10]] : i3270// CHECK:           }> ^bb171// CHECK:         ^bb1(%[[VAL_11:.*]]: i32):72// CHECK:           wasmssa.return %[[VAL_11]] : i3273 74// CHECK-LABEL:   wasmssa.func @func_1(75// CHECK-SAME:      %[[ARG0:.*]]: !wasmssa<local ref to i32>) -> i32 {76// CHECK:           %[[VAL_0:.*]] = wasmssa.local_get %[[ARG0]] :  ref to i3277// CHECK:           %[[VAL_1:.*]] = wasmssa.local_get %[[ARG0]] :  ref to i3278// CHECK:           %[[VAL_2:.*]] = wasmssa.const 1 : i3279// CHECK:           %[[VAL_3:.*]] = wasmssa.and %[[VAL_1]] %[[VAL_2]] : i3280// CHECK:           wasmssa.if %[[VAL_3]](%[[VAL_0]]) : i32 : {81// CHECK:           ^bb0(%[[VAL_4:.*]]: i32):82// CHECK:             %[[VAL_5:.*]] = wasmssa.const 1 : i3283// CHECK:             %[[VAL_6:.*]] = wasmssa.add %[[VAL_4]] %[[VAL_5]] : i3284// CHECK:             wasmssa.block_return %[[VAL_6]] : i3285// CHECK:           } > ^bb186// CHECK:         ^bb1(%[[VAL_7:.*]]: i32):87// CHECK:           wasmssa.return %[[VAL_7]] : i3288 89// CHECK-LABEL:   wasmssa.func @func_2(90// CHECK-SAME:      %[[ARG0:.*]]: !wasmssa<local ref to i32>) -> i32 {91// CHECK:           %[[VAL_0:.*]] = wasmssa.local_get %[[ARG0]] :  ref to i3292// CHECK:           %[[VAL_1:.*]] = wasmssa.ctz %[[VAL_0]] : i3293// CHECK:           wasmssa.if %[[VAL_1]] : {94// CHECK:             %[[VAL_2:.*]] = wasmssa.const 2 : i3295// CHECK:             %[[VAL_3:.*]] = wasmssa.local_get %[[ARG0]] :  ref to i3296// CHECK:             %[[VAL_4:.*]] = wasmssa.const 1 : i3297// CHECK:             %[[VAL_5:.*]] = wasmssa.shr_u %[[VAL_3]] by %[[VAL_4]] bits : i3298// CHECK:             %[[VAL_6:.*]] = wasmssa.ctz %[[VAL_5]] : i3299// CHECK:             wasmssa.if %[[VAL_6]](%[[VAL_2]]) : i32 : {100// CHECK:             ^bb0(%[[VAL_7:.*]]: i32):101// CHECK:               %[[VAL_8:.*]] = wasmssa.const 2 : i32102// CHECK:               %[[VAL_9:.*]] = wasmssa.add %[[VAL_7]] %[[VAL_8]] : i32103// CHECK:               wasmssa.block_return %[[VAL_9]] : i32104// CHECK:             } > ^bb1105// CHECK:           ^bb1(%[[VAL_10:.*]]: i32):106// CHECK:             wasmssa.block_return %[[VAL_10]] : i32107// CHECK:           } "else "{108// CHECK:             %[[VAL_11:.*]] = wasmssa.const 1 : i32109// CHECK:             wasmssa.block_return %[[VAL_11]] : i32110// CHECK:           }> ^bb1111// CHECK:         ^bb1(%[[VAL_12:.*]]: i32):112// CHECK:           wasmssa.return %[[VAL_12]] : i32113