52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: opt -analyze -scalar-evolution < %s | FileCheck %s
 | |
| 
 | |
| define i32 @branch_true(i32 %x, i32 %y) {
 | |
| ; CHECK-LABEL: Classifying expressions for: @branch_true
 | |
|  entry:
 | |
|   br i1 true, label %add, label %merge
 | |
| 
 | |
|  add:
 | |
|   %sum = add i32 %x, %y
 | |
|   br label %merge
 | |
| 
 | |
|  merge:
 | |
|   %v = phi i32 [ %sum, %add ], [ %x, %entry ]
 | |
| ; CHECK:  %v = phi i32 [ %sum, %add ], [ %x, %entry ]
 | |
| ; CHECK-NEXT:  -->  (%x + %y) U: full-set S: full-set
 | |
|   ret i32 %v
 | |
| }
 | |
| 
 | |
| define i32 @branch_false(i32 %x, i32 %y) {
 | |
| ; CHECK-LABEL: Classifying expressions for: @branch_false
 | |
|  entry:
 | |
|   br i1 false, label %add, label %merge
 | |
| 
 | |
|  add:
 | |
|   %sum = add i32 %x, %y
 | |
|   br label %merge
 | |
| 
 | |
|  merge:
 | |
|   %v = phi i32 [ %sum, %add ], [ %x, %entry ]
 | |
| ; CHECK:  %v = phi i32 [ %sum, %add ], [ %x, %entry ]
 | |
| ; CHECK-NEXT:  -->  %x U: full-set S: full-set
 | |
|   ret i32 %v
 | |
| }
 | |
| 
 | |
| define i32 @select_true(i32 %x, i32 %y) {
 | |
| ; CHECK-LABEL: Classifying expressions for: @select_true
 | |
|  entry:
 | |
|  %v = select i1 true, i32 %x, i32 %y
 | |
| ; CHECK:  %v = select i1 true, i32 %x, i32 %y
 | |
| ; CHECK-NEXT:  -->  %x U: full-set S: full-set
 | |
|   ret i32 %v
 | |
| }
 | |
| 
 | |
| define i32 @select_false(i32 %x, i32 %y) {
 | |
| ; CHECK-LABEL: Classifying expressions for: @select_false
 | |
|  entry:
 | |
|  %v = select i1 false, i32 %x, i32 %y
 | |
| ; CHECK:  %v = select i1 false, i32 %x, i32 %y
 | |
| ; CHECK-NEXT:  -->  %y U: full-set S: full-set
 | |
|   ret i32 %v
 | |
| }
 |