tcg-ia64: Introduce tcg_opc_bswap64_i
Acked-by: Aurelien Jarno <aurelien@aurel32.net>Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg-ia64: Introduce tcg_opc_ext_i
Being able to "extend" from 64-bits (with a mov) simplifiesa few places where the conditional breaks the train of thought.
tcg-ia64: Introduce tcg_opc_movi_a
tcg-ia64: Introduce tcg_opc_mov_a
tcg-ia64: Use A3 form of logical operations
We can and/or/xor/andcm small constants, saving one cycle.
tcg-ia64: Use SUB_A3 and ADDS_A4 for subtraction
We can subtract from more small constants that just 0 with one insn,and we can add the negative for most small constants.
tcg-ia64: Use ADDS for small addition
Avoids a wasted cycle loading up small constants.
Simplify the code assuming the tcg optimizer is going to workand don't expect the first operand of the add to be constant.
Acked-by: Aurelien Jarno <aurelien@aurel32.net>...
tcg-ia64: Avoid unnecessary stop bit in tcg_out_alu
When performing an operation with two input registers, we'd leavethe stop bit (and thus an extra cycle) that's only needed when oneor the other input is a constant.
tcg-ia64: Move AREG0 to R32
Since the move away from the global areg0, we're no longer globallyreserving areg0. Which means our use of R7 clobbers a call-savedregister. Shift areg0 into the windowed registers. Indeed, choosethe incoming parameter register that it comes to us by....
tcg-ia64: Simplify brcond
There was a misconception that a stop bit is required between a compareand the branch that uses the predicate set by the compare. This lead tothe usage of an extra bundle in which to perform the compare. The extrabundle left room for constants to be loaded for use with the compare insn....
View revisions
Also available in: Atom