mirror of
				https://github.com/intel/intel-graphics-compiler.git
				synced 2025-10-30 08:18:26 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			29 lines
		
	
	
		
			990 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			990 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 881bf715f06201a57a4f1a60155b556fedd556db Mon Sep 17 00:00:00 2001
 | |
| From: Victor Mustya <victor.mustya@intel.com>
 | |
| Date: Tue, 22 Aug 2023 11:10:30 -0700
 | |
| Subject: [PATCH] Don't emit bitreverse or bswap intrinsics of illegal bit
 | |
|  width during instcombine
 | |
| 
 | |
| ---
 | |
|  llvm/lib/Transforms/Utils/Local.cpp | 4 ++++
 | |
|  1 file changed, 4 insertions(+)
 | |
| 
 | |
| diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp
 | |
| index b2ed95b05..476a5c4c1 100644
 | |
| --- a/llvm/lib/Transforms/Utils/Local.cpp
 | |
| +++ b/llvm/lib/Transforms/Utils/Local.cpp
 | |
| @@ -3312,6 +3312,10 @@ bool llvm::recognizeBSwapOrBitReverseIdiom(
 | |
|    if (DemandedBW > ITy->getScalarSizeInBits())
 | |
|      return false;
 | |
|  
 | |
| +  auto &DL = I->getModule()->getDataLayout();
 | |
| +  if (DL.isIllegalInteger(DemandedBW))
 | |
| +    return false;
 | |
| +
 | |
|    // Now, is the bit permutation correct for a bswap or a bitreverse? We can
 | |
|    // only byteswap values with an even number of bytes.
 | |
|    APInt DemandedMask = APInt::getAllOnes(DemandedBW);
 | |
| --
 | |
| 2.43.0
 | |
| 
 | 
