3
3
// Verify that ops with broadcastable trait verifies operand and result type
4
4
// combinations and emits an error for invalid combinations.
5
5
6
- func @broadcast_scalar_scalar_scalar (tensor <i32 >, tensor <i32 >) -> tensor <i32 > {
6
+ func.func @broadcast_scalar_scalar_scalar (tensor <i32 >, tensor <i32 >) -> tensor <i32 > {
7
7
^bb0 (%arg0: tensor <i32 >, %arg1: tensor <i32 >):
8
8
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <i32 >, tensor <i32 >) -> tensor <i32 >
9
9
return %0 : tensor <i32 >
10
10
}
11
11
12
12
// -----
13
13
14
- func @broadcast_tensor_scalar_tensor (tensor <4 xi32 >, tensor <i32 >) -> tensor <4 xi32 > {
14
+ func.func @broadcast_tensor_scalar_tensor (tensor <4 xi32 >, tensor <i32 >) -> tensor <4 xi32 > {
15
15
^bb0 (%arg0: tensor <4 xi32 >, %arg1: tensor <i32 >):
16
16
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <4 xi32 >, tensor <i32 >) -> tensor <4 xi32 >
17
17
return %0 : tensor <4 xi32 >
@@ -20,7 +20,7 @@ func @broadcast_tensor_scalar_tensor(tensor<4xi32>, tensor<i32>) -> tensor<4xi32
20
20
// -----
21
21
22
22
// Check only one dimension has size 1
23
- func @broadcast_tensor_tensor_tensor (tensor <4 x3 x2 xi32 >, tensor <3 x1 xi32 >) -> tensor <4 x3 x2 xi32 > {
23
+ func.func @broadcast_tensor_tensor_tensor (tensor <4 x3 x2 xi32 >, tensor <3 x1 xi32 >) -> tensor <4 x3 x2 xi32 > {
24
24
^bb0 (%arg0: tensor <4 x3 x2 xi32 >, %arg1: tensor <3 x1 xi32 >):
25
25
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <4 x3 x2 xi32 >, tensor <3 x1 xi32 >) -> tensor <4 x3 x2 xi32 >
26
26
return %0 : tensor <4 x3 x2 xi32 >
@@ -29,7 +29,7 @@ func @broadcast_tensor_tensor_tensor(tensor<4x3x2xi32>, tensor<3x1xi32>) -> tens
29
29
// -----
30
30
31
31
// Check multiple dimensions have size 1
32
- func @broadcast_tensor_tensor_tensor (tensor <8 x1 x6 x1 xi32 >, tensor <7 x1 x5 xi32 >) -> tensor <8 x7 x6 x5 xi32 > {
32
+ func.func @broadcast_tensor_tensor_tensor (tensor <8 x1 x6 x1 xi32 >, tensor <7 x1 x5 xi32 >) -> tensor <8 x7 x6 x5 xi32 > {
33
33
^bb0 (%arg0: tensor <8 x1 x6 x1 xi32 >, %arg1: tensor <7 x1 x5 xi32 >):
34
34
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <8 x1 x6 x1 xi32 >, tensor <7 x1 x5 xi32 >) -> tensor <8 x7 x6 x5 xi32 >
35
35
return %0 : tensor <8 x7 x6 x5 xi32 >
@@ -38,7 +38,7 @@ func @broadcast_tensor_tensor_tensor(tensor<8x1x6x1xi32>, tensor<7x1x5xi32>) ->
38
38
// -----
39
39
40
40
// Check leading unknown dimension
41
- func @broadcast_tensor_tensor_tensor (tensor <?x1 x6 x1 xi32 >, tensor <7 x1 x5 xi32 >) -> tensor <?x7 x6 x5 xi32 > {
41
+ func.func @broadcast_tensor_tensor_tensor (tensor <?x1 x6 x1 xi32 >, tensor <7 x1 x5 xi32 >) -> tensor <?x7 x6 x5 xi32 > {
42
42
^bb0 (%arg0: tensor <?x1 x6 x1 xi32 >, %arg1: tensor <7 x1 x5 xi32 >):
43
43
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <?x1 x6 x1 xi32 >, tensor <7 x1 x5 xi32 >) -> tensor <?x7 x6 x5 xi32 >
44
44
return %0 : tensor <?x7 x6 x5 xi32 >
@@ -47,7 +47,7 @@ func @broadcast_tensor_tensor_tensor(tensor<?x1x6x1xi32>, tensor<7x1x5xi32>) ->
47
47
// -----
48
48
49
49
// Check unknown dimension in the middle
50
- func @broadcast_tensor_tensor_tensor (tensor <8 x1 x?x1 xi32 >, tensor <7 x1 x5 xi32 >) -> tensor <8 x7 x?x5 xi32 > {
50
+ func.func @broadcast_tensor_tensor_tensor (tensor <8 x1 x?x1 xi32 >, tensor <7 x1 x5 xi32 >) -> tensor <8 x7 x?x5 xi32 > {
51
51
^bb0 (%arg0: tensor <8 x1 x?x1 xi32 >, %arg1: tensor <7 x1 x5 xi32 >):
52
52
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <8 x1 x?x1 xi32 >, tensor <7 x1 x5 xi32 >) -> tensor <8 x7 x?x5 xi32 >
53
53
return %0 : tensor <8 x7 x?x5 xi32 >
@@ -56,7 +56,7 @@ func @broadcast_tensor_tensor_tensor(tensor<8x1x?x1xi32>, tensor<7x1x5xi32>) ->
56
56
// -----
57
57
58
58
// Check incompatible vector and tensor result type
59
- func @broadcast_scalar_vector_vector (tensor <4 xf32 >, tensor <4 xf32 >) -> vector <4 xf32 > {
59
+ func.func @broadcast_scalar_vector_vector (tensor <4 xf32 >, tensor <4 xf32 >) -> vector <4 xf32 > {
60
60
^bb0 (%arg0: tensor <4 xf32 >, %arg1: tensor <4 xf32 >):
61
61
// expected-error @+1 {{op result #0 must be tensor of any type values, but got 'vector<4xf32>'}}
62
62
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <4 xf32 >, tensor <4 xf32 >) -> vector <4 xf32 >
@@ -66,7 +66,7 @@ func @broadcast_scalar_vector_vector(tensor<4xf32>, tensor<4xf32>) -> vector<4xf
66
66
// -----
67
67
68
68
// Check incompatible operand types with known dimension
69
- func @broadcast_tensor_tensor_tensor (tensor <4 x3 x2 xi32 >, tensor <3 x3 xi32 >) -> tensor <4 x3 x2 xi32 > {
69
+ func.func @broadcast_tensor_tensor_tensor (tensor <4 x3 x2 xi32 >, tensor <3 x3 xi32 >) -> tensor <4 x3 x2 xi32 > {
70
70
^bb0 (%arg0: tensor <4 x3 x2 xi32 >, %arg1: tensor <3 x3 xi32 >):
71
71
// expected-error @+1 {{operands don't have broadcast-compatible shapes}}
72
72
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <4 x3 x2 xi32 >, tensor <3 x3 xi32 >) -> tensor <4 x3 x2 xi32 >
@@ -76,7 +76,7 @@ func @broadcast_tensor_tensor_tensor(tensor<4x3x2xi32>, tensor<3x3xi32>) -> tens
76
76
// -----
77
77
78
78
// Check incompatible result type with known dimension
79
- func @broadcast_tensor_tensor_tensor (tensor <4 x3 x2 xi32 >, tensor <3 x1 xi32 >) -> tensor <4 x3 x3 xi32 > {
79
+ func.func @broadcast_tensor_tensor_tensor (tensor <4 x3 x2 xi32 >, tensor <3 x1 xi32 >) -> tensor <4 x3 x3 xi32 > {
80
80
^bb0 (%arg0: tensor <4 x3 x2 xi32 >, %arg1: tensor <3 x1 xi32 >):
81
81
// expected-error @+1 {{op result type '4x3x3' not broadcast compatible with broadcasted operands's shapes '4x3x2'}}
82
82
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <4 x3 x2 xi32 >, tensor <3 x1 xi32 >) -> tensor <4 x3 x3 xi32 >
@@ -86,7 +86,7 @@ func @broadcast_tensor_tensor_tensor(tensor<4x3x2xi32>, tensor<3x1xi32>) -> tens
86
86
// -----
87
87
88
88
// Check incompatible result type with known dimension
89
- func @broadcast_tensor_tensor_tensor (tensor <8 x1 x6 x1 xi32 >, tensor <7 x1 x5 xi32 >) -> tensor <8 x7 x6 x1 xi32 > {
89
+ func.func @broadcast_tensor_tensor_tensor (tensor <8 x1 x6 x1 xi32 >, tensor <7 x1 x5 xi32 >) -> tensor <8 x7 x6 x1 xi32 > {
90
90
^bb0 (%arg0: tensor <8 x1 x6 x1 xi32 >, %arg1: tensor <7 x1 x5 xi32 >):
91
91
// expected-error @+1 {{op result type '8x7x6x1' not broadcast compatible with broadcasted operands's shapes '8x7x6x5'}}
92
92
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <8 x1 x6 x1 xi32 >, tensor <7 x1 x5 xi32 >) -> tensor <8 x7 x6 x1 xi32 >
@@ -95,31 +95,31 @@ func @broadcast_tensor_tensor_tensor(tensor<8x1x6x1xi32>, tensor<7x1x5xi32>) ->
95
95
96
96
// -----
97
97
98
- func @broadcast_tensor_tensor_tensor (tensor <2 xi32 >, tensor <2 xi32 >) -> tensor <*xi32 > {
98
+ func.func @broadcast_tensor_tensor_tensor (tensor <2 xi32 >, tensor <2 xi32 >) -> tensor <*xi32 > {
99
99
^bb0 (%arg0: tensor <2 xi32 >, %arg1: tensor <2 xi32 >):
100
100
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <2 xi32 >, tensor <2 xi32 >) -> tensor <*xi32 >
101
101
return %0 : tensor <*xi32 >
102
102
}
103
103
104
104
// -----
105
105
106
- func @broadcast_tensor_tensor_tensor (tensor <4 x3 x2 xi32 >, tensor <?xi32 >) -> tensor <4 x3 x2 xi32 > {
106
+ func.func @broadcast_tensor_tensor_tensor (tensor <4 x3 x2 xi32 >, tensor <?xi32 >) -> tensor <4 x3 x2 xi32 > {
107
107
^bb0 (%arg0: tensor <4 x3 x2 xi32 >, %arg1: tensor <?xi32 >):
108
108
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <4 x3 x2 xi32 >, tensor <?xi32 >) -> tensor <4 x3 x2 xi32 >
109
109
return %0 : tensor <4 x3 x2 xi32 >
110
110
}
111
111
112
112
// -----
113
113
114
- func @broadcast_tensor_tensor_tensor (%arg0: tensor <?x6 x1 xi32 >, %arg1: tensor <*xi32 >) -> tensor <?x6 x6 xi32 > {
114
+ func.func @broadcast_tensor_tensor_tensor (%arg0: tensor <?x6 x1 xi32 >, %arg1: tensor <*xi32 >) -> tensor <?x6 x6 xi32 > {
115
115
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <?x6 x1 xi32 >, tensor <*xi32 >) -> tensor <?x6 x6 xi32 >
116
116
return %0 : tensor <?x6 x6 xi32 >
117
117
}
118
118
119
119
// -----
120
120
121
121
// Unranked operands but ranked result
122
- func @broadcast_tensor_tensor_tensor (tensor <*xi32 >, tensor <*xi32 >) -> tensor <2 xi32 > {
122
+ func.func @broadcast_tensor_tensor_tensor (tensor <*xi32 >, tensor <*xi32 >) -> tensor <2 xi32 > {
123
123
^bb0 (%arg0: tensor <*xi32 >, %arg1: tensor <*xi32 >):
124
124
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <*xi32 >, tensor <*xi32 >) -> tensor <2 xi32 >
125
125
return %0 : tensor <2 xi32 >
@@ -128,15 +128,15 @@ func @broadcast_tensor_tensor_tensor(tensor<*xi32>, tensor<*xi32>) -> tensor<2xi
128
128
// -----
129
129
130
130
// Unranked operand and compatible ranked result
131
- func @broadcast_tensor_tensor_tensor (tensor <3 x2 xi32 >, tensor <*xi32 >) -> tensor <4 x3 x2 xi32 > {
131
+ func.func @broadcast_tensor_tensor_tensor (tensor <3 x2 xi32 >, tensor <*xi32 >) -> tensor <4 x3 x2 xi32 > {
132
132
^bb0 (%arg0: tensor <3 x2 xi32 >, %arg1: tensor <*xi32 >):
133
133
%0 = " test.broadcastable" (%arg0 , %arg0 , %arg1 ) : (tensor <3 x2 xi32 >, tensor <3 x2 xi32 >, tensor <*xi32 >) -> tensor <4 x3 x2 xi32 >
134
134
return %0 : tensor <4 x3 x2 xi32 >
135
135
}
136
136
137
137
// -----
138
138
139
- func @broadcast_tensor_tensor_tensor (tensor <3 x2 xi32 >, tensor <*xi32 >) -> tensor <2 xi32 > {
139
+ func.func @broadcast_tensor_tensor_tensor (tensor <3 x2 xi32 >, tensor <*xi32 >) -> tensor <2 xi32 > {
140
140
^bb0 (%arg0: tensor <3 x2 xi32 >, %arg1: tensor <*xi32 >):
141
141
// expected-error @+1 {{op result type '2' not broadcast compatible with broadcasted operands's shapes '3x2'}}
142
142
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <3 x2 xi32 >, tensor <*xi32 >) -> tensor <2 xi32 >
@@ -145,15 +145,15 @@ func @broadcast_tensor_tensor_tensor(tensor<3x2xi32>, tensor<*xi32>) -> tensor<2
145
145
146
146
// -----
147
147
148
- func @broadcast_tensor_tensor_tensor (tensor <?x1 x6 x1 xi32 >, tensor <7 x1 x5 xi32 >) -> tensor <8 x7 x6 x5 xi32 > {
148
+ func.func @broadcast_tensor_tensor_tensor (tensor <?x1 x6 x1 xi32 >, tensor <7 x1 x5 xi32 >) -> tensor <8 x7 x6 x5 xi32 > {
149
149
^bb0 (%arg0: tensor <?x1 x6 x1 xi32 >, %arg1: tensor <7 x1 x5 xi32 >):
150
150
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <?x1 x6 x1 xi32 >, tensor <7 x1 x5 xi32 >) -> tensor <8 x7 x6 x5 xi32 >
151
151
return %0 : tensor <8 x7 x6 x5 xi32 >
152
152
}
153
153
154
154
// -----
155
155
156
- func @broadcastDifferentResultType (tensor <4 xi32 >, tensor <4 xi32 >) -> tensor <4 xi1 > {
156
+ func.func @broadcastDifferentResultType (tensor <4 xi32 >, tensor <4 xi32 >) -> tensor <4 xi1 > {
157
157
^bb0 (%arg0: tensor <4 xi32 >, %arg1: tensor <4 xi32 >):
158
158
%0 = " test.broadcastable" (%arg0 , %arg1 ) : (tensor <4 xi32 >, tensor <4 xi32 >) -> tensor <4 xi1 >
159
159
return %0 : tensor <4 xi1 >
0 commit comments