// RUN: mlir-opt %s -test-distinct-attrs | FileCheck %s // CHECK: #[[DIST0:.*]] = distinct[0]<42 : i32> // CHECK: #[[DIST1:.*]] = distinct[1]<42 : i32> #distinct = distinct[0]<42 : i32> // CHECK: #[[DIST2:.*]] = distinct[2]<42 : i32> // CHECK: #[[DIST3:.*]] = distinct[3]<42 : i32> #distinct1 = distinct[1]<42 : i32> // CHECK: #[[DIST4:.*]] = distinct[4]<43 : i32> // CHECK: #[[DIST5:.*]] = distinct[5]<43 : i32> #distinct2 = distinct[2]<43 : i32> // CHECK: #[[DIST6:.*]] = distinct[6]<@foo_1> // CHECK: #[[DIST7:.*]] = distinct[7]<@foo_1> #distinct3 = distinct[3]<@foo_1> // Copies made for foo_2 // CHECK: #[[DIST8:.*]] = distinct[8]<42 : i32> // CHECK: #[[DIST9:.*]] = distinct[9]<42 : i32> // CHECK: #[[DIST10:.*]] = distinct[10]<43 : i32> // CHECK: #[[DIST11:.*]] = distinct[11]<@foo_1> // Copies made for foo_3 // CHECK: #[[DIST12:.*]] = distinct[12]<42 : i32> // CHECK: #[[DIST13:.*]] = distinct[13]<42 : i32> // CHECK: #[[DIST14:.*]] = distinct[14]<43 : i32> // CHECK: #[[DIST15:.*]] = distinct[15]<@foo_1> // Copies made for foo_4 // CHECK: #[[DIST16:.*]] = distinct[16]<42 : i32> // CHECK: #[[DIST17:.*]] = distinct[17]<42 : i32> // CHECK: #[[DIST18:.*]] = distinct[18]<43 : i32> // CHECK: #[[DIST19:.*]] = distinct[19]<@foo_1> // CHECK: @foo_1 func.func @foo_1() { // CHECK: "test.op"() {distinct.input = #[[DIST0]], distinct.output = #[[DIST1]]} "test.op"() {distinct.input = #distinct} : () -> () // CHECK: "test.op"() {distinct.input = #[[DIST2]], distinct.output = #[[DIST3]]} "test.op"() {distinct.input = #distinct1} : () -> () // CHECK: "test.op"() {distinct.input = #[[DIST4]], distinct.output = #[[DIST5]]} "test.op"() {distinct.input = #distinct2} : () -> () // CHECK: "test.op"() {distinct.input = #[[DIST6]], distinct.output = #[[DIST7]]} "test.op"() {distinct.input = #distinct3} : () -> () } func.func @foo_2() { // CHECK: "test.op"() {distinct.input = #[[DIST0]], distinct.output = #[[DIST8]]} "test.op"() {distinct.input = #distinct} : () -> () // CHECK: "test.op"() {distinct.input = #[[DIST2]], distinct.output = #[[DIST9]]} "test.op"() {distinct.input = #distinct1} : () -> () // CHECK: "test.op"() {distinct.input = #[[DIST4]], distinct.output = #[[DIST10]]} "test.op"() {distinct.input = #distinct2} : () -> () // CHECK: "test.op"() {distinct.input = #[[DIST6]], distinct.output = #[[DIST11]]} "test.op"() {distinct.input = #distinct3} : () -> () } func.func @foo_3() { // CHECK: "test.op"() {distinct.input = #[[DIST0]], distinct.output = #[[DIST12]]} "test.op"() {distinct.input = #distinct} : () -> () // CHECK: "test.op"() {distinct.input = #[[DIST2]], distinct.output = #[[DIST13]]} "test.op"() {distinct.input = #distinct1} : () -> () // CHECK: "test.op"() {distinct.input = #[[DIST4]], distinct.output = #[[DIST14]]} "test.op"() {distinct.input = #distinct2} : () -> () // CHECK: "test.op"() {distinct.input = #[[DIST6]], distinct.output = #[[DIST15]]} "test.op"() {distinct.input = #distinct3} : () -> () } func.func @foo_4() { // CHECK: "test.op"() {distinct.input = #[[DIST0]], distinct.output = #[[DIST16]]} "test.op"() {distinct.input = #distinct} : () -> () // CHECK: "test.op"() {distinct.input = #[[DIST2]], distinct.output = #[[DIST17]]} "test.op"() {distinct.input = #distinct1} : () -> () // CHECK: "test.op"() {distinct.input = #[[DIST4]], distinct.output = #[[DIST18]]} "test.op"() {distinct.input = #distinct2} : () -> () // CHECK: "test.op"() {distinct.input = #[[DIST6]], distinct.output = #[[DIST19]]} "test.op"() {distinct.input = #distinct3} : () -> () }