169 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
@ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \
 | 
						|
@ RUN:   | llvm-readobj -s -sd | FileCheck %s
 | 
						|
 | 
						|
@ Check for different combination of .setfp, .pad, .save and .vsave.
 | 
						|
 | 
						|
	.syntax	unified
 | 
						|
 | 
						|
@-------------------------------------------------------------------------------
 | 
						|
@ TEST1: Check .pad before .setfp directive.
 | 
						|
@-------------------------------------------------------------------------------
 | 
						|
	.section	.TEST1
 | 
						|
	.globl	func1
 | 
						|
	.type	func1,%function
 | 
						|
	.align	2
 | 
						|
	.fnstart
 | 
						|
func1:
 | 
						|
	.pad	#12
 | 
						|
	sub	sp, sp, #12
 | 
						|
	.setfp	fp, sp, #8
 | 
						|
	add	fp, sp, #8
 | 
						|
	sub	sp, fp, #8
 | 
						|
	add	sp, sp, #12
 | 
						|
	bx	lr
 | 
						|
	.personality	__gxx_personality_v0
 | 
						|
	.handlerdata
 | 
						|
	.fnend
 | 
						|
 | 
						|
@ CHECK: Section {
 | 
						|
@ CHECK:   Name: .ARM.extab.TEST1
 | 
						|
@ CHECK:   SectionData (
 | 
						|
@ CHECK:     0000: 00000000 B0009B00                    |........|
 | 
						|
@ CHECK:   )
 | 
						|
@ CHECK: }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
@-------------------------------------------------------------------------------
 | 
						|
@ TEST2: Check .pad after .setfp directive.
 | 
						|
@-------------------------------------------------------------------------------
 | 
						|
	.section	.TEST2
 | 
						|
	.globl	func2
 | 
						|
	.type	func2,%function
 | 
						|
	.align	2
 | 
						|
	.fnstart
 | 
						|
func2:
 | 
						|
	.setfp	fp, sp, #8
 | 
						|
	add	fp, sp, #8
 | 
						|
	.pad	#12
 | 
						|
	sub	sp, sp, #12
 | 
						|
	add	sp, sp, #12
 | 
						|
	sub	sp, fp, #8
 | 
						|
	bx	lr
 | 
						|
	.personality	__gxx_personality_v0
 | 
						|
	.handlerdata
 | 
						|
	.fnend
 | 
						|
 | 
						|
@ CHECK: Section {
 | 
						|
@ CHECK:   Name: .ARM.extab.TEST2
 | 
						|
@ CHECK:   SectionData (
 | 
						|
@ CHECK:     0000: 00000000 B0419B00                    |.....A..|
 | 
						|
@ CHECK:   )
 | 
						|
@ CHECK: }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
@-------------------------------------------------------------------------------
 | 
						|
@ TEST3: Check .setfp, .pad, .setfp directive.
 | 
						|
@-------------------------------------------------------------------------------
 | 
						|
	.section	.TEST3
 | 
						|
	.globl	func3
 | 
						|
	.type	func3,%function
 | 
						|
	.align	2
 | 
						|
	.fnstart
 | 
						|
func3:
 | 
						|
	@ prologue:
 | 
						|
	.setfp	fp, sp, #4
 | 
						|
	add	fp, sp, #4
 | 
						|
	.pad	#8
 | 
						|
	sub	sp, sp, #8
 | 
						|
	.setfp	fp, sp, #4
 | 
						|
	add	fp, sp, #4
 | 
						|
 | 
						|
	@ epilogue:
 | 
						|
	add	sp, fp, #4
 | 
						|
	bx	lr
 | 
						|
	.personality	__gxx_personality_v0
 | 
						|
	.handlerdata
 | 
						|
	.fnend
 | 
						|
 | 
						|
@ CHECK: Section {
 | 
						|
@ CHECK:   Name: .ARM.extab.TEST3
 | 
						|
@ CHECK:   SectionData (
 | 
						|
@ CHECK:     0000: 00000000 B0009B00                    |........|
 | 
						|
@ CHECK:   )
 | 
						|
@ CHECK: }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
@-------------------------------------------------------------------------------
 | 
						|
@ TEST4: Check ".setfp fp, sp" and ".setfp fp, fp" directive.
 | 
						|
@-------------------------------------------------------------------------------
 | 
						|
	.section	.TEST4
 | 
						|
	.globl	func4
 | 
						|
	.type	func4,%function
 | 
						|
	.align	2
 | 
						|
	.fnstart
 | 
						|
func4:
 | 
						|
	@ prologue:
 | 
						|
	.setfp	fp, sp, #8
 | 
						|
	add	fp, sp, #8
 | 
						|
	.setfp	fp, fp, #8
 | 
						|
	add	fp, fp, #8
 | 
						|
 | 
						|
	@ epilogue:
 | 
						|
	sub	sp, fp, #16
 | 
						|
	bx	lr
 | 
						|
	.personality	__gxx_personality_v0
 | 
						|
	.handlerdata
 | 
						|
	.fnend
 | 
						|
 | 
						|
@ CHECK: Section {
 | 
						|
@ CHECK:   Name: .ARM.extab.TEST4
 | 
						|
@ CHECK:   SectionData (
 | 
						|
@ CHECK:     0000: 00000000 B0439B00                    |.....C..|
 | 
						|
@ CHECK:   )
 | 
						|
@ CHECK: }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
@-------------------------------------------------------------------------------
 | 
						|
@ TEST5: Check .setfp, .save, .setfp directive.
 | 
						|
@-------------------------------------------------------------------------------
 | 
						|
	.section	.TEST5
 | 
						|
	.globl	func5
 | 
						|
	.type	func5,%function
 | 
						|
	.align	2
 | 
						|
	.fnstart
 | 
						|
func5:
 | 
						|
	@ prologue:
 | 
						|
	.setfp	fp, sp, #16
 | 
						|
	add	fp, sp, #16
 | 
						|
	.save	{r4, r5, r6, r7, r8}
 | 
						|
	push	{r4, r5, r6, r7, r8}
 | 
						|
	.pad	#8
 | 
						|
	add	sp, sp, #8
 | 
						|
	.pad	#8
 | 
						|
	sub	sp, sp, #8
 | 
						|
	.save	{r9, r10}
 | 
						|
	push	{r9, r10}
 | 
						|
	.setfp	fp, sp, #24
 | 
						|
	add	fp, sp, #24
 | 
						|
 | 
						|
	@ epilogue:
 | 
						|
	sub	sp, fp, #24
 | 
						|
	pop	{r9, r10}
 | 
						|
	add	sp, sp, #16
 | 
						|
	pop	{r4, r5, r6, r7, r8}
 | 
						|
	bx	lr
 | 
						|
	.personality	__gxx_personality_v0
 | 
						|
	.handlerdata
 | 
						|
	.fnend
 | 
						|
 | 
						|
@ CHECK: Section {
 | 
						|
@ CHECK:   Name: .ARM.extab.TEST5
 | 
						|
@ CHECK:   SectionData (
 | 
						|
@ CHECK:     0000: 00000000 80459B01 B0A40360           |.....E.....`|
 | 
						|
@ CHECK:   )
 | 
						|
@ CHECK: }
 |