X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FCodeGen%2FX86%2Fstackmap-liveness.ll;h=599b6265abfa50bfcd5c4917e63ad00a694acaae;hb=6e961aa243f223ddb704ce708056238d7c1d7e24;hp=570e373229e358272e3a04df1d7d896c48fbd55f;hpb=2baaf25bf507f441a6d4580fe11dcb23a9ea0c1d;p=oota-llvm.git diff --git a/test/CodeGen/X86/stackmap-liveness.ll b/test/CodeGen/X86/stackmap-liveness.ll index 570e373229e..599b6265abf 100644 --- a/test/CodeGen/X86/stackmap-liveness.ll +++ b/test/CodeGen/X86/stackmap-liveness.ll @@ -1,22 +1,27 @@ -; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -disable-fp-elim | FileCheck %s -; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -disable-fp-elim -enable-stackmap-liveness| FileCheck -check-prefix=STACK %s -; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -disable-fp-elim -enable-patchpoint-liveness| FileCheck -check-prefix=PATCH %s +; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -enable-patchpoint-liveness=false | FileCheck %s +; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx | FileCheck -check-prefix=PATCH %s ; ; Note: Print verbose stackmaps using -debug-only=stackmaps. ; CHECK-LABEL: .section __LLVM_STACKMAPS,__llvm_stackmaps ; CHECK-NEXT: __LLVM_StackMaps: -; CHECK-NEXT: .long 0 +; Header +; CHECK-NEXT: .byte 1 +; CHECK-NEXT: .byte 0 +; CHECK-NEXT: .short 0 ; Num Functions ; CHECK-NEXT: .long 2 -; CHECK-NEXT: .long _stackmap_liveness -; CHECK-NEXT: .long 8 -; CHECK-NEXT: .long _mixed_liveness -; CHECK-NEXT: .long 8 ; Num LargeConstants ; CHECK-NEXT: .long 0 ; Num Callsites ; CHECK-NEXT: .long 5 + +; Functions and stack size +; CHECK-NEXT: .quad _stackmap_liveness +; CHECK-NEXT: .quad 8 +; CHECK-NEXT: .quad _mixed_liveness +; CHECK-NEXT: .quad 8 + define void @stackmap_liveness() { entry: %a1 = call <2 x double> asm sideeffect "", "={xmm2}"() nounwind @@ -24,31 +29,28 @@ entry: ; CHECK-LABEL: .long L{{.*}}-_stackmap_liveness ; CHECK-NEXT: .short 0 ; CHECK-NEXT: .short 0 +; Padding +; CHECK-NEXT: .short 0 ; Num LiveOut Entries: 0 ; CHECK-NEXT: .short 0 - -; StackMap 1 (stackmap liveness information enabled) -; STACK-LABEL: .long L{{.*}}-_stackmap_liveness -; STACK-NEXT: .short 0 -; STACK-NEXT: .short 0 -; Num LiveOut Entries: 2 -; STACK-NEXT: .short 2 -; LiveOut Entry 1: %RSP (8 bytes) -; STACK-NEXT: .short 7 -; STACK-NEXT: .byte 0 -; STACK-NEXT: .byte 8 -; LiveOut Entry 2: %YMM2 (16 bytes) --> %XMM2 -; STACK-NEXT: .short 19 -; STACK-NEXT: .byte 0 -; STACK-NEXT: .byte 16 +; Align +; CHECK-NEXT: .align 3 ; StackMap 1 (patchpoint liveness information enabled) ; PATCH-LABEL: .long L{{.*}}-_stackmap_liveness ; PATCH-NEXT: .short 0 ; PATCH-NEXT: .short 0 -; Num LiveOut Entries: 0 +; Padding ; PATCH-NEXT: .short 0 - call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 1, i32 5) +; Num LiveOut Entries: 1 +; PATCH-NEXT: .short 1 +; LiveOut Entry 1: %YMM2 (16 bytes) --> %XMM2 +; PATCH-NEXT: .short 19 +; PATCH-NEXT: .byte 0 +; PATCH-NEXT: .byte 16 +; Align +; PATCH-NEXT: .align 3 + call anyregcc void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 1, i32 12, i8* null, i32 0) %a2 = call i64 asm sideeffect "", "={r8}"() nounwind %a3 = call i8 asm sideeffect "", "={ah}"() nounwind %a4 = call <4 x double> asm sideeffect "", "={ymm0}"() nounwind @@ -58,78 +60,76 @@ entry: ; CHECK-LABEL: .long L{{.*}}-_stackmap_liveness ; CHECK-NEXT: .short 0 ; CHECK-NEXT: .short 0 +; Padding +; CHECK-NEXT: .short 0 ; Num LiveOut Entries: 0 ; CHECK-NEXT: .short 0 - -; StackMap 2 (stackmap liveness information enabled) -; STACK-LABEL: .long L{{.*}}-_stackmap_liveness -; STACK-NEXT: .short 0 -; STACK-NEXT: .short 0 -; Num LiveOut Entries: 6 -; STACK-NEXT: .short 6 -; LiveOut Entry 2: %RAX (1 bytes) --> %AL or %AH -; STACK-NEXT: .short 0 -; STACK-NEXT: .byte 0 -; STACK-NEXT: .byte 1 -; LiveOut Entry 2: %RSP (8 bytes) -; STACK-NEXT: .short 7 -; STACK-NEXT: .byte 0 -; STACK-NEXT: .byte 8 -; LiveOut Entry 2: %R8 (8 bytes) -; STACK-NEXT: .short 8 -; STACK-NEXT: .byte 0 -; STACK-NEXT: .byte 8 -; LiveOut Entry 2: %YMM0 (32 bytes) -; STACK-NEXT: .short 17 -; STACK-NEXT: .byte 0 -; STACK-NEXT: .byte 32 -; LiveOut Entry 2: %YMM1 (32 bytes) -; STACK-NEXT: .short 18 -; STACK-NEXT: .byte 0 -; STACK-NEXT: .byte 32 -; LiveOut Entry 2: %YMM2 (16 bytes) --> %XMM2 -; STACK-NEXT: .short 19 -; STACK-NEXT: .byte 0 -; STACK-NEXT: .byte 16 +; Align +; CHECK-NEXT: .align 3 ; StackMap 2 (patchpoint liveness information enabled) ; PATCH-LABEL: .long L{{.*}}-_stackmap_liveness ; PATCH-NEXT: .short 0 ; PATCH-NEXT: .short 0 -; Num LiveOut Entries: 0 +; Padding +; PATCH-NEXT: .short 0 +; Num LiveOut Entries: 5 +; PATCH-NEXT: .short 5 +; LiveOut Entry 1: %RAX (1 bytes) --> %AL or %AH ; PATCH-NEXT: .short 0 - call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 2, i32 5) +; PATCH-NEXT: .byte 0 +; PATCH-NEXT: .byte 1 +; LiveOut Entry 2: %R8 (8 bytes) +; PATCH-NEXT: .short 8 +; PATCH-NEXT: .byte 0 +; PATCH-NEXT: .byte 8 +; LiveOut Entry 3: %YMM0 (32 bytes) +; PATCH-NEXT: .short 17 +; PATCH-NEXT: .byte 0 +; PATCH-NEXT: .byte 32 +; LiveOut Entry 4: %YMM1 (32 bytes) +; PATCH-NEXT: .short 18 +; PATCH-NEXT: .byte 0 +; PATCH-NEXT: .byte 32 +; LiveOut Entry 5: %YMM2 (16 bytes) --> %XMM2 +; PATCH-NEXT: .short 19 +; PATCH-NEXT: .byte 0 +; PATCH-NEXT: .byte 16 +; Align +; PATCH-NEXT: .align 3 + call anyregcc void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 2, i32 12, i8* null, i32 0) call void asm sideeffect "", "{r8},{ah},{ymm0},{ymm1}"(i64 %a2, i8 %a3, <4 x double> %a4, <4 x double> %a5) nounwind ; StackMap 3 (no liveness information available) ; CHECK-LABEL: .long L{{.*}}-_stackmap_liveness ; CHECK-NEXT: .short 0 ; CHECK-NEXT: .short 0 +; Padding +; CHECK-NEXT: .short 0 ; Num LiveOut Entries: 0 ; CHECK-NEXT: .short 0 - -; StackMap 3 (stackmap liveness information enabled) -; STACK-LABEL: .long L{{.*}}-_stackmap_liveness -; STACK-NEXT: .short 0 -; STACK-NEXT: .short 0 -; Num LiveOut Entries: 2 -; STACK-NEXT: .short 2 -; LiveOut Entry 2: %RSP (8 bytes) -; STACK-NEXT: .short 7 -; STACK-NEXT: .byte 0 -; STACK-NEXT: .byte 8 -; LiveOut Entry 2: %YMM2 (16 bytes) --> %XMM2 -; STACK-NEXT: .short 19 -; STACK-NEXT: .byte 0 -; STACK-NEXT: .byte 16 +; Align +; CHECK-NEXT: .align 3 ; StackMap 3 (patchpoint liveness information enabled) ; PATCH-LABEL: .long L{{.*}}-_stackmap_liveness ; PATCH-NEXT: .short 0 ; PATCH-NEXT: .short 0 -; Num LiveOut Entries: 0 +; Padding ; PATCH-NEXT: .short 0 - call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 3, i32 5) +; Num LiveOut Entries: 2 +; PATCH-NEXT: .short 2 +; LiveOut Entry 1: %RSP (8 bytes) +; PATCH-NEXT: .short 7 +; PATCH-NEXT: .byte 0 +; PATCH-NEXT: .byte 8 +; LiveOut Entry 2: %YMM2 (16 bytes) --> %XMM2 +; PATCH-NEXT: .short 19 +; PATCH-NEXT: .byte 0 +; PATCH-NEXT: .byte 16 +; Align +; PATCH-NEXT: .align 3 + call anyregcc void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 3, i32 12, i8* null, i32 0) call void asm sideeffect "", "{xmm2}"(<2 x double> %a1) nounwind ret void } @@ -137,45 +137,37 @@ entry: define void @mixed_liveness() { entry: %a1 = call <2 x double> asm sideeffect "", "={xmm2}"() nounwind -; StackMap 4 (stackmap liveness information enabled) -; STACK-LABEL: .long L{{.*}}-_mixed_liveness -; STACK-NEXT: .short 0 -; STACK-NEXT: .short 0 -; Num LiveOut Entries: 1 -; STACK-NEXT: .short 1 -; LiveOut Entry 1: %YMM2 (16 bytes) --> %XMM2 -; STACK-NEXT: .short 19 -; STACK-NEXT: .byte 0 -; STACK-NEXT: .byte 16 -; StackMap 5 (stackmap liveness information enabled) -; STACK-LABEL: .long L{{.*}}-_mixed_liveness -; STACK-NEXT: .short 0 -; STACK-NEXT: .short 0 -; Num LiveOut Entries: 0 -; STACK-NEXT: .short 0 - ; StackMap 4 (patchpoint liveness information enabled) ; PATCH-LABEL: .long L{{.*}}-_mixed_liveness ; PATCH-NEXT: .short 0 ; PATCH-NEXT: .short 0 +; Padding +; PATCH-NEXT: .short 0 ; Num LiveOut Entries: 0 ; PATCH-NEXT: .short 0 +; Align +; PATCH-NEXT: .align 3 + ; StackMap 5 (patchpoint liveness information enabled) ; PATCH-LABEL: .long L{{.*}}-_mixed_liveness ; PATCH-NEXT: .short 0 ; PATCH-NEXT: .short 0 +; Padding +; PATCH-NEXT: .short 0 ; Num LiveOut Entries: 2 ; PATCH-NEXT: .short 2 ; LiveOut Entry 1: %RSP (8 bytes) ; PATCH-NEXT: .short 7 ; PATCH-NEXT: .byte 0 ; PATCH-NEXT: .byte 8 -; LiveOut Entry 1: %YMM2 (16 bytes) --> %XMM2 +; LiveOut Entry 2: %YMM2 (16 bytes) --> %XMM2 ; PATCH-NEXT: .short 19 ; PATCH-NEXT: .byte 0 ; PATCH-NEXT: .byte 16 - call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 4, i32 5) - call anyregcc void (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.void(i64 5, i32 0, i8* null, i32 0) +; Align +; PATCH-NEXT: .align 3 + call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4, i32 5) + call anyregcc void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 5, i32 0, i8* null, i32 0) call void asm sideeffect "", "{xmm2}"(<2 x double> %a1) nounwind ret void }