xref: /llvm-project/mlir/test/Dialect/ArmSME/canonicalize.mlir (revision 041baf2f60ac3e107399641aea04c77019e7eab8)
1// RUN: mlir-opt %s -canonicalize | mlir-opt | FileCheck %s
2
3// This tests that dead tile values are removed from control flow.
4
5// CHECK-LABEL: @unused_ssa_tile_is_removed_from_blocks
6// CHECK-NOT: vector<[4]x[4]xf32>
7func.func @unused_ssa_tile_is_removed_from_blocks(%arg0: memref<?x?xi32>) {
8  %c10 = arith.constant 10 : index
9  %c0 = arith.constant 0 : index
10  %c1 = arith.constant 1 : index
11  %tile = arm_sme.get_tile : vector<[4]x[4]xf32>
12  cf.br ^bb1(%c0, %tile : index, vector<[4]x[4]xf32>)
13^bb1(%1: index, %2: vector<[4]x[4]xf32>):  // 2 preds: ^bb0, ^bb2
14  %3 = arith.cmpi slt, %1, %c10 : index
15  cf.cond_br %3, ^bb2, ^bb3
16^bb2:  // pred: ^bb1
17  %4 = arith.addi %1, %c1 : index
18  cf.br ^bb1(%4, %tile : index, vector<[4]x[4]xf32>)
19^bb3:  // pred: ^bb1
20  return
21}
22