122 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			LLVM
		
	
	
	
| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 | |
| ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-linux-gnu < %s \
 | |
| ; RUN:   2>&1 | FileCheck --check-prefix=CHECK-LE %s
 | |
| ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff < %s \
 | |
| ; RUN:   2>&1 | FileCheck --check-prefix=CHECK-BE %s
 | |
| 
 | |
| %0 = type <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8*, [8 x i8] }>
 | |
| @global.1 = internal global %0 <{ i32 129, i32 2, i32 118, i32 0, i32 5, i32 0, i32 0, i32 0, i32 120, i32 0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @global.2, i32 0, i32 0), [8 x i8] c"\00\00\00\00\00\00\00\03" }>, align 4
 | |
| @global.2 = internal constant [3 x i8] c"x.c"
 | |
| @alias = dso_local alias i32 (), i32 ()* @main
 | |
| 
 | |
| define dso_local signext i32 @main() nounwind {
 | |
| ; CHECK-LE-LABEL: main:
 | |
| ; CHECK-LE:       # %bb.0: # %bb
 | |
| ; CHECK-LE-NEXT:    mflr 0
 | |
| ; CHECK-LE-NEXT:    std 0, 16(1)
 | |
| ; CHECK-LE-NEXT:    lis 0, -1
 | |
| ; CHECK-LE-NEXT:    ori 0, 0, 65535
 | |
| ; CHECK-LE-NEXT:    sldi 0, 0, 32
 | |
| ; CHECK-LE-NEXT:    oris 0, 0, 32767
 | |
| ; CHECK-LE-NEXT:    ori 0, 0, 65120
 | |
| ; CHECK-LE-NEXT:    stdux 1, 1, 0
 | |
| ; CHECK-LE-NEXT:    lis 3, 0
 | |
| ; CHECK-LE-NEXT:    sldi 3, 3, 32
 | |
| ; CHECK-LE-NEXT:    oris 3, 3, 32768
 | |
| ; CHECK-LE-NEXT:    ori 3, 3, 400
 | |
| ; CHECK-LE-NEXT:    stdx 30, 1, 3 # 8-byte Folded Spill
 | |
| ; CHECK-LE-NEXT:    bl pluto
 | |
| ; CHECK-LE-NEXT:    nop
 | |
| ; CHECK-LE-NEXT:    addis 3, 2, global.1@toc@ha
 | |
| ; CHECK-LE-NEXT:    li 4, 0
 | |
| ; CHECK-LE-NEXT:    li 7, 0
 | |
| ; CHECK-LE-NEXT:    li 8, 0
 | |
| ; CHECK-LE-NEXT:    li 9, 0
 | |
| ; CHECK-LE-NEXT:    addi 5, 3, global.1@toc@l
 | |
| ; CHECK-LE-NEXT:    ori 6, 4, 32768
 | |
| ; CHECK-LE-NEXT:    li 3, 6
 | |
| ; CHECK-LE-NEXT:    li 4, 257
 | |
| ; CHECK-LE-NEXT:    bl snork
 | |
| ; CHECK-LE-NEXT:    nop
 | |
| ; CHECK-LE-NEXT:    mr 30, 3
 | |
| ; CHECK-LE-NEXT:    li 3, 344
 | |
| ; CHECK-LE-NEXT:    addi 4, 1, 48
 | |
| ; CHECK-LE-NEXT:    li 5, 8
 | |
| ; CHECK-LE-NEXT:    li 6, 8
 | |
| ; CHECK-LE-NEXT:    oris 3, 3, 32768
 | |
| ; CHECK-LE-NEXT:    add 4, 4, 3
 | |
| ; CHECK-LE-NEXT:    mr 3, 30
 | |
| ; CHECK-LE-NEXT:    bl zot
 | |
| ; CHECK-LE-NEXT:    nop
 | |
| ; CHECK-LE-NEXT:    mr 3, 30
 | |
| ; CHECK-LE-NEXT:    bl wibble
 | |
| ; CHECK-LE-NEXT:    nop
 | |
| ; CHECK-LE-NEXT:    li 3, 0
 | |
| ; CHECK-LE-NEXT:    bl snork.3
 | |
| ; CHECK-LE-NEXT:    nop
 | |
| ;
 | |
| ; CHECK-BE-LABEL: main:
 | |
| ; CHECK-BE:       # %bb.0: # %bb
 | |
| ; CHECK-BE-NEXT:    mflr 0
 | |
| ; CHECK-BE-NEXT:    std 0, 16(1)
 | |
| ; CHECK-BE-NEXT:    lis 0, -1
 | |
| ; CHECK-BE-NEXT:    ori 0, 0, 65535
 | |
| ; CHECK-BE-NEXT:    sldi 0, 0, 32
 | |
| ; CHECK-BE-NEXT:    oris 0, 0, 32767
 | |
| ; CHECK-BE-NEXT:    ori 0, 0, 65056
 | |
| ; CHECK-BE-NEXT:    stdux 1, 1, 0
 | |
| ; CHECK-BE-NEXT:    lis 3, 0
 | |
| ; CHECK-BE-NEXT:    sldi 3, 3, 32
 | |
| ; CHECK-BE-NEXT:    oris 3, 3, 32768
 | |
| ; CHECK-BE-NEXT:    ori 3, 3, 472
 | |
| ; CHECK-BE-NEXT:    stdx 31, 1, 3 # 8-byte Folded Spill
 | |
| ; CHECK-BE-NEXT:    bl .pluto[PR]
 | |
| ; CHECK-BE-NEXT:    nop
 | |
| ; CHECK-BE-NEXT:    ld 5, L..C0(2) # @global.1
 | |
| ; CHECK-BE-NEXT:    li 3, 0
 | |
| ; CHECK-BE-NEXT:    ori 6, 3, 32768
 | |
| ; CHECK-BE-NEXT:    li 3, 6
 | |
| ; CHECK-BE-NEXT:    li 4, 257
 | |
| ; CHECK-BE-NEXT:    li 7, 0
 | |
| ; CHECK-BE-NEXT:    li 8, 0
 | |
| ; CHECK-BE-NEXT:    li 9, 0
 | |
| ; CHECK-BE-NEXT:    bl .snork[PR]
 | |
| ; CHECK-BE-NEXT:    nop
 | |
| ; CHECK-BE-NEXT:    mr 31, 3
 | |
| ; CHECK-BE-NEXT:    li 3, 344
 | |
| ; CHECK-BE-NEXT:    oris 3, 3, 32768
 | |
| ; CHECK-BE-NEXT:    addi 4, 1, 120
 | |
| ; CHECK-BE-NEXT:    add 4, 4, 3
 | |
| ; CHECK-BE-NEXT:    mr 3, 31
 | |
| ; CHECK-BE-NEXT:    li 5, 8
 | |
| ; CHECK-BE-NEXT:    li 6, 8
 | |
| ; CHECK-BE-NEXT:    bl .zot[PR]
 | |
| ; CHECK-BE-NEXT:    nop
 | |
| ; CHECK-BE-NEXT:    mr 3, 31
 | |
| ; CHECK-BE-NEXT:    bl .wibble[PR]
 | |
| ; CHECK-BE-NEXT:    nop
 | |
| ; CHECK-BE-NEXT:    li 3, 0
 | |
| ; CHECK-BE-NEXT:    bl .snork.3[PR]
 | |
| ; CHECK-BE-NEXT:    nop
 | |
| bb:
 | |
|   %tmp = alloca [2147484000 x i8], align 8
 | |
|   tail call void @pluto()
 | |
|   %tmp6 = tail call i64 @snork(i64 6, i32 257, %0* nonnull @global.1, i64 32768, i8* null, i64 0, i8* null)
 | |
|   %tmp7 = getelementptr inbounds [2147484000 x i8], [2147484000 x i8]* %tmp, i64 0, i64 2147483992
 | |
|   %tmp8 = bitcast i8* %tmp7 to double*
 | |
|   %tmp9 = call i64 @zot(i64 %tmp6, double* nonnull %tmp8, i64 8, i64 8)
 | |
|   %tmp10 = call i64 @wibble(i64 %tmp6)
 | |
|   call void @snork.3(i64 0)
 | |
|   unreachable
 | |
| }
 | |
| 
 | |
| declare void @pluto()
 | |
| 
 | |
| declare signext i64 @snork(i64, i32, %0*, i64, i8*, i64, i8*)
 | |
| 
 | |
| declare signext i64 @zot(i64, double*, i64, i64)
 | |
| 
 | |
| declare signext i64 @wibble(i64)
 | |
| 
 | |
| declare void @snork.3(i64)
 |