88 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 -mattr=-altivec < %s | \
 | |
| ; RUN:   FileCheck %s
 | |
| 
 | |
| ; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 -mattr=-altivec < %s | \
 | |
| ; RUN:   FileCheck %s
 | |
| 
 | |
| ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \
 | |
| ; RUN:     -mattr=-altivec -filetype=obj -o %t.o < %s
 | |
| ; RUN: llvm-readobj --symbols %t.o | FileCheck --check-prefixes=CHECKSYM,CHECKSYM32 %s
 | |
| ; RUN: llvm-objdump -r -d --symbol-description %t.o | FileCheck --check-prefixes=CHECKRELOC,CHECKRELOC32 %s
 | |
| 
 | |
| ; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \
 | |
| ; RUN:     -mattr=-altivec -filetype=obj -o %t64.o < %s
 | |
| ; RUN: llvm-readobj --symbols %t64.o | FileCheck --check-prefixes=CHECKSYM,CHECKSYM64 %s
 | |
| ; RUN: llvm-objdump -r -d --symbol-description %t64.o | FileCheck --check-prefixes=CHECKRELOC,CHECKRELOC64 %s
 | |
| 
 | |
| %struct.S = type { i32, i32 }
 | |
| 
 | |
| @s = external global %struct.S, align 4
 | |
| 
 | |
| define void @bar() {
 | |
| entry:
 | |
|   %0 = load i32, i32* getelementptr inbounds (%struct.S, %struct.S* @s, i32 0, i32 1), align 4
 | |
|   %1 = trunc i32 %0 to i8
 | |
|   %2 = load i32, i32* getelementptr inbounds (%struct.S, %struct.S* @s, i32 0, i32 1), align 4
 | |
|   call void @llvm.memset.p0i8.i32(i8* align 4 bitcast (%struct.S* @s to i8*), i8 %1, i32 %2, i1 false)
 | |
|   ret void
 | |
| }
 | |
| 
 | |
| declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i1 immarg)
 | |
| 
 | |
| ; CHECK-LABEL: .bar:
 | |
| ; CHECK-NEXT: # %bb.0:                                # %entry
 | |
| ; CHECK-NEXT:         mflr 0
 | |
| 
 | |
| ; CHECK:              bl .memset
 | |
| 
 | |
| ; CHECK:              .extern .memset
 | |
| 
 | |
| ; CHECKSYM:        Symbol {
 | |
| ; CHECKSYM-NEXT:     Index: 0
 | |
| ; CHECKSYM-NEXT:     Name: .file
 | |
| ; CHECKSYM-NEXT:     Value (SymbolTableIndex): 0x0
 | |
| ; CHECKSYM-NEXT:     Section: N_DEBUG
 | |
| ; CHECKSYM-NEXT:     Source Language ID: TB_C (0x0)
 | |
| ; CHECKSYM-NEXT:     CPU Version ID: 0x0
 | |
| ; CHECKSYM-NEXT:     StorageClass: C_FILE (0x67)
 | |
| ; CHECKSYM-NEXT:     NumberOfAuxEntries: 0
 | |
| ; CHECKSYM-NEXT:   }
 | |
| ; CHECKSYM-NEXT:   Symbol {
 | |
| ; CHECKSYM-NEXT:     Index: 1
 | |
| ; CHECKSYM-NEXT:     Name: .memset
 | |
| ; CHECKSYM-NEXT:     Value (RelocatableAddress): 0x0
 | |
| ; CHECKSYM-NEXT:     Section: N_UNDEF
 | |
| ; CHECKSYM-NEXT:     Type: 0x0
 | |
| ; CHECKSYM-NEXT:     StorageClass: C_EXT (0x2)
 | |
| ; CHECKSYM-NEXT:     NumberOfAuxEntries: 1
 | |
| ; CHECKSYM-NEXT:     CSECT Auxiliary Entry {
 | |
| ; CHECKSYM-NEXT:       Index: 2
 | |
| ; CHECKSYM-NEXT:       SectionLen: 0
 | |
| ; CHECKSYM-NEXT:       ParameterHashIndex: 0x0
 | |
| ; CHECKSYM-NEXT:       TypeChkSectNum: 0x0
 | |
| ; CHECKSYM-NEXT:       SymbolAlignmentLog2: 0
 | |
| ; CHECKSYM-NEXT:       SymbolType: XTY_ER (0x0)
 | |
| ; CHECKSYM-NEXT:       StorageMappingClass: XMC_PR (0x0)
 | |
| ; CHECKSYM32-NEXT:     StabInfoIndex: 0x0
 | |
| ; CHECKSYM32-NEXT:     StabSectNum: 0x0
 | |
| ; CHECKSYM64-NEXT:     Auxiliary Type: AUX_CSECT (0xFB)
 | |
| ; CHECKSYM-NEXT:     }
 | |
| ; CHECKSYM-NEXT:   }
 | |
| 
 | |
| ; CHECKRELOC32:      00000000 (idx: 7) .bar:
 | |
| ; CHECKRELOC64:      0000000000000000 (idx: 7) .bar:
 | |
| ; CHECKRELOC-NEXT:        0: 7c 08 02 a6                        mflr 0
 | |
| ; CHECKRELOC32-NEXT:        4: 90 01 00 08                      stw 0, 8(1)
 | |
| ; CHECKRELOC32-NEXT:        8: 94 21 ff c0                      stwu 1, -64(1)
 | |
| ; CHECKRELOC32-NEXT:        c: 80 62 00 00                      lwz 3, 0(2)
 | |
| ; CHECKRELOC64-NEXT:        4: f8 01 00 10                      std 0, 16(1)
 | |
| ; CHECKRELOC64-NEXT:        8: f8 21 ff 91                      stdu 1, -112(1)
 | |
| ; CHECKRELOC64-NEXT:        c: e8 62 00 00                      ld 3, 0(2)
 | |
| ; CHECKRELOC32-NEXT:    0000000e:  R_TOC        (idx: 13) s[TC]
 | |
| ; CHECKRELOC64-NEXT:    000000000000000e:  R_TOC	(idx: 13) s[TC]
 | |
| ; CHECKRELOC-NEXT:       10: 80 83 00 04                        lwz 4, 4(3)
 | |
| ; CHECKRELOC-NEXT:       14: 7c 85 23 78                        mr 5, 4
 | |
| ; CHECKRELOC-NEXT:       18: 4b ff ff e9                        bl 0x0
 | |
| ; CHECKRELOC32-NEXT:    00000018:  R_RBR        (idx: 1) .memset[PR]
 | |
| ; CHECKRELOC64-NEXT:    0000000000000018:  R_RBR	(idx: 1) .memset[PR]
 |