yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f02b08490
master
1//TEST:SIMPLE(filecheck=HLSL): -allow-glsl -stage compute -entry computeMain -target hlsl -DHLSL 2//TEST:SIMPLE(filecheck=HLSL): -allow-glsl -stage fragment -entry fragMain -target hlsl -DHLSL 3//TEST:SIMPLE(filecheck=GLSL): -allow-glsl -stage compute -entry computeMain -target glsl -DGLSL 4//TEST:SIMPLE(filecheck=GLSL): -allow-glsl -stage fragment -entry fragMain -target glsl -DGLSL 5//TEST:SIMPLE(filecheck=SPIR): -allow-glsl -stage compute -entry computeMain -target spirv -DSPIRV 6//TEST:SIMPLE(filecheck=SPIR): -allow-glsl -stage fragment -entry fragMain -target spirv -DSPIRV 7//TEST:SIMPLE(filecheck=CUDA): -allow-glsl -stage compute -entry computeMain -target cuda -DCUDA 8//TEST:SIMPLE(filecheck=CUDA): -allow-glsl -stage fragment -entry fragMain -target cuda -DCUDA 9 10//DISABLED_TEST(compute, vulkan):COMPARE_COMPUTE(filecheck-buffer=BUF):-vk -compute -entry computeMain -allow-glsl -output-using-type -xslang -DSPIRV 11 12// TODO: This test revealed a few problems for a path from GLSL to HLSL 13//T-EST(compute):COMPARE_COMPUTE(filecheck-buffer=BUF):-dx12 -compute -entry computeMain -allow-glsl -output-using-type -profile cs_6_6 -xslang -DHLSL 14 15 16//TEST_INPUT:ubuffer(data=[0], stride=4):out,name=outputBuffer 17buffer MyBlockName 18{ 19 int result; 20} outputBuffer; 21 22// float 23 24//TEST_INPUT: TextureSampler1D(size=4, content = zero):name uniform_sampler1DShadow 25uniform sampler1DShadow uniform_sampler1DShadow; 26 27//TEST_INPUT: TextureSampler2D(size=4, content = zero):name uniform_sampler2DShadow 28uniform sampler2DShadow uniform_sampler2DShadow; 29 30//TEST_INPUT: TextureSamplerCube(size=4, content = zero):name uniform_samplerCubeShadow 31uniform samplerCubeShadow uniform_samplerCubeShadow; 32 33 34//TEST_INPUT: TextureSampler1D(size=4, content = zero, arrayLength=2):name uniform_sampler1DArrayShadow 35uniform sampler1DArrayShadow uniform_sampler1DArrayShadow; 36 37//TEST_INPUT: TextureSampler2D(size=4, content = zero, arrayLength=2):name uniform_sampler2DArrayShadow 38uniform sampler2DArrayShadow uniform_sampler2DArrayShadow; 39 40//TEST_INPUT: TextureSampler2D(size=4, content = zero):name uniform_sampler2DRectShadow 41uniform sampler2DRectShadow uniform_sampler2DRectShadow; 42 43//TEST_INPUT: TextureSamplerCube(size=4, content = zero, arrayLength=2):name uniform_samplerCubeArrayShadow 44uniform samplerCubeArrayShadow uniform_samplerCubeArrayShadow; 45 46 47//TEST_INPUT: TextureSampler1D(size=4, content = zero):name uniform_sampler1D 48uniform sampler1D uniform_sampler1D; 49 50//TEST_INPUT: TextureSampler2D(size=4, content = zero):name uniform_sampler2D 51uniform sampler2D uniform_sampler2D; 52 53//TEST_INPUT: TextureSampler2D(size=4, content = zero):name uniform_sampler2DRect 54uniform sampler2DRect uniform_sampler2DRect; 55 56//TEST_INPUT: TextureSampler3D(size=4, content = zero):name uniform_sampler3D 57uniform sampler3D uniform_sampler3D; 58 59//TEST_INPUT: TextureSamplerCube(size=4, content = zero):name uniform_samplerCube 60uniform samplerCube uniform_samplerCube; 61 62//TEST_INPUT: TextureSampler1D(size=4, content = zero, arrayLength=2):name uniform_sampler1DArray 63uniform sampler1DArray uniform_sampler1DArray; 64 65//TEST_INPUT: TextureSampler2D(size=4, content = zero, arrayLength=2):name uniform_sampler2DArray 66uniform sampler2DArray uniform_sampler2DArray; 67 68//TEST_INPUT: TextureSamplerCube(size=4, content = zero, arrayLength=2):name uniform_samplerCubeArray 69uniform samplerCubeArray uniform_samplerCubeArray; 70 71//TEST_INPUT: TextureSampler1D(size=4, content = zero):name uniform_samplerBuffer 72uniform samplerBuffer uniform_samplerBuffer; 73 74//TEST_INPUT: TextureSampler2D(size=4, content = zero):name uniform_sampler2DMS 75uniform sampler2DMS uniform_sampler2DMS; 76 77//TEST_INPUT: TextureSampler2D(size=4, content = zero, arrayLength=2):name uniform_sampler2DMSArray 78uniform sampler2DMSArray uniform_sampler2DMSArray; 79 80// int 81 82//TEST_INPUT: TextureSampler1D(size=4, content = zero):name uniform_isampler1D 83uniform isampler1D uniform_isampler1D; 84 85//TEST_INPUT: TextureSampler2D(size=4, content = zero):name uniform_isampler2D 86uniform isampler2D uniform_isampler2D; 87 88//TEST_INPUT: TextureSampler2D(size=4, content = zero):name uniform_isampler2DRect 89uniform isampler2DRect uniform_isampler2DRect; 90 91//TEST_INPUT: TextureSampler3D(size=4, content = zero):name uniform_isampler3D 92uniform isampler3D uniform_isampler3D; 93 94//TEST_INPUT: TextureSamplerCube(size=4, content = zero):name uniform_isamplerCube 95uniform isamplerCube uniform_isamplerCube; 96 97//TEST_INPUT: TextureSampler1D(size=4, content = zero):name uniform_isampler1DArray 98uniform isampler1DArray uniform_isampler1DArray; 99 100//TEST_INPUT: TextureSampler2D(size=4, content = zero):name uniform_isampler2DArray 101uniform isampler2DArray uniform_isampler2DArray; 102 103//TEST_INPUT: TextureSamplerCube(size=4, content = zero):name uniform_isamplerCubeArray 104uniform isamplerCubeArray uniform_isamplerCubeArray; 105 106//TEST_INPUT: TextureSampler1D(size=4, content = zero):name uniform_isamplerBuffer 107uniform isamplerBuffer uniform_isamplerBuffer; 108 109//TEST_INPUT: TextureSampler2D(size=4, content = zero):name uniform_isampler2DMS 110uniform isampler2DMS uniform_isampler2DMS; 111 112//TEST_INPUT: TextureSampler2D(size=4, content = zero, arrayLength = 2):name uniform_isampler2DMSArray 113uniform isampler2DMSArray uniform_isampler2DMSArray; 114 115// uint 116 117//TEST_INPUT: TextureSampler1D(size=4, content = zero):name uniform_usampler1D 118uniform usampler1D uniform_usampler1D; 119 120//TEST_INPUT: TextureSampler2D(size=4, content = zero):name uniform_usampler2D 121uniform usampler2D uniform_usampler2D; 122 123//TEST_INPUT: TextureSampler2D(size=4, content = zero):name uniform_usampler2DRect 124uniform usampler2DRect uniform_usampler2DRect; 125 126//TEST_INPUT: TextureSampler3D(size=4, content = zero):name uniform_usampler3D 127uniform usampler3D uniform_usampler3D; 128 129//TEST_INPUT: TextureSamplerCube(size=4, content = zero):name uniform_usamplerCube 130uniform usamplerCube uniform_usamplerCube; 131 132//TEST_INPUT: TextureSampler1D(size=4, content = zero, arrayLength = 2):name uniform_usampler1DArray 133uniform usampler1DArray uniform_usampler1DArray; 134 135//TEST_INPUT: TextureSampler2D(size=4, content = zero, arrayLength = 2):name uniform_usampler2DArray 136uniform usampler2DArray uniform_usampler2DArray; 137 138//TEST_INPUT: TextureSamplerCube(size=4, content = zero, arrayLength = 2):name uniform_usamplerCubeArray 139uniform usamplerCubeArray uniform_usamplerCubeArray; 140 141//TEST_INPUT: Texture1D(size=4, content = zero):name uniform_usamplerBuffer 142uniform usamplerBuffer uniform_usamplerBuffer; 143 144//TEST_INPUT: Texture2D(size=4, content = zero):name uniform_usampler2DMS 145uniform usampler2DMS uniform_usampler2DMS; 146 147//TEST_INPUT: Texture2D(size=4, content = zero, arrayLength = 2):name uniform_usampler2DMSArray 148uniform usampler2DMSArray uniform_usampler2DMSArray; 149 150__generic<T : ITexelElement> 151bool textureFuncs( Sampler1D<T> gsampler1D 152 , Sampler2D<T> gsampler2D 153 , Sampler2DRect<T> gsampler2DRect 154 , Sampler3D<T> gsampler3D 155 , SamplerCube<T> gsamplerCube 156 , Sampler1DArray<T> gsampler1DArray 157 , Sampler2DArray<T> gsampler2DArray 158 , SamplerCubeArray<T> gsamplerCubeArray 159 , SamplerBuffer<T> gsamplerBuffer 160 , Sampler2DMS<T> gsampler2DMS 161 , Sampler2DMSArray<T> gsampler2DMSArray 162 , bool ignoreResult 163) 164{ 165 // GLSL-LABEL: textureFuncs_0 166 typealias gvec4 = vector<T.Element,4>; 167 168 constexpr float coord = 0.5; 169 170 constexpr ivec2 offset2D = ivec2(2); 171 constexpr ivec3 offset3D = ivec3(3); 172 constexpr ivec2 offsets[4] = { ivec2(1), ivec2(2), ivec2(3), ivec2(4) }; 173 174 bool ignoreResultF32 = ignoreResult && T.Element is float; 175 bool ignoreResultI32 = ignoreResult && T.Element is int32_t; 176 177 return true 178 // 8.9.1. Texture Query Functions 179 180 // GLSL: textureSize({{.*}}sampler1D 181 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 182 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 183 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 184 && int(4) == textureSize(gsampler1D, int(0)) 185 186 // GLSL: textureSize({{.*}}sampler2D 187 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 188 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 189 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 190 && ivec2(4) == textureSize(gsampler2D, int(0)) 191 192 // GLSL: textureSize({{.*}}sampler3D 193 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 194 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 195 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 196 && ivec3(4) == textureSize(gsampler3D, int(0)) 197 198 // GLSL: textureSize({{.*}}samplerCube 199 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCube 200 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 201 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 202 && ivec2(4) == textureSize(gsamplerCube, int(0)) 203 204 // GLSL: textureSize({{.*}}sampler1DShadow 205 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 206 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 207 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 208 && int(4) == textureSize(uniform_sampler1DShadow, int(0)) 209 210 // GLSL: textureSize({{.*}}sampler2DShadow 211 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 212 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 213 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 214 && (ivec2(4) == textureSize(uniform_sampler2DShadow, int(0)) || ignoreResult) 215 216 // GLSL: textureSize({{.*}}samplerCubeShadow 217 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeShadow 218 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 219 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 220 && (ivec2(4) == textureSize(uniform_samplerCubeShadow, int(0)) || ignoreResult) 221 222 // GLSL: textureSize({{.*}}samplerCubeArray 223 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeArray 224 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 225 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 226 && (ivec3(4,4,2) == textureSize(gsamplerCubeArray, int(0)) || ignoreResultI32) 227 228 // GLSL: textureSize({{.*}}samplerCubeArrayShadow 229 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeArrayShadow 230 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 231 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 232 && ivec3(4,4,2) == textureSize(uniform_samplerCubeArrayShadow, int(0)) 233 234 // GLSL: textureSize({{.*}}sampler2DRect 235 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRect 236 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 237 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 238 && ivec2(4) == textureSize(gsampler2DRect) 239 240 // GLSL: textureSize({{.*}}sampler2DRectShadow 241 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRectShadow 242 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 243 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 244 && ivec2(4) == textureSize(uniform_sampler2DRectShadow) 245 246 // GLSL: textureSize({{.*}}sampler1DArray 247 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArray 248 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 249 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 250 && (ivec2(4,2) == textureSize(gsampler1DArray, int(0)) || ignoreResultI32 ) 251 252 // GLSL: textureSize({{.*}}sampler1DArrayShadow 253 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArrayShadow 254 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 255 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 256 && (ivec2(4,2) == textureSize(uniform_sampler1DArrayShadow, int(0)) || ignoreResult) 257 258 // GLSL: textureSize({{.*}}sampler2DArray 259 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArray 260 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 261 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 262 && (ivec3(4,4,2) == textureSize(gsampler2DArray, int(0)) || ignoreResultI32) 263 264 // GLSL: textureSize({{.*}}sampler2DArrayShadow 265 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArrayShadow 266 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 267 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 268 && ivec3(4,4,2) == textureSize(uniform_sampler2DArrayShadow, int(0)) 269 270 // GLSL: imageSize({{.*}}samplerBuffer 271 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerBuffer 272 // SPIR: OpImageQuerySize{{.*}}[[LOAD]] 273 && (int(4) == textureSize(gsamplerBuffer) || ignoreResult) 274 275 // GLSL: textureSize({{.*}}sampler2DMS 276 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DMS 277 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 278 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 279 && ivec2(4) == textureSize(gsampler2DMS) 280 281 // GLSL: textureSize({{.*}}sampler2DMSArray 282 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DMSArray 283 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 284 // SPIR: OpImageQuerySize{{.*}}[[IMAGE]] 285 && ivec3(4,4,2) == textureSize(gsampler2DMSArray) 286 287 // GLSL: textureQueryLod({{.*}}sampler1D 288 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 289 // SPIR: OpImageQueryLod{{.*}}[[LOAD]] 290 && vec2(0) == (textureQueryLod(gsampler1D, float(coord)) * vec2(1,0)) 291 292 // GLSL: textureQueryLod({{.*}}sampler2D 293 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 294 // SPIR: OpImageQueryLod{{.*}}[[LOAD]] 295 && vec2(0) == (textureQueryLod(gsampler2D, vec2(coord)) * vec2(1,0)) 296 297 // GLSL: textureQueryLod({{.*}}sampler3D 298 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 299 // SPIR: OpImageQueryLod{{.*}}[[LOAD]] 300 && vec2(0) == (textureQueryLod(gsampler3D, vec3(coord)) * vec2(1,0)) 301 302 // GLSL: textureQueryLod({{.*}}samplerCube 303 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCube 304 // SPIR: OpImageQueryLod{{.*}}[[LOAD]] 305 && vec2(0) == (textureQueryLod(gsamplerCube, vec3(coord)) * vec2(1,0)) 306 307 // GLSL: textureQueryLod({{.*}}sampler1DArray 308 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArray 309 // SPIR: OpImageQueryLod{{.*}}[[LOAD]] 310 && vec2(0) == (textureQueryLod(gsampler1DArray, float(coord)) * vec2(1,0)) 311 312 // GLSL: textureQueryLod({{.*}}sampler2DArray 313 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArray 314 // SPIR: OpImageQueryLod{{.*}}[[LOAD]] 315 && vec2(0) == (textureQueryLod(gsampler2DArray, vec2(coord)) * vec2(1,0)) 316 317 // GLSL: textureQueryLod({{.*}}samplerCubeArray 318 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeArray 319 // SPIR: OpImageQueryLod{{.*}}[[LOAD]] 320 && vec2(0) == (textureQueryLod(gsamplerCubeArray, vec3(coord)) * vec2(1,0)) 321 322 // GLSL: textureQueryLod({{.*}}sampler1DShadow 323 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 324 // SPIR: OpImageQueryLod{{.*}}[[LOAD]] 325 && vec2(0) == (textureQueryLod(uniform_sampler1DShadow, float(coord)) * vec2(1,0)) 326 327 // GLSL: textureQueryLod({{.*}}sampler2DShadow 328 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 329 // SPIR: OpImageQueryLod{{.*}}[[LOAD]] 330 && vec2(0) == (textureQueryLod(uniform_sampler2DShadow, vec2(coord)) * vec2(1,0)) 331 332 // GLSL: textureQueryLod({{.*}}samplerCubeShadow 333 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeShadow 334 // SPIR: OpImageQueryLod{{.*}}[[LOAD]] 335 && vec2(0) == (textureQueryLod(uniform_samplerCubeShadow, vec3(coord)) * vec2(1,0)) 336 337 // GLSL: textureQueryLod({{.*}}sampler1DArrayShadow 338 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArrayShadow 339 // SPIR: OpImageQueryLod{{.*}}[[LOAD]] 340 && vec2(0) == (textureQueryLod(uniform_sampler1DArrayShadow, float(coord)) * vec2(1,0)) 341 342 // GLSL: textureQueryLod({{.*}}sampler2DArrayShadow 343 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArrayShadow 344 // SPIR: OpImageQueryLod{{.*}}[[LOAD]] 345 && vec2(0) == (textureQueryLod(uniform_sampler2DArrayShadow, vec2(coord)) * vec2(1,0)) 346 347 // GLSL: textureQueryLod({{.*}}samplerCubeArrayShadow 348 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeArrayShadow 349 // SPIR: OpImageQueryLod{{.*}}[[LOAD]] 350 && vec2(0) == (textureQueryLod(uniform_samplerCubeArrayShadow, vec3(coord)) * vec2(1,0)) 351 352 // GLSL: textureQueryLevels({{.*}}sampler1D 353 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 354 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 355 // SPIR: OpImageQueryLevels{{.*}}[[IMAGE]] 356 && int(3) == textureQueryLevels(gsampler1D) 357 358 // GLSL: textureQueryLevels({{.*}}sampler2D 359 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 360 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 361 // SPIR: OpImageQueryLevels{{.*}}[[IMAGE]] 362 && int(3) == textureQueryLevels(gsampler2D) 363 364 // GLSL: textureQueryLevels({{.*}}sampler3D 365 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 366 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 367 // SPIR: OpImageQueryLevels{{.*}}[[IMAGE]] 368 && int(3) == textureQueryLevels(gsampler3D) 369 370 // GLSL: textureQueryLevels({{.*}}samplerCube 371 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCube 372 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 373 // SPIR: OpImageQueryLevels{{.*}}[[IMAGE]] 374 && int(3) == textureQueryLevels(gsamplerCube) 375 376 // GLSL: textureQueryLevels({{.*}}sampler1DArray 377 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArray 378 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 379 // SPIR: OpImageQueryLevels{{.*}}[[IMAGE]] 380 && int(3) == textureQueryLevels(gsampler1DArray) 381 382 // GLSL: textureQueryLevels({{.*}}sampler2DArray 383 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArray 384 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 385 // SPIR: OpImageQueryLevels{{.*}}[[IMAGE]] 386 && int(3) == textureQueryLevels(gsampler2DArray) 387 388 // GLSL: textureQueryLevels({{.*}}samplerCubeArray 389 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeArray 390 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 391 // SPIR: OpImageQueryLevels{{.*}}[[IMAGE]] 392 && int(3) == textureQueryLevels(gsamplerCubeArray) 393 394 // GLSL: textureQueryLevels({{.*}}sampler1DShadow 395 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 396 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 397 // SPIR: OpImageQueryLevels{{.*}}[[IMAGE]] 398 && int(3) == textureQueryLevels(uniform_sampler1DShadow) 399 400 // GLSL: textureQueryLevels({{.*}}sampler2DShadow 401 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 402 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 403 // SPIR: OpImageQueryLevels{{.*}}[[IMAGE]] 404 && int(3) == textureQueryLevels(uniform_sampler2DShadow) 405 406 // GLSL: textureQueryLevels({{.*}}samplerCubeShadow 407 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeShadow 408 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 409 // SPIR: OpImageQueryLevels{{.*}}[[IMAGE]] 410 && int(3) == textureQueryLevels(uniform_samplerCubeShadow) 411 412 // GLSL: textureQueryLevels({{.*}}sampler1DArrayShadow 413 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArrayShadow 414 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 415 // SPIR: OpImageQueryLevels{{.*}}[[IMAGE]] 416 && int(3) == textureQueryLevels(uniform_sampler1DArrayShadow) 417 418 // GLSL: textureQueryLevels({{.*}}sampler2DArrayShadow 419 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArrayShadow 420 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 421 // SPIR: OpImageQueryLevels{{.*}}[[IMAGE]] 422 && int(3) == textureQueryLevels(uniform_sampler2DArrayShadow) 423 424 // GLSL: textureQueryLevels({{.*}}samplerCubeArrayShadow 425 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeArrayShadow 426 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 427 // SPIR: OpImageQueryLevels{{.*}}[[IMAGE]] 428 && int(3) == textureQueryLevels(uniform_samplerCubeArrayShadow) 429 430 // GLSL: textureSamples({{.*}}sampler2DMS 431 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DMS 432 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 433 // SPIR: OpImageQuerySamples{{.*}}[[IMAGE]] 434 && int(1) == textureSamples(gsampler2DMS) 435 436 // GLSL: textureSamples({{.*}}sampler2DMSArray 437 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DMSArray 438 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 439 // SPIR: OpImageQuerySamples{{.*}}[[IMAGE]] 440 && int(1) == textureSamples(gsampler2DMSArray) 441 442 // 8.9.2. Texel Lookup Functions 443 444 // GLSL: texture({{.*}}sampler1D 445 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 446 // SPIR: OpImageSampleImplicitLod{{.*}}[[LOAD]] 447 && gvec4(T.Element(0)) == texture(gsampler1D, float(coord)) 448 449 // GLSL: texture({{.*}}sampler1D 450 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 451 // SPIR: OpImageSampleImplicitLod{{.*}}[[LOAD]]{{.*}} Bias % 452 && gvec4(T.Element(0)) == texture(gsampler1D, float(coord), float(0)) 453 454 // GLSL: texture({{.*}}sampler2D 455 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 456 // SPIR: OpImageSampleImplicitLod{{.*}}[[LOAD]] 457 && gvec4(T.Element(0)) == texture(gsampler2D, vec2(coord)) 458 459 // GLSL: texture({{.*}}sampler2D 460 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 461 // SPIR: OpImageSampleImplicitLod{{.*}}[[LOAD]]{{.*}} Bias % 462 && gvec4(T.Element(0)) == texture(gsampler2D, vec2(coord), float(0)) 463 464 // GLSL: texture({{.*}}sampler3D 465 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 466 // SPIR: OpImageSampleImplicitLod{{.*}}[[LOAD]] 467 && gvec4(T.Element(0)) == texture(gsampler3D, vec3(coord)) 468 469 // GLSL: texture({{.*}}sampler3D 470 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 471 // SPIR: OpImageSampleImplicitLod{{.*}}[[LOAD]]{{.*}} Bias % 472 && gvec4(T.Element(0)) == texture(gsampler3D, vec3(coord), float(0)) 473 474 // GLSL: texture({{.*}}samplerCube 475 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCube 476 // SPIR: OpImageSampleImplicitLod{{.*}}[[LOAD]] 477 && gvec4(T.Element(0)) == texture(gsamplerCube, vec3(coord)) 478 479 // GLSL: texture({{.*}}samplerCube 480 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCube 481 // SPIR: OpImageSampleImplicitLod{{.*}}[[LOAD]]{{.*}} Bias % 482 && gvec4(T.Element(0)) == texture(gsamplerCube, vec3(coord), float(0)) 483 484 // GLSL: texture({{.*}}sampler1DShadow 485 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 486 // SPIR: OpImageSampleDrefImplicitLod{{.*}}[[LOAD]] 487 && float(0) == texture(uniform_sampler1DShadow, vec3(coord)) 488 489 // GLSL: texture({{.*}}sampler1DShadow 490 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 491 // SPIR: OpImageSampleDrefImplicitLod{{.*}}[[LOAD]]{{.*}} Bias % 492 && float(0) == texture(uniform_sampler1DShadow, vec3(coord), float(0)) 493 494 // GLSL: texture({{.*}}sampler2DShadow 495 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 496 // SPIR: OpImageSampleDrefImplicitLod{{.*}}[[LOAD]] 497 && (float(0) == texture(uniform_sampler2DShadow, vec3(coord)) || ignoreResultF32) 498 499 // GLSL: texture({{.*}}sampler2DShadow 500 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 501 // SPIR: OpImageSampleDrefImplicitLod{{.*}}[[LOAD]]{{.*}} Bias % 502 && (float(0) == texture(uniform_sampler2DShadow, vec3(coord), float(0)) || ignoreResultF32) 503 504 // GLSL: texture({{.*}}samplerCubeShadow 505 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeShadow 506 // SPIR: OpImageSampleDrefImplicitLod{{.*}}[[LOAD]] 507 && (float(0) == texture(uniform_samplerCubeShadow, vec4(coord)) || ignoreResultF32) 508 509 // GLSL: texture({{.*}}samplerCubeShadow 510 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeShadow 511 // SPIR: OpImageSampleDrefImplicitLod{{.*}}[[LOAD]]{{.*}} Bias % 512 && (float(0) == texture(uniform_samplerCubeShadow, vec4(coord), float(0)) || ignoreResultF32) 513 514 // GLSL: texture({{.*}}sampler2DArray 515 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArray 516 // SPIR: OpImageSampleImplicitLod{{.*}}[[LOAD]] 517 && gvec4(T.Element(0)) == texture(gsampler2DArray, vec3(coord)) 518 519 // GLSL: texture({{.*}}sampler2DArray 520 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArray 521 // SPIR: OpImageSampleImplicitLod{{.*}}[[LOAD]]{{.*}} Bias % 522 && gvec4(T.Element(0)) == texture(gsampler2DArray, vec3(coord), float(0)) 523 524 // GLSL: texture({{.*}}samplerCubeArray 525 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeArray 526 // SPIR: OpImageSampleImplicitLod{{.*}}[[LOAD]] 527 && gvec4(T.Element(0)) == texture(gsamplerCubeArray, vec4(coord)) 528 529 // GLSL: texture({{.*}}samplerCubeArray 530 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeArray 531 // SPIR: OpImageSampleImplicitLod{{.*}}[[LOAD]]{{.*}} Bias % 532 && gvec4(T.Element(0)) == texture(gsamplerCubeArray, vec4(coord), float(0)) 533 534 // GLSL: texture({{.*}}sampler1DArray 535 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArray 536 // SPIR: OpImageSampleImplicitLod{{.*}}[[LOAD]] 537 && gvec4(T.Element(0)) == texture(gsampler1DArray, vec2(coord)) 538 539 // GLSL: texture({{.*}}sampler1DArray 540 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArray 541 // SPIR: OpImageSampleImplicitLod{{.*}}[[LOAD]]{{.*}} Bias % 542 && gvec4(T.Element(0)) == texture(gsampler1DArray, vec2(coord), float(0)) 543 544 // GLSL: texture({{.*}}sampler1DArrayShadow 545 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArrayShadow 546 // SPIR: OpImageSampleDrefImplicitLod{{.*}}[[LOAD]] 547 && float(0) == texture(uniform_sampler1DArrayShadow, vec3(coord)) 548 549 // GLSL: texture({{.*}}sampler1DArrayShadow 550 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArrayShadow 551 // SPIR: OpImageSampleDrefImplicitLod{{.*}}[[LOAD]]{{.*}} Bias % 552 && float(0) == texture(uniform_sampler1DArrayShadow, vec3(coord), float(0)) 553 554 // GLSL: texture({{.*}}sampler2DArrayShadow 555 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArrayShadow 556 // SPIR: OpImageSampleDrefImplicitLod{{.*}}[[LOAD]] 557 && float(0) == texture(uniform_sampler2DArrayShadow, vec4(coord)) 558 559 // GLSL: texture({{.*}}sampler2DRect 560 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRect 561 // SPIR: OpImageSampleImplicitLod{{.*}}[[LOAD]] 562 && gvec4(T.Element(0)) == texture(gsampler2DRect, vec2(coord)) 563 564 // GLSL: texture({{.*}}sampler2DRectShadow 565 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRectShadow 566 // SPIR: OpImageSampleDrefImplicitLod{{.*}}[[LOAD]] 567 && float(0) == texture(uniform_sampler2DRectShadow, vec3(coord)) 568 569 // GLSL: texture({{.*}}samplerCubeArrayShadow 570 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeArrayShadow 571 // SPIR: OpImageSampleDrefImplicitLod{{.*}}[[LOAD]] 572 && float(0) == texture(uniform_samplerCubeArrayShadow, vec4(coord), float(0)) 573 574 // GLSL: textureProj({{.*}}sampler1D 575 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 576 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]] 577 && gvec4(T.Element(0)) == textureProj(gsampler1D, vec2(coord)) 578 579 // GLSL: textureProj({{.*}}sampler1D 580 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 581 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]]{{.*}} Bias % 582 && gvec4(T.Element(0)) == textureProj(gsampler1D, vec2(coord), float(0)) 583 584 // GLSL: textureProj({{.*}}sampler1D 585 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 586 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]] 587 && gvec4(T.Element(0)) == textureProj(gsampler1D, vec4(coord)) 588 589 // GLSL: textureProj({{.*}}sampler1D 590 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 591 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]]{{.*}} Bias % 592 && gvec4(T.Element(0)) == textureProj(gsampler1D, vec4(coord), float(0)) 593 594 // GLSL: textureProj({{.*}}sampler2D 595 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 596 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]] 597 && gvec4(T.Element(0)) == textureProj(gsampler2D, vec3(coord)) 598 599 // GLSL: textureProj({{.*}}sampler2D 600 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 601 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]]{{.*}} Bias % 602 && gvec4(T.Element(0)) == textureProj(gsampler2D, vec3(coord), float(0)) 603 604 // GLSL: textureProj({{.*}}sampler2D 605 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 606 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]] 607 && gvec4(T.Element(0)) == textureProj(gsampler2D, vec4(coord)) 608 609 // GLSL: textureProj({{.*}}sampler2D 610 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 611 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]]{{.*}} Bias % 612 && gvec4(T.Element(0)) == textureProj(gsampler2D, vec4(coord), float(0)) 613 614 // GLSL: textureProj({{.*}}sampler3D 615 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 616 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]] 617 && gvec4(T.Element(0)) == textureProj(gsampler3D, vec4(coord)) 618 619 // GLSL: textureProj({{.*}}sampler3D 620 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 621 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]]{{.*}} Bias % 622 && gvec4(T.Element(0)) == textureProj(gsampler3D, vec4(coord), float(0)) 623 624 // GLSL: textureProj({{.*}}sampler1DShadow 625 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 626 // SPIR: OpImageSampleProjDrefImplicitLod {{.*}}[[LOAD]] 627 && float(0) == textureProj(uniform_sampler1DShadow, vec4(coord)) 628 629 // GLSL: textureProj({{.*}}sampler1DShadow 630 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 631 // SPIR: OpImageSampleProjDrefImplicitLod {{.*}}[[LOAD]]{{.*}} Bias % 632 && float(0) == textureProj(uniform_sampler1DShadow, vec4(coord), float(0)) 633 634 // GLSL: textureProj({{.*}}sampler2DShadow 635 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 636 // SPIR: OpImageSampleProjDrefImplicitLod {{.*}}[[LOAD]] 637 && (float(0) == textureProj(uniform_sampler2DShadow, vec4(coord)) || ignoreResultF32) 638 639 // GLSL: textureProj({{.*}}sampler2DShadow 640 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 641 // SPIR: OpImageSampleProjDrefImplicitLod {{.*}}[[LOAD]]{{.*}} Bias % 642 && (float(0) == textureProj(uniform_sampler2DShadow, vec4(coord), float(0)) || ignoreResultF32) 643 644 // GLSL-COUNT-2: textureProj({{.*}}sampler2DRect 645 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRect 646 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]] 647 && gvec4(T.Element(0)) == textureProj(gsampler2DRect, vec3(coord)) 648 && gvec4(T.Element(0)) == textureProj(gsampler2DRect, vec4(coord)) 649 650 // GLSL: textureProj({{.*}}sampler2DRectShadow 651 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRectShadow 652 // SPIR: OpImageSampleProjDrefImplicitLod {{.*}}[[LOAD]] 653 && float(0) == textureProj(uniform_sampler2DRectShadow, vec4(coord)) 654 655 // GLSL: textureLod({{.*}}sampler1D 656 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 657 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Lod % 658 && gvec4(T.Element(0)) == textureLod(gsampler1D, float(coord), float(0)) 659 660 // GLSL: textureLod({{.*}}sampler2D 661 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 662 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Lod % 663 && gvec4(T.Element(0)) == textureLod(gsampler2D, vec2(coord), float(0)) 664 665 // GLSL: textureLod({{.*}}sampler3D 666 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 667 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Lod % 668 && gvec4(T.Element(0)) == textureLod(gsampler3D, vec3(coord), float(0)) 669 670 // GLSL: textureLod({{.*}}samplerCube 671 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCube 672 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Lod % 673 && gvec4(T.Element(0)) == textureLod(gsamplerCube, vec3(coord), float(0)) 674 675 // GLSL: textureLod({{.*}}sampler2DShadow 676 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 677 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Lod % 678 && (float(0) == textureLod(uniform_sampler2DShadow, vec3(coord), float(0)) || ignoreResultF32) 679 680 // GLSL: textureLod({{.*}}sampler1DShadow 681 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 682 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Lod % 683 && float(0) == textureLod(uniform_sampler1DShadow, vec3(coord), float(0)) 684 685 // GLSL: textureLod({{.*}}sampler1DArray 686 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArray 687 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Lod % 688 && gvec4(T.Element(0)) == textureLod(gsampler1DArray, vec2(coord), float(0)) 689 690 // GLSL: textureLod({{.*}}sampler1DArrayShadow 691 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArrayShadow 692 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Lod % 693 && float(0) == textureLod(uniform_sampler1DArrayShadow, vec3(coord), float(0)) 694 695 // GLSL: textureLod({{.*}}sampler2DArray 696 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArray 697 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Lod % 698 && gvec4(T.Element(0)) == textureLod(gsampler2DArray, vec3(coord), float(0)) 699 700 // GLSL: textureLod({{.*}}samplerCubeArray 701 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeArray 702 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Lod % 703 && gvec4(T.Element(0)) == textureLod(gsamplerCubeArray, vec4(coord), float(0)) 704 705 // GLSL: textureOffset({{.*}}sampler1D 706 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 707 // SPIR: OpImageSampleImplicitLod {{.*}}[[LOAD]]{{.*}}ConstOffset % 708 && gvec4(T.Element(0)) == textureOffset(gsampler1D, float(coord), int(1)) 709 710 // GLSL: textureOffset({{.*}}sampler1D 711 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 712 // SPIR: OpImageSampleImplicitLod {{.*}}[[LOAD]]{{.*}} Bias|ConstOffset % 713 && gvec4(T.Element(0)) == textureOffset(gsampler1D, float(coord), int(0), float(0)) 714 715 // GLSL: textureOffset({{.*}}sampler2D 716 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 717 // SPIR: OpImageSampleImplicitLod {{.*}}[[LOAD]]{{.*}}ConstOffset % 718 && gvec4(T.Element(0)) == textureOffset(gsampler2D, vec2(coord), offset2D) 719 720 // GLSL: textureOffset({{.*}}sampler2D 721 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 722 // SPIR: OpImageSampleImplicitLod {{.*}}[[LOAD]]{{.*}} Bias|ConstOffset % 723 && gvec4(T.Element(0)) == textureOffset(gsampler2D, vec2(coord), offset2D, float(0)) 724 725 // GLSL: textureOffset({{.*}}sampler3D 726 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 727 // SPIR: OpImageSampleImplicitLod {{.*}}[[LOAD]]{{.*}}ConstOffset % 728 && gvec4(T.Element(0)) == textureOffset(gsampler3D, vec3(coord), offset3D) 729 730 // GLSL: textureOffset({{.*}}sampler3D 731 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 732 // SPIR: OpImageSampleImplicitLod {{.*}}[[LOAD]]{{.*}} Bias|ConstOffset % 733 && gvec4(T.Element(0)) == textureOffset(gsampler3D, vec3(coord), offset3D, float(0)) 734 735 // GLSL: textureOffset({{.*}}sampler2DShadow 736 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 737 // SPIR: OpImageSampleDrefImplicitLod {{.*}}[[LOAD]]{{.*}}ConstOffset % 738 && (float(0) == textureOffset(uniform_sampler2DShadow, vec3(coord), offset2D) || ignoreResultF32) 739 740 // GLSL: textureOffset({{.*}}sampler2DShadow 741 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 742 // SPIR: OpImageSampleDrefImplicitLod {{.*}}[[LOAD]]{{.*}} Bias|ConstOffset % 743 && (float(0) == textureOffset(uniform_sampler2DShadow, vec3(coord), offset2D, float(0)) || ignoreResultF32) 744 745 // GLSL: textureOffset({{.*}}sampler2DRect 746 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRect 747 // SPIR: OpImageSampleImplicitLod {{.*}}[[LOAD]]{{.*}}ConstOffset % 748 && gvec4(T.Element(0)) == textureOffset(gsampler2DRect, vec2(coord), offset2D) 749 750 // GLSL: textureOffset({{.*}}sampler2DRectShadow 751 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRectShadow 752 // SPIR: OpImageSampleDrefImplicitLod {{.*}}[[LOAD]]{{.*}}ConstOffset % 753 && float(0) == textureOffset(uniform_sampler2DRectShadow, vec3(coord), offset2D) 754 755 // GLSL: textureOffset({{.*}}sampler1DShadow 756 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 757 // SPIR: OpImageSampleDrefImplicitLod {{.*}}[[LOAD]]{{.*}} ConstOffset % 758 && float(0) == textureOffset(uniform_sampler1DShadow, vec3(coord), int(0)) 759 760 // GLSL: textureOffset({{.*}}sampler1DShadow 761 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 762 // SPIR: OpImageSampleDrefImplicitLod {{.*}}[[LOAD]]{{.*}} Bias|ConstOffset % 763 && float(0) == textureOffset(uniform_sampler1DShadow, vec3(coord), int(0), float(0)) 764 765 // GLSL: textureOffset({{.*}}sampler1DArray 766 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArray 767 // SPIR: OpImageSampleImplicitLod {{.*}}[[LOAD]]{{.*}}ConstOffset % 768 && gvec4(T.Element(0)) == textureOffset(gsampler1DArray, vec2(coord), int(1)) 769 770 // GLSL: textureOffset({{.*}}sampler1DArray 771 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArray 772 // SPIR: OpImageSampleImplicitLod {{.*}}[[LOAD]]{{.*}} Bias|ConstOffset % 773 && gvec4(T.Element(0)) == textureOffset(gsampler1DArray, vec2(coord), int(0), float(0)) 774 775 // GLSL: textureOffset({{.*}}sampler2DArray 776 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArray 777 // SPIR: OpImageSampleImplicitLod {{.*}}[[LOAD]]{{.*}}ConstOffset % 778 && gvec4(T.Element(0)) == textureOffset(gsampler2DArray, vec3(coord), offset2D) 779 780 // GLSL: textureOffset({{.*}}sampler2DArray 781 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArray 782 // SPIR: OpImageSampleImplicitLod {{.*}}[[LOAD]]{{.*}} Bias|ConstOffset % 783 && gvec4(T.Element(0)) == textureOffset(gsampler2DArray, vec3(coord), offset2D, float(0)) 784 785 // GLSL: textureOffset({{.*}}sampler1DArrayShadow 786 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArrayShadow 787 // SPIR: OpImageSampleDrefImplicitLod {{.*}}[[LOAD]]{{.*}} ConstOffset % 788 && float(0) == textureOffset(uniform_sampler1DArrayShadow, vec3(coord), int(0)) 789 790 // GLSL: textureOffset({{.*}}sampler1DArrayShadow 791 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArrayShadow 792 // SPIR: OpImageSampleDrefImplicitLod {{.*}}[[LOAD]]{{.*}} Bias|ConstOffset % 793 && float(0) == textureOffset(uniform_sampler1DArrayShadow, vec3(coord), int(0), float(0)) 794 795 // GLSL: textureOffset({{.*}}sampler2DArrayShadow 796 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArrayShadow 797 // SPIR: OpImageSampleDrefImplicitLod {{.*}}[[LOAD]]{{.*}} ConstOffset % 798 && float(0) == textureOffset(uniform_sampler2DArrayShadow, vec4(coord), offset2D) 799 800 // GLSL: texelFetch({{.*}}sampler1D 801 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 802 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 803 // SPIR: OpImageFetch {{.*}}[[IMAGE]]{{.*}} Lod % 804 && gvec4(T.Element(0)) == texelFetch(gsampler1D, int(coord), int(0)) 805 806 // GLSL: texelFetch({{.*}}sampler2D 807 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 808 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 809 // SPIR: OpImageFetch {{.*}}[[IMAGE]]{{.*}} Lod % 810 && gvec4(T.Element(0)) == texelFetch(gsampler2D, ivec2(coord), int(0)) 811 812 // GLSL: texelFetch({{.*}}sampler3D 813 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 814 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 815 // SPIR: OpImageFetch {{.*}}[[IMAGE]]{{.*}} Lod % 816 && gvec4(T.Element(0)) == texelFetch(gsampler3D, ivec3(coord), int(0)) 817 818 // GLSL: texelFetch({{.*}}sampler2DRect 819 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRect 820 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 821 // SPIR: OpImageFetch {{.*}}[[IMAGE]] 822 && gvec4(T.Element(0)) == texelFetch(gsampler2DRect, ivec2(coord)) 823 824 // GLSL: texelFetch({{.*}}sampler1DArray 825 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArray 826 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 827 // SPIR: OpImageFetch {{.*}}[[IMAGE]]{{.*}} Lod % 828 && gvec4(T.Element(0)) == texelFetch(gsampler1DArray, ivec2(coord), int(0)) 829 830 // GLSL: texelFetch({{.*}}sampler2DArray 831 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArray 832 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 833 // SPIR: OpImageFetch {{.*}}[[IMAGE]]{{.*}} Lod % 834 && gvec4(T.Element(0)) == texelFetch(gsampler2DArray, ivec3(coord), int(0)) 835 836 // GLSL: imageLoad({{.*}}samplerBuffer 837 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerBuffer 838 // SPIR: OpImageRead {{.*}}[[LOAD]] 839 && (gvec4(T.Element(0)) == texelFetch(gsamplerBuffer, int(coord)) || ignoreResultF32) 840 841 // GLSL: texelFetch({{.*}}sampler2DMS 842 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DMS 843 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 844 // S-PIR: OpImageFetch {{.*}}[[IMAGE]]{{.*}} Lod % 845 && gvec4(T.Element(0)) == texelFetch(gsampler2DMS, ivec2(coord), int(0)) 846 847 // GLSL: texelFetch({{.*}}sampler2DMSArray 848 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DMSArray 849 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 850 // S-PIR: OpImageFetch {{.*}}[[IMAGE]]{{.*}} Lod % 851 && gvec4(T.Element(0)) == texelFetch(gsampler2DMSArray, ivec3(coord), int(0)) 852 853 // GLSL: texelFetchOffset({{.*}}sampler1D 854 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 855 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 856 // SPIR: OpImageFetch {{.*}}[[IMAGE]]{{.*}} Lod|ConstOffset % 857 && gvec4(T.Element(0)) == texelFetchOffset(gsampler1D, int(coord), int(0), int(0)) 858 859 // GLSL: texelFetchOffset({{.*}}sampler2D 860 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 861 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 862 // SPIR: OpImageFetch {{.*}}[[IMAGE]]{{.*}} Lod|ConstOffset % 863 && gvec4(T.Element(0)) == texelFetchOffset(gsampler2D, ivec2(coord), int(0), offset2D) 864 865 // GLSL: texelFetchOffset({{.*}}sampler3D 866 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 867 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 868 // SPIR: OpImageFetch {{.*}}[[IMAGE]]{{.*}} Lod|ConstOffset % 869 && gvec4(T.Element(0)) == texelFetchOffset(gsampler3D, ivec3(coord), int(0), offset3D) 870 871 // GLSL: texelFetchOffset({{.*}}sampler2DRect 872 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRect 873 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 874 // SPIR: OpImageFetch {{.*}}[[IMAGE]]{{.*}} Lod|ConstOffset % 875 && gvec4(T.Element(0)) == texelFetchOffset(gsampler2DRect, ivec2(coord), offset2D) 876 877 // GLSL: texelFetchOffset({{.*}}sampler1DArray 878 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArray 879 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 880 // SPIR: OpImageFetch {{.*}}[[IMAGE]]{{.*}} Lod|ConstOffset % 881 && gvec4(T.Element(0)) == texelFetchOffset(gsampler1DArray, ivec2(coord), int(0), int(0)) 882 883 // GLSL: texelFetchOffset({{.*}}sampler2DArray 884 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArray 885 // SPIR: [[IMAGE:%[1-9][0-9]*]] = OpImage{{.*}}[[LOAD]] 886 // SPIR: OpImageFetch {{.*}}[[IMAGE]]{{.*}} Lod|ConstOffset % 887 && gvec4(T.Element(0)) == texelFetchOffset(gsampler2DArray, ivec3(coord), int(0), offset2D) 888 889 // GLSL: textureProjOffset({{.*}}sampler1D 890 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 891 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]]{{.*}} ConstOffset % 892 && gvec4(T.Element(0)) == textureProjOffset(gsampler1D, vec2(coord), int(0)) 893 894 // GLSL: textureProjOffset({{.*}}sampler1D 895 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 896 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]]{{.*}} Bias|ConstOffset % 897 && gvec4(T.Element(0)) == textureProjOffset(gsampler1D, vec2(coord), int(0), float(0)) 898 899 // GLSL: textureProjOffset({{.*}}sampler1D 900 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 901 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]]{{.*}} ConstOffset % 902 && gvec4(T.Element(0)) == textureProjOffset(gsampler1D, vec4(coord), int(0)) 903 904 // GLSL: textureProjOffset({{.*}}sampler1D 905 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 906 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]]{{.*}} Bias|ConstOffset % 907 && gvec4(T.Element(0)) == textureProjOffset(gsampler1D, vec4(coord), int(0), float(0)) 908 909 // GLSL: textureProjOffset({{.*}}sampler2D 910 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 911 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]]{{.*}} ConstOffset % 912 && gvec4(T.Element(0)) == textureProjOffset(gsampler2D, vec3(coord), offset2D) 913 914 // GLSL: textureProjOffset({{.*}}sampler2D 915 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 916 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]]{{.*}} Bias|ConstOffset % 917 && gvec4(T.Element(0)) == textureProjOffset(gsampler2D, vec3(coord), offset2D, float(0)) 918 919 // GLSL: textureProjOffset({{.*}}sampler2D 920 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 921 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]]{{.*}} ConstOffset % 922 && gvec4(T.Element(0)) == textureProjOffset(gsampler2D, vec4(coord), offset2D) 923 924 // GLSL: textureProjOffset({{.*}}sampler2D 925 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 926 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]]{{.*}} Bias|ConstOffset % 927 && gvec4(T.Element(0)) == textureProjOffset(gsampler2D, vec4(coord), offset2D, float(0)) 928 929 // GLSL: textureProjOffset({{.*}}sampler3D 930 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 931 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]]{{.*}} ConstOffset % 932 && gvec4(T.Element(0)) == textureProjOffset(gsampler3D, vec4(coord), offset3D) 933 934 // GLSL: textureProjOffset({{.*}}sampler3D 935 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 936 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]]{{.*}} Bias|ConstOffset % 937 && gvec4(T.Element(0)) == textureProjOffset(gsampler3D, vec4(coord), offset3D, float(0)) 938 939 // GLSL-COUNT-2: textureProjOffset({{.*}}sampler2DRect 940 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRect 941 // SPIR: OpImageSampleProjImplicitLod {{.*}}[[LOAD]]{{.*}} ConstOffset % 942 && gvec4(T.Element(0)) == textureProjOffset(gsampler2DRect, vec3(coord), offset2D) 943 && gvec4(T.Element(0)) == textureProjOffset(gsampler2DRect, vec4(coord), offset2D) 944 945 // GLSL: textureProjOffset({{.*}}sampler2DRectShadow 946 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRectShadow 947 // SPIR: OpImageSampleProjDrefImplicitLod {{.*}}[[LOAD]]{{.*}} ConstOffset % 948 && float(0) == textureProjOffset(uniform_sampler2DRectShadow, vec4(coord), offset2D) 949 950 // GLSL: textureProjOffset({{.*}}sampler1DShadow 951 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 952 // SPIR: OpImageSampleProjDrefImplicitLod {{.*}}[[LOAD]]{{.*}} ConstOffset % 953 && float(0) == textureProjOffset(uniform_sampler1DShadow, vec4(coord), int(0)) 954 955 // GLSL: textureProjOffset({{.*}}sampler1DShadow 956 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 957 // SPIR: OpImageSampleProjDrefImplicitLod {{.*}}[[LOAD]]{{.*}} Bias|ConstOffset % 958 && float(0) == textureProjOffset(uniform_sampler1DShadow, vec4(coord), int(0), float(0)) 959 960 // GLSL: textureProjOffset({{.*}}sampler2DShadow 961 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 962 // SPIR: OpImageSampleProjDrefImplicitLod {{.*}}[[LOAD]]{{.*}} ConstOffset % 963 && (float(0) == textureProjOffset(uniform_sampler2DShadow, vec4(coord), offset2D) || ignoreResultF32) 964 965 // GLSL: textureProjOffset({{.*}}sampler2DShadow 966 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 967 // SPIR: OpImageSampleProjDrefImplicitLod {{.*}}[[LOAD]]{{.*}} Bias|ConstOffset % 968 && (float(0) == textureProjOffset(uniform_sampler2DShadow, vec4(coord), offset2D, float(0)) || ignoreResultF32) 969 970 // GLSL: textureLodOffset({{.*}}sampler1D 971 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 972 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Lod|ConstOffset % 973 && gvec4(T.Element(0)) == textureLodOffset(gsampler1D, float(coord), float(0), 0) 974 975 // GLSL: textureLodOffset({{.*}}sampler2D 976 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 977 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Lod|ConstOffset % 978 && gvec4(T.Element(0)) == textureLodOffset(gsampler2D, vec2(coord), float(0), offset2D) 979 980 // GLSL: textureLodOffset({{.*}}sampler3D 981 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 982 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Lod|ConstOffset % 983 && gvec4(T.Element(0)) == textureLodOffset(gsampler3D, vec3(coord), float(0), offset3D) 984 985 // GLSL: textureLodOffset({{.*}}sampler1DShadow 986 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 987 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Lod|ConstOffset % 988 && float(0) == textureLodOffset(uniform_sampler1DShadow, vec3(coord), float(0), 0) 989 990 // GLSL: textureLodOffset({{.*}}sampler2DShadow 991 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 992 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Lod|ConstOffset % 993 && (float(0) == textureLodOffset(uniform_sampler2DShadow, vec3(coord), float(0), offset2D) || ignoreResultF32) 994 995 // GLSL: textureLodOffset({{.*}}sampler1DArray 996 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArray 997 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Lod|ConstOffset % 998 && gvec4(T.Element(0)) == textureLodOffset(gsampler1DArray, vec2(coord), float(0), 0) 999 1000 // GLSL: textureLodOffset({{.*}}sampler2DArray 1001 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArray 1002 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Lod|ConstOffset % 1003 && gvec4(T.Element(0)) == textureLodOffset(gsampler2DArray, vec3(coord), float(0), offset2D) 1004 1005 // GLSL: textureLodOffset({{.*}}sampler1DArrayShadow 1006 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArrayShadow 1007 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Lod|ConstOffset % 1008 && float(0) == textureLodOffset(uniform_sampler1DArrayShadow, vec3(coord), float(0), int(0)) 1009 1010 // GLSL-COUNT-2: textureProjLod({{.*}}sampler1D 1011 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 1012 // SPIR: OpImageSampleProjExplicitLod {{.*}}[[LOAD]]{{.*}} Lod % 1013 && gvec4(T.Element(0)) == textureProjLod(gsampler1D, vec2(coord), float(0)) 1014 && gvec4(T.Element(0)) == textureProjLod(gsampler1D, vec4(coord), float(0)) 1015 1016 // GLSL-COUNT-2: textureProjLod({{.*}}sampler2D 1017 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 1018 // SPIR: OpImageSampleProjExplicitLod {{.*}}[[LOAD]]{{.*}} Lod % 1019 && gvec4(T.Element(0)) == textureProjLod(gsampler2D, vec3(coord), float(0)) 1020 && gvec4(T.Element(0)) == textureProjLod(gsampler2D, vec4(coord), float(0)) 1021 1022 // GLSL: textureProjLod({{.*}}sampler3D 1023 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 1024 // SPIR: OpImageSampleProjExplicitLod {{.*}}[[LOAD]]{{.*}} Lod % 1025 && gvec4(T.Element(0)) == textureProjLod(gsampler3D, vec4(coord), float(0)) 1026 1027 // GLSL: textureProjLod({{.*}}sampler1DShadow 1028 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 1029 // SPIR: OpImageSampleProjDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Lod % 1030 && float(0) == textureProjLod(uniform_sampler1DShadow, vec4(coord), float(0)) 1031 1032 // GLSL: textureProjLod({{.*}}sampler2DShadow 1033 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 1034 // SPIR: OpImageSampleProjDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Lod % 1035 && (float(0) == textureProjLod(uniform_sampler2DShadow, vec4(coord), float(0)) || ignoreResultF32) 1036 1037 // GLSL-COUNT-2: textureProjLodOffset({{.*}}sampler1D 1038 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 1039 // SPIR: OpImageSampleProjExplicitLod {{.*}}[[LOAD]]{{.*}} Lod|ConstOffset % 1040 && gvec4(T.Element(0)) == textureProjLodOffset(gsampler1D, vec2(coord), float(0), 0) 1041 && gvec4(T.Element(0)) == textureProjLodOffset(gsampler1D, vec4(coord), float(0), 0) 1042 1043 // GLSL-COUNT-2: textureProjLodOffset({{.*}}sampler2D 1044 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 1045 // SPIR: OpImageSampleProjExplicitLod {{.*}}[[LOAD]]{{.*}} Lod|ConstOffset % 1046 && gvec4(T.Element(0)) == textureProjLodOffset(gsampler2D, vec3(coord), float(0), offset2D) 1047 && gvec4(T.Element(0)) == textureProjLodOffset(gsampler2D, vec4(coord), float(0), offset2D) 1048 1049 // GLSL: textureProjLodOffset({{.*}}sampler3D 1050 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 1051 // SPIR: OpImageSampleProjExplicitLod {{.*}}[[LOAD]]{{.*}} Lod|ConstOffset % 1052 && gvec4(T.Element(0)) == textureProjLodOffset(gsampler3D, vec4(coord), float(0), offset3D) 1053 1054 // GLSL: textureProjLodOffset({{.*}}sampler1DShadow 1055 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 1056 // SPIR: OpImageSampleProjDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Lod|ConstOffset % 1057 && float(0) == textureProjLodOffset(uniform_sampler1DShadow, vec4(coord), float(0), int(0)) 1058 1059 // GLSL: textureProjLodOffset({{.*}}sampler2DShadow 1060 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 1061 // SPIR: OpImageSampleProjDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Lod|ConstOffset % 1062 && (float(0) == textureProjLodOffset(uniform_sampler2DShadow, vec4(coord), float(0), offset2D) || ignoreResultF32) 1063 1064 // GLSL: textureGrad({{.*}}sampler1D 1065 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 1066 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1067 && gvec4(T.Element(0)) == textureGrad(gsampler1D, float(coord), float(0), float(0)) 1068 1069 // GLSL: textureGrad({{.*}}sampler2D 1070 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 1071 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1072 && gvec4(T.Element(0)) == textureGrad(gsampler2D, vec2(coord), vec2(0), vec2(0)) 1073 1074 // GLSL: textureGrad({{.*}}sampler3D 1075 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 1076 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1077 && gvec4(T.Element(0)) == textureGrad(gsampler3D, vec3(coord), vec3(0), vec3(0)) 1078 1079 // GLSL: textureGrad({{.*}}samplerCube 1080 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCube 1081 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1082 && gvec4(T.Element(0)) == textureGrad(gsamplerCube, vec3(coord), vec3(0), vec3(0)) 1083 1084 // GLSL: textureGrad({{.*}}sampler2DRect 1085 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRect 1086 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1087 && gvec4(T.Element(0)) == textureGrad(gsampler2DRect, vec2(coord), vec2(0), vec2(0)) 1088 1089 // GLSL: textureGrad({{.*}}sampler2DRectShadow 1090 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRectShadow 1091 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1092 && float(0) == textureGrad(uniform_sampler2DRectShadow, vec3(coord), vec2(0), vec2(0)) 1093 1094 // GLSL: textureGrad({{.*}}sampler1DShadow 1095 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 1096 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1097 && float(0) == textureGrad(uniform_sampler1DShadow, vec3(coord), float(0), float(0)) 1098 1099 // GLSL: textureGrad({{.*}}sampler1DArray 1100 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArray 1101 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1102 && gvec4(T.Element(0)) == textureGrad(gsampler1DArray, vec2(coord), float(0), float(0)) 1103 1104 // GLSL: textureGrad({{.*}}sampler2DArray 1105 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArray 1106 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1107 && gvec4(T.Element(0)) == textureGrad(gsampler2DArray, vec3(coord), vec2(0), vec2(0)) 1108 1109 // GLSL: textureGrad({{.*}}sampler1DArrayShadow 1110 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArrayShadow 1111 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1112 && float(0) == textureGrad(uniform_sampler1DArrayShadow, vec3(coord), float(0), float(0)) 1113 1114 // GLSL: textureGrad({{.*}}sampler2DShadow 1115 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 1116 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1117 && (float(0) == textureGrad(uniform_sampler2DShadow, vec3(coord), vec2(0), vec2(0)) || ignoreResultF32) 1118 1119 // GLSL: textureGrad({{.*}}samplerCubeShadow 1120 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeShadow 1121 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1122 && (float(0) == textureGrad(uniform_samplerCubeShadow, vec4(coord), vec3(0), vec3(0)) || ignoreResultF32) 1123 1124 // GLSL: textureGrad({{.*}}sampler2DArrayShadow 1125 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArrayShadow 1126 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1127 && float(0) == textureGrad(uniform_sampler2DArrayShadow, vec4(coord), vec2(0), vec2(0)) 1128 1129 // GLSL: textureGrad({{.*}}samplerCubeArray 1130 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeArray 1131 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1132 && gvec4(T.Element(0)) == textureGrad(gsamplerCubeArray, vec4(coord), vec3(0), vec3(0)) 1133 1134 // GLSL: textureGradOffset({{.*}}sampler1D 1135 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 1136 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1137 && gvec4(T.Element(0)) == textureGradOffset(gsampler1D, float(coord), float(0), float(0), 0) 1138 1139 // GLSL: textureGradOffset({{.*}}sampler2D 1140 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 1141 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1142 && gvec4(T.Element(0)) == textureGradOffset(gsampler2D, vec2(coord), vec2(0), vec2(0), offset2D) 1143 1144 // GLSL: textureGradOffset({{.*}}sampler3D 1145 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 1146 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1147 && gvec4(T.Element(0)) == textureGradOffset(gsampler3D, vec3(coord), vec3(0), vec3(0), offset3D) 1148 1149 // GLSL: textureGradOffset({{.*}}sampler2DRect 1150 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRect 1151 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1152 && gvec4(T.Element(0)) == textureGradOffset(gsampler2DRect, vec2(coord), vec2(0), vec2(0), offset2D) 1153 1154 // GLSL: textureGradOffset({{.*}}sampler2DRectShadow 1155 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRectShadow 1156 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1157 && float(0) == textureGradOffset(uniform_sampler2DRectShadow, vec3(coord), vec2(0), vec2(0), offset2D) 1158 1159 // GLSL: textureGradOffset({{.*}}sampler1DShadow 1160 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 1161 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1162 && float(0) == textureGradOffset(uniform_sampler1DShadow, vec3(coord), float(0), float(0), int(0)) 1163 1164 // GLSL: textureGradOffset({{.*}}sampler2DShadow 1165 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 1166 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1167 && (float(0) == textureGradOffset(uniform_sampler2DShadow, vec3(coord), vec2(0), vec2(0), offset2D) || ignoreResultF32) 1168 1169 // GLSL: textureGradOffset({{.*}}sampler2DArray 1170 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArray 1171 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1172 && gvec4(T.Element(0)) == textureGradOffset(gsampler2DArray, vec3(coord), vec2(0), vec2(0), offset2D) 1173 1174 // GLSL: textureGradOffset({{.*}}sampler1DArray 1175 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArray 1176 // SPIR: OpImageSampleExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1177 && gvec4(T.Element(0)) == textureGradOffset(gsampler1DArray, vec2(coord), float(0), float(0), int(0)) 1178 1179 // GLSL: textureGradOffset({{.*}}sampler1DArrayShadow 1180 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DArrayShadow 1181 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1182 && float(0) == textureGradOffset(uniform_sampler1DArrayShadow, vec3(coord), float(0), float(0), int(0)) 1183 1184 // GLSL: textureGradOffset({{.*}}sampler2DArrayShadow 1185 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArrayShadow 1186 // SPIR: OpImageSampleDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1187 && float(0) == textureGradOffset(uniform_sampler2DArrayShadow, vec4(coord), vec2(0), vec2(0), offset2D) 1188 1189 // GLSL-COUNT-2: textureProjGrad({{.*}}sampler1D 1190 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 1191 // SPIR: OpImageSampleProjExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1192 && gvec4(T.Element(0)) == textureProjGrad(gsampler1D, vec2(coord), float(0), float(0)) 1193 && gvec4(T.Element(0)) == textureProjGrad(gsampler1D, vec4(coord), float(0), float(0)) 1194 1195 // GLSL-COUNT-2: textureProjGrad({{.*}}sampler2D 1196 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 1197 // SPIR: OpImageSampleProjExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1198 && gvec4(T.Element(0)) == textureProjGrad(gsampler2D, vec3(coord), vec2(0), vec2(0)) 1199 && gvec4(T.Element(0)) == textureProjGrad(gsampler2D, vec4(coord), vec2(0), vec2(0)) 1200 1201 // GLSL: textureProjGrad({{.*}}sampler3D 1202 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 1203 // SPIR: OpImageSampleProjExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1204 && gvec4(T.Element(0)) == textureProjGrad(gsampler3D, vec4(coord), vec3(0), vec3(0)) 1205 1206 // GLSL-COUNT-2: textureProjGrad({{.*}}sampler2DRect 1207 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRect 1208 // SPIR: OpImageSampleProjExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1209 && gvec4(T.Element(0)) == textureProjGrad(gsampler2DRect, vec3(coord), vec2(0), vec2(0)) 1210 && gvec4(T.Element(0)) == textureProjGrad(gsampler2DRect, vec4(coord), vec2(0), vec2(0)) 1211 1212 // GLSL: textureProjGrad({{.*}}sampler2DRectShadow 1213 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRectShadow 1214 // SPIR: OpImageSampleProjDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1215 && float(0) == textureProjGrad(uniform_sampler2DRectShadow, vec4(coord), vec2(0), vec2(0)) 1216 1217 // GLSL: textureProjGrad({{.*}}sampler1DShadow 1218 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 1219 // SPIR: OpImageSampleProjDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1220 && float(0) == textureProjGrad(uniform_sampler1DShadow, vec4(coord), float(0), float(0)) 1221 1222 // GLSL: textureProjGrad({{.*}}sampler2DShadow 1223 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 1224 // SPIR: OpImageSampleProjDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad % 1225 && (float(0) == textureProjGrad(uniform_sampler2DShadow, vec4(coord), vec2(0), vec2(0)) || ignoreResultF32) 1226 1227 // GLSL-COUNT-2: textureProjGradOffset({{.*}}sampler1D 1228 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1D 1229 // SPIR: OpImageSampleProjExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1230 && gvec4(T.Element(0)) == textureProjGradOffset(gsampler1D, vec2(coord), float(0), float(0), 0) 1231 && gvec4(T.Element(0)) == textureProjGradOffset(gsampler1D, vec4(coord), float(0), float(0), 0) 1232 1233 // GLSL-COUNT-2: textureProjGradOffset({{.*}}sampler2D 1234 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 1235 // SPIR: OpImageSampleProjExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1236 && gvec4(T.Element(0)) == textureProjGradOffset(gsampler2D, vec3(coord), vec2(0), vec2(0), offset2D) 1237 && gvec4(T.Element(0)) == textureProjGradOffset(gsampler2D, vec4(coord), vec2(0), vec2(0), offset2D) 1238 1239 // GLSL: textureProjGradOffset({{.*}}sampler3D 1240 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler3D 1241 // SPIR: OpImageSampleProjExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1242 && gvec4(T.Element(0)) == textureProjGradOffset(gsampler3D, vec4(coord), vec3(0), vec3(0), offset3D) 1243 1244 // GLSL-COUNT-2: textureProjGradOffset({{.*}}sampler2DRect 1245 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRect 1246 // SPIR: OpImageSampleProjExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1247 && gvec4(T.Element(0)) == textureProjGradOffset(gsampler2DRect, vec3(coord), vec2(0), vec2(0), offset2D) 1248 && gvec4(T.Element(0)) == textureProjGradOffset(gsampler2DRect, vec4(coord), vec2(0), vec2(0), offset2D) 1249 1250 // GLSL: textureProjGradOffset({{.*}}sampler2DRectShadow 1251 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRectShadow 1252 // SPIR: OpImageSampleProjDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1253 && float(0) == textureProjGradOffset(uniform_sampler2DRectShadow, vec4(coord), vec2(0), vec2(0), offset2D) 1254 1255 // GLSL: textureProjGradOffset({{.*}}sampler1DShadow 1256 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler1DShadow 1257 // SPIR: OpImageSampleProjDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1258 && float(0) == textureProjGradOffset(uniform_sampler1DShadow, vec4(coord), float(0), float(0), int(0)) 1259 1260 // GLSL: textureProjGradOffset({{.*}}sampler2DShadow 1261 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 1262 // SPIR: OpImageSampleProjDrefExplicitLod {{.*}}[[LOAD]]{{.*}} Grad|ConstOffset % 1263 && (float(0) == textureProjGradOffset(uniform_sampler2DShadow, vec4(coord), vec2(0), vec2(0), offset2D) || ignoreResultF32) 1264 1265 // 8.9.4. Texture Gather Functions 1266 1267 // GLSL-COUNT-2: textureGather({{.*}}sampler2D 1268 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 1269 // SPIR: OpImageGather {{.*}}[[LOAD]] 1270 && gvec4(T.Element(0)) == textureGather(gsampler2D, vec2(coord)) 1271 && gvec4(T.Element(0)) == textureGather(gsampler2D, vec2(coord), int(0)) 1272 1273 // GLSL-COUNT-2: textureGather({{.*}}sampler2DArray 1274 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArray 1275 // SPIR: OpImageGather {{.*}}[[LOAD]] 1276 && gvec4(T.Element(0)) == textureGather(gsampler2DArray, vec3(coord)) 1277 && gvec4(T.Element(0)) == textureGather(gsampler2DArray, vec3(coord), int(0)) 1278 1279 // GLSL-COUNT-2: textureGather({{.*}}samplerCube 1280 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCube 1281 // SPIR: OpImageGather {{.*}}[[LOAD]] 1282 && gvec4(T.Element(0)) == textureGather(gsamplerCube, vec3(coord)) 1283 && gvec4(T.Element(0)) == textureGather(gsamplerCube, vec3(coord), int(0)) 1284 1285 // GLSL-COUNT-2: textureGather({{.*}}samplerCubeArray 1286 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeArray 1287 // SPIR: OpImageGather {{.*}}[[LOAD]] 1288 && gvec4(T.Element(0)) == textureGather(gsamplerCubeArray, vec4(coord)) 1289 && gvec4(T.Element(0)) == textureGather(gsamplerCubeArray, vec4(coord), int(0)) 1290 1291 // GLSL-COUNT-2: textureGather({{.*}}sampler2DRect 1292 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRect 1293 // SPIR: OpImageGather {{.*}}[[LOAD]] 1294 && gvec4(T.Element(0)) == textureGather(gsampler2DRect, vec2(coord)) 1295 && gvec4(T.Element(0)) == textureGather(gsampler2DRect, vec2(coord), int(0)) 1296 1297 // GLSL: textureGather({{.*}}sampler2DShadow 1298 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 1299 // SPIR: OpImageDrefGather {{.*}}[[LOAD]] 1300 && (vec4(0) == textureGather(uniform_sampler2DShadow, vec2(coord), float(0)) || ignoreResultF32) 1301 1302 // GLSL: textureGather({{.*}}sampler2DArrayShadow 1303 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArrayShadow 1304 // SPIR: OpImageDrefGather {{.*}}[[LOAD]] 1305 && vec4(0) == textureGather(uniform_sampler2DArrayShadow, vec3(coord), float(0)) 1306 1307 // GLSL: textureGather({{.*}}samplerCubeShadow 1308 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeShadow 1309 // SPIR: OpImageDrefGather {{.*}}[[LOAD]] 1310 && (vec4(0) == textureGather(uniform_samplerCubeShadow, vec3(coord), float(0)) || ignoreResultF32) 1311 1312 // GLSL: textureGather({{.*}}samplerCubeArrayShadow 1313 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}samplerCubeArrayShadow 1314 // SPIR: OpImageDrefGather {{.*}}[[LOAD]] 1315 && vec4(0) == textureGather(uniform_samplerCubeArrayShadow, vec4(coord), float(0)) 1316 1317 // GLSL: textureGather({{.*}}sampler2DRectShadow 1318 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRectShadow 1319 // SPIR: OpImageDrefGather {{.*}}[[LOAD]] 1320 && vec4(0) == textureGather(uniform_sampler2DRectShadow, vec2(coord), float(0)) 1321 1322 // GLSL-COUNT-2: textureGatherOffset({{.*}}sampler2D 1323 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 1324 // SPIR: OpImageGather {{.*}}[[LOAD]]{{.*}} ConstOffset % 1325 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2D, vec2(coord), offset2D) 1326 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2D, vec2(coord), offset2D, int(0)) 1327 1328 // GLSL-COUNT-2: textureGatherOffset({{.*}}sampler2DArray 1329 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArray 1330 // SPIR: OpImageGather {{.*}}[[LOAD]]{{.*}} ConstOffset % 1331 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2DArray, vec3(coord), offset2D) 1332 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2DArray, vec3(coord), offset2D, int(0)) 1333 1334 // GLSL: textureGatherOffset({{.*}}sampler2DShadow 1335 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 1336 // SPIR: OpImageDrefGather {{.*}}[[LOAD]]{{.*}} ConstOffset % 1337 && (vec4(0) == textureGatherOffset(uniform_sampler2DShadow, vec2(coord), float(0), offset2D) || ignoreResultF32) 1338 1339 // GLSL: textureGatherOffset({{.*}}sampler2DArrayShadow 1340 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArrayShadow 1341 // SPIR: OpImageDrefGather {{.*}}[[LOAD]]{{.*}} ConstOffset % 1342 && vec4(0) == textureGatherOffset(uniform_sampler2DArrayShadow, vec3(coord), float(0), offset2D) 1343 1344 // GLSL-COUNT-2: textureGatherOffset({{.*}}sampler2DRect 1345 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRect 1346 // SPIR: OpImageGather {{.*}}[[LOAD]]{{.*}} ConstOffset % 1347 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2DRect, vec2(coord), offset2D) 1348 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2DRect, vec2(coord), offset2D, int(0)) 1349 1350 // GLSL: textureGatherOffset({{.*}}sampler2DRectShadow 1351 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRectShadow 1352 // SPIR: OpImageDrefGather {{.*}}[[LOAD]]{{.*}} ConstOffset % 1353 && vec4(0) == textureGatherOffset(uniform_sampler2DRectShadow, vec2(coord), float(0), offset2D) 1354 1355 // GLSL-COUNT-2: textureGatherOffsets({{.*}}sampler2D 1356 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2D 1357 // SPIR: OpImageGather {{.*}}[[LOAD]]{{.*}} ConstOffsets % 1358 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2D, vec2(coord), offsets) 1359 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2D, vec2(coord), offsets, int(0)) 1360 1361 // GLSL-COUNT-2: textureGatherOffsets({{.*}}sampler2DArray 1362 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArray 1363 // SPIR: OpImageGather {{.*}}[[LOAD]]{{.*}} ConstOffsets % 1364 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2DArray, vec3(coord), offsets) 1365 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2DArray, vec3(coord), offsets, int(0)) 1366 1367 // GLSL: textureGatherOffsets({{.*}}sampler2DShadow 1368 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DShadow 1369 // SPIR: OpImageDrefGather {{.*}}[[LOAD]]{{.*}} ConstOffsets % 1370 && (vec4(0) == textureGatherOffsets(uniform_sampler2DShadow, vec2(coord), float(0), offsets) || ignoreResultF32) 1371 1372 // GLSL: textureGatherOffsets({{.*}}sampler2DArrayShadow 1373 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DArrayShadow 1374 // SPIR: OpImageDrefGather {{.*}}[[LOAD]]{{.*}} ConstOffsets % 1375 && vec4(0) == textureGatherOffsets(uniform_sampler2DArrayShadow, vec3(coord), float(0), offsets) 1376 1377 // GLSL-COUNT-2: textureGatherOffsets({{.*}}sampler2DRect 1378 // SPIR-COUNT-2: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRect 1379 // SPIR: OpImageGather {{.*}}[[LOAD]]{{.*}} ConstOffsets % 1380 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2DRect, vec2(coord), offsets) 1381 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2DRect, vec2(coord), offsets, int(0)) 1382 1383 // GLSL: textureGatherOffsets({{.*}}sampler2DRectShadow 1384 // SPIR: [[LOAD:%[1-9][0-9]*]] = OpLoad{{.*}}sampler2DRectShadow 1385 // SPIR: OpImageDrefGather {{.*}}[[LOAD]]{{.*}} ConstOffsets % 1386 && vec4(0) == textureGatherOffsets(uniform_sampler2DRectShadow, vec2(coord), float(0), offsets) 1387 1388 // 8.9.5. Compatibility Profile Texture Functions 1389 // Compatibility functions work for GLSL but not for SPIR-V. 1390 // We cannot test the SPIR-V asm here for these functions. 1391 // We also cannot test GLSL source for them because we don't directly 1392 // call them. If we do, the spirv-via-glsl path cannot work. 1393 1394 && vec4(0) == texture1D(uniform_sampler1D, float(coord)) 1395 && vec4(0) == texture1D(uniform_sampler1D, float(coord), float(0)) 1396 && vec4(0) == texture1DProj(uniform_sampler1D, vec2(coord)) 1397 && vec4(0) == texture1DProj(uniform_sampler1D, vec2(coord), float(0)) 1398 && vec4(0) == texture1DProj(uniform_sampler1D, vec4(coord)) 1399 && vec4(0) == texture1DProj(uniform_sampler1D, vec4(coord), float(0)) 1400 && vec4(0) == texture1DLod(uniform_sampler1D, float(coord), float(0)) 1401 && vec4(0) == texture1DProjLod(uniform_sampler1D, vec2(coord), float(0)) 1402 && vec4(0) == texture1DProjLod(uniform_sampler1D, vec4(coord), float(0)) 1403 && vec4(0) == texture2D(uniform_sampler2D, vec2(coord)) 1404 && vec4(0) == texture2D(uniform_sampler2D, vec2(coord), float(0)) 1405 && vec4(0) == texture2DProj(uniform_sampler2D, vec3(coord)) 1406 && vec4(0) == texture2DProj(uniform_sampler2D, vec3(coord), float(0)) 1407 && vec4(0) == texture2DProj(uniform_sampler2D, vec4(coord)) 1408 && vec4(0) == texture2DProj(uniform_sampler2D, vec4(coord), float(0)) 1409 && vec4(0) == texture2DLod(uniform_sampler2D, vec2(coord), float(0)) 1410 && vec4(0) == texture2DProjLod(uniform_sampler2D, vec3(coord), float(0)) 1411 && vec4(0) == texture2DProjLod(uniform_sampler2D, vec4(coord), float(0)) 1412 && vec4(0) == texture3D(uniform_sampler3D, vec3(coord)) 1413 && vec4(0) == texture3D(uniform_sampler3D, vec3(coord), float(0)) 1414 && vec4(0) == texture3DProj(uniform_sampler3D, vec4(coord)) 1415 && vec4(0) == texture3DProj(uniform_sampler3D, vec4(coord), float(0)) 1416 && vec4(0) == texture3DLod(uniform_sampler3D, vec3(coord), float(0)) 1417 && vec4(0) == texture3DProjLod(uniform_sampler3D, vec4(coord), float(0)) 1418 && vec4(0) == textureCube(uniform_samplerCube, vec3(coord)) 1419 && vec4(0) == textureCube(uniform_samplerCube, vec3(coord), float(0)) 1420 && vec4(0) == textureCubeLod(uniform_samplerCube, vec3(coord), float(0)) 1421 && vec4(0) == shadow1D(uniform_sampler1DShadow, vec3(coord)) 1422 && vec4(0) == shadow1D(uniform_sampler1DShadow, vec3(coord), float(0)) 1423 && (vec4(0) == shadow2D(uniform_sampler2DShadow, vec3(coord)) || ignoreResultF32) 1424 && (vec4(0) == shadow2D(uniform_sampler2DShadow, vec3(coord), float(0)) || ignoreResultF32) 1425 && vec4(0) == shadow1DProj(uniform_sampler1DShadow, vec4(coord)) 1426 && vec4(0) == shadow1DProj(uniform_sampler1DShadow, vec4(coord), float(0)) 1427 && (vec4(0) == shadow2DProj(uniform_sampler2DShadow, vec4(coord)) || ignoreResultF32) 1428 && (vec4(0) == shadow2DProj(uniform_sampler2DShadow, vec4(coord), float(0)) || ignoreResultF32) 1429 && vec4(0) == shadow1DLod(uniform_sampler1DShadow, vec3(coord), float(0)) 1430 && (vec4(0) == shadow2DLod(uniform_sampler2DShadow, vec3(coord), float(0)) || ignoreResultF32) 1431 && vec4(0) == shadow1DProjLod(uniform_sampler1DShadow, vec4(coord), float(0)) 1432 && (vec4(0) == shadow2DProjLod(uniform_sampler2DShadow, vec4(coord), float(0)) || ignoreResultF32) 1433 ; 1434} 1435 1436#if defined(HLSL) 1437[require(hlsl, sm_5_1, compute_fragment)] 1438#elif defined(GLSL) 1439[require(glsl, sm_5_1, compute_fragment)] 1440#elif defined(SPIRV) 1441[require(spirv, sm_5_1, compute_fragment)] 1442#elif defined(CUDA) 1443[require(cuda, sm_5_1, compute_fragment)] 1444#endif 1445__extern_cpp void TEST_main() 1446{ 1447 // GLSL: void main( 1448 // GLSL_SPIRV: OpEntryPoint 1449 // HLSL: void TEST_main( 1450 // CUDA: void TEST_main( 1451 // CPP: void _TEST_main( 1452 // BUF: 1 1453 1454 // Some of the functional testing result is incorrect due to 1455 // the problem on our testing framework. We will ignore them 1456 // until we address the problems. 1457 // The problem is mostly with 2DShadow, CubeShadow and buffer. 1458 bool ignoreResult = (outputBuffer.result == 0); // always true 1459 1460 bool result = true 1461 && textureFuncs( 1462 uniform_sampler1D 1463 , uniform_sampler2D 1464 , uniform_sampler2DRect 1465 , uniform_sampler3D 1466 , uniform_samplerCube 1467 , uniform_sampler1DArray 1468 , uniform_sampler2DArray 1469 , uniform_samplerCubeArray 1470 , uniform_samplerBuffer 1471 , uniform_sampler2DMS 1472 , uniform_sampler2DMSArray 1473 , ignoreResult 1474 ) 1475#if !defined(HLSL) 1476 && textureFuncs( 1477 uniform_isampler1D 1478 , uniform_isampler2D 1479 , uniform_isampler2DRect 1480 , uniform_isampler3D 1481 , uniform_isamplerCube 1482 , uniform_isampler1DArray 1483 , uniform_isampler2DArray 1484 , uniform_isamplerCubeArray 1485 , uniform_isamplerBuffer 1486 , uniform_isampler2DMS 1487 , uniform_isampler2DMSArray 1488 , ignoreResult 1489 ) 1490 && textureFuncs( 1491 uniform_usampler1D 1492 , uniform_usampler2D 1493 , uniform_usampler2DRect 1494 , uniform_usampler3D 1495 , uniform_usamplerCube 1496 , uniform_usampler1DArray 1497 , uniform_usampler2DArray 1498 , uniform_usamplerCubeArray 1499 , uniform_usamplerBuffer 1500 , uniform_usampler2DMS 1501 , uniform_usampler2DMSArray 1502 , ignoreResult 1503 ) 1504#endif 1505 ; 1506 1507 outputBuffer.result = int(result); 1508} 1509 1510[shader("compute")] 1511[DerivativeGroupLinear] 1512[numthreads(4, 1, 1)] 1513void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) 1514{ 1515 TEST_main(); 1516} 1517 1518[shader("fragment")] 1519void fragMain() 1520{ 1521 TEST_main(); 1522}