//TEST:SIMPLE(filecheck=WGSL): -stage compute -entry computeMain -target wgsl RWStructuredBuffer inputBuffer; RWStructuredBuffer outputBuffer; __generic bool Test_Scalar() { // WGSL-LABEL: Test_Scalar const T zero = T(inputBuffer[0]); const T one = T(inputBuffer[1]); const int zeroInt = int(inputBuffer[0]); T outFloat1, outFloat2; int outInt; return true // WGSL: acos( && zero == acos(one) // WGSL: acosh( && zero == acosh(one) // WGSL: asin( && zero == asin(zero) // WGSL: asinh( && zero == asinh(zero) // WGSL: atan( && zero == atan(zero) // WGSL: atan2( && zero == atan2(zero, zero) // WGSL: atanh( && zero == atanh(zero) // WGSL: ceil( && zero == ceil(zero) // WGSL: cos( && one == cos(zero) // WGSL: cosh( && one == cosh(zero) // WGSL: exp( && one == exp(zero) // WGSL: exp2( && one == exp2(zero) // WGSL: abs( && zero == abs(zero) // WGSL: floor( && zero == floor(zero) // WGSL: fma( && zero == fma(zero, zero, zero) // WGSL: max( && zero == max(zero, zero) // WGSL: min( && zero == min(zero, zero) // WGSL: fract( && zero == fract(zero) // WGSL: frexp( && zero == frexp(zero, outInt) && zeroInt == outInt // WGSL: ldexp( && zero == ldexp(zero, zeroInt) // WGSL: log( && zero == log(one) // WGSL: log2( && zero == log2(one) // WGSL: modf( && zero == modf(zero, outFloat1) // WGSL: pow( && zero == pow(zero, one) // WGSL: round( && zero == round(zero) // WGSL: sin( && zero == sin(zero) // WGSL: sinh( && zero == sinh(zero) // WGSL: sqrt( && zero == sqrt(zero) // WGSL: tan( && zero == tan(zero) // WGSL: tanh( && zero == tanh(zero) // WGSL: trunc( && zero == trunc(zero) ; } __generic bool Test_Vector() { // WGSL-LABEL: Test_Vector_0 const vector zero = T(inputBuffer[0]); const vector one = T(inputBuffer[1]); const vector zeroInt = int(inputBuffer[0]); vector outFloat1, outFloat2; vector outInt; return true // WGSL: acos( // WGSL-NOT: acos( && zero == acos(one) // WGSL: acosh( // WGSL-NOT: acosh( && zero == acosh(one) // WGSL: asin( // WGSL-NOT: asin( && zero == asin(zero) // WGSL: asinh( // WGSL-NOT: asinh( && zero == asinh(zero) // WGSL: atan( // WGSL-NOT: atan( && zero == atan(zero) // WGSL: atan2( // WGSL-NOT: atan2( && zero == atan2(zero, zero) // WGSL: atanh( // WGSL-NOT: atanh( && zero == atanh(zero) // WGSL: ceil( // WGSL-NOT: ceil( && zero == ceil(zero) // WGSL: cos( // WGSL-NOT: cos( && one == cos(zero) // WGSL: cosh( // WGSL-NOT: cosh( && one == cosh(zero) // WGSL: exp( // WGSL-NOT: exp( && one == exp(zero) // WGSL: exp2( // WGSL-NOT: exp2( && one == exp2(zero) // WGSL: abs( // WGSL-NOT: abs( && zero == abs(zero) // WGSL: floor( // WGSL-NOT: floor( && zero == floor(zero) // WGSL: fma( // WGSL-NOT: fma( && zero == fma(zero, zero, zero) // WGSL: max( // WGSL-NOT: max( && zero == max(zero, zero) // WGSL: min( // WGSL-NOT: min( && zero == min(zero, zero) // WGSL: fract( // WGSL-NOT: fract( && zero == fract(zero) // WGSL: frexp( // WGSL-NOT: frexp( && zero == frexp(zero, outInt) && all(zeroInt == outInt) // WGSL: ldexp( // WGSL-NOT: ldexp( && zero == ldexp(zero, zeroInt) // WGSL: log( // WGSL-NOT: log( && zero == log(one) // WGSL: log2( // WGSL-NOT: log2( && zero == log2(one) // WGSL: modf( // WGSL-NOT: modf( && zero == modf(zero, outFloat1) // WGSL: pow( // WGSL-NOT: pow( && zero == pow(zero, one) // WGSL: round( // WGSL-NOT: round( && zero == round(zero) // WGSL: sin( // WGSL-NOT: sin( && zero == sin(zero) // WGSL: sinh( // WGSL-NOT: sinh( && zero == sinh(zero) // WGSL: sqrt( // WGSL-NOT: sqrt( && zero == sqrt(zero) // WGSL: tan( // WGSL-NOT: tan( && zero == tan(zero) // WGSL: tanh( // WGSL-NOT: tanh( && zero == tanh(zero) // WGSL: trunc( // WGSL-NOT: trunc( && zero == trunc(zero) ; // WGSL-LABEL: Test_Vector_1 } [numthreads(1,1,1)] void computeMain() { // GLSL: void main( // GLSL_SPIRV: OpEntryPoint // SPIR: OpEntryPoint // HLSL: void computeMain( // CUDA: void computeMain( // CPP: void _computeMain( bool result = true && Test_Scalar() && Test_Vector() && Test_Vector() && Test_Vector() && Test_Scalar() && Test_Vector() && Test_Vector() && Test_Vector() ; // BUF: 1 outputBuffer[0] = int(result); }