1// RUN: mlir-opt -split-input-file -verify-diagnostics %s | FileCheck %s 2 3//===----------------------------------------------------------------------===// 4// spv.GLSL.Exp 5//===----------------------------------------------------------------------===// 6 7func @exp(%arg0 : f32) -> () { 8 // CHECK: spv.GLSL.Exp {{%.*}} : f32 9 %2 = spv.GLSL.Exp %arg0 : f32 10 return 11} 12 13func @expvec(%arg0 : vector<3xf16>) -> () { 14 // CHECK: spv.GLSL.Exp {{%.*}} : vector<3xf16> 15 %2 = spv.GLSL.Exp %arg0 : vector<3xf16> 16 return 17} 18 19// ----- 20 21func @exp(%arg0 : i32) -> () { 22 // expected-error @+1 {{op operand #0 must be 16/32-bit float or vector of 16/32-bit float values}} 23 %2 = spv.GLSL.Exp %arg0 : i32 24 return 25} 26 27// ----- 28 29func @exp(%arg0 : vector<5xf32>) -> () { 30 // expected-error @+1 {{op operand #0 must be 16/32-bit float or vector of 16/32-bit float values of length 2/3/4}} 31 %2 = spv.GLSL.Exp %arg0 : vector<5xf32> 32 return 33} 34 35// ----- 36 37func @exp(%arg0 : f32, %arg1 : f32) -> () { 38 // expected-error @+1 {{expected ':'}} 39 %2 = spv.GLSL.Exp %arg0, %arg1 : i32 40 return 41} 42 43// ----- 44 45func @exp(%arg0 : i32) -> () { 46 // expected-error @+2 {{expected non-function type}} 47 %2 = spv.GLSL.Exp %arg0 : 48 return 49} 50 51// ----- 52 53//===----------------------------------------------------------------------===// 54// spv.GLSL.FMax 55//===----------------------------------------------------------------------===// 56 57func @fmax(%arg0 : f32, %arg1 : f32) -> () { 58 // CHECK: spv.GLSL.FMax {{%.*}}, {{%.*}} : f32 59 %2 = spv.GLSL.FMax %arg0, %arg1 : f32 60 return 61} 62 63func @fmaxvec(%arg0 : vector<3xf16>, %arg1 : vector<3xf16>) -> () { 64 // CHECK: spv.GLSL.FMax {{%.*}}, {{%.*}} : vector<3xf16> 65 %2 = spv.GLSL.FMax %arg0, %arg1 : vector<3xf16> 66 return 67} 68 69func @fmaxf64(%arg0 : f64, %arg1 : f64) -> () { 70 // CHECK: spv.GLSL.FMax {{%.*}}, {{%.*}} : f64 71 %2 = spv.GLSL.FMax %arg0, %arg1 : f64 72 return 73} 74 75// ----- 76 77//===----------------------------------------------------------------------===// 78// spv.GLSL.InverseSqrt 79//===----------------------------------------------------------------------===// 80 81func @inversesqrt(%arg0 : f32) -> () { 82 // CHECK: spv.GLSL.InverseSqrt {{%.*}} : f32 83 %2 = spv.GLSL.InverseSqrt %arg0 : f32 84 return 85} 86 87func @inversesqrtvec(%arg0 : vector<3xf16>) -> () { 88 // CHECK: spv.GLSL.InverseSqrt {{%.*}} : vector<3xf16> 89 %2 = spv.GLSL.InverseSqrt %arg0 : vector<3xf16> 90 return 91} 92 93// ----- 94 95//===----------------------------------------------------------------------===// 96// spv.GLSL.Sqrt 97//===----------------------------------------------------------------------===// 98 99func @sqrt(%arg0 : f32) -> () { 100 // CHECK: spv.GLSL.Sqrt {{%.*}} : f32 101 %2 = spv.GLSL.Sqrt %arg0 : f32 102 return 103} 104 105func @sqrtvec(%arg0 : vector<3xf16>) -> () { 106 // CHECK: spv.GLSL.Sqrt {{%.*}} : vector<3xf16> 107 %2 = spv.GLSL.Sqrt %arg0 : vector<3xf16> 108 return 109} 110 111//===----------------------------------------------------------------------===// 112// spv.GLSL.Cos 113//===----------------------------------------------------------------------===// 114 115func @cos(%arg0 : f32) -> () { 116 // CHECK: spv.GLSL.Cos {{%.*}} : f32 117 %2 = spv.GLSL.Cos %arg0 : f32 118 return 119} 120 121func @cosvec(%arg0 : vector<3xf16>) -> () { 122 // CHECK: spv.GLSL.Cos {{%.*}} : vector<3xf16> 123 %2 = spv.GLSL.Cos %arg0 : vector<3xf16> 124 return 125} 126 127//===----------------------------------------------------------------------===// 128// spv.GLSL.Sin 129//===----------------------------------------------------------------------===// 130 131func @sin(%arg0 : f32) -> () { 132 // CHECK: spv.GLSL.Sin {{%.*}} : f32 133 %2 = spv.GLSL.Sin %arg0 : f32 134 return 135} 136 137func @sinvec(%arg0 : vector<3xf16>) -> () { 138 // CHECK: spv.GLSL.Sin {{%.*}} : vector<3xf16> 139 %2 = spv.GLSL.Sin %arg0 : vector<3xf16> 140 return 141} 142 143//===----------------------------------------------------------------------===// 144// spv.GLSL.Tan 145//===----------------------------------------------------------------------===// 146 147func @tan(%arg0 : f32) -> () { 148 // CHECK: spv.GLSL.Tan {{%.*}} : f32 149 %2 = spv.GLSL.Tan %arg0 : f32 150 return 151} 152 153func @tanvec(%arg0 : vector<3xf16>) -> () { 154 // CHECK: spv.GLSL.Tan {{%.*}} : vector<3xf16> 155 %2 = spv.GLSL.Tan %arg0 : vector<3xf16> 156 return 157} 158 159//===----------------------------------------------------------------------===// 160// spv.GLSL.Acos 161//===----------------------------------------------------------------------===// 162 163func @acos(%arg0 : f32) -> () { 164 // CHECK: spv.GLSL.Acos {{%.*}} : f32 165 %2 = spv.GLSL.Acos %arg0 : f32 166 return 167} 168 169func @acosvec(%arg0 : vector<3xf16>) -> () { 170 // CHECK: spv.GLSL.Acos {{%.*}} : vector<3xf16> 171 %2 = spv.GLSL.Acos %arg0 : vector<3xf16> 172 return 173} 174 175//===----------------------------------------------------------------------===// 176// spv.GLSL.Asin 177//===----------------------------------------------------------------------===// 178 179func @asin(%arg0 : f32) -> () { 180 // CHECK: spv.GLSL.Asin {{%.*}} : f32 181 %2 = spv.GLSL.Asin %arg0 : f32 182 return 183} 184 185func @asinvec(%arg0 : vector<3xf16>) -> () { 186 // CHECK: spv.GLSL.Asin {{%.*}} : vector<3xf16> 187 %2 = spv.GLSL.Asin %arg0 : vector<3xf16> 188 return 189} 190 191//===----------------------------------------------------------------------===// 192// spv.GLSL.Atan 193//===----------------------------------------------------------------------===// 194 195func @atan(%arg0 : f32) -> () { 196 // CHECK: spv.GLSL.Atan {{%.*}} : f32 197 %2 = spv.GLSL.Atan %arg0 : f32 198 return 199} 200 201func @atanvec(%arg0 : vector<3xf16>) -> () { 202 // CHECK: spv.GLSL.Atan {{%.*}} : vector<3xf16> 203 %2 = spv.GLSL.Atan %arg0 : vector<3xf16> 204 return 205} 206 207//===----------------------------------------------------------------------===// 208// spv.GLSL.Sinh 209//===----------------------------------------------------------------------===// 210 211func @sinh(%arg0 : f32) -> () { 212 // CHECK: spv.GLSL.Sinh {{%.*}} : f32 213 %2 = spv.GLSL.Sinh %arg0 : f32 214 return 215} 216 217func @sinhvec(%arg0 : vector<3xf16>) -> () { 218 // CHECK: spv.GLSL.Sinh {{%.*}} : vector<3xf16> 219 %2 = spv.GLSL.Sinh %arg0 : vector<3xf16> 220 return 221} 222 223//===----------------------------------------------------------------------===// 224// spv.GLSL.Cosh 225//===----------------------------------------------------------------------===// 226 227func @cosh(%arg0 : f32) -> () { 228 // CHECK: spv.GLSL.Cosh {{%.*}} : f32 229 %2 = spv.GLSL.Cosh %arg0 : f32 230 return 231} 232 233func @coshvec(%arg0 : vector<3xf16>) -> () { 234 // CHECK: spv.GLSL.Cosh {{%.*}} : vector<3xf16> 235 %2 = spv.GLSL.Cosh %arg0 : vector<3xf16> 236 return 237} 238 239//===----------------------------------------------------------------------===// 240// spv.GLSL.Pow 241//===----------------------------------------------------------------------===// 242 243func @pow(%arg0 : f32, %arg1 : f32) -> () { 244 // CHECK: spv.GLSL.Pow {{%.*}}, {{%.*}} : f32 245 %2 = spv.GLSL.Pow %arg0, %arg1 : f32 246 return 247} 248 249func @powvec(%arg0 : vector<3xf16>, %arg1 : vector<3xf16>) -> () { 250 // CHECK: spv.GLSL.Pow {{%.*}}, {{%.*}} : vector<3xf16> 251 %2 = spv.GLSL.Pow %arg0, %arg1 : vector<3xf16> 252 return 253} 254 255// ----- 256 257//===----------------------------------------------------------------------===// 258// spv.GLSL.Round 259//===----------------------------------------------------------------------===// 260 261func @round(%arg0 : f32) -> () { 262 // CHECK: spv.GLSL.Round {{%.*}} : f32 263 %2 = spv.GLSL.Round %arg0 : f32 264 return 265} 266 267func @roundvec(%arg0 : vector<3xf16>) -> () { 268 // CHECK: spv.GLSL.Round {{%.*}} : vector<3xf16> 269 %2 = spv.GLSL.Round %arg0 : vector<3xf16> 270 return 271} 272