36 lines
		
	
	
		
			1017 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1017 B
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: llc < %s -mtriple=thumbv7s-apple-ios6.0.0 -verify-machineinstrs
 | |
| 
 | |
| %union.opcode = type { i32 }
 | |
| 
 | |
| @opcode = external global %union.opcode, align 4
 | |
| 
 | |
| ; Function Attrs: nounwind ssp
 | |
| define i32 @sfu() {
 | |
| entry:
 | |
|   %bf.load = load i32, i32* getelementptr inbounds (%union.opcode, %union.opcode* @opcode, i32 0, i32 0), align 4
 | |
|   %bf.lshr = lshr i32 %bf.load, 26
 | |
|   %bf.clear = and i32 %bf.lshr, 7
 | |
|   switch i32 %bf.clear, label %return [
 | |
|     i32 0, label %sw.bb
 | |
|     i32 1, label %sw.bb1
 | |
|   ]
 | |
| 
 | |
| sw.bb:                                            ; preds = %entry
 | |
|   %call = tail call i32 @func0()
 | |
|   br label %return
 | |
| 
 | |
| sw.bb1:                                           ; preds = %entry
 | |
|   %call2 = tail call i32 @func1()
 | |
|   br label %return
 | |
| 
 | |
| return:                                           ; preds = %sw.bb1, %sw.bb, %entry
 | |
|   %retval.0 = phi i32 [ %call2, %sw.bb1 ], [ %call, %sw.bb ], [ -1, %entry ]
 | |
|   ret i32 %retval.0
 | |
| }
 | |
| 
 | |
| ; Function Attrs: nounwind ssp
 | |
| declare i32 @func0()
 | |
| 
 | |
| ; Function Attrs: nounwind ssp
 | |
| declare i32 @func1()
 |