@@ -1175,6 +1175,7 @@ def forward(self, y: Tensor, x: Tensor) -> Tensor:
11751175 // CHECK-NEXT: coreai.graph @main(%[[Y:.*]]: tensor<2x3xf32> {coreai.name = "y"}, %[[X:.*]]: tensor<2x3xf32> {coreai.name = "x"}) -> (tensor<2x3xf32> {coreai.name = "{{.*}}"}) attributes {__coreai_pure__} {
11761176 // CHECK: %[[NEG_INF:.*]] = coreai.constant dense<0xFF800000> : tensor<f32>
11771177 // CHECK: %[[POS_INF:.*]] = coreai.constant dense<0x7F800000> : tensor<f32>
1178+ // CHECK: %[[NAN:.*]] = coreai.constant dense<0x7FC00000> : tensor<f32>
11781179 // CHECK: %[[ZERO:.*]] = coreai.constant dense<0.000000e+00> : tensor<f32>
11791180 // CHECK: %[[ONE:.*]] = coreai.constant dense<1.000000e+00> : tensor<f32>
11801181 // CHECK: %[[PI:.*]] = coreai.constant dense<3.14159274> : tensor<f32>
@@ -1197,6 +1198,9 @@ def forward(self, y: Tensor, x: Tensor) -> Tensor:
11971198 // CHECK: %[[RECIP_X_NEG:.*]] = coreai.decomposable.broadcasting_greater %[[ZERO]], %[[RECIP_X]]
11981199 // CHECK: %[[X_ZERO_NEG:.*]] = coreai.decomposable.broadcasting_and %[[X_IS_ZERO]], %[[RECIP_X_NEG]]
11991200 // CHECK: %[[X_NEG:.*]] = coreai.decomposable.broadcasting_or %[[X_NEG_STRICT]], %[[X_ZERO_NEG]]
1201+ // CHECK: %[[Y_NOT_EQ_Y:.*]] = coreai.decomposable.broadcasting_not_equal %[[Y]], %[[Y]]
1202+ // CHECK: %[[X_NOT_EQ_X:.*]] = coreai.decomposable.broadcasting_not_equal %[[X]], %[[X]]
1203+ // CHECK: %[[ANY_NAN:.*]] = coreai.decomposable.broadcasting_or %[[Y_NOT_EQ_Y]], %[[X_NOT_EQ_X]]
12001204 // CHECK: %[[X_IS_POS_INF:.*]] = coreai.decomposable.broadcasting_equal %[[X]], %[[POS_INF]]
12011205 // CHECK: %[[X_IS_NEG_INF:.*]] = coreai.decomposable.broadcasting_equal %[[X]], %[[NEG_INF]]
12021206 // CHECK: %[[X_IS_INF:.*]] = coreai.decomposable.broadcasting_or %[[X_IS_POS_INF]], %[[X_IS_NEG_INF]]
@@ -1205,7 +1209,8 @@ def forward(self, y: Tensor, x: Tensor) -> Tensor:
12051209 // CHECK: %[[Y_IS_INF:.*]] = coreai.decomposable.broadcasting_or %[[Y_IS_POS_INF]], %[[Y_IS_NEG_INF]]
12061210 // CHECK: %[[BOTH_INF:.*]] = coreai.decomposable.broadcasting_and %[[X_IS_INF]], %[[Y_IS_INF]]
12071211 // CHECK: %[[BASE:.*]] = coreai.atan
1208- // CHECK: %[[RESULT:.*]] = coreai.decomposable.broadcasting_where %[[BOTH_INF]],
1212+ // CHECK: %[[INF_RESULT:.*]] = coreai.decomposable.broadcasting_where %[[BOTH_INF]],
1213+ // CHECK: %[[RESULT:.*]] = coreai.decomposable.broadcasting_where %[[ANY_NAN]], %[[NAN]], %[[INF_RESULT]]
12091214 // CHECK-NEXT: coreai.output %[[RESULT]] : tensor<2x3xf32>
12101215 // CHECK-NEXT: }
12111216 // CHECK-NEXT: }
@@ -1232,6 +1237,7 @@ def forward(self, y: Tensor, x: Tensor) -> Tensor:
12321237 // CHECK-NEXT: coreai.graph @main(%[[Y:.*]]: tensor<?x?xf32> {coreai.name = "y"}, %[[X:.*]]: tensor<?x?xf32> {coreai.name = "x"}) -> (tensor<?x?xf32> {coreai.name = "{{.*}}"}) attributes {__coreai_pure__} {
12331238 // CHECK: %[[NEG_INF:.*]] = coreai.constant dense<0xFF800000> : tensor<f32>
12341239 // CHECK: %[[POS_INF:.*]] = coreai.constant dense<0x7F800000> : tensor<f32>
1240+ // CHECK: %[[NAN:.*]] = coreai.constant dense<0x7FC00000> : tensor<f32>
12351241 // CHECK: %[[ZERO:.*]] = coreai.constant dense<0.000000e+00> : tensor<f32>
12361242 // CHECK: %[[ONE:.*]] = coreai.constant dense<1.000000e+00> : tensor<f32>
12371243 // CHECK: %[[PI:.*]] = coreai.constant dense<3.14159274> : tensor<f32>
@@ -1254,6 +1260,9 @@ def forward(self, y: Tensor, x: Tensor) -> Tensor:
12541260 // CHECK: %[[RECIP_X_NEG:.*]] = coreai.decomposable.broadcasting_greater %[[ZERO]], %[[RECIP_X]]
12551261 // CHECK: %[[X_ZERO_NEG:.*]] = coreai.decomposable.broadcasting_and %[[X_IS_ZERO]], %[[RECIP_X_NEG]]
12561262 // CHECK: %[[X_NEG:.*]] = coreai.decomposable.broadcasting_or %[[X_NEG_STRICT]], %[[X_ZERO_NEG]]
1263+ // CHECK: %[[Y_NOT_EQ_Y:.*]] = coreai.decomposable.broadcasting_not_equal %[[Y]], %[[Y]]
1264+ // CHECK: %[[X_NOT_EQ_X:.*]] = coreai.decomposable.broadcasting_not_equal %[[X]], %[[X]]
1265+ // CHECK: %[[ANY_NAN:.*]] = coreai.decomposable.broadcasting_or %[[Y_NOT_EQ_Y]], %[[X_NOT_EQ_X]]
12571266 // CHECK: %[[X_IS_POS_INF:.*]] = coreai.decomposable.broadcasting_equal %[[X]], %[[POS_INF]]
12581267 // CHECK: %[[X_IS_NEG_INF:.*]] = coreai.decomposable.broadcasting_equal %[[X]], %[[NEG_INF]]
12591268 // CHECK: %[[X_IS_INF:.*]] = coreai.decomposable.broadcasting_or %[[X_IS_POS_INF]], %[[X_IS_NEG_INF]]
@@ -1262,7 +1271,8 @@ def forward(self, y: Tensor, x: Tensor) -> Tensor:
12621271 // CHECK: %[[Y_IS_INF:.*]] = coreai.decomposable.broadcasting_or %[[Y_IS_POS_INF]], %[[Y_IS_NEG_INF]]
12631272 // CHECK: %[[BOTH_INF:.*]] = coreai.decomposable.broadcasting_and %[[X_IS_INF]], %[[Y_IS_INF]]
12641273 // CHECK: %[[BASE:.*]] = coreai.atan
1265- // CHECK: %[[RESULT:.*]] = coreai.decomposable.broadcasting_where %[[BOTH_INF]],
1274+ // CHECK: %[[INF_RESULT:.*]] = coreai.decomposable.broadcasting_where %[[BOTH_INF]],
1275+ // CHECK: %[[RESULT:.*]] = coreai.decomposable.broadcasting_where %[[ANY_NAN]], %[[NAN]], %[[INF_RESULT]]
12661276 // CHECK-NEXT: coreai.output %[[RESULT]] : tensor<?x?xf32>
12671277 // CHECK-NEXT: }
12681278 // CHECK-NEXT: }
@@ -1284,9 +1294,11 @@ def forward(self, y: Tensor, x: Tensor) -> Tensor:
12841294 // CHECK: %[[ONE:.*]] = coreai.constant dense<1.000000e+00> : tensor<f32>
12851295 // CHECK: %[[Y_NEG:.*]] = coreai.decomposable.broadcasting_or
12861296 // CHECK: %[[X_NEG:.*]] = coreai.decomposable.broadcasting_or
1297+ // CHECK: %[[ANY_NAN:.*]] = coreai.decomposable.broadcasting_or
12871298 // CHECK: %[[BOTH_INF:.*]] = coreai.decomposable.broadcasting_and
12881299 // CHECK: %[[BASE:.*]] = coreai.atan
1289- // CHECK: %[[RESULT:.*]] = coreai.decomposable.broadcasting_where %[[BOTH_INF]],
1300+ // CHECK: %[[INF_RESULT:.*]] = coreai.decomposable.broadcasting_where %[[BOTH_INF]],
1301+ // CHECK: %[[RESULT:.*]] = coreai.decomposable.broadcasting_where %[[ANY_NAN]],
12901302 // CHECK-NEXT: coreai.output %[[RESULT]] : tensor<4xf32>
12911303 // CHECK-NEXT: }
12921304 // CHECK-NEXT: }
0 commit comments