| ; RUN: llc < %s -mtriple="x86_64-pc-linux-gnu" | FileCheck %s | 
 |  | 
 | declare void @callee() | 
 |  | 
 | define void @f_0(<1024 x i64> %val) { | 
 | ; CHECK:      .quad	2882400015 | 
 | ; CHECK-NEXT: .long	.Ltmp0-f_0 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .short	4 | 
 | ; Constant(0) | 
 | ; CHECK-NEXT: .byte	4 | 
 | ; CHECK-NEXT: .byte	0  | 
 | ; CHECK-NEXT: .short	8 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	0 | 
 | ; Constant(0) | 
 | ; CHECK-NEXT: .byte	4 | 
 | ; CHECK-NEXT: .byte	0 | 
 | ; CHECK-NEXT: .short	8 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	0 | 
 | ; Constant(1) | 
 | ; CHECK-NEXT: .byte	4 | 
 | ; CHECK-NEXT: .byte	0 | 
 | ; CHECK-NEXT: .short	8 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	1 | 
 | ; Indirect | 
 | ; CHECK-NEXT: .byte	3 | 
 | ; CHECK-NEXT: .byte	0 | 
 | ; CHECK-NEXT: .short	8192 | 
 | ; CHECK-NEXT: .short	7 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	0 | 
 | ; Padding | 
 | ; CHECK-NEXT: .p2align	3 | 
 |   call void @callee() [ "deopt"(<1024 x i64> %val) ] | 
 |   ret void | 
 | } | 
 |  | 
 | define void @f_1(<1024 x ptr> %val) { | 
 | ; CHECK:      .quad	2882400015 | 
 | ; CHECK-NEXT: .long	.Ltmp1-f_1 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .short	4 | 
 | ; Constant(0) | 
 | ; CHECK-NEXT: .byte	4 | 
 | ; CHECK-NEXT: .byte	0 | 
 | ; CHECK-NEXT: .short	8 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	0 | 
 | ; Constant(0) | 
 | ; CHECK-NEXT: .byte	4 | 
 | ; CHECK-NEXT: .byte	0 | 
 | ; CHECK-NEXT: .short	8 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	0 | 
 | ; Constant(1) | 
 | ; CHECK-NEXT: .byte	4 | 
 | ; CHECK-NEXT: .byte	0 | 
 | ; CHECK-NEXT: .short	8 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	1 | 
 | ; Indirect | 
 | ; CHECK-NEXT: .byte	3 | 
 | ; CHECK-NEXT: .byte	0 | 
 | ; CHECK-NEXT: .short	8192 | 
 | ; CHECK-NEXT: .short	7 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	0 | 
 | ; Padding | 
 | ; CHECK-NEXT: .p2align	3 | 
 |   call void @callee() [ "deopt"(<1024 x ptr> %val) ] | 
 |   ret void | 
 | } | 
 |  | 
 | define void @f_2(<99 x ptr> %val) { | 
 | ; CHECK:      .quad	2882400015 | 
 | ; CHECK-NEXT: .long	.Ltmp2-f_2 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .short	4 | 
 | ; Constant(0) | 
 | ; CHECK-NEXT: .byte	4 | 
 | ; CHECK-NEXT: .byte	0 | 
 | ; CHECK-NEXT: .short	8 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	0 | 
 | ; Constant(0) | 
 | ; CHECK-NEXT: .byte	4 | 
 | ; CHECK-NEXT: .byte	0 | 
 | ; CHECK-NEXT: .short	8 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	0 | 
 | ; Constant(1) | 
 | ; CHECK-NEXT: .byte	4 | 
 | ; CHECK-NEXT: .byte	0 | 
 | ; CHECK-NEXT: .short	8 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	1 | 
 | ; Indirect | 
 | ; CHECK-NEXT: .byte	3 | 
 | ; CHECK-NEXT: .byte	0 | 
 | ; CHECK-NEXT: .short	792 | 
 | ; CHECK-NEXT: .short	7 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	0 | 
 | ; CHECK-NEXT: .p2align	3 | 
 |   call void @callee() [ "deopt"(<99 x ptr> %val) ] | 
 |   ret void | 
 | } | 
 |  | 
 |  | 
 | define <400 x ptr addrspace(1)> @f_3(<400 x ptr addrspace(1)> %obj) gc "statepoint-example" { | 
 | ; CHECK:      .quad	4242 | 
 | ; CHECK-NEXT: .long	.Ltmp3-f_3 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .short	5 | 
 | ; Constant(0) | 
 | ; CHECK-NEXT: .byte	4 | 
 | ; CHECK-NEXT: .byte	0 | 
 | ; CHECK-NEXT: .short	8 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	0 | 
 | ; Constant(0) | 
 | ; CHECK-NEXT: .byte	4 | 
 | ; CHECK-NEXT: .byte	0 | 
 | ; CHECK-NEXT: .short	8 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	0 | 
 | ; Constant(0) | 
 | ; CHECK-NEXT: .byte	4 | 
 | ; CHECK-NEXT: .byte	0 | 
 | ; CHECK-NEXT: .short	8 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	0 | 
 | ; Indirect | 
 | ; CHECK-NEXT: .byte	3 | 
 | ; CHECK-NEXT: .byte	0 | 
 | ; CHECK-NEXT: .short	3200 | 
 | ; CHECK-NEXT: .short	7 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	0 | 
 | ; Indirect | 
 | ; CHECK-NEXT: .byte	3 | 
 | ; CHECK-NEXT: .byte	0 | 
 | ; CHECK-NEXT: .short	3200 | 
 | ; CHECK-NEXT: .short	7 | 
 | ; CHECK-NEXT: .short	0 | 
 | ; CHECK-NEXT: .long	0 | 
 | ; Padding | 
 | ; CHECK-NEXT: .p2align	3 | 
 |   %tok = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 4242, i32 0, ptr elementtype(void ()) @do_safepoint, i32 0, i32 0, i32 0, i32 0) ["gc-live"(<400 x ptr addrspace(1)> %obj)] | 
 |   %obj.r = call coldcc <400 x ptr addrspace(1)> @llvm.experimental.gc.relocate.v400p1(token %tok, i32 0, i32 0) | 
 |   ret <400 x ptr addrspace(1)> %obj.r | 
 | } | 
 |  | 
 | declare void @do_safepoint() | 
 |  | 
 | declare token @llvm.experimental.gc.statepoint.p0(i64, i32, ptr, i32, i32, ...) | 
 | declare <400 x ptr addrspace(1)> @llvm.experimental.gc.relocate.v400p1(token, i32, i32) |