brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.5 KiB · 34dbc21 Raw
277 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs < %s 2>&1 | FileCheck %s3 4target triple = "x86_64-pc-linux-gnu"5 6declare void @"some_call"(ptr addrspace(1))7declare ptr addrspace(1) @"some_other_call"(ptr addrspace(1))8 9declare i32 @"personality_function"()10 11define ptr addrspace(1) @test_basic(ptr addrspace(1) %obj,12; CHECK-LABEL: test_basic:13; CHECK:       # %bb.0: # %entry14; CHECK-NEXT:    subq $24, %rsp15; CHECK-NEXT:    .cfi_def_cfa_offset 3216; CHECK-NEXT:    movq %rdi, {{[0-9]+}}(%rsp)17; CHECK-NEXT:    movq %rsi, {{[0-9]+}}(%rsp)18; CHECK-NEXT:  .Ltmp0:19; CHECK-NEXT:    callq some_call@PLT20; CHECK-NEXT:  .Ltmp3:21; CHECK-NEXT:  .Ltmp1:22; CHECK-NEXT:  # %bb.1: # %invoke_safepoint_normal_dest23; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %rax24; CHECK-NEXT:    addq $24, %rsp25; CHECK-NEXT:    .cfi_def_cfa_offset 826; CHECK-NEXT:    retq27; CHECK-NEXT:  .LBB0_2: # %exceptional_return28; CHECK-NEXT:    .cfi_def_cfa_offset 3229; CHECK-NEXT:  .Ltmp2:30; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %rax31; CHECK-NEXT:    addq $24, %rsp32; CHECK-NEXT:    .cfi_def_cfa_offset 833; CHECK-NEXT:    retq34                                     ptr addrspace(1) %obj1)35gc "statepoint-example" personality ptr @"personality_function" {36entry:37  %0 = invoke token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void (ptr addrspace(1))) @some_call, i32 1, i32 0, ptr addrspace(1) %obj, i32 0, i32 0) ["gc-live" (ptr addrspace(1) %obj, ptr addrspace(1) %obj1), "deopt" (i32 0, i32 -1, i32 0, i32 0, i32 0)]38          to label %invoke_safepoint_normal_dest unwind label %exceptional_return39 40invoke_safepoint_normal_dest:41  %obj.relocated = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %0, i32 0, i32 0)42  %obj1.relocated = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %0, i32 1, i32 1)43  br label %normal_return44 45normal_return:46  ret ptr addrspace(1) %obj.relocated47 48exceptional_return:49  %landing_pad = landingpad token50          cleanup51  %obj.relocated1 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %landing_pad, i32 0, i32 0)52  %obj1.relocated1 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %landing_pad, i32 1, i32 1)53  ret ptr addrspace(1) %obj1.relocated154}55; CHECK-LABEL: GCC_except_table{{[0-9]+}}:56; CHECK: .uleb128  .Ltmp{{[0-9]+}}-.Ltmp{{[0-9]+}}57; CHECK: .uleb128  .Ltmp{{[0-9]+}}-.Lfunc_begin{{[0-9]+}}58; CHECK: .byte  059; CHECK: .p2align 460 61define ptr addrspace(1) @test_result(ptr addrspace(1) %obj,62; CHECK-LABEL: test_result:63; CHECK:       # %bb.0: # %entry64; CHECK-NEXT:    pushq %rax65; CHECK-NEXT:    .cfi_def_cfa_offset 1666; CHECK-NEXT:    movq %rdi, (%rsp)67; CHECK-NEXT:  .Ltmp4:68; CHECK-NEXT:    callq some_other_call@PLT69; CHECK-NEXT:  .Ltmp7:70; CHECK-NEXT:  .Ltmp5:71; CHECK-NEXT:  # %bb.1: # %normal_return72; CHECK-NEXT:    popq %rcx73; CHECK-NEXT:    .cfi_def_cfa_offset 874; CHECK-NEXT:    retq75; CHECK-NEXT:  .LBB1_2: # %exceptional_return76; CHECK-NEXT:    .cfi_def_cfa_offset 1677; CHECK-NEXT:  .Ltmp6:78; CHECK-NEXT:    movq (%rsp), %rax79; CHECK-NEXT:    popq %rcx80; CHECK-NEXT:    .cfi_def_cfa_offset 881; CHECK-NEXT:    retq82                                      ptr addrspace(1) %obj1)83  gc "statepoint-example" personality ptr @personality_function {84entry:85  %0 = invoke token (i64, i32, ptr addrspace(1) (ptr addrspace(1))*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr addrspace(1) (ptr addrspace(1))* elementtype(ptr addrspace(1) (ptr addrspace(1))) @some_other_call, i32 1, i32 0, ptr addrspace(1) %obj, i32 0, i32 0) ["gc-live"(ptr addrspace(1) %obj, ptr addrspace(1) %obj1)]86          to label %normal_return unwind label %exceptional_return87 88normal_return:89  %ret_val = call ptr addrspace(1) @llvm.experimental.gc.result.p1(token %0)90  ret ptr addrspace(1) %ret_val91 92exceptional_return:93  %landing_pad = landingpad token94          cleanup95  %obj.relocated = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %landing_pad, i32 0, i32 0)96  ret ptr addrspace(1) %obj.relocated97}98; CHECK-LABEL: GCC_except_table{{[0-9]+}}:99; CHECK: .uleb128 .Ltmp{{[0-9]+}}-.Ltmp{{[0-9]+}}100; CHECK: .uleb128 .Ltmp{{[0-9]+}}-.Lfunc_begin{{[0-9]+}}101; CHECK: .byte 0102; CHECK: .p2align 4103 104define ptr addrspace(1) @test_same_val(i1 %cond, ptr addrspace(1) %val1, ptr addrspace(1) %val2, ptr addrspace(1) %val3)105; CHECK-LABEL: test_same_val:106; CHECK:       # %bb.0: # %entry107; CHECK-NEXT:    pushq %rbx108; CHECK-NEXT:    .cfi_def_cfa_offset 16109; CHECK-NEXT:    subq $16, %rsp110; CHECK-NEXT:    .cfi_def_cfa_offset 32111; CHECK-NEXT:    .cfi_offset %rbx, -16112; CHECK-NEXT:    movl %edi, %ebx113; CHECK-NEXT:    testb $1, %bl114; CHECK-NEXT:    je .LBB2_3115; CHECK-NEXT:  # %bb.1: # %left116; CHECK-NEXT:    movq %rsi, (%rsp)117; CHECK-NEXT:    movq %rdx, {{[0-9]+}}(%rsp)118; CHECK-NEXT:  .Ltmp11:119; CHECK-NEXT:    movq %rsi, %rdi120; CHECK-NEXT:    callq some_call@PLT121; CHECK-NEXT:  .Ltmp14:122; CHECK-NEXT:  .Ltmp12:123; CHECK-NEXT:  # %bb.2: # %left.relocs124; CHECK-NEXT:    movq (%rsp), %rax125; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %rcx126; CHECK-NEXT:    jmp .LBB2_5127; CHECK-NEXT:  .LBB2_3: # %right128; CHECK-NEXT:    movq %rdx, (%rsp)129; CHECK-NEXT:    movq %rcx, {{[0-9]+}}(%rsp)130; CHECK-NEXT:  .Ltmp8:131; CHECK-NEXT:    movq %rsi, %rdi132; CHECK-NEXT:    callq some_call@PLT133; CHECK-NEXT:  .Ltmp15:134; CHECK-NEXT:  .Ltmp9:135; CHECK-NEXT:  # %bb.4: # %right.relocs136; CHECK-NEXT:    movq (%rsp), %rcx137; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %rax138; CHECK-NEXT:  .LBB2_5: # %normal_return139; CHECK-NEXT:    testb $1, %bl140; CHECK-NEXT:    cmoveq %rcx, %rax141; CHECK-NEXT:  .LBB2_6: # %normal_return142; CHECK-NEXT:    addq $16, %rsp143; CHECK-NEXT:    .cfi_def_cfa_offset 16144; CHECK-NEXT:    popq %rbx145; CHECK-NEXT:    .cfi_def_cfa_offset 8146; CHECK-NEXT:    retq147; CHECK-NEXT:  .LBB2_9: # %exceptional_return.right148; CHECK-NEXT:    .cfi_def_cfa_offset 32149; CHECK-NEXT:  .Ltmp10:150; CHECK-NEXT:    movq (%rsp), %rax151; CHECK-NEXT:    jmp .LBB2_6152; CHECK-NEXT:  .LBB2_7: # %exceptional_return.left153; CHECK-NEXT:  .Ltmp13:154; CHECK-NEXT:    movq (%rsp), %rax155; CHECK-NEXT:    jmp .LBB2_6156  gc "statepoint-example" personality ptr @"personality_function" {157entry:158  br i1 %cond, label %left, label %right159 160left:161  %sp1 = invoke token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void (ptr addrspace(1))) @some_call, i32 1, i32 0, ptr addrspace(1) %val1, i32 0, i32 0) ["gc-live"(ptr addrspace(1) %val1, ptr addrspace(1) %val2)]162           to label %left.relocs unwind label %exceptional_return.left163 164left.relocs:165  %val1.relocated = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %sp1, i32 0, i32 0)166  %val2.relocated_left = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %sp1, i32 1, i32 1)167  br label %normal_return168 169right:170  %sp2 = invoke token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void (ptr addrspace(1))) @some_call, i32 1, i32 0, ptr addrspace(1) %val1, i32 0, i32 0) ["gc-live"(ptr addrspace(1) %val2, ptr addrspace(1) %val3)]171           to label %right.relocs unwind label %exceptional_return.right172 173right.relocs:174  %val2.relocated_right = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %sp2, i32 0, i32 0)175  %val3.relocated = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %sp2, i32 1, i32 1)176  br label %normal_return177 178normal_return:179  %a1 = phi ptr addrspace(1) [%val1.relocated, %left.relocs], [%val3.relocated, %right.relocs]180  %a2 = phi ptr addrspace(1) [%val2.relocated_left, %left.relocs], [%val2.relocated_right, %right.relocs]181  %ret = select i1 %cond, ptr addrspace(1) %a1, ptr addrspace(1) %a2182  ret ptr addrspace(1) %ret183 184exceptional_return.left:185  %landing_pad = landingpad token186          cleanup187  %val.relocated2 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %landing_pad, i32 0, i32 0)188  ret ptr addrspace(1) %val.relocated2189 190exceptional_return.right:191  %landing_pad1 = landingpad token192          cleanup193  %val.relocated3 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %landing_pad1, i32 0, i32 0)194  ret ptr addrspace(1) %val.relocated3195}196 197define ptr addrspace(1) @test_null_undef(ptr addrspace(1) %val1)198; CHECK-LABEL: test_null_undef:199; CHECK:       # %bb.0: # %entry200; CHECK-NEXT:    pushq %rax201; CHECK-NEXT:    .cfi_def_cfa_offset 16202; CHECK-NEXT:  .Ltmp16:203; CHECK-NEXT:    callq some_call@PLT204; CHECK-NEXT:  .Ltmp19:205; CHECK-NEXT:  .Ltmp17:206; CHECK-NEXT:  .LBB3_1: # %normal_return207; CHECK-NEXT:    xorl %eax, %eax208; CHECK-NEXT:    popq %rcx209; CHECK-NEXT:    .cfi_def_cfa_offset 8210; CHECK-NEXT:    retq211; CHECK-NEXT:  .LBB3_2: # %exceptional_return212; CHECK-NEXT:    .cfi_def_cfa_offset 16213; CHECK-NEXT:  .Ltmp18:214; CHECK-NEXT:    jmp .LBB3_1215       gc "statepoint-example" personality ptr @"personality_function" {216entry:217  %sp1 = invoke token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void (ptr addrspace(1))) @some_call, i32 1, i32 0, ptr addrspace(1) %val1, i32 0, i32 0) ["gc-live"(ptr addrspace(1) null, ptr addrspace(1) undef)]218           to label %normal_return unwind label %exceptional_return219 220normal_return:221  %null.relocated = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %sp1, i32 0, i32 0)222  %undef.relocated = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %sp1, i32 1, i32 1)223  ret ptr addrspace(1) %null.relocated224 225exceptional_return:226  %landing_pad = landingpad token227          cleanup228  %null.relocated2 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %landing_pad, i32 0, i32 0)229  %undef.relocated2 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %landing_pad, i32 1, i32 1)230  ret ptr addrspace(1) %null.relocated2231}232 233define ptr addrspace(1) @test_alloca_and_const(ptr addrspace(1) %val1)234; CHECK-LABEL: test_alloca_and_const:235; CHECK:       # %bb.0: # %entry236; CHECK-NEXT:    pushq %rax237; CHECK-NEXT:    .cfi_def_cfa_offset 16238; CHECK-NEXT:  .Ltmp20:239; CHECK-NEXT:    callq some_call@PLT240; CHECK-NEXT:  .Ltmp23:241; CHECK-NEXT:  .Ltmp21:242; CHECK-NEXT:  # %bb.1: # %normal_return243; CHECK-NEXT:    leaq {{[0-9]+}}(%rsp), %rax244; CHECK-NEXT:    popq %rcx245; CHECK-NEXT:    .cfi_def_cfa_offset 8246; CHECK-NEXT:    retq247; CHECK-NEXT:  .LBB4_2: # %exceptional_return248; CHECK-NEXT:    .cfi_def_cfa_offset 16249; CHECK-NEXT:  .Ltmp22:250; CHECK-NEXT:    movl $15, %eax251; CHECK-NEXT:    popq %rcx252; CHECK-NEXT:    .cfi_def_cfa_offset 8253; CHECK-NEXT:    retq254       gc "statepoint-example" personality ptr @"personality_function" {255entry:256  %a = alloca i32257  %aa = addrspacecast ptr %a to ptr addrspace(1)258  %c = inttoptr i64 15 to ptr addrspace(1)259  %sp = invoke token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void (ptr addrspace(1))) @some_call, i32 1, i32 0, ptr addrspace(1) %val1, i32 0, i32 0) ["gc-live"(ptr addrspace(1) %aa, ptr addrspace(1) %c)]260           to label %normal_return unwind label %exceptional_return261 262normal_return:263  %aa.rel = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %sp, i32 0, i32 0)264  ret ptr addrspace(1) %aa.rel265 266exceptional_return:267  %landing_pad = landingpad token268          cleanup269  %aa.rel2 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %landing_pad, i32 1, i32 1)270  ret ptr addrspace(1) %aa.rel2271}272 273declare token @llvm.experimental.gc.statepoint.p0(i64, i32, ptr, i32, i32, ...)274 275declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32, i32)276declare ptr addrspace(1) @llvm.experimental.gc.result.p1(token)277