14348d8abSStephan Herhut// RUN: mlir-opt %s | mlir-opt | FileCheck %s 24348d8abSStephan Herhut// RUN: mlir-opt %s --mlir-print-op-generic | mlir-opt | FileCheck %s 34348d8abSStephan Herhut 44348d8abSStephan Herhut// CHECK-LABEL: func @atan( 54348d8abSStephan Herhut// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 60254b0bcSRiver Riddlefunc.func @atan(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 74348d8abSStephan Herhut // CHECK: %{{.*}} = math.atan %[[F]] : f32 84348d8abSStephan Herhut %0 = math.atan %f : f32 94348d8abSStephan Herhut // CHECK: %{{.*}} = math.atan %[[V]] : vector<4xf32> 104348d8abSStephan Herhut %1 = math.atan %v : vector<4xf32> 114348d8abSStephan Herhut // CHECK: %{{.*}} = math.atan %[[T]] : tensor<4x4x?xf32> 124348d8abSStephan Herhut %2 = math.atan %t : tensor<4x4x?xf32> 134348d8abSStephan Herhut return 144348d8abSStephan Herhut} 154348d8abSStephan Herhut 164348d8abSStephan Herhut 174348d8abSStephan Herhut// CHECK-LABEL: func @atan2( 184348d8abSStephan Herhut// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 190254b0bcSRiver Riddlefunc.func @atan2(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 204348d8abSStephan Herhut // CHECK: %{{.*}} = math.atan2 %[[F]], %[[F]] : f32 214348d8abSStephan Herhut %0 = math.atan2 %f, %f : f32 224348d8abSStephan Herhut // CHECK: %{{.*}} = math.atan2 %[[V]], %[[V]] : vector<4xf32> 234348d8abSStephan Herhut %1 = math.atan2 %v, %v : vector<4xf32> 244348d8abSStephan Herhut // CHECK: %{{.*}} = math.atan2 %[[T]], %[[T]] : tensor<4x4x?xf32> 254348d8abSStephan Herhut %2 = math.atan2 %t, %t : tensor<4x4x?xf32> 264348d8abSStephan Herhut return 274348d8abSStephan Herhut} 284348d8abSStephan Herhut 29*998a3a38SJohannes Reifferscheid// CHECK-LABEL: func @cbrt( 30*998a3a38SJohannes Reifferscheid// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 31*998a3a38SJohannes Reifferscheidfunc.func @cbrt(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 32*998a3a38SJohannes Reifferscheid // CHECK: %{{.*}} = math.cbrt %[[F]] : f32 33*998a3a38SJohannes Reifferscheid %0 = math.cbrt %f : f32 34*998a3a38SJohannes Reifferscheid // CHECK: %{{.*}} = math.cbrt %[[V]] : vector<4xf32> 35*998a3a38SJohannes Reifferscheid %1 = math.cbrt %v : vector<4xf32> 36*998a3a38SJohannes Reifferscheid // CHECK: %{{.*}} = math.cbrt %[[T]] : tensor<4x4x?xf32> 37*998a3a38SJohannes Reifferscheid %2 = math.cbrt %t : tensor<4x4x?xf32> 38*998a3a38SJohannes Reifferscheid return 39*998a3a38SJohannes Reifferscheid} 40*998a3a38SJohannes Reifferscheid 414348d8abSStephan Herhut// CHECK-LABEL: func @cos( 424348d8abSStephan Herhut// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 430254b0bcSRiver Riddlefunc.func @cos(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 444348d8abSStephan Herhut // CHECK: %{{.*}} = math.cos %[[F]] : f32 454348d8abSStephan Herhut %0 = math.cos %f : f32 464348d8abSStephan Herhut // CHECK: %{{.*}} = math.cos %[[V]] : vector<4xf32> 474348d8abSStephan Herhut %1 = math.cos %v : vector<4xf32> 484348d8abSStephan Herhut // CHECK: %{{.*}} = math.cos %[[T]] : tensor<4x4x?xf32> 494348d8abSStephan Herhut %2 = math.cos %t : tensor<4x4x?xf32> 504348d8abSStephan Herhut return 514348d8abSStephan Herhut} 524348d8abSStephan Herhut 534348d8abSStephan Herhut// CHECK-LABEL: func @sin( 544348d8abSStephan Herhut// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 550254b0bcSRiver Riddlefunc.func @sin(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 564348d8abSStephan Herhut // CHECK: %{{.*}} = math.sin %[[F]] : f32 574348d8abSStephan Herhut %0 = math.sin %f : f32 584348d8abSStephan Herhut // CHECK: %{{.*}} = math.sin %[[V]] : vector<4xf32> 594348d8abSStephan Herhut %1 = math.sin %v : vector<4xf32> 604348d8abSStephan Herhut // CHECK: %{{.*}} = math.sin %[[T]] : tensor<4x4x?xf32> 614348d8abSStephan Herhut %2 = math.sin %t : tensor<4x4x?xf32> 624348d8abSStephan Herhut return 634348d8abSStephan Herhut} 644348d8abSStephan Herhut 65f1b92218SBoian Petkantchin// CHECK-LABEL: func @erf( 66f1b92218SBoian Petkantchin// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 670254b0bcSRiver Riddlefunc.func @erf(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 68f1b92218SBoian Petkantchin // CHECK: %{{.*}} = math.erf %[[F]] : f32 69f1b92218SBoian Petkantchin %0 = math.erf %f : f32 70f1b92218SBoian Petkantchin // CHECK: %{{.*}} = math.erf %[[V]] : vector<4xf32> 71f1b92218SBoian Petkantchin %1 = math.erf %v : vector<4xf32> 72f1b92218SBoian Petkantchin // CHECK: %{{.*}} = math.erf %[[T]] : tensor<4x4x?xf32> 73f1b92218SBoian Petkantchin %2 = math.erf %t : tensor<4x4x?xf32> 74f1b92218SBoian Petkantchin return 75f1b92218SBoian Petkantchin} 76f1b92218SBoian Petkantchin 774348d8abSStephan Herhut// CHECK-LABEL: func @exp( 784348d8abSStephan Herhut// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 790254b0bcSRiver Riddlefunc.func @exp(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 804348d8abSStephan Herhut // CHECK: %{{.*}} = math.exp %[[F]] : f32 814348d8abSStephan Herhut %0 = math.exp %f : f32 824348d8abSStephan Herhut // CHECK: %{{.*}} = math.exp %[[V]] : vector<4xf32> 834348d8abSStephan Herhut %1 = math.exp %v : vector<4xf32> 844348d8abSStephan Herhut // CHECK: %{{.*}} = math.exp %[[T]] : tensor<4x4x?xf32> 854348d8abSStephan Herhut %2 = math.exp %t : tensor<4x4x?xf32> 864348d8abSStephan Herhut return 874348d8abSStephan Herhut} 884348d8abSStephan Herhut 894348d8abSStephan Herhut// CHECK-LABEL: func @exp2( 904348d8abSStephan Herhut// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 910254b0bcSRiver Riddlefunc.func @exp2(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 924348d8abSStephan Herhut // CHECK: %{{.*}} = math.exp2 %[[F]] : f32 934348d8abSStephan Herhut %0 = math.exp2 %f : f32 944348d8abSStephan Herhut // CHECK: %{{.*}} = math.exp2 %[[V]] : vector<4xf32> 954348d8abSStephan Herhut %1 = math.exp2 %v : vector<4xf32> 964348d8abSStephan Herhut // CHECK: %{{.*}} = math.exp2 %[[T]] : tensor<4x4x?xf32> 974348d8abSStephan Herhut %2 = math.exp2 %t : tensor<4x4x?xf32> 984348d8abSStephan Herhut return 994348d8abSStephan Herhut} 1004348d8abSStephan Herhut 1019f581815SAdrian Kuegel// CHECK-LABEL: func @expm1( 1029f581815SAdrian Kuegel// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 1030254b0bcSRiver Riddlefunc.func @expm1(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 1049f581815SAdrian Kuegel // CHECK: %{{.*}} = math.expm1 %[[F]] : f32 1059f581815SAdrian Kuegel %0 = math.expm1 %f : f32 1069f581815SAdrian Kuegel // CHECK: %{{.*}} = math.expm1 %[[V]] : vector<4xf32> 1079f581815SAdrian Kuegel %1 = math.expm1 %v : vector<4xf32> 1089f581815SAdrian Kuegel // CHECK: %{{.*}} = math.expm1 %[[T]] : tensor<4x4x?xf32> 1099f581815SAdrian Kuegel %2 = math.expm1 %t : tensor<4x4x?xf32> 1109f581815SAdrian Kuegel return 1119f581815SAdrian Kuegel} 1129f581815SAdrian Kuegel 1134348d8abSStephan Herhut// CHECK-LABEL: func @log( 1144348d8abSStephan Herhut// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 1150254b0bcSRiver Riddlefunc.func @log(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 1164348d8abSStephan Herhut // CHECK: %{{.*}} = math.log %[[F]] : f32 1174348d8abSStephan Herhut %0 = math.log %f : f32 1184348d8abSStephan Herhut // CHECK: %{{.*}} = math.log %[[V]] : vector<4xf32> 1194348d8abSStephan Herhut %1 = math.log %v : vector<4xf32> 1204348d8abSStephan Herhut // CHECK: %{{.*}} = math.log %[[T]] : tensor<4x4x?xf32> 1214348d8abSStephan Herhut %2 = math.log %t : tensor<4x4x?xf32> 1224348d8abSStephan Herhut return 1234348d8abSStephan Herhut} 1244348d8abSStephan Herhut 1254348d8abSStephan Herhut// CHECK-LABEL: func @log10( 1264348d8abSStephan Herhut// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 1270254b0bcSRiver Riddlefunc.func @log10(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 1284348d8abSStephan Herhut // CHECK: %{{.*}} = math.log10 %[[F]] : f32 1294348d8abSStephan Herhut %0 = math.log10 %f : f32 1304348d8abSStephan Herhut // CHECK: %{{.*}} = math.log10 %[[V]] : vector<4xf32> 1314348d8abSStephan Herhut %1 = math.log10 %v : vector<4xf32> 1324348d8abSStephan Herhut // CHECK: %{{.*}} = math.log10 %[[T]] : tensor<4x4x?xf32> 1334348d8abSStephan Herhut %2 = math.log10 %t : tensor<4x4x?xf32> 1344348d8abSStephan Herhut return 1354348d8abSStephan Herhut} 1364348d8abSStephan Herhut 1374348d8abSStephan Herhut// CHECK-LABEL: func @log1p( 1384348d8abSStephan Herhut// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 1390254b0bcSRiver Riddlefunc.func @log1p(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 1404348d8abSStephan Herhut // CHECK: %{{.*}} = math.log1p %[[F]] : f32 1414348d8abSStephan Herhut %0 = math.log1p %f : f32 1424348d8abSStephan Herhut // CHECK: %{{.*}} = math.log1p %[[V]] : vector<4xf32> 1434348d8abSStephan Herhut %1 = math.log1p %v : vector<4xf32> 1444348d8abSStephan Herhut // CHECK: %{{.*}} = math.log1p %[[T]] : tensor<4x4x?xf32> 1454348d8abSStephan Herhut %2 = math.log1p %t : tensor<4x4x?xf32> 1464348d8abSStephan Herhut return 1474348d8abSStephan Herhut} 1484348d8abSStephan Herhut 1494348d8abSStephan Herhut// CHECK-LABEL: func @log2( 1504348d8abSStephan Herhut// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 1510254b0bcSRiver Riddlefunc.func @log2(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 1524348d8abSStephan Herhut // CHECK: %{{.*}} = math.log2 %[[F]] : f32 1534348d8abSStephan Herhut %0 = math.log2 %f : f32 1544348d8abSStephan Herhut // CHECK: %{{.*}} = math.log2 %[[V]] : vector<4xf32> 1554348d8abSStephan Herhut %1 = math.log2 %v : vector<4xf32> 1564348d8abSStephan Herhut // CHECK: %{{.*}} = math.log2 %[[T]] : tensor<4x4x?xf32> 1574348d8abSStephan Herhut %2 = math.log2 %t : tensor<4x4x?xf32> 1584348d8abSStephan Herhut return 1594348d8abSStephan Herhut} 1604348d8abSStephan Herhut 1614348d8abSStephan Herhut// CHECK-LABEL: func @powf( 1624348d8abSStephan Herhut// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 1630254b0bcSRiver Riddlefunc.func @powf(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 1644348d8abSStephan Herhut // CHECK: %{{.*}} = math.powf %[[F]], %[[F]] : f32 1654348d8abSStephan Herhut %0 = math.powf %f, %f : f32 1664348d8abSStephan Herhut // CHECK: %{{.*}} = math.powf %[[V]], %[[V]] : vector<4xf32> 1674348d8abSStephan Herhut %1 = math.powf %v, %v : vector<4xf32> 1684348d8abSStephan Herhut // CHECK: %{{.*}} = math.powf %[[T]], %[[T]] : tensor<4x4x?xf32> 1694348d8abSStephan Herhut %2 = math.powf %t, %t : tensor<4x4x?xf32> 1704348d8abSStephan Herhut return 1714348d8abSStephan Herhut} 1724348d8abSStephan Herhut 173f9d988f1SSlava Zakharin// CHECK-LABEL: func @fpowi( 174f9d988f1SSlava Zakharin// CHECK-SAME: %[[SB:.*]]: f32, %[[SP:.*]]: i32, 175f9d988f1SSlava Zakharin// CHECK-SAME: %[[VB:.*]]: vector<4xf64>, %[[VP:.*]]: vector<4xi16>, 176f9d988f1SSlava Zakharin// CHECK-SAME: %[[TB:.*]]: tensor<4x3x?xf16>, %[[TP:.*]]: tensor<4x3x?xi64>) { 177f9d988f1SSlava Zakharinfunc.func @fpowi(%b: f32, %p: i32, %vb: vector<4xf64>, %vp: vector<4xi16>, %tb: tensor<4x3x?xf16>, %tp: tensor<4x3x?xi64>) { 178f9d988f1SSlava Zakharin// CHECK: {{.*}} = math.fpowi %[[SB]], %[[SP]] : f32, i32 179f9d988f1SSlava Zakharin %0 = math.fpowi %b, %p : f32, i32 180f9d988f1SSlava Zakharin// CHECK: {{.*}} = math.fpowi %[[VB]], %[[VP]] : vector<4xf64>, vector<4xi16> 181f9d988f1SSlava Zakharin %1 = math.fpowi %vb, %vp : vector<4xf64>, vector<4xi16> 182f9d988f1SSlava Zakharin// CHECK: {{.*}} = math.fpowi %[[TB]], %[[TP]] : tensor<4x3x?xf16>, tensor<4x3x?xi64> 183f9d988f1SSlava Zakharin %2 = math.fpowi %tb, %tp : tensor<4x3x?xf16>, tensor<4x3x?xi64> 184f9d988f1SSlava Zakharin return 185f9d988f1SSlava Zakharin} 186f9d988f1SSlava Zakharin 1874348d8abSStephan Herhut// CHECK-LABEL: func @rsqrt( 1884348d8abSStephan Herhut// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 1890254b0bcSRiver Riddlefunc.func @rsqrt(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 1904348d8abSStephan Herhut // CHECK: %{{.*}} = math.rsqrt %[[F]] : f32 1914348d8abSStephan Herhut %0 = math.rsqrt %f : f32 1924348d8abSStephan Herhut // CHECK: %{{.*}} = math.rsqrt %[[V]] : vector<4xf32> 1934348d8abSStephan Herhut %1 = math.rsqrt %v : vector<4xf32> 1944348d8abSStephan Herhut // CHECK: %{{.*}} = math.rsqrt %[[T]] : tensor<4x4x?xf32> 1954348d8abSStephan Herhut %2 = math.rsqrt %t : tensor<4x4x?xf32> 1964348d8abSStephan Herhut return 1974348d8abSStephan Herhut} 1984348d8abSStephan Herhut 1994348d8abSStephan Herhut 2004348d8abSStephan Herhut// CHECK-LABEL: func @sqrt( 2014348d8abSStephan Herhut// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 2020254b0bcSRiver Riddlefunc.func @sqrt(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 2034348d8abSStephan Herhut // CHECK: %{{.*}} = math.sqrt %[[F]] : f32 2044348d8abSStephan Herhut %0 = math.sqrt %f : f32 2054348d8abSStephan Herhut // CHECK: %{{.*}} = math.sqrt %[[V]] : vector<4xf32> 2064348d8abSStephan Herhut %1 = math.sqrt %v : vector<4xf32> 2074348d8abSStephan Herhut // CHECK: %{{.*}} = math.sqrt %[[T]] : tensor<4x4x?xf32> 2084348d8abSStephan Herhut %2 = math.sqrt %t : tensor<4x4x?xf32> 2094348d8abSStephan Herhut return 2104348d8abSStephan Herhut} 2114348d8abSStephan Herhut 212451e5e2bSSlava Zakharin// CHECK-LABEL: func @tan( 213451e5e2bSSlava Zakharin// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 214451e5e2bSSlava Zakharinfunc.func @tan(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 215451e5e2bSSlava Zakharin // CHECK: %{{.*}} = math.tan %[[F]] : f32 216451e5e2bSSlava Zakharin %0 = math.tan %f : f32 217451e5e2bSSlava Zakharin // CHECK: %{{.*}} = math.tan %[[V]] : vector<4xf32> 218451e5e2bSSlava Zakharin %1 = math.tan %v : vector<4xf32> 219451e5e2bSSlava Zakharin // CHECK: %{{.*}} = math.tan %[[T]] : tensor<4x4x?xf32> 220451e5e2bSSlava Zakharin %2 = math.tan %t : tensor<4x4x?xf32> 221451e5e2bSSlava Zakharin return 222451e5e2bSSlava Zakharin} 223451e5e2bSSlava Zakharin 2244348d8abSStephan Herhut// CHECK-LABEL: func @tanh( 2254348d8abSStephan Herhut// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 2260254b0bcSRiver Riddlefunc.func @tanh(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 2274348d8abSStephan Herhut // CHECK: %{{.*}} = math.tanh %[[F]] : f32 2284348d8abSStephan Herhut %0 = math.tanh %f : f32 2294348d8abSStephan Herhut // CHECK: %{{.*}} = math.tanh %[[V]] : vector<4xf32> 2304348d8abSStephan Herhut %1 = math.tanh %v : vector<4xf32> 2314348d8abSStephan Herhut // CHECK: %{{.*}} = math.tanh %[[T]] : tensor<4x4x?xf32> 2324348d8abSStephan Herhut %2 = math.tanh %t : tensor<4x4x?xf32> 2334348d8abSStephan Herhut return 2344348d8abSStephan Herhut} 235a0fc94abSlorenzo chelini 236a0fc94abSlorenzo chelini// CHECK-LABEL: func @round( 237a0fc94abSlorenzo chelini// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 238a0fc94abSlorenzo chelinifunc.func @round(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 239a0fc94abSlorenzo chelini // CHECK: %{{.*}} = math.round %[[F]] : f32 240a0fc94abSlorenzo chelini %0 = math.round %f : f32 241a0fc94abSlorenzo chelini // CHECK: %{{.*}} = math.round %[[V]] : vector<4xf32> 242a0fc94abSlorenzo chelini %1 = math.round %v : vector<4xf32> 243a0fc94abSlorenzo chelini // CHECK: %{{.*}} = math.round %[[T]] : tensor<4x4x?xf32> 244a0fc94abSlorenzo chelini %2 = math.round %t : tensor<4x4x?xf32> 245a0fc94abSlorenzo chelini return 246a0fc94abSlorenzo chelini} 24708b4cf36SSlava Zakharin 2484639a85fSTres Popp// CHECK-LABEL: func @roundeven( 2494639a85fSTres Popp// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 2504639a85fSTres Poppfunc.func @roundeven(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 2514639a85fSTres Popp // CHECK: %{{.*}} = math.roundeven %[[F]] : f32 2524639a85fSTres Popp %0 = math.roundeven %f : f32 2534639a85fSTres Popp // CHECK: %{{.*}} = math.roundeven %[[V]] : vector<4xf32> 2544639a85fSTres Popp %1 = math.roundeven %v : vector<4xf32> 2554639a85fSTres Popp // CHECK: %{{.*}} = math.roundeven %[[T]] : tensor<4x4x?xf32> 2564639a85fSTres Popp %2 = math.roundeven %t : tensor<4x4x?xf32> 2574639a85fSTres Popp return 2584639a85fSTres Popp} 2594639a85fSTres Popp 2604639a85fSTres Popp 26108b4cf36SSlava Zakharin// CHECK-LABEL: func @ipowi( 26208b4cf36SSlava Zakharin// CHECK-SAME: %[[I:.*]]: i32, %[[V:.*]]: vector<4xi32>, %[[T:.*]]: tensor<4x4x?xi32>) 26308b4cf36SSlava Zakharinfunc.func @ipowi(%i: i32, %v: vector<4xi32>, %t: tensor<4x4x?xi32>) { 26408b4cf36SSlava Zakharin // CHECK: %{{.*}} = math.ipowi %[[I]], %[[I]] : i32 26508b4cf36SSlava Zakharin %0 = math.ipowi %i, %i : i32 26608b4cf36SSlava Zakharin // CHECK: %{{.*}} = math.ipowi %[[V]], %[[V]] : vector<4xi32> 26708b4cf36SSlava Zakharin %1 = math.ipowi %v, %v : vector<4xi32> 26808b4cf36SSlava Zakharin // CHECK: %{{.*}} = math.ipowi %[[T]], %[[T]] : tensor<4x4x?xi32> 26908b4cf36SSlava Zakharin %2 = math.ipowi %t, %t : tensor<4x4x?xi32> 27008b4cf36SSlava Zakharin return 27108b4cf36SSlava Zakharin} 2729d0b90e9Sjacquesguan 2739d0b90e9Sjacquesguan// CHECK-LABEL: func @trunc( 2749d0b90e9Sjacquesguan// CHECK-SAME: %[[F:.*]]: f32, %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 2759d0b90e9Sjacquesguanfunc.func @trunc(%f: f32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 2769d0b90e9Sjacquesguan // CHECK: %{{.*}} = math.trunc %[[F]] : f32 2779d0b90e9Sjacquesguan %0 = math.trunc %f : f32 2789d0b90e9Sjacquesguan // CHECK: %{{.*}} = math.trunc %[[V]] : vector<4xf32> 2799d0b90e9Sjacquesguan %1 = math.trunc %v : vector<4xf32> 2809d0b90e9Sjacquesguan // CHECK: %{{.*}} = math.trunc %[[T]] : tensor<4x4x?xf32> 2819d0b90e9Sjacquesguan %2 = math.trunc %t : tensor<4x4x?xf32> 2829d0b90e9Sjacquesguan return 2839d0b90e9Sjacquesguan} 284589764a3SSlava Zakharin 285589764a3SSlava Zakharin// CHECK-LABEL: func @fastmath( 28607a4c4d6SSlava Zakharin// CHECK-SAME: %[[F:.*]]: f32, %[[I:.*]]: i32, 28707a4c4d6SSlava Zakharin// CHECK-SAME: %[[V:.*]]: vector<4xf32>, %[[T:.*]]: tensor<4x4x?xf32>) 28807a4c4d6SSlava Zakharinfunc.func @fastmath(%f: f32, %i: i32, %v: vector<4xf32>, %t: tensor<4x4x?xf32>) { 28907a4c4d6SSlava Zakharin // CHECK: math.trunc %[[F]] fastmath<fast> : f32 290589764a3SSlava Zakharin %0 = math.trunc %f fastmath<fast> : f32 29107a4c4d6SSlava Zakharin // CHECK: math.powf %[[V]], %[[V]] fastmath<fast> : vector<4xf32> 292589764a3SSlava Zakharin %1 = math.powf %v, %v fastmath<reassoc,nnan,ninf,nsz,arcp,contract,afn> : vector<4xf32> 29307a4c4d6SSlava Zakharin // CHECK: math.fma %[[T]], %[[T]], %[[T]] : tensor<4x4x?xf32> 294589764a3SSlava Zakharin %2 = math.fma %t, %t, %t fastmath<none> : tensor<4x4x?xf32> 29507a4c4d6SSlava Zakharin // CHECK: math.absf %[[F]] fastmath<ninf> : f32 296589764a3SSlava Zakharin %3 = math.absf %f fastmath<ninf> : f32 29707a4c4d6SSlava Zakharin // CHECK: math.fpowi %[[F]], %[[I]] fastmath<fast> : f32, i32 29807a4c4d6SSlava Zakharin %4 = math.fpowi %f, %i fastmath<fast> : f32, i32 299589764a3SSlava Zakharin return 300589764a3SSlava Zakharin} 301