From 59aefd15e59450c04fadb34f5054b34a8878ffb0 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Fri, 1 Jun 2007 08:25:24 +0000 Subject: [PATCH] Target specific ifcvt code duplication limit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37384 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Target/TargetLowering.h | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/include/llvm/Target/TargetLowering.h b/include/llvm/Target/TargetLowering.h index cabaaa1f2cb..61c03b61aef 100644 --- a/include/llvm/Target/TargetLowering.h +++ b/include/llvm/Target/TargetLowering.h @@ -440,6 +440,13 @@ public: return IfCvtBlockSizeLimit; } + /// getIfCvtDupBlockLimit - returns the target specific size limit for a + /// block to be considered for duplication. Any block whose size is greater + /// should not be duplicated to facilitate its predication. + virtual unsigned getIfCvtDupBlockSizeLimit() const { + return IfCvtDupBlockSizeLimit; + } + /// getPreIndexedAddressParts - returns true by value, base pointer and /// offset pointer and addressing mode by reference if the node's address /// can be legally represented as pre-indexed load / store address. @@ -758,11 +765,18 @@ protected: } /// setIfCvtBlockSizeLimit - Set the target's if-conversion block size - /// (in number of instructions); default is 2. + /// limit (in number of instructions); default is 2. void setIfCvtBlockSizeLimit(unsigned Limit) { IfCvtBlockSizeLimit = Limit; } + /// setIfCvtDupBlockSizeLimit - Set the target's block size limit (in number + /// of instructions) to be considered for code duplication during + /// if-conversion; default is 2. + void setIfCvtDupBlockSizeLimit(unsigned Limit) { + IfCvtDupBlockSizeLimit = Limit; + } + public: //===--------------------------------------------------------------------===// @@ -995,10 +1009,14 @@ private: /// buffers unsigned JumpBufAlignment; - /// IfCvtBlockSizeLimit - The maximum allowed block size for if-conversion. - /// + /// IfCvtBlockSizeLimit - The maximum allowed size for a block to be + /// if-converted. unsigned IfCvtBlockSizeLimit; + /// IfCvtDupBlockSizeLimit - The maximum allowed size for a block to be + /// duplicated during if-conversion. + unsigned IfCvtDupBlockSizeLimit; + /// StackPointerRegisterToSaveRestore - If set to a physical register, this /// specifies the register that llvm.savestack/llvm.restorestack should save /// and restore. -- 2.34.1