[mlir][py] Enable loading only specified dialects during creation. (#121421)
[llvm-project.git] / mlir / test / IR / greedy-pattern-rewrite-driver-top-down.mlir
blob9f4a7924b725a2094484769dd2889e6a20293ffe
1 // RUN: mlir-opt %s -test-greedy-patterns="max-iterations=1 top-down=true" \
2 // RUN:     --split-input-file | FileCheck %s
4 // Tests for https://github.com/llvm/llvm-project/issues/86765. Ensure
5 // that operands of a dead op are added to the worklist even if the same value
6 // appears multiple times as an operand.
8 // 2 uses of the same operand
10 // CHECK:       func.func @f(%arg0: i1) {
11 // CHECK-NEXT:    return
12 // CHECK-NEXT:  }
13 func.func @f(%arg0: i1) {
14   %0 = arith.constant 0 : i32
15   %if = scf.if %arg0 -> (i32) {
16     scf.yield %0 : i32
17   } else {
18     scf.yield %0 : i32
19   }
20   %dead_leaf = arith.addi %if, %if : i32
21   return
24 // -----
26 // 3 uses of the same operand
28 // CHECK:       func.func @f() {
29 // CHECK-NEXT:    return
30 // CHECK-NEXT:  }
31 func.func @f() {
32   %0 = arith.constant 0 : i1
33   %if = scf.if %0 -> (i1) {
34     scf.yield %0 : i1
35   } else {
36     scf.yield %0 : i1
37   }
38   %dead_leaf = arith.select %if, %if, %if : i1
39   return
42 // -----
44 // 2 uses of the same operand, op has 3 operands
46 // CHECK:       func.func @f() {
47 // CHECK-NEXT:    return
48 // CHECK-NEXT:  }
49 func.func @f() {
50   %0 = arith.constant 0 : i1
51   %if = scf.if %0 -> (i1) {
52     scf.yield %0 : i1
53   } else {
54     scf.yield %0 : i1
55   }
56   %dead_leaf = arith.select %0, %if, %if : i1
57   return