Both Keith's https://go-review.googlesource.com/c/41612/ and
and Ben's https://go-review.googlesource.com/c/41679/ optimized ARM's
constant pool. But neither was complete.
First, BIC was forgotten.
1. "BIC $0xff00ff00, Reg" can be optimized to
"BIC $0xff000000, Reg
BIC $0x0000ff00, Reg"
2. "BIC $0xffff00ff, Reg" can be optimized to
"AND $0x0000ff00, Reg"
3. "AND $0xffff00ff, Reg" can be optimized to
"BIC $0x0000ff00, Reg"
Second, break a non-ARMImmRot to the subtraction of two ARMImmRots was
left as TODO.
1. "ADD $0x00fffff0, Reg" can be optimized to
"ADD $0x01000000, Reg
SUB $0x00000010, Reg"
2. "SUB $0x00fffff0, Reg" can be optimized to
"SUB $0x01000000, Reg
ADD $0x00000010, Reg"