@@ -175,19 +175,23 @@ class CTester final : public ITester
175175 expected.mortonUnsignedLess_small_4 = uint32_t4 (glm::lessThan (Vec4ASmall, Vec4BSmall));
176176 expected.mortonUnsignedLess_medium_4 = uint32_t4 (glm::lessThan (Vec4AMedium, Vec4BMedium));
177177 expected.mortonUnsignedLess_full_4 = uint32_t4 (glm::lessThan (Vec4AFull, Vec4BFull));
178+ expected.mortonUnsignedLess_emulated_4 = uint32_t4 (glm::lessThan (Vec4AFull, Vec4BFull));
178179
179180 // Coordinate-wise signed inequality
180181 expected.mortonSignedLess_small_2 = uint32_t2 (glm::lessThan (Vec2ASignedSmall, Vec2BSignedSmall));
181182 expected.mortonSignedLess_medium_2 = uint32_t2 (glm::lessThan (Vec2ASignedMedium, Vec2BSignedMedium));
182183 expected.mortonSignedLess_full_2 = uint32_t2 (glm::lessThan (Vec2ASignedFull, Vec2BSignedFull));
184+ expected.mortonSignedLess_emulated_2 = uint32_t2 (glm::lessThan (Vec2ASignedFull, Vec2BSignedFull));
183185
184186 expected.mortonSignedLess_small_3 = uint32_t3 (glm::lessThan (Vec3ASignedSmall, Vec3BSignedSmall));
185187 expected.mortonSignedLess_medium_3 = uint32_t3 (glm::lessThan (Vec3ASignedMedium, Vec3BSignedMedium));
186188 expected.mortonSignedLess_full_3 = uint32_t3 (glm::lessThan (Vec3ASignedFull, Vec3BSignedFull));
189+ expected.mortonSignedLess_emulated_3 = uint32_t3 (glm::lessThan (Vec3ASignedFull, Vec3BSignedFull));
187190
188191 expected.mortonSignedLess_small_4 = uint32_t4 (glm::lessThan (Vec4ASignedSmall, Vec4BSignedSmall));
189192 expected.mortonSignedLess_medium_4 = uint32_t4 (glm::lessThan (Vec4ASignedMedium, Vec4BSignedMedium));
190193 expected.mortonSignedLess_full_4 = uint32_t4 (glm::lessThan (Vec4ASignedFull, Vec4BSignedFull));
194+ expected.mortonSignedLess_emulated_4 = uint32_t4 (glm::lessThan (Vec4ASignedFull, Vec4BSignedFull));
191195
192196 uint16_t castedShift = uint16_t (generatedShift);
193197 // Left-shift
@@ -226,14 +230,17 @@ class CTester final : public ITester
226230 expected.mortonSignedRightShift_small_2 = morton::code<true , smallBits_2, 2 >::create (Vec2ASignedSmall >> int16_t (castedShift % smallBits_2));
227231 expected.mortonSignedRightShift_medium_2 = morton::code<true , mediumBits_2, 2 >::create (Vec2ASignedMedium >> int16_t (castedShift % mediumBits_2));
228232 expected.mortonSignedRightShift_full_2 = morton::code<true , fullBits_2, 2 >::create (Vec2ASignedFull >> int32_t (castedShift % fullBits_2));
233+ expected.mortonSignedRightShift_emulated_2 = createMortonFromU64Vec<true , fullBits_2, 2 , emulated_uint64_t >(Vec2ASignedFull >> int32_t (castedShift % fullBits_2));
229234
230235 expected.mortonSignedRightShift_small_3 = morton::code<true , smallBits_3, 3 >::create (Vec3ASignedSmall >> int16_t (castedShift % smallBits_3));
231236 expected.mortonSignedRightShift_medium_3 = morton::code<true , mediumBits_3, 3 >::create (Vec3ASignedMedium >> int16_t (castedShift % mediumBits_3));
232237 expected.mortonSignedRightShift_full_3 = morton::code<true , fullBits_3, 3 >::create (Vec3ASignedFull >> int32_t (castedShift % fullBits_3));
238+ expected.mortonSignedRightShift_emulated_3 = createMortonFromU64Vec<true , fullBits_3, 3 , emulated_uint64_t >(Vec3ASignedFull >> int32_t (castedShift % fullBits_3));
233239
234240 expected.mortonSignedRightShift_small_4 = morton::code<true , smallBits_4, 4 >::create (Vec4ASignedSmall >> int16_t (castedShift % smallBits_4));
235241 expected.mortonSignedRightShift_medium_4 = morton::code<true , mediumBits_4, 4 >::create (Vec4ASignedMedium >> int16_t (castedShift % mediumBits_4));
236242 expected.mortonSignedRightShift_full_4 = morton::code<true , fullBits_4, 4 >::create (Vec4ASignedFull >> int16_t (castedShift % fullBits_4));
243+ expected.mortonSignedRightShift_emulated_4 = createMortonFromU64Vec<true , fullBits_4, 4 , emulated_uint64_t >(Vec4ASignedFull >> int16_t (castedShift % fullBits_4));
237244 }
238245
239246 performCpuTests (testInput, expected);
@@ -263,6 +270,7 @@ class CTester final : public ITester
263270
264271 void verifyTestValues (const TestValues& expectedTestValues, const TestValues& testValues, ITester::TestType testType)
265272 {
273+ // Some verification is commented out and moved to CTester2 due to bug in dxc. Uncomment them when the bug is fixed.
266274 verifyTestValue (" emulatedAnd" , expectedTestValues.emulatedAnd , testValues.emulatedAnd , testType);
267275 verifyTestValue (" emulatedOr" , expectedTestValues.emulatedOr , testValues.emulatedOr , testType);
268276 verifyTestValue (" emulatedXor" , expectedTestValues.emulatedXor , testValues.emulatedXor , testType);
@@ -340,19 +348,23 @@ class CTester final : public ITester
340348 verifyTestValue (" mortonUnsignedLess_small_4" , expectedTestValues.mortonUnsignedLess_small_4 , testValues.mortonUnsignedLess_small_4 , testType);
341349 verifyTestValue (" mortonUnsignedLess_medium_4" , expectedTestValues.mortonUnsignedLess_medium_4 , testValues.mortonUnsignedLess_medium_4 , testType);
342350 verifyTestValue (" mortonUnsignedLess_full_4" , expectedTestValues.mortonUnsignedLess_full_4 , testValues.mortonUnsignedLess_full_4 , testType);
351+ // verifyTestValue("mortonUnsignedLess_emulated_4", expectedTestValues.mortonUnsignedLess_emulated_4, testValues.mortonUnsignedLess_emulated_4, testType);
343352
344353 // Morton coordinate-wise signed inequality
345354 verifyTestValue (" mortonSignedLess_small_2" , expectedTestValues.mortonSignedLess_small_2 , testValues.mortonSignedLess_small_2 , testType);
346355 verifyTestValue (" mortonSignedLess_medium_2" , expectedTestValues.mortonSignedLess_medium_2 , testValues.mortonSignedLess_medium_2 , testType);
347356 verifyTestValue (" mortonSignedLess_full_2" , expectedTestValues.mortonSignedLess_full_2 , testValues.mortonSignedLess_full_2 , testType);
357+ // verifyTestValue("mortonSignedLess_emulated_2", expectedTestValues.mortonSignedLess_emulated_2, testValues.mortonSignedLess_emulated_2, testType);
348358
349359 verifyTestValue (" mortonSignedLess_small_3" , expectedTestValues.mortonSignedLess_small_3 , testValues.mortonSignedLess_small_3 , testType);
350360 verifyTestValue (" mortonSignedLess_medium_3" , expectedTestValues.mortonSignedLess_medium_3 , testValues.mortonSignedLess_medium_3 , testType);
351361 verifyTestValue (" mortonSignedLess_full_3" , expectedTestValues.mortonSignedLess_full_3 , testValues.mortonSignedLess_full_3 , testType);
362+ // verifyTestValue("mortonSignedLess_emulated_3", expectedTestValues.mortonSignedLess_emulated_3, testValues.mortonSignedLess_emulated_3, testType);
352363
353364 verifyTestValue (" mortonSignedLess_small_4" , expectedTestValues.mortonSignedLess_small_4 , testValues.mortonSignedLess_small_4 , testType);
354365 verifyTestValue (" mortonSignedLess_medium_4" , expectedTestValues.mortonSignedLess_medium_4 , testValues.mortonSignedLess_medium_4 , testType);
355366 verifyTestValue (" mortonSignedLess_full_4" , expectedTestValues.mortonSignedLess_full_4 , testValues.mortonSignedLess_full_4 , testType);
367+ // verifyTestValue("mortonSignedLess_emulated_4", expectedTestValues.mortonSignedLess_emulated_4, testValues.mortonSignedLess_emulated_4, testType);
356368
357369 // Morton left-shift
358370 verifyTestValue (" mortonLeftShift_small_2" , expectedTestValues.mortonLeftShift_small_2 , testValues.mortonLeftShift_small_2 , testType);
@@ -390,14 +402,17 @@ class CTester final : public ITester
390402 verifyTestValue (" mortonSignedRightShift_small_2" , expectedTestValues.mortonSignedRightShift_small_2 , testValues.mortonSignedRightShift_small_2 , testType);
391403 verifyTestValue (" mortonSignedRightShift_medium_2" , expectedTestValues.mortonSignedRightShift_medium_2 , testValues.mortonSignedRightShift_medium_2 , testType);
392404 verifyTestValue (" mortonSignedRightShift_full_2" , expectedTestValues.mortonSignedRightShift_full_2 , testValues.mortonSignedRightShift_full_2 , testType);
405+ // verifyTestValue("mortonSignedRightShift_emulated_2", expectedTestValues.mortonSignedRightShift_emulated_2, testValues.mortonSignedRightShift_emulated_2, testType);
393406
394407 verifyTestValue (" mortonSignedRightShift_small_3" , expectedTestValues.mortonSignedRightShift_small_3 , testValues.mortonSignedRightShift_small_3 , testType);
395408 verifyTestValue (" mortonSignedRightShift_medium_3" , expectedTestValues.mortonSignedRightShift_medium_3 , testValues.mortonSignedRightShift_medium_3 , testType);
396409 verifyTestValue (" mortonSignedRightShift_full_3" , expectedTestValues.mortonSignedRightShift_full_3 , testValues.mortonSignedRightShift_full_3 , testType);
410+ // verifyTestValue("mortonSignedRightShift_emulated_3", expectedTestValues.mortonSignedRightShift_emulated_3, testValues.mortonSignedRightShift_emulated_3, testType);
397411
398412 verifyTestValue (" mortonSignedRightShift_small_4" , expectedTestValues.mortonSignedRightShift_small_4 , testValues.mortonSignedRightShift_small_4 , testType);
399413 verifyTestValue (" mortonSignedRightShift_medium_4" , expectedTestValues.mortonSignedRightShift_medium_4 , testValues.mortonSignedRightShift_medium_4 , testType);
400414 verifyTestValue (" mortonSignedRightShift_full_4" , expectedTestValues.mortonSignedRightShift_full_4 , testValues.mortonSignedRightShift_full_4 , testType);
415+ // verifyTestValue("mortonSignedRightShift_emulated_4", expectedTestValues.mortonSignedRightShift_emulated_4, testValues.mortonSignedRightShift_emulated_4, testType);
401416 }
402417};
403418
0 commit comments