mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	Utilizing the 8 and 16 bit comparison instructions, even when an input can be folded into the comparison instruction itself, is typically not worth it. There are too many partial register stalls as a result, leading to significant slowdowns. By always performing comparisons on at least 32-bit registers, performance of the calculation chain leading to the comparison improves. Continue to use the smaller comparisons when minimizing size, as that allows better folding of loads into the comparison instructions. rdar://15386341 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195496 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			22 lines
		
	
	
		
			495 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			495 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
 | |
| ; RUN: llc < %s -mtriple=x86_64-win64 | FileCheck %s
 | |
| ; rdar://7304838
 | |
| 
 | |
| ; CodeGenPrepare should move the zext into the block with the load
 | |
| ; so that SelectionDAG can select it with the load.
 | |
| 
 | |
| ; CHECK: movsbl ({{%rdi|%rcx}}), %eax
 | |
| 
 | |
| define void @foo(i8* %p, i32* %q) {
 | |
| entry:
 | |
|   %t = load i8* %p
 | |
|   %a = icmp slt i8 %t, 20
 | |
|   br i1 %a, label %true, label %false
 | |
| true:
 | |
|   %s = zext i8 %t to i32
 | |
|   store i32 %s, i32* %q
 | |
|   ret void
 | |
| false:
 | |
|   ret void
 | |
| }
 |