[rom] pf-cm [28/6/15]

Search This thread

DiamondBond

Senior Member
Jul 6, 2012
3,918
3,666
Limassol
0pt5YBB.jpg


cTcsp9i.jpg

Code:
/*
 * Your warranty is now void.
 *
 * I am not responsible for bricked devices, dead SD cards,
 * thermonuclear war, or you getting fired because the alarm app failed. Please
 * do some research if you have any concerns about features included in this ROM
 * before flashing it! YOU are choosing to make these modifications, and if
 * you point the finger at me for messing up your device, I will laugh at you.
 */

ssl5afV.jpg

~ pf-cm is cm with a performance driven patchset
~ off-topic is loved here!


eqNvRUd.jpg

- Based on CM12.1
- Lots of optimizations for superb performance and unparalleled 60fps animations!


cB8wET4.jpg

- CM12.1 base
- Compiled using JustArchi's TC's
- Optimized for speed yet more all instructions - ARM and THUMB (-O3)
- Optimized for speed also parts which are compiled with Clang (-O3)
- Turned off all debugging code (lack of -g)
- Eliminated redundant loads that come after stores to the same memory location, both partial and full redundancies (-fgcse-las)
- Ran a store motion pass after global common subexpression elimination. This pass attempts to move stores out of loops (-fgcse-sm)
- Performed interprocedural pointer analysis and interprocedural modification and reference analysis (-fipa-pta)
- Performed induction variable optimizations (strength reduction, induction variable merging and induction variable elimination) on trees (-fivopts)
- Didn't keep the frame pointer in a register for functions that don't need one. This avoids the instructions to save, set up and restore frame pointers; it also makes an extra register available in many functions (-fomit-frame-pointer)
- Attempted to avoid false dependencies in scheduled code by making use of registers left over after register allocation. This optimization most benefits processors with lots of registers (-frename-registers)
- Tried to reduce the number of symbolic address calculations by using shared “anchor” symbols to address nearby objects. This transformation can help to reduce the number of GOT entries and GOT accesses on some targets (-fsection-anchors)
- Performed tail duplication to enlarge superblock size. This transformation simplifies the control flow of the function allowing other optimizations to do a better job (-ftracer)
- Performed loop invariant motion on trees. It also moved operands of conditions that are invariant out of the loop, so that we can use just trivial invariantness analysis in loop unswitching. The pass also includes store motion (-ftree-loop-im)
- Created a canonical counter for number of iterations in loops for which determining number of iterations requires complicated analysis. Later optimizations then may determine the number easily (-ftree-loop-ivcanon)
- Assumed that loop indices do not overflow, and that loops with nontrivial exit condition are not infinite. This enables a wider range of loop optimizations even if the loop optimizer itself cannot prove that these assumptions are valid (-funsafe-loop-optimizations)
- Moved branches with loop invariant conditions out of the loop (-funswitch-loops)
- Constructed webs as commonly used for register allocation purposes and assigned each web individual pseudo register. This allows the register allocation pass to operate on pseudos directly, but also strengthens several other optimization passes, such as CSE, loop optimizer and trivial dead code remover (-fweb)
- Sorted the common symbols by alignment in descending order. This is to prevent gaps between symbols due to alignment constraints (-Wl,--sort-common)


u4CaU0F.jpg



J1CHV4h.jpg

- Reboot to recovery
- Make a TWRP backup
- Copy ROM.zip to sdcard
- Wipe: system, data, cache & dalvik-cache
- Flash ROM + GApps
- Reboot


oxHFEre.jpg



lroH6Xx.jpg



G7zPFG7.jpg



BKXHp31.jpg

CyanogenMod, Linaro, Luk1337, luca020400, JustArchi, hkjareda


Tech Support:
Admin Phone: +44 7730041145​
 
Last edited:

DiamondBond

Senior Member
Jul 6, 2012
3,918
3,666
Limassol
2db1n8r.jpg

Q: What is o3/linaro/sabermod/opticharging/<insert-fancy-word-here>?
A: documented index

Q: Dirty or Clean flash?
A: Clean if coming from cm or any other ROM, dirty if upgrading from previous pf-cm build

Q: Diamond you liar , cm zips are ~250mb and pf-cm zips are 260mb = you changed something!, omg, lel, u fgt, i will ddos you m8, come at me!!
A: o3 makes code slightly larger ;) you would know if you read the 1st Q/A above... :p

Q: Can i OTA?
A: Nope, ignore the CM OTA updates, if you update via CM OTA you will loose this ROM's optimizations, now why would you do that? lol

Q: My WiFi is broken completely... wtf i h8 you!?
A: fix :p
 
Last edited:

DiamondBond

Senior Member
Jul 6, 2012
3,918
3,666
Limassol
How close is this build to official CM12.1? Would a dirty flash work? I read the instructions about wiping data but I am wondering if it is a replica of CM12.1 with regard to components included, it might worth attempting a dirty flash, wiping dalvik/cache of course.

