| // RUN: yaml2obj %S/inputs/comparison_ops.yaml.wasm -o - | mlir-translate --import-wasm | FileCheck %s |
| /* Source code used to create this test: |
| (module |
| (func $lt_si32 (result i32) |
| i32.const 12 |
| i32.const 50 |
| i32.lt_s |
| ) |
| (func $le_si32 (result i32) |
| i32.const 12 |
| i32.const 50 |
| i32.le_s |
| ) |
| (func $lt_ui32 (result i32) |
| i32.const 12 |
| i32.const 50 |
| i32.lt_u |
| ) |
| (func $le_ui32 (result i32) |
| i32.const 12 |
| i32.const 50 |
| i32.le_u |
| ) |
| (func $gt_si32 (result i32) |
| i32.const 12 |
| i32.const 50 |
| i32.gt_s |
| ) |
| (func $gt_ui32 (result i32) |
| i32.const 12 |
| i32.const 50 |
| i32.gt_u |
| ) |
| (func $ge_si32 (result i32) |
| i32.const 12 |
| i32.const 50 |
| i32.ge_s |
| ) |
| (func $ge_ui32 (result i32) |
| i32.const 12 |
| i32.const 50 |
| i32.ge_u |
| ) |
| (func $lt_si64 (result i32) |
| i64.const 12 |
| i64.const 50 |
| i64.lt_s |
| ) |
| (func $le_si64 (result i32) |
| i64.const 12 |
| i64.const 50 |
| i64.le_s |
| ) |
| (func $lt_ui64 (result i32) |
| i64.const 12 |
| i64.const 50 |
| i64.lt_u |
| ) |
| (func $le_ui64 (result i32) |
| i64.const 12 |
| i64.const 50 |
| i64.le_u |
| ) |
| (func $gt_si64 (result i32) |
| i64.const 12 |
| i64.const 50 |
| i64.gt_s |
| ) |
| (func $gt_ui64 (result i32) |
| i64.const 12 |
| i64.const 50 |
| i64.gt_u |
| ) |
| (func $ge_si64 (result i32) |
| i64.const 12 |
| i64.const 50 |
| i64.ge_s |
| ) |
| (func $ge_ui64 (result i32) |
| i64.const 12 |
| i64.const 50 |
| i64.ge_u |
| ) |
| (func $lt_f32 (result i32) |
| f32.const 5 |
| f32.const 14 |
| f32.lt |
| ) |
| (func $le_f32 (result i32) |
| f32.const 5 |
| f32.const 14 |
| f32.le |
| ) |
| (func $gt_f32 (result i32) |
| f32.const 5 |
| f32.const 14 |
| f32.gt |
| ) |
| (func $ge_f32 (result i32) |
| f32.const 5 |
| f32.const 14 |
| f32.ge |
| ) |
| (func $lt_f64 (result i32) |
| f64.const 5 |
| f64.const 14 |
| f64.lt |
| ) |
| (func $le_f64 (result i32) |
| f64.const 5 |
| f64.const 14 |
| f64.le |
| ) |
| (func $gt_f64 (result i32) |
| f64.const 5 |
| f64.const 14 |
| f64.gt |
| ) |
| (func $ge_f64 (result i32) |
| f64.const 5 |
| f64.const 14 |
| f64.ge |
| ) |
| ) |
| */ |
| |
| // CHECK-LABEL: wasmssa.func @func_0() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 12 : i32 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 50 : i32 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.lt_si %[[VAL_0]] %[[VAL_1]] : i32 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_1() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 12 : i32 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 50 : i32 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.le_si %[[VAL_0]] %[[VAL_1]] : i32 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_2() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 12 : i32 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 50 : i32 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.lt_ui %[[VAL_0]] %[[VAL_1]] : i32 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_3() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 12 : i32 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 50 : i32 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.le_ui %[[VAL_0]] %[[VAL_1]] : i32 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_4() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 12 : i32 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 50 : i32 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.gt_si %[[VAL_0]] %[[VAL_1]] : i32 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_5() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 12 : i32 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 50 : i32 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.gt_ui %[[VAL_0]] %[[VAL_1]] : i32 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_6() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 12 : i32 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 50 : i32 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.ge_si %[[VAL_0]] %[[VAL_1]] : i32 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_7() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 12 : i32 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 50 : i32 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.ge_ui %[[VAL_0]] %[[VAL_1]] : i32 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_8() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 12 : i64 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 50 : i64 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.lt_si %[[VAL_0]] %[[VAL_1]] : i64 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_9() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 12 : i64 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 50 : i64 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.le_si %[[VAL_0]] %[[VAL_1]] : i64 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_10() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 12 : i64 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 50 : i64 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.lt_ui %[[VAL_0]] %[[VAL_1]] : i64 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_11() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 12 : i64 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 50 : i64 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.le_ui %[[VAL_0]] %[[VAL_1]] : i64 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_12() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 12 : i64 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 50 : i64 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.gt_si %[[VAL_0]] %[[VAL_1]] : i64 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_13() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 12 : i64 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 50 : i64 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.gt_ui %[[VAL_0]] %[[VAL_1]] : i64 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_14() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 12 : i64 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 50 : i64 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.ge_si %[[VAL_0]] %[[VAL_1]] : i64 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_15() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 12 : i64 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 50 : i64 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.ge_ui %[[VAL_0]] %[[VAL_1]] : i64 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_16() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 5.000000e+00 : f32 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 1.400000e+01 : f32 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.lt %[[VAL_0]] %[[VAL_1]] : f32 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_17() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 5.000000e+00 : f32 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 1.400000e+01 : f32 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.le %[[VAL_0]] %[[VAL_1]] : f32 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_18() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 5.000000e+00 : f32 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 1.400000e+01 : f32 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.gt %[[VAL_0]] %[[VAL_1]] : f32 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_19() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 5.000000e+00 : f32 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 1.400000e+01 : f32 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.ge %[[VAL_0]] %[[VAL_1]] : f32 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_20() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 5.000000e+00 : f64 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 1.400000e+01 : f64 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.lt %[[VAL_0]] %[[VAL_1]] : f64 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_21() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 5.000000e+00 : f64 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 1.400000e+01 : f64 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.le %[[VAL_0]] %[[VAL_1]] : f64 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_22() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 5.000000e+00 : f64 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 1.400000e+01 : f64 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.gt %[[VAL_0]] %[[VAL_1]] : f64 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |
| |
| // CHECK-LABEL: wasmssa.func @func_23() -> i32 { |
| // CHECK: %[[VAL_0:.*]] = wasmssa.const 5.000000e+00 : f64 |
| // CHECK: %[[VAL_1:.*]] = wasmssa.const 1.400000e+01 : f64 |
| // CHECK: %[[VAL_2:.*]] = wasmssa.ge %[[VAL_0]] %[[VAL_1]] : f64 -> i32 |
| // CHECK: wasmssa.return %[[VAL_2]] : i32 |