173 lines · plain
1; RUN: llc < %s -mtriple="x86_64-pc-linux-gnu" | FileCheck %s2 3declare void @callee()4 5define void @f_0(<1024 x i64> %val) {6; CHECK: .quad 28824000157; CHECK-NEXT: .long .Ltmp0-f_08; CHECK-NEXT: .short 09; CHECK-NEXT: .short 410; Constant(0)11; CHECK-NEXT: .byte 412; CHECK-NEXT: .byte 0 13; CHECK-NEXT: .short 814; CHECK-NEXT: .short 015; CHECK-NEXT: .short 016; CHECK-NEXT: .long 017; Constant(0)18; CHECK-NEXT: .byte 419; CHECK-NEXT: .byte 020; CHECK-NEXT: .short 821; CHECK-NEXT: .short 022; CHECK-NEXT: .short 023; CHECK-NEXT: .long 024; Constant(1)25; CHECK-NEXT: .byte 426; CHECK-NEXT: .byte 027; CHECK-NEXT: .short 828; CHECK-NEXT: .short 029; CHECK-NEXT: .short 030; CHECK-NEXT: .long 131; Indirect32; CHECK-NEXT: .byte 333; CHECK-NEXT: .byte 034; CHECK-NEXT: .short 819235; CHECK-NEXT: .short 736; CHECK-NEXT: .short 037; CHECK-NEXT: .long 038; Padding39; CHECK-NEXT: .p2align 340 call void @callee() [ "deopt"(<1024 x i64> %val) ]41 ret void42}43 44define void @f_1(<1024 x ptr> %val) {45; CHECK: .quad 288240001546; CHECK-NEXT: .long .Ltmp1-f_147; CHECK-NEXT: .short 048; CHECK-NEXT: .short 449; Constant(0)50; CHECK-NEXT: .byte 451; CHECK-NEXT: .byte 052; CHECK-NEXT: .short 853; CHECK-NEXT: .short 054; CHECK-NEXT: .short 055; CHECK-NEXT: .long 056; Constant(0)57; CHECK-NEXT: .byte 458; CHECK-NEXT: .byte 059; CHECK-NEXT: .short 860; CHECK-NEXT: .short 061; CHECK-NEXT: .short 062; CHECK-NEXT: .long 063; Constant(1)64; CHECK-NEXT: .byte 465; CHECK-NEXT: .byte 066; CHECK-NEXT: .short 867; CHECK-NEXT: .short 068; CHECK-NEXT: .short 069; CHECK-NEXT: .long 170; Indirect71; CHECK-NEXT: .byte 372; CHECK-NEXT: .byte 073; CHECK-NEXT: .short 819274; CHECK-NEXT: .short 775; CHECK-NEXT: .short 076; CHECK-NEXT: .long 077; Padding78; CHECK-NEXT: .p2align 379 call void @callee() [ "deopt"(<1024 x ptr> %val) ]80 ret void81}82 83define void @f_2(<99 x ptr> %val) {84; CHECK: .quad 288240001585; CHECK-NEXT: .long .Ltmp2-f_286; CHECK-NEXT: .short 087; CHECK-NEXT: .short 488; Constant(0)89; CHECK-NEXT: .byte 490; CHECK-NEXT: .byte 091; CHECK-NEXT: .short 892; CHECK-NEXT: .short 093; CHECK-NEXT: .short 094; CHECK-NEXT: .long 095; Constant(0)96; CHECK-NEXT: .byte 497; CHECK-NEXT: .byte 098; CHECK-NEXT: .short 899; CHECK-NEXT: .short 0100; CHECK-NEXT: .short 0101; CHECK-NEXT: .long 0102; Constant(1)103; CHECK-NEXT: .byte 4104; CHECK-NEXT: .byte 0105; CHECK-NEXT: .short 8106; CHECK-NEXT: .short 0107; CHECK-NEXT: .short 0108; CHECK-NEXT: .long 1109; Indirect110; CHECK-NEXT: .byte 3111; CHECK-NEXT: .byte 0112; CHECK-NEXT: .short 792113; CHECK-NEXT: .short 7114; CHECK-NEXT: .short 0115; CHECK-NEXT: .long 0116; CHECK-NEXT: .p2align 3117 call void @callee() [ "deopt"(<99 x ptr> %val) ]118 ret void119}120 121 122define <400 x ptr addrspace(1)> @f_3(<400 x ptr addrspace(1)> %obj) gc "statepoint-example" {123; CHECK: .quad 4242124; CHECK-NEXT: .long .Ltmp3-f_3125; CHECK-NEXT: .short 0126; CHECK-NEXT: .short 5127; Constant(0)128; CHECK-NEXT: .byte 4129; CHECK-NEXT: .byte 0130; CHECK-NEXT: .short 8131; CHECK-NEXT: .short 0132; CHECK-NEXT: .short 0133; CHECK-NEXT: .long 0134; Constant(0)135; CHECK-NEXT: .byte 4136; CHECK-NEXT: .byte 0137; CHECK-NEXT: .short 8138; CHECK-NEXT: .short 0139; CHECK-NEXT: .short 0140; CHECK-NEXT: .long 0141; Constant(0)142; CHECK-NEXT: .byte 4143; CHECK-NEXT: .byte 0144; CHECK-NEXT: .short 8145; CHECK-NEXT: .short 0146; CHECK-NEXT: .short 0147; CHECK-NEXT: .long 0148; Indirect149; CHECK-NEXT: .byte 3150; CHECK-NEXT: .byte 0151; CHECK-NEXT: .short 3200152; CHECK-NEXT: .short 7153; CHECK-NEXT: .short 0154; CHECK-NEXT: .long 0155; Indirect156; CHECK-NEXT: .byte 3157; CHECK-NEXT: .byte 0158; CHECK-NEXT: .short 3200159; CHECK-NEXT: .short 7160; CHECK-NEXT: .short 0161; CHECK-NEXT: .long 0162; Padding163; CHECK-NEXT: .p2align 3164 %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)]165 %obj.r = call coldcc <400 x ptr addrspace(1)> @llvm.experimental.gc.relocate.v400p1(token %tok, i32 0, i32 0)166 ret <400 x ptr addrspace(1)> %obj.r167}168 169declare void @do_safepoint()170 171declare token @llvm.experimental.gc.statepoint.p0(i64, i32, ptr, i32, i32, ...)172declare <400 x ptr addrspace(1)> @llvm.experimental.gc.relocate.v400p1(token, i32, i32)173