40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: llc -verify-machineinstrs < %s -mtriple=ppc64-- -O1 | FileCheck %s
 | |
| ; RUN: llc -verify-machineinstrs < %s -mtriple=ppc64-- | FileCheck --check-prefix=CHECK-OPT  %s
 | |
| 
 | |
|         %struct.__db_region = type { %struct.__mutex_t, [4 x i8], %struct.anon, i32, [1 x i32] }
 | |
|         %struct.__mutex_t = type { i32 }
 | |
|         %struct.anon = type { i64, i64 }
 | |
| 
 | |
| define void @foo() {
 | |
| entry:
 | |
|         %ttype = alloca i32, align 4            ; <i32*> [#uses=1]
 | |
|         %regs = alloca [1024 x %struct.__db_region], align 16           ; <[1024 x %struct.__db_region]*> [#uses=0]
 | |
|         %tmp = load i32, i32* %ttype, align 4                ; <i32> [#uses=1]
 | |
|         %tmp1 = call i32 (...) @bork( i32 %tmp )               ; <i32> [#uses=0]
 | |
|         ret void
 | |
| 
 | |
| ; CHECK: @foo
 | |
| ; CHECK: lwzx
 | |
| ; CHECK: blr
 | |
| ; CHECK-OPT: @foo
 | |
| ; CHECK-OPT: lwz
 | |
| ; CHECK-OPT: blr
 | |
| }
 | |
| 
 | |
| define signext i32 @test(i32* noalias nocapture readonly %b, i32 signext %n)  {
 | |
| entry:
 | |
|   %idxprom = sext i32 %n to i64
 | |
|   %arrayidx = getelementptr inbounds i32, i32* %b, i64 %idxprom
 | |
|   %0 = load i32, i32* %arrayidx, align 4
 | |
|   %mul = mul nsw i32 %0, 7
 | |
|   ret i32 %mul
 | |
| 
 | |
| ; CHECK-OPT: @test
 | |
| ; CHECK-OPT: lwzx
 | |
| ; CHECK-OPT: blr
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 | |
| declare i32 @bork(...)
 |