# CEMU detailed changelog for 1.6.0# Patreon release date: 2016-09-15# Public release date: 2016-09-22CPU: Added instructions ADDCO, DIVWUO DIVWO, CRAND and CRANDC to interpreterCPU: Added instructions LFDU, STFDU, BLRL and SLW. to recompilerCPU: Fixed rounding error in FCTIWZ and PSQ_ST recompiler instructionCPU: Improved detection of function end address for recompiler. Added special handling for shared function bodiesCPU: Fixed recompiler generating invalid code for conditional branch instructions with link flag setCPU: New option 'emulateSinglePrecision' for game profiles. If enabled, recompiler will round results to single-precision after single-precision instructions.SAVE: Added API SAVEGetStatOtherNormalApplicationVariationAsync()coreinit: New API FSSetPosFileAsync(), FSGetPosFileAsync(), FSIsEof(), FSIsEofAsync(), OSGetAvailPhysAddrRange(), OSAllocVirtAddr(), OSMapMemory(), OSUnmapMemory(), MEMAdjustExpHeap(), MEMFreeToBlockHeap()coreinit: Implemented MPQueue APIcoreinit: Improved implementation of OSGetMemBound()coreinit: Fixed OSSleepTicks using wrong timer sourcecoreinit: Fixed return value of OSWaitSemaphore() when thread does not return immediatelycoreinit: Improved handling of thread joining and detached stateVPAD: Improved implementation of VPADGetTPCalibratedPointEx()AX: New API AXSetVoiceLoopOffset(), AXSetVoiceEndOffset(), AXSetVoiceSamplesAddr()AX: Fixed handling of upsample stage when used before final mix callbackDMAE: New API DMAESemaphore()GX2: New texture cache implementationGX2: Improved coalescing of textures of different formats with overlapping memory rangesGX2: Fixed a bug that caused the wrong texture to be used in a draw call right after a new texture was createdGX2: Fixed a bug where any stencil clear operation would be ignoredGX2: Added handling for SRGB when the surface is also accessed as non-SRGBGX2: Fixed a special case in vertex/geometry shader where imports would be optimized away if the only way to access them was via indexed gpr accessGX2: Added support for tilemode 32 in GX2CalcSurfaceSizeAndAlignment()GX2: Added support for compressed texture formats to tiling aperatureGX2: GX2CopySurface() can now properly handle mip levelsGX2: Implemented GX2CopySurfaceEx(), GX2ResolveAAColorBuffer() and GX2RDestroySurfaceEx()GX2: Implemented MIN_INT and SETNE shader instructionsGX2: Fixed a bug in R16_UNORM texture format decoderGX2: Added proper support for mip levels to tiling aperatureGX2: Corrected handling of 8 bit formats in tiling aperature