| // RUN: mlir-opt %s | mlir-opt | FileCheck %s |
| // RUN: mlir-opt %s --mlir-print-op-generic | mlir-opt | FileCheck %s |
| |
| // CHECK-LABEL: test_addi |
| func @test_addi(%arg0 : i64, %arg1 : i64) -> i64 { |
| %0 = arith.addi %arg0, %arg1 : i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_addi_tensor |
| func @test_addi_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi64> { |
| %0 = arith.addi %arg0, %arg1 : tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_addi_vector |
| func @test_addi_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi64> { |
| %0 = arith.addi %arg0, %arg1 : vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_subi |
| func @test_subi(%arg0 : i64, %arg1 : i64) -> i64 { |
| %0 = arith.subi %arg0, %arg1 : i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_subi_tensor |
| func @test_subi_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi64> { |
| %0 = arith.subi %arg0, %arg1 : tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_subi_vector |
| func @test_subi_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi64> { |
| %0 = arith.subi %arg0, %arg1 : vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_muli |
| func @test_muli(%arg0 : i64, %arg1 : i64) -> i64 { |
| %0 = arith.muli %arg0, %arg1 : i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_muli_tensor |
| func @test_muli_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi64> { |
| %0 = arith.muli %arg0, %arg1 : tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_muli_vector |
| func @test_muli_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi64> { |
| %0 = arith.muli %arg0, %arg1 : vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_divui |
| func @test_divui(%arg0 : i64, %arg1 : i64) -> i64 { |
| %0 = arith.divui %arg0, %arg1 : i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_divui_tensor |
| func @test_divui_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi64> { |
| %0 = arith.divui %arg0, %arg1 : tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_divui_vector |
| func @test_divui_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi64> { |
| %0 = arith.divui %arg0, %arg1 : vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_divsi |
| func @test_divsi(%arg0 : i64, %arg1 : i64) -> i64 { |
| %0 = arith.divsi %arg0, %arg1 : i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_divsi_tensor |
| func @test_divsi_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi64> { |
| %0 = arith.divsi %arg0, %arg1 : tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_divsi_vector |
| func @test_divsi_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi64> { |
| %0 = arith.divsi %arg0, %arg1 : vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_remui |
| func @test_remui(%arg0 : i64, %arg1 : i64) -> i64 { |
| %0 = arith.remui %arg0, %arg1 : i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_remui_tensor |
| func @test_remui_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi64> { |
| %0 = arith.remui %arg0, %arg1 : tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_remui_vector |
| func @test_remui_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi64> { |
| %0 = arith.remui %arg0, %arg1 : vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_remsi |
| func @test_remsi(%arg0 : i64, %arg1 : i64) -> i64 { |
| %0 = arith.remsi %arg0, %arg1 : i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_remsi_tensor |
| func @test_remsi_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi64> { |
| %0 = arith.remsi %arg0, %arg1 : tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_remsi_vector |
| func @test_remsi_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi64> { |
| %0 = arith.remsi %arg0, %arg1 : vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_andi |
| func @test_andi(%arg0 : i64, %arg1 : i64) -> i64 { |
| %0 = arith.andi %arg0, %arg1 : i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_andi_tensor |
| func @test_andi_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi64> { |
| %0 = arith.andi %arg0, %arg1 : tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_andi_vector |
| func @test_andi_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi64> { |
| %0 = arith.andi %arg0, %arg1 : vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_ori |
| func @test_ori(%arg0 : i64, %arg1 : i64) -> i64 { |
| %0 = arith.ori %arg0, %arg1 : i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_ori_tensor |
| func @test_ori_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi64> { |
| %0 = arith.ori %arg0, %arg1 : tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_ori_vector |
| func @test_ori_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi64> { |
| %0 = arith.ori %arg0, %arg1 : vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_xori |
| func @test_xori(%arg0 : i64, %arg1 : i64) -> i64 { |
| %0 = arith.xori %arg0, %arg1 : i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_xori_tensor |
| func @test_xori_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi64> { |
| %0 = arith.xori %arg0, %arg1 : tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_xori_vector |
| func @test_xori_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi64> { |
| %0 = arith.xori %arg0, %arg1 : vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_ceildivsi |
| func @test_ceildivsi(%arg0 : i64, %arg1 : i64) -> i64 { |
| %0 = arith.ceildivsi %arg0, %arg1 : i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_ceildivsi_tensor |
| func @test_ceildivsi_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi64> { |
| %0 = arith.ceildivsi %arg0, %arg1 : tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_ceildivsi_vector |
| func @test_ceildivsi_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi64> { |
| %0 = arith.ceildivsi %arg0, %arg1 : vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_floordivsi |
| func @test_floordivsi(%arg0 : i64, %arg1 : i64) -> i64 { |
| %0 = arith.floordivsi %arg0, %arg1 : i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_floordivsi_tensor |
| func @test_floordivsi_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi64> { |
| %0 = arith.floordivsi %arg0, %arg1 : tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_floordivsi_vector |
| func @test_floordivsi_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi64> { |
| %0 = arith.floordivsi %arg0, %arg1 : vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_shli |
| func @test_shli(%arg0 : i64, %arg1 : i64) -> i64 { |
| %0 = arith.shli %arg0, %arg1 : i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_shli_tensor |
| func @test_shli_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi64> { |
| %0 = arith.shli %arg0, %arg1 : tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_shli_vector |
| func @test_shli_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi64> { |
| %0 = arith.shli %arg0, %arg1 : vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_shrui |
| func @test_shrui(%arg0 : i64, %arg1 : i64) -> i64 { |
| %0 = arith.shrui %arg0, %arg1 : i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_shrui_tensor |
| func @test_shrui_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi64> { |
| %0 = arith.shrui %arg0, %arg1 : tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_shrui_vector |
| func @test_shrui_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi64> { |
| %0 = arith.shrui %arg0, %arg1 : vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_shrsi |
| func @test_shrsi(%arg0 : i64, %arg1 : i64) -> i64 { |
| %0 = arith.shrsi %arg0, %arg1 : i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_shrsi_tensor |
| func @test_shrsi_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi64> { |
| %0 = arith.shrsi %arg0, %arg1 : tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_shrsi_vector |
| func @test_shrsi_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi64> { |
| %0 = arith.shrsi %arg0, %arg1 : vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_negf |
| func @test_negf(%arg0 : f64) -> f64 { |
| %0 = arith.negf %arg0 : f64 |
| return %0 : f64 |
| } |
| |
| // CHECK-LABEL: test_negf_tensor |
| func @test_negf_tensor(%arg0 : tensor<8x8xf64>) -> tensor<8x8xf64> { |
| %0 = arith.negf %arg0 : tensor<8x8xf64> |
| return %0 : tensor<8x8xf64> |
| } |
| |
| // CHECK-LABEL: test_negf_vector |
| func @test_negf_vector(%arg0 : vector<8xf64>) -> vector<8xf64> { |
| %0 = arith.negf %arg0 : vector<8xf64> |
| return %0 : vector<8xf64> |
| } |
| |
| // CHECK-LABEL: test_addf |
| func @test_addf(%arg0 : f64, %arg1 : f64) -> f64 { |
| %0 = arith.addf %arg0, %arg1 : f64 |
| return %0 : f64 |
| } |
| |
| // CHECK-LABEL: test_addf_tensor |
| func @test_addf_tensor(%arg0 : tensor<8x8xf64>, %arg1 : tensor<8x8xf64>) -> tensor<8x8xf64> { |
| %0 = arith.addf %arg0, %arg1 : tensor<8x8xf64> |
| return %0 : tensor<8x8xf64> |
| } |
| |
| // CHECK-LABEL: test_addf_vector |
| func @test_addf_vector(%arg0 : vector<8xf64>, %arg1 : vector<8xf64>) -> vector<8xf64> { |
| %0 = arith.addf %arg0, %arg1 : vector<8xf64> |
| return %0 : vector<8xf64> |
| } |
| |
| // CHECK-LABEL: test_subf |
| func @test_subf(%arg0 : f64, %arg1 : f64) -> f64 { |
| %0 = arith.subf %arg0, %arg1 : f64 |
| return %0 : f64 |
| } |
| |
| // CHECK-LABEL: test_subf_tensor |
| func @test_subf_tensor(%arg0 : tensor<8x8xf64>, %arg1 : tensor<8x8xf64>) -> tensor<8x8xf64> { |
| %0 = arith.subf %arg0, %arg1 : tensor<8x8xf64> |
| return %0 : tensor<8x8xf64> |
| } |
| |
| // CHECK-LABEL: test_subf_vector |
| func @test_subf_vector(%arg0 : vector<8xf64>, %arg1 : vector<8xf64>) -> vector<8xf64> { |
| %0 = arith.subf %arg0, %arg1 : vector<8xf64> |
| return %0 : vector<8xf64> |
| } |
| |
| // CHECK-LABEL: test_mulf |
| func @test_mulf(%arg0 : f64, %arg1 : f64) -> f64 { |
| %0 = arith.mulf %arg0, %arg1 : f64 |
| return %0 : f64 |
| } |
| |
| // CHECK-LABEL: test_mulf_tensor |
| func @test_mulf_tensor(%arg0 : tensor<8x8xf64>, %arg1 : tensor<8x8xf64>) -> tensor<8x8xf64> { |
| %0 = arith.mulf %arg0, %arg1 : tensor<8x8xf64> |
| return %0 : tensor<8x8xf64> |
| } |
| |
| // CHECK-LABEL: test_mulf_vector |
| func @test_mulf_vector(%arg0 : vector<8xf64>, %arg1 : vector<8xf64>) -> vector<8xf64> { |
| %0 = arith.mulf %arg0, %arg1 : vector<8xf64> |
| return %0 : vector<8xf64> |
| } |
| |
| // CHECK-LABEL: test_divf |
| func @test_divf(%arg0 : f64, %arg1 : f64) -> f64 { |
| %0 = arith.divf %arg0, %arg1 : f64 |
| return %0 : f64 |
| } |
| |
| // CHECK-LABEL: test_divf_tensor |
| func @test_divf_tensor(%arg0 : tensor<8x8xf64>, %arg1 : tensor<8x8xf64>) -> tensor<8x8xf64> { |
| %0 = arith.divf %arg0, %arg1 : tensor<8x8xf64> |
| return %0 : tensor<8x8xf64> |
| } |
| |
| // CHECK-LABEL: test_divf_vector |
| func @test_divf_vector(%arg0 : vector<8xf64>, %arg1 : vector<8xf64>) -> vector<8xf64> { |
| %0 = arith.divf %arg0, %arg1 : vector<8xf64> |
| return %0 : vector<8xf64> |
| } |
| |
| // CHECK-LABEL: test_remf |
| func @test_remf(%arg0 : f64, %arg1 : f64) -> f64 { |
| %0 = arith.remf %arg0, %arg1 : f64 |
| return %0 : f64 |
| } |
| |
| // CHECK-LABEL: test_remf_tensor |
| func @test_remf_tensor(%arg0 : tensor<8x8xf64>, %arg1 : tensor<8x8xf64>) -> tensor<8x8xf64> { |
| %0 = arith.remf %arg0, %arg1 : tensor<8x8xf64> |
| return %0 : tensor<8x8xf64> |
| } |
| |
| // CHECK-LABEL: test_remf_vector |
| func @test_remf_vector(%arg0 : vector<8xf64>, %arg1 : vector<8xf64>) -> vector<8xf64> { |
| %0 = arith.remf %arg0, %arg1 : vector<8xf64> |
| return %0 : vector<8xf64> |
| } |
| |
| // CHECK-LABEL: test_extui |
| func @test_extui(%arg0 : i32) -> i64 { |
| %0 = arith.extui %arg0 : i32 to i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_extui_tensor |
| func @test_extui_tensor(%arg0 : tensor<8x8xi32>) -> tensor<8x8xi64> { |
| %0 = arith.extui %arg0 : tensor<8x8xi32> to tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_extui_vector |
| func @test_extui_vector(%arg0 : vector<8xi32>) -> vector<8xi64> { |
| %0 = arith.extui %arg0 : vector<8xi32> to vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_extsi |
| func @test_extsi(%arg0 : i32) -> i64 { |
| %0 = arith.extsi %arg0 : i32 to i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_extsi_tensor |
| func @test_extsi_tensor(%arg0 : tensor<8x8xi32>) -> tensor<8x8xi64> { |
| %0 = arith.extsi %arg0 : tensor<8x8xi32> to tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_extsi_vector |
| func @test_extsi_vector(%arg0 : vector<8xi32>) -> vector<8xi64> { |
| %0 = arith.extsi %arg0 : vector<8xi32> to vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_extf |
| func @test_extf(%arg0 : f32) -> f64 { |
| %0 = arith.extf %arg0 : f32 to f64 |
| return %0 : f64 |
| } |
| |
| // CHECK-LABEL: test_extf_tensor |
| func @test_extf_tensor(%arg0 : tensor<8x8xf32>) -> tensor<8x8xf64> { |
| %0 = arith.extf %arg0 : tensor<8x8xf32> to tensor<8x8xf64> |
| return %0 : tensor<8x8xf64> |
| } |
| |
| // CHECK-LABEL: test_extf_vector |
| func @test_extf_vector(%arg0 : vector<8xf32>) -> vector<8xf64> { |
| %0 = arith.extf %arg0 : vector<8xf32> to vector<8xf64> |
| return %0 : vector<8xf64> |
| } |
| |
| // CHECK-LABEL: test_trunci |
| func @test_trunci(%arg0 : i32) -> i16 { |
| %0 = arith.trunci %arg0 : i32 to i16 |
| return %0 : i16 |
| } |
| |
| // CHECK-LABEL: test_trunci_tensor |
| func @test_trunci_tensor(%arg0 : tensor<8x8xi32>) -> tensor<8x8xi16> { |
| %0 = arith.trunci %arg0 : tensor<8x8xi32> to tensor<8x8xi16> |
| return %0 : tensor<8x8xi16> |
| } |
| |
| // CHECK-LABEL: test_trunci_vector |
| func @test_trunci_vector(%arg0 : vector<8xi32>) -> vector<8xi16> { |
| %0 = arith.trunci %arg0 : vector<8xi32> to vector<8xi16> |
| return %0 : vector<8xi16> |
| } |
| |
| // CHECK-LABEL: test_truncf |
| func @test_truncf(%arg0 : f32) -> bf16 { |
| %0 = arith.truncf %arg0 : f32 to bf16 |
| return %0 : bf16 |
| } |
| |
| // CHECK-LABEL: test_truncf_tensor |
| func @test_truncf_tensor(%arg0 : tensor<8x8xf32>) -> tensor<8x8xbf16> { |
| %0 = arith.truncf %arg0 : tensor<8x8xf32> to tensor<8x8xbf16> |
| return %0 : tensor<8x8xbf16> |
| } |
| |
| // CHECK-LABEL: test_truncf_vector |
| func @test_truncf_vector(%arg0 : vector<8xf32>) -> vector<8xbf16> { |
| %0 = arith.truncf %arg0 : vector<8xf32> to vector<8xbf16> |
| return %0 : vector<8xbf16> |
| } |
| |
| // CHECK-LABEL: test_uitofp |
| func @test_uitofp(%arg0 : i32) -> f32 { |
| %0 = arith.uitofp %arg0 : i32 to f32 |
| return %0 : f32 |
| } |
| |
| // CHECK-LABEL: test_uitofp_tensor |
| func @test_uitofp_tensor(%arg0 : tensor<8x8xi32>) -> tensor<8x8xf32> { |
| %0 = arith.uitofp %arg0 : tensor<8x8xi32> to tensor<8x8xf32> |
| return %0 : tensor<8x8xf32> |
| } |
| |
| // CHECK-LABEL: test_uitofp_vector |
| func @test_uitofp_vector(%arg0 : vector<8xi32>) -> vector<8xf32> { |
| %0 = arith.uitofp %arg0 : vector<8xi32> to vector<8xf32> |
| return %0 : vector<8xf32> |
| } |
| |
| // CHECK-LABEL: test_sitofp |
| func @test_sitofp(%arg0 : i16) -> f64 { |
| %0 = arith.sitofp %arg0 : i16 to f64 |
| return %0 : f64 |
| } |
| |
| // CHECK-LABEL: test_sitofp_tensor |
| func @test_sitofp_tensor(%arg0 : tensor<8x8xi16>) -> tensor<8x8xf64> { |
| %0 = arith.sitofp %arg0 : tensor<8x8xi16> to tensor<8x8xf64> |
| return %0 : tensor<8x8xf64> |
| } |
| |
| // CHECK-LABEL: test_sitofp_vector |
| func @test_sitofp_vector(%arg0 : vector<8xi16>) -> vector<8xf64> { |
| %0 = arith.sitofp %arg0 : vector<8xi16> to vector<8xf64> |
| return %0 : vector<8xf64> |
| } |
| |
| // CHECK-LABEL: test_fptoui |
| func @test_fptoui(%arg0 : bf16) -> i8 { |
| %0 = arith.fptoui %arg0 : bf16 to i8 |
| return %0 : i8 |
| } |
| |
| // CHECK-LABEL: test_fptoui_tensor |
| func @test_fptoui_tensor(%arg0 : tensor<8x8xbf16>) -> tensor<8x8xi8> { |
| %0 = arith.fptoui %arg0 : tensor<8x8xbf16> to tensor<8x8xi8> |
| return %0 : tensor<8x8xi8> |
| } |
| |
| // CHECK-LABEL: test_fptoui_vector |
| func @test_fptoui_vector(%arg0 : vector<8xbf16>) -> vector<8xi8> { |
| %0 = arith.fptoui %arg0 : vector<8xbf16> to vector<8xi8> |
| return %0 : vector<8xi8> |
| } |
| |
| // CHECK-LABEL: test_fptosi |
| func @test_fptosi(%arg0 : f64) -> i64 { |
| %0 = arith.fptosi %arg0 : f64 to i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_fptosi_tensor |
| func @test_fptosi_tensor(%arg0 : tensor<8x8xf64>) -> tensor<8x8xi64> { |
| %0 = arith.fptosi %arg0 : tensor<8x8xf64> to tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_fptosi_vector |
| func @test_fptosi_vector(%arg0 : vector<8xf64>) -> vector<8xi64> { |
| %0 = arith.fptosi %arg0 : vector<8xf64> to vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_index_cast0 |
| func @test_index_cast0(%arg0 : i32) -> index { |
| %0 = arith.index_cast %arg0 : i32 to index |
| return %0 : index |
| } |
| |
| // CHECK-LABEL: test_index_cast_tensor0 |
| func @test_index_cast_tensor0(%arg0 : tensor<8x8xi32>) -> tensor<8x8xindex> { |
| %0 = arith.index_cast %arg0 : tensor<8x8xi32> to tensor<8x8xindex> |
| return %0 : tensor<8x8xindex> |
| } |
| |
| // CHECK-LABEL: test_index_cast_vector0 |
| func @test_index_cast_vector0(%arg0 : vector<8xi32>) -> vector<8xindex> { |
| %0 = arith.index_cast %arg0 : vector<8xi32> to vector<8xindex> |
| return %0 : vector<8xindex> |
| } |
| |
| // CHECK-LABEL: test_index_cast1 |
| func @test_index_cast1(%arg0 : index) -> i64 { |
| %0 = arith.index_cast %arg0 : index to i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_index_cast_tensor1 |
| func @test_index_cast_tensor1(%arg0 : tensor<8x8xindex>) -> tensor<8x8xi64> { |
| %0 = arith.index_cast %arg0 : tensor<8x8xindex> to tensor<8x8xi64> |
| return %0 : tensor<8x8xi64> |
| } |
| |
| // CHECK-LABEL: test_index_cast_vector1 |
| func @test_index_cast_vector1(%arg0 : vector<8xindex>) -> vector<8xi64> { |
| %0 = arith.index_cast %arg0 : vector<8xindex> to vector<8xi64> |
| return %0 : vector<8xi64> |
| } |
| |
| // CHECK-LABEL: test_bitcast0 |
| func @test_bitcast0(%arg0 : i64) -> f64 { |
| %0 = arith.bitcast %arg0 : i64 to f64 |
| return %0 : f64 |
| } |
| |
| // CHECK-LABEL: test_bitcast_tensor0 |
| func @test_bitcast_tensor0(%arg0 : tensor<8x8xi64>) -> tensor<8x8xf64> { |
| %0 = arith.bitcast %arg0 : tensor<8x8xi64> to tensor<8x8xf64> |
| return %0 : tensor<8x8xf64> |
| } |
| |
| // CHECK-LABEL: test_bitcast_vector0 |
| func @test_bitcast_vector0(%arg0 : vector<8xi64>) -> vector<8xf64> { |
| %0 = arith.bitcast %arg0 : vector<8xi64> to vector<8xf64> |
| return %0 : vector<8xf64> |
| } |
| |
| // CHECK-LABEL: test_bitcast1 |
| func @test_bitcast1(%arg0 : f32) -> i32 { |
| %0 = arith.bitcast %arg0 : f32 to i32 |
| return %0 : i32 |
| } |
| |
| // CHECK-LABEL: test_bitcast_tensor1 |
| func @test_bitcast_tensor1(%arg0 : tensor<8x8xf32>) -> tensor<8x8xi32> { |
| %0 = arith.bitcast %arg0 : tensor<8x8xf32> to tensor<8x8xi32> |
| return %0 : tensor<8x8xi32> |
| } |
| |
| // CHECK-LABEL: test_bitcast_vector1 |
| func @test_bitcast_vector1(%arg0 : vector<8xf32>) -> vector<8xi32> { |
| %0 = arith.bitcast %arg0 : vector<8xf32> to vector<8xi32> |
| return %0 : vector<8xi32> |
| } |
| |
| // CHECK-LABEL: test_cmpi |
| func @test_cmpi(%arg0 : i64, %arg1 : i64) -> i1 { |
| %0 = arith.cmpi ne, %arg0, %arg1 : i64 |
| return %0 : i1 |
| } |
| |
| // CHECK-LABEL: test_cmpi_tensor |
| func @test_cmpi_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi1> { |
| %0 = arith.cmpi slt, %arg0, %arg1 : tensor<8x8xi64> |
| return %0 : tensor<8x8xi1> |
| } |
| |
| // CHECK-LABEL: test_cmpi_vector |
| func @test_cmpi_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi1> { |
| %0 = arith.cmpi ult, %arg0, %arg1 : vector<8xi64> |
| return %0 : vector<8xi1> |
| } |
| |
| // CHECK-LABEL: test_cmpf |
| func @test_cmpf(%arg0 : f64, %arg1 : f64) -> i1 { |
| %0 = arith.cmpf oeq, %arg0, %arg1 : f64 |
| return %0 : i1 |
| } |
| |
| // CHECK-LABEL: test_cmpf_tensor |
| func @test_cmpf_tensor(%arg0 : tensor<8x8xf64>, %arg1 : tensor<8x8xf64>) -> tensor<8x8xi1> { |
| %0 = arith.cmpf olt, %arg0, %arg1 : tensor<8x8xf64> |
| return %0 : tensor<8x8xi1> |
| } |
| |
| // CHECK-LABEL: test_cmpf_vector |
| func @test_cmpf_vector(%arg0 : vector<8xf64>, %arg1 : vector<8xf64>) -> vector<8xi1> { |
| %0 = arith.cmpf ult, %arg0, %arg1 : vector<8xf64> |
| return %0 : vector<8xi1> |
| } |
| |
| // CHECK-LABEL: test_index_cast |
| func @test_index_cast(%arg0 : index) -> i64 { |
| %0 = arith.index_cast %arg0 : index to i64 |
| return %0 : i64 |
| } |
| |
| // CHECK-LABEL: test_index_cast_tensor |
| func @test_index_cast_tensor(%arg0 : tensor<index>) -> tensor<i64> { |
| %0 = arith.index_cast %arg0 : tensor<index> to tensor<i64> |
| return %0 : tensor<i64> |
| } |
| |
| // CHECK-LABEL: test_index_cast_tensor_reverse |
| func @test_index_cast_tensor_reverse(%arg0 : tensor<i64>) -> tensor<index> { |
| %0 = arith.index_cast %arg0 : tensor<i64> to tensor<index> |
| return %0 : tensor<index> |
| } |
| |
| // CHECK-LABEL: func @bitcast( |
| func @bitcast(%arg : f32) -> i32 { |
| %res = arith.bitcast %arg : f32 to i32 |
| return %res : i32 |
| } |
| |
| // CHECK-LABEL: test_constant |
| func @test_constant() -> () { |
| // CHECK: %c42_i32 = arith.constant 42 : i32 |
| %0 = "arith.constant"(){value = 42 : i32} : () -> i32 |
| |
| // CHECK: %c42_i32_0 = arith.constant 42 : i32 |
| %1 = arith.constant 42 : i32 |
| |
| // CHECK: %c43 = arith.constant {crazy = "std.foo"} 43 : index |
| %2 = arith.constant {crazy = "std.foo"} 43: index |
| |
| // CHECK: %cst = arith.constant 4.300000e+01 : bf16 |
| %3 = arith.constant 43.0 : bf16 |
| |
| // CHECK: %cst_1 = arith.constant dense<0> : vector<4xi32> |
| %4 = arith.constant dense<0> : vector<4 x i32> |
| |
| // CHECK: %cst_2 = arith.constant dense<0> : tensor<42xi32> |
| %5 = arith.constant dense<0> : tensor<42 x i32> |
| |
| // CHECK: %cst_3 = arith.constant dense<0> : vector<42xi32> |
| %6 = arith.constant dense<0> : vector<42 x i32> |
| |
| // CHECK: %true = arith.constant true |
| %7 = arith.constant true |
| |
| // CHECK: %false = arith.constant false |
| %8 = arith.constant false |
| |
| return |
| } |
| |
| // CHECK-LABEL: func @maximum |
| func @maximum(%v1: vector<4xf32>, %v2: vector<4xf32>, |
| %f1: f32, %f2: f32, |
| %i1: i32, %i2: i32) { |
| %max_vector = arith.maxf %v1, %v2 : vector<4xf32> |
| %max_float = arith.maxf %f1, %f2 : f32 |
| %max_signed = arith.maxsi %i1, %i2 : i32 |
| %max_unsigned = arith.maxui %i1, %i2 : i32 |
| return |
| } |
| |
| // CHECK-LABEL: func @minimum |
| func @minimum(%v1: vector<4xf32>, %v2: vector<4xf32>, |
| %f1: f32, %f2: f32, |
| %i1: i32, %i2: i32) { |
| %min_vector = arith.minf %v1, %v2 : vector<4xf32> |
| %min_float = arith.minf %f1, %f2 : f32 |
| %min_signed = arith.minsi %i1, %i2 : i32 |
| %min_unsigned = arith.minui %i1, %i2 : i32 |
| return |
| } |