[llvm-dev] tracking known operand bits across passes
Smith, Kevin B via llvm-dev
llvm-dev at lists.llvm.org
Wed Oct 28 14:18:41 PDT 2015
Time frame is within the next month.
My pass executes quite late in the CG, post RA, just a bit before it gets to encoding. Specifically it is here:
void X86PassConfig::addPreEmitPass() {
if (getOptLevel() != CodeGenOpt::None)
addPass(createExecutionDependencyFixPass(&X86::VR128RegClass));
if (UseVZeroUpper)
addPass(createX86IssueVZeroUpperPass());
if (getOptLevel() != CodeGenOpt::None) {
addPass(createX86FixupBWInsts()); // This is the new pass for byte/word instruction optimization pass.
addPass(createX86PadShortFunctions());
addPass(createX86FixupLEAs());
}
}
right now. No information is preserved. It uses the register liveness information already present in the Machine Instructions IR.
time.
Sorry, no I didn't intend to move this to llvm-commits. Fat fingered that instead of llvm-dev with auto-completion in Outlook. Moved back to llvm-dev. Thanks for pointing that out.
Kevin
-----Original Message-----
From: kingshizzle at gmail.com [mailto:kingshizzle at gmail.com] On Behalf Of Steve King
Sent: Wednesday, October 28, 2015 2:05 PM
To: Smith, Kevin B
Cc: llvm-commits at lists.llvm.org
Subject: Re: [llvm-dev] tracking known operand bits across passes
On Wed, Oct 28, 2015 at 12:08 PM, Smith, Kevin B
<kevin.b.smith at intel.com> wrote:
> I have a pass that can do what you want, but not by computing or using known bits. I intend to try to upstream this
> for X86 CG.
Thanks! Have a time frame in mind?
>
> It works by looking for byte and word operations that might be more profitably done either using movz(wb)l or by simply making
> the instruction larger.
When does your pass execute? Do you preserve information between passes?
> But it does this not by knowing bits are zero or one, but by making sure the upper bits of the register are
> unused/dead. It could definitely do this for andw ->andl without much trouble at all.
Neat. I wonder if known-bit tracking would enable enough additional
promotions to pay for the computing and tracking effort.
Also, did you mean to move this discussion to the commits mailing list?
Regards,
-steve
More information about the llvm-dev
mailing list