Quoting Mohamed Shafi <shafi...@gmail.com>:
I have implemented the above solution and it works. I have to support the same for DF also. But with DF i have a problem with the constraints. My target generates code for both big and little endian. The ABI specifies that when a 64bit value is passed as an argument they are passed in R6 and R7, R6 containing the most significant long word and R7 containing the least significant long word, regardless of the endianess mode. How can i do this in the DF compare pattern?
If 64 bit values are generally held in registers this way - or if it's OK for the compiler to make it so - just change the nominal register numbers in GCC so that endianness works as expected - register names and the nominal numbers in gcc do not need to match.