Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
Slightly off at a tangent: are we ensuring that we keep to the small (8-bit immediate) imul implementation when possible? I seem to recall there's been a problem with unnecessary 32-bit immediate imul instructions causing code bloat.
Thanks, Simon, Sanjay.
Simon:
It should be all right now. E.g.:
echo imull $12, %eax, %eax | llvm-mc --show-encoding
.text imull $12, %eax, %eax # encoding: [0x6b,0xc0,0x0c]
The issues you were seeing were most likely fixed in r241152.
test/CodeGen/X86/imul.ll | ||
---|---|---|
112–119 ↗ | (On Diff #31667) | This is just a copy of a test from above, but with minsize added. I wanted to verify that we still produce a single shift/lea (as opposed to a sequence with > 1 instructions) even under minsize. |
test/CodeGen/X86/imul.ll | ||
---|---|---|
112–119 ↗ | (On Diff #31667) | Ah, I didn't notice the earlier test. I got tired of running into the FIXMEs that I added with r243994, so I've been adding minsize tests myself. In some cases, it has exposed functionality with no regression tests, so I like having the test. Not a problem then, although I'm still curious why this is different for 32-bit. The answer may be related to that "But why?!" comment above. :) |