Arnaud Allard de Grandmaison
2009-Sep-09 16:44 UTC
[LLVMdev] How to express physical register dependencies between instructions
I am wondering how to express physical register dependencies between instructions, typically in the case for conditionnal branch, where an instruction which sets the condition codes is followed by a conditionnal branch. Assuming CCFLAGS is defined in my registerInfo.td, and that I am using llvm-2.5 release, it seems several items need to be set in the .td file : 1 - SDNPOptInFlag / SDNPOptOutFlag 2 - Defs = [CCFLAGS] / Uses = [CCFLAGS] 3 - (implicit CCFLAGS) 4 - explicit usage of CCFLAGS As a new comer to LLVM, I am missing the druid's lore to pick up the mixture of right items to have it work. I am asking the question because in our case, I observe that the pre-RA-scheduling pass moves an instruction which clobbers CCFLAGS in between my 2 instructions (set ccflags / brcc). I found on bugzilla that only the burr scheduler has been taught about physical register dependencies, so I made sure this is the one I am using. I am currently using #1 + #2 + #3, and have not yet used option #4, but I can see this is the one being used for the X86. Is this the one I should be using ? Thanks in advance for any suggestion or hint, -- Arnaud de Grandmaison CONFIDENTIAL NOTICE: The contents of this message, including any attachments, are confidential and are intended solely for the use of the person or entity to whom the message was addressed. If you are not the intended recipient of this message, please be advised that any dissemination, distribution, or use of the contents of this message is strictly prohibited. If you received this message in error, please notify the sender. Please also permanently delete all copies of the original message and any attached documentation. Thank you.
Maybe Matching Threads
- [PATCH v2] drm: prefix header search paths with $(srctree)/
- [PATCH] drm: prefix header search paths with $(srctree)/
- [LLVMdev] implicit CC register Defs cause "physreg was not killed in defining block!" assert
- [PATCH v2] drm: prefix header search paths with $(srctree)/
- [LLVMdev] implicit CC register Defs cause "physreg was not killed in defining block!" assert