Sent from my NotePRO 12.2 LTE using Tapatalk.
this is as close as it gets to offical cm12.1, i just sync and build, not 1 change to cm's code ;)
i was just about to add this to faq, but ill leave this post here with yours:
o3 code is faster and larger than o2 and oS so everything is a byte or even more different than cm's when compiled therefore to actually have the performance gain this rom offers, it recommended to clean flash, but if you dont , you probably will face issues and wont see the performance gain. If however you are already on pf-cm and you dirty flash, it is fine, :)

tl;dr
if old rom = cm then clean flash
if old rom = pf-cm then dirty flash
 

DiamondBond

Senior Member
Jul 6, 2012
3,918
3,666
Limassol
Great to see another work from you DiamondBond (holding myself to not say Pizza hahaha).

Let's see if my downloads finish fine, I certainly will test it later, if you want I can give some feedback after some use. :)

thanks!, haha, :p

please do report back, id love some cm vs pf-cm stuff , im currently doing benchmarks! :)
 
V

Vatsal

Guest
Awesome work bro:D
Make it MicroCM xD Just saying:p

Sent from my Moto G 2014 using XDA Free mobile app
 

DiamondBond

Senior Member
Jul 6, 2012
3,918
3,666
Limassol
Awesome work bro:D
Make it MicroCM xD Just saying[emoji14]

Sent from my Moto G 2014 using XDA Free mobile app
Thanks :D
Micro = apk compressed, this ROM isn't apk compressed (yet) , when it is I'll switch it over :)
[emoji14]
Tail duplication to enlarge superblock size was a much needed feature. Thanks! Downloading ;)
Its all honestly thanks to justarchi, since most of those features were from his patchset ;)

Sent from my Moto G 2014
 
  • Like
Reactions: nqkoidrug

Top Liked Posts

  • There are no posts matching your filters.
  • 29
    0pt5YBB.jpg


    cTcsp9i.jpg

    Code:
    /*
     * Your warranty is now void.
     *
     * I am not responsible for bricked devices, dead SD cards,
     * thermonuclear war, or you getting fired because the alarm app failed. Please
     * do some research if you have any concerns about features included in this ROM
     * before flashing it! YOU are choosing to make these modifications, and if
     * you point the finger at me for messing up your device, I will laugh at you.
     */

    ssl5afV.jpg

    ~ pf-cm is cm with a performance driven patchset
    ~ off-topic is loved here!


    eqNvRUd.jpg

    - Based on CM12.1
    - Lots of optimizations for superb performance and unparalleled 60fps animations!


    cB8wET4.jpg

    - CM12.1 base
    - Compiled using JustArchi's TC's
    - Optimized for speed yet more all instructions - ARM and THUMB (-O3)
    - Optimized for speed also parts which are compiled with Clang (-O3)
    - Turned off all debugging code (lack of -g)
    - Eliminated redundant loads that come after stores to the same memory location, both partial and full redundancies (-fgcse-las)
    - Ran a store motion pass after global common subexpression elimination. This pass attempts to move stores out of loops (-fgcse-sm)
    - Performed interprocedural pointer analysis and interprocedural modification and reference analysis (-fipa-pta)
    - Performed induction variable optimizations (strength reduction, induction variable merging and induction variable elimination) on trees (-fivopts)
    - Didn't keep the frame pointer in a register for functions that don't need one. This avoids the instructions to save, set up and restore frame pointers; it also makes an extra register available in many functions (-fomit-frame-pointer)
    - Attempted to avoid false dependencies in scheduled code by making use of registers left over after register allocation. This optimization most benefits processors with lots of registers (-frename-registers)
    - Tried to reduce the number of symbolic address calculations by using shared “anchor” symbols to address nearby objects. This transformation can help to reduce the number of GOT entries and GOT accesses on some targets (-fsection-anchors)
    - Performed tail duplication to enlarge superblock size. This transformation simplifies the control flow of the function allowing other optimizations to do a better job (-ftracer)
    - Performed loop invariant motion on trees. It also moved operands of conditions that are invariant out of the loop, so that we can use just trivial invariantness analysis in loop unswitching. The pass also includes store motion (-ftree-loop-im)
    - Created a canonical counter for number of iterations in loops for which determining number of iterations requires complicated analysis. Later optimizations then may determine the number easily (-ftree-loop-ivcanon)
    - Assumed that loop indices do not overflow, and that loops with nontrivial exit condition are not infinite. This enables a wider range of loop optimizations even if the loop optimizer itself cannot prove that these assumptions are valid (-funsafe-loop-optimizations)
    - Moved branches with loop invariant conditions out of the loop (-funswitch-loops)
    - Constructed webs as commonly used for register allocation purposes and assigned each web individual pseudo register. This allows the register allocation pass to operate on pseudos directly, but also strengthens several other optimization passes, such as CSE, loop optimizer and trivial dead code remover (-fweb)
    - Sorted the common symbols by alignment in descending order. This is to prevent gaps between symbols due to alignment constraints (-Wl,--sort-common)


    u4CaU0F.jpg



    J1CHV4h.jpg

    - Reboot to recovery
    - Make a TWRP backup
    - Copy ROM.zip to sdcard
    - Wipe: system, data, cache & dalvik-cache
    - Flash ROM + GApps
    - Reboot


    oxHFEre.jpg



    lroH6Xx.jpg



    G7zPFG7.jpg



    BKXHp31.jpg

    CyanogenMod, Linaro, Luk1337, luca020400, JustArchi, hkjareda


    Tech Support:
    Admin Phone: +44 7730041145​
    11
    2db1n8r.jpg

    Q: What is o3/linaro/sabermod/opticharging/<insert-fancy-word-here>?
    A: documented index

    Q: Dirty or Clean flash?
    A: Clean if coming from cm or any other ROM, dirty if upgrading from previous pf-cm build

    Q: Diamond you liar , cm zips are ~250mb and pf-cm zips are 260mb = you changed something!, omg, lel, u fgt, i will ddos you m8, come at me!!
    A: o3 makes code slightly larger ;) you would know if you read the 1st Q/A above... :p

    Q: Can i OTA?
    A: Nope, ignore the CM OTA updates, if you update via CM OTA you will loose this ROM's optimizations, now why would you do that? lol

    Q: My WiFi is broken completely... wtf i h8 you!?
    A: fix :p
    6
    Hahaha I'm wondering what that will look like :)
    :D
    @DiamondBond Great work bro. Never excepted such blazing performance. Best Lollipop ROM for our device.:good:

    Request: Can you do ur magic on Paranoid Android LP ?:D
    Thanks bro :)

    At the moment PA is kinda dead, when M comes it will spring back to life as 80% of the PA team works on OxygenOS and not PA anymore, however there contract expires when M comes out. (Source ~ @anas Karbila)

    HI, the newest build 28/06/15 is absolutely the smoothest CM Iv'e seem, dunno if anyone else agrees. All I can say is that Iv'e been a CM user for a long time and tried this rom since it first came out, regardless of the optimizations and speed improvements DiamondBond claimed, I never actually experienced a true boost and went back to official CM, yesterday I decided to try pf-cm once again and the result was completely different, it's absolutely smoother and faster than official CM. Hats-off to you @DiamondBond.

    ps. I would agree for this rom to receive weekly builds... unless official nightly's receive a major update.
    Ive yet to flash it then :) im personally on the 27th build which never got uploaded lol Thanks! Im actually working on a new flavour of pf-cm , an addition of sorts, it will receive less attention and builds but anyways its basically pf-cm + cherries that you guys want!

    haha dope! :D
    hi.
    just want to ask everybody, what kernel do you use for this rom?
    btw, thanks for update :)
    Stock! (since this is built with o3 , it receives all the optimizations it would need!)
    other people recommend custom kernels, but i really cant anymore, there is no noticeable difference... ;)

    Thanks all for keeping this thread alive! :D
    6
    Fresh builds up in the basket :p
    4
    exactly :) this mornings build failed to upload xD will re upload now ;)

    Any word on the upload process? :) Not pushing, just asking kindly ;)

    ---------- Post added at 11:58 PM ---------- Previous post was at 11:54 PM ----------

    @xhhb found a solution for the Google Play FC's, posted in the Q&A but probably not a lot of people read that, and he cannot post here, so I decided to copy and see if it helps anyone. So credits to xhhb, and I have not tried this myself since I have not faced any Play FC's at all.


    Link to the post

    **Original post**

    FIX FOR Google Play Services FC
    Well... After experimenting, flashing 3 different GAPPS packages, wiping all possible combinations of partitions, finally I could fix the FCs. It really sucks I can't post it on the thread, because I have less than 10 posts.

    Anyway, here is what I did. It worked in two devices XT1064 (the first one worked after many experiments, and the second one after clean install of CM PF + TK Pico GAPPS uniDPI (but also presenting FC)).

    *You must previously uninstall all GAPPS packages and install TK Pico GAPPS uniDPI.

    To do that, go to recovery and wipe only System and Cache, and flash CMPF and GAPPS zips.

    SO...
    On the device with Installed TK Pico GAPPS uniDPI AND still presenting Google Play Services FC, go to Settings, Apps, All, find Google Play Services and:
    a) Verify last numbers of the Google Play Services Version is 436. If it is 430, then skip next step and just delete GPS app cache.
    b) delete all data, force stop and uninstall update. May appear an error because of admin rights bla, bla, just uncheck Google Play Services from device admins and, then continue.
    c) your Google Play Services version should now be 430. Click on DISABLE.
    d) download and install Google Play services 7.5.73 (1976294-430).apk from APK MIRROR HERE
    e) Open Google App to launch Google Play Services Wizard
    DONE.
    Hope this helps.