1// RUN: mlir-opt -split-input-file -convert-arith-to-spirv -verify-diagnostics %s | FileCheck %s 2 3module attributes { 4 spirv.target_env = #spirv.target_env<#spirv.vce<v1.0, [], []>, #spirv.resource_limits<>> 5} { 6 7// CHECK-LABEL: @cmpf_ordered 8// CHECK-SAME: %[[LHS:.+]]: f32, %[[RHS:.+]]: f32 9func.func @cmpf_ordered(%arg0 : f32, %arg1 : f32) -> i1 { 10 // CHECK: %[[T:.+]] = spirv.Constant true 11 %0 = arith.cmpf ord, %arg0, %arg1 fastmath<fast> : f32 12 // CHECK: return %[[T]] 13 return %0: i1 14} 15 16// CHECK-LABEL: @cmpf_unordered 17// CHECK-SAME: %[[LHS:.+]]: vector<4xf32>, %[[RHS:.+]]: vector<4xf32> 18func.func @cmpf_unordered(%arg0 : vector<4xf32>, %arg1 : vector<4xf32>) -> vector<4xi1> { 19 // CHECK: %[[F:.+]] = spirv.Constant dense<false> 20 %0 = arith.cmpf uno, %arg0, %arg1 fastmath<nnan> : vector<4xf32> 21 // CHECK: return %[[F]] 22 return %0: vector<4xi1> 23} 24 25} // end module 26 27// ----- 28 29module attributes { 30 spirv.target_env = #spirv.target_env<#spirv.vce<v1.0, [Shader], []>, #spirv.resource_limits<>> 31} { 32 33// CHECK-LABEL: @minimumf 34// CHECK-SAME: %[[LHS:.+]]: f32, %[[RHS:.+]]: f32 35func.func @minimumf(%arg0 : f32, %arg1 : f32) -> f32 { 36 // CHECK: %[[F:.+]] = spirv.GL.FMin %[[LHS]], %[[RHS]] 37 %0 = arith.minimumf %arg0, %arg1 fastmath<fast> : f32 38 // CHECK: return %[[F]] 39 return %0: f32 40} 41 42// CHECK-LABEL: @maximumf 43// CHECK-SAME: %[[LHS:.+]]: vector<4xf32>, %[[RHS:.+]]: vector<4xf32> 44func.func @maximumf(%arg0 : vector<4xf32>, %arg1 : vector<4xf32>) -> vector<4xf32> { 45 // CHECK: %[[F:.+]] = spirv.GL.FMax %[[LHS]], %[[RHS]] 46 %0 = arith.maximumf %arg0, %arg1 fastmath<fast> : vector<4xf32> 47 // CHECK: return %[[F]] 48 return %0: vector<4xf32> 49} 50 51// CHECK-LABEL: @minnumf 52// CHECK-SAME: %[[LHS:.+]]: f32, %[[RHS:.+]]: f32 53func.func @minnumf(%arg0 : f32, %arg1 : f32) -> f32 { 54 // CHECK: %[[F:.+]] = spirv.GL.FMin %[[LHS]], %[[RHS]] 55 %0 = arith.minnumf %arg0, %arg1 fastmath<fast> : f32 56 // CHECK: return %[[F]] 57 return %0: f32 58} 59 60// CHECK-LABEL: @maxnumf 61// CHECK-SAME: %[[LHS:.+]]: vector<4xf32>, %[[RHS:.+]]: vector<4xf32> 62func.func @maxnumf(%arg0 : vector<4xf32>, %arg1 : vector<4xf32>) -> vector<4xf32> { 63 // CHECK: %[[F:.+]] = spirv.GL.FMax %[[LHS]], %[[RHS]] 64 %0 = arith.maxnumf %arg0, %arg1 fastmath<fast> : vector<4xf32> 65 // CHECK: return %[[F]] 66 return %0: vector<4xf32> 67} 68 69} // end module 70