@@ -68,8 +68,6 @@ struct PreloadedSecondAxisAccessor : PreloadedAccessorMirrorTradeBase
6868 // This one shows up a lot so we give it a name
6969 const bool oddThread = glsl::gl_SubgroupInvocationID () & 1u;
7070
71- ternary_operator<complex_t<scalar_t> > ternaryOp;
72-
7371 // Since every two consecutive columns are stored as one packed column, we divide the index by 2 to get the index of that packed column
7472 const uint32_t firstIndex = workgroup::SubgroupContiguousIndex () / 2 ;
7573 int32_t paddedIndex = int32_t (firstIndex) - pushConstants.halfPadding;
@@ -93,17 +91,17 @@ struct PreloadedSecondAxisAccessor : PreloadedAccessorMirrorTradeBase
9391
9492 if (glsl::gl_WorkGroupID ().x)
9593 {
96- complex_t<scalar_t> lo = ternaryOp (oddThread, otherThreadLoOrHi, loOrHi);
97- complex_t<scalar_t> hi = ternaryOp (oddThread, loOrHi, otherThreadLoOrHi);
94+ complex_t<scalar_t> lo = select (oddThread, otherThreadLoOrHi, loOrHi);
95+ complex_t<scalar_t> hi = select (oddThread, loOrHi, otherThreadLoOrHi);
9896 fft::unpack<scalar_t>(lo, hi);
9997
10098 // --------------------------------------------------- MIRROR PADDING -------------------------------------------------------------------------------------------
10199 #ifdef MIRROR_PADDING
102- preloaded[localElementIndex] = ternaryOp (oddThread ^ invert , hi, lo);
100+ preloaded[localElementIndex] = select (oddThread ^ invert , hi, lo);
103101 // ----------------------------------------------------- ZERO PADDING -------------------------------------------------------------------------------------------
104102 #else
105103 const complex_t<scalar_t> Zero = { scalar_t (0 ), scalar_t (0 ) };
106- preloaded[localElementIndex] = ternaryOp (invert , Zero , ternaryOp (oddThread, hi, lo));
104+ preloaded[localElementIndex] = select (invert , Zero , select (oddThread, hi, lo));
107105 #endif
108106 // ------------------------------------------------ END PADDING DIVERGENCE ----------------------------------------------------------------------------------------
109107 }
@@ -116,7 +114,7 @@ struct PreloadedSecondAxisAccessor : PreloadedAccessorMirrorTradeBase
116114 const complex_t<scalar_t> evenThreadLo = { loOrHi.real (), otherThreadLoOrHi.real () };
117115 // Odd thread writes `hi = Z1 + iN1`
118116 const complex_t<scalar_t> oddThreadHi = { otherThreadLoOrHi.imag (), loOrHi.imag () };
119- preloaded[localElementIndex] = ternaryOp (oddThread ^ invert , oddThreadHi, evenThreadLo);
117+ preloaded[localElementIndex] = select (oddThread ^ invert , oddThreadHi, evenThreadLo);
120118 }
121119 paddedIndex += WorkgroupSize / 2 ;
122120 }
0 commit comments