@@ -1124,9 +1124,9 @@ func.func @float32_binary_scalar(%lhs: f32, %rhs: f32) {
1124
1124
return
1125
1125
}
1126
1126
1127
- // CHECK-LABEL: @float32_minf_scalar
1127
+ // CHECK-LABEL: @float32_minimumf_scalar
1128
1128
// CHECK-SAME: %[[LHS:.+]]: f32, %[[RHS:.+]]: f32
1129
- func.func @float32_minf_scalar (%arg0 : f32 , %arg1 : f32 ) -> f32 {
1129
+ func.func @float32_minimumf_scalar (%arg0 : f32 , %arg1 : f32 ) -> f32 {
1130
1130
// CHECK: %[[MIN:.+]] = spirv.CL.fmin %arg0, %arg1 : f32
1131
1131
// CHECK: %[[LHS_NAN:.+]] = spirv.IsNan %[[LHS]] : f32
1132
1132
// CHECK: %[[RHS_NAN:.+]] = spirv.IsNan %[[RHS]] : f32
@@ -1137,9 +1137,18 @@ func.func @float32_minf_scalar(%arg0 : f32, %arg1 : f32) -> f32 {
1137
1137
return %0: f32
1138
1138
}
1139
1139
1140
- // CHECK-LABEL: @float32_maxf_scalar
1140
+ // CHECK-LABEL: @float32_minnumf_scalar
1141
+ // CHECK-SAME: %[[LHS:.+]]: f32, %[[RHS:.+]]: f32
1142
+ func.func @float32_minnumf_scalar (%arg0 : f32 , %arg1 : f32 ) -> f32 {
1143
+ // CHECK: %[[MIN:.+]] = spirv.CL.fmin %arg0, %arg1 : f32
1144
+ %0 = arith.minnumf %arg0 , %arg1 : f32
1145
+ // CHECK: return %[[MIN]]
1146
+ return %0: f32
1147
+ }
1148
+
1149
+ // CHECK-LABEL: @float32_maximumf_scalar
1141
1150
// CHECK-SAME: %[[LHS:.+]]: vector<2xf32>, %[[RHS:.+]]: vector<2xf32>
1142
- func.func @float32_maxf_scalar (%arg0 : vector <2 xf32 >, %arg1 : vector <2 xf32 >) -> vector <2 xf32 > {
1151
+ func.func @float32_maximumf_scalar (%arg0 : vector <2 xf32 >, %arg1 : vector <2 xf32 >) -> vector <2 xf32 > {
1143
1152
// CHECK: %[[MAX:.+]] = spirv.CL.fmax %arg0, %arg1 : vector<2xf32>
1144
1153
// CHECK: %[[LHS_NAN:.+]] = spirv.IsNan %[[LHS]] : vector<2xf32>
1145
1154
// CHECK: %[[RHS_NAN:.+]] = spirv.IsNan %[[RHS]] : vector<2xf32>
@@ -1150,6 +1159,16 @@ func.func @float32_maxf_scalar(%arg0 : vector<2xf32>, %arg1 : vector<2xf32>) ->
1150
1159
return %0: vector <2 xf32 >
1151
1160
}
1152
1161
1162
+ // CHECK-LABEL: @float32_maxnumf_scalar
1163
+ // CHECK-SAME: %[[LHS:.+]]: vector<2xf32>, %[[RHS:.+]]: vector<2xf32>
1164
+ func.func @float32_maxnumf_scalar (%arg0 : vector <2 xf32 >, %arg1 : vector <2 xf32 >) -> vector <2 xf32 > {
1165
+ // CHECK: %[[MAX:.+]] = spirv.CL.fmax %arg0, %arg1 : vector<2xf32>
1166
+ %0 = arith.maxnumf %arg0 , %arg1 : vector <2 xf32 >
1167
+ // CHECK: return %[[MAX]]
1168
+ return %0: vector <2 xf32 >
1169
+ }
1170
+
1171
+
1153
1172
// CHECK-LABEL: @scalar_srem
1154
1173
// CHECK-SAME: (%[[LHS:.+]]: i32, %[[RHS:.+]]: i32)
1155
1174
func.func @scalar_srem (%lhs: i32 , %rhs: i32 ) {
@@ -1270,9 +1289,9 @@ func.func @float32_binary_scalar(%lhs: f32, %rhs: f32) {
1270
1289
return
1271
1290
}
1272
1291
1273
- // CHECK-LABEL: @float32_minf_scalar
1292
+ // CHECK-LABEL: @float32_minimumf_scalar
1274
1293
// CHECK-SAME: %[[LHS:.+]]: f32, %[[RHS:.+]]: f32
1275
- func.func @float32_minf_scalar (%arg0 : f32 , %arg1 : f32 ) -> f32 {
1294
+ func.func @float32_minimumf_scalar (%arg0 : f32 , %arg1 : f32 ) -> f32 {
1276
1295
// CHECK: %[[MIN:.+]] = spirv.GL.FMin %arg0, %arg1 : f32
1277
1296
// CHECK: %[[LHS_NAN:.+]] = spirv.IsNan %[[LHS]] : f32
1278
1297
// CHECK: %[[RHS_NAN:.+]] = spirv.IsNan %[[RHS]] : f32
@@ -1283,9 +1302,22 @@ func.func @float32_minf_scalar(%arg0 : f32, %arg1 : f32) -> f32 {
1283
1302
return %0: f32
1284
1303
}
1285
1304
1286
- // CHECK-LABEL: @float32_maxf_scalar
1305
+ // CHECK-LABEL: @float32_minnumf_scalar
1306
+ // CHECK-SAME: %[[LHS:.+]]: f32, %[[RHS:.+]]: f32
1307
+ func.func @float32_minnumf_scalar (%arg0 : f32 , %arg1 : f32 ) -> f32 {
1308
+ // CHECK: %[[MIN:.+]] = spirv.GL.FMin %arg0, %arg1 : f32
1309
+ // CHECK: %[[LHS_NAN:.+]] = spirv.IsNan %[[LHS]] : f32
1310
+ // CHECK: %[[RHS_NAN:.+]] = spirv.IsNan %[[RHS]] : f32
1311
+ // CHECK: %[[SELECT1:.+]] = spirv.Select %[[LHS_NAN]], %[[RHS]], %[[MIN]]
1312
+ // CHECK: %[[SELECT2:.+]] = spirv.Select %[[RHS_NAN]], %[[LHS]], %[[SELECT1]]
1313
+ %0 = arith.minnumf %arg0 , %arg1 : f32
1314
+ // CHECK: return %[[SELECT2]]
1315
+ return %0: f32
1316
+ }
1317
+
1318
+ // CHECK-LABEL: @float32_maximumf_scalar
1287
1319
// CHECK-SAME: %[[LHS:.+]]: vector<2xf32>, %[[RHS:.+]]: vector<2xf32>
1288
- func.func @float32_maxf_scalar (%arg0 : vector <2 xf32 >, %arg1 : vector <2 xf32 >) -> vector <2 xf32 > {
1320
+ func.func @float32_maximumf_scalar (%arg0 : vector <2 xf32 >, %arg1 : vector <2 xf32 >) -> vector <2 xf32 > {
1289
1321
// CHECK: %[[MAX:.+]] = spirv.GL.FMax %arg0, %arg1 : vector<2xf32>
1290
1322
// CHECK: %[[LHS_NAN:.+]] = spirv.IsNan %[[LHS]] : vector<2xf32>
1291
1323
// CHECK: %[[RHS_NAN:.+]] = spirv.IsNan %[[RHS]] : vector<2xf32>
@@ -1296,6 +1328,19 @@ func.func @float32_maxf_scalar(%arg0 : vector<2xf32>, %arg1 : vector<2xf32>) ->
1296
1328
return %0: vector <2 xf32 >
1297
1329
}
1298
1330
1331
+ // CHECK-LABEL: @float32_maxnumf_scalar
1332
+ // CHECK-SAME: %[[LHS:.+]]: vector<2xf32>, %[[RHS:.+]]: vector<2xf32>
1333
+ func.func @float32_maxnumf_scalar (%arg0 : vector <2 xf32 >, %arg1 : vector <2 xf32 >) -> vector <2 xf32 > {
1334
+ // CHECK: %[[MAX:.+]] = spirv.GL.FMax %arg0, %arg1 : vector<2xf32>
1335
+ // CHECK: %[[LHS_NAN:.+]] = spirv.IsNan %[[LHS]] : vector<2xf32>
1336
+ // CHECK: %[[RHS_NAN:.+]] = spirv.IsNan %[[RHS]] : vector<2xf32>
1337
+ // CHECK: %[[SELECT1:.+]] = spirv.Select %[[LHS_NAN]], %[[RHS]], %[[MAX]]
1338
+ // CHECK: %[[SELECT2:.+]] = spirv.Select %[[RHS_NAN]], %[[LHS]], %[[SELECT1]]
1339
+ %0 = arith.maxnumf %arg0 , %arg1 : vector <2 xf32 >
1340
+ // CHECK: return %[[SELECT2]]
1341
+ return %0: vector <2 xf32 >
1342
+ }
1343
+
1299
1344
// Check int vector types.
1300
1345
// CHECK-LABEL: @int_vector234
1301
1346
func.func @int_vector234 (%arg0: vector <2 xi8 >, %arg1: vector <4 xi64 >) {
0 commit comments