brintos

brintos / llvm-project-archived public Read only

0
0
Text · 18.0 KiB · a037282 Raw
551 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc --mtriple=loongarch64 -verify-machineinstrs < %s | FileCheck %s3;; A collection of basic functionality tests for statepoint lowering - most4;; interesting cornercases are exercised through the x86 tests.5 6%struct = type { i64, i64 }7 8declare zeroext i1 @return_i1()9declare zeroext i32 @return_i32()10declare ptr @return_i32ptr()11declare float @return_float()12declare %struct @return_struct()13declare void @varargf(i32, ...)14 15define i1 @test_i1_return() nounwind gc "statepoint-example" {16;; This is just checking that a i1 gets lowered normally when there's no extra17;; state arguments to the statepoint18; CHECK-LABEL: test_i1_return:19; CHECK:       # %bb.0: # %entry20; CHECK-NEXT:    addi.d $sp, $sp, -1621; CHECK-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill22; CHECK-NEXT:    bl return_i123; CHECK-NEXT:  .Ltmp0:24; CHECK-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload25; CHECK-NEXT:    addi.d $sp, $sp, 1626; CHECK-NEXT:    ret27entry:28  %safepoint_token = tail call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(i1 ()) @return_i1, i32 0, i32 0, i32 0, i32 0)29  %call1 = call zeroext i1 @llvm.experimental.gc.result.i1(token %safepoint_token)30  ret i1 %call131}32 33define i32 @test_i32_return() nounwind gc "statepoint-example" {34; CHECK-LABEL: test_i32_return:35; CHECK:       # %bb.0: # %entry36; CHECK-NEXT:    addi.d $sp, $sp, -1637; CHECK-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill38; CHECK-NEXT:    bl return_i3239; CHECK-NEXT:  .Ltmp1:40; CHECK-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload41; CHECK-NEXT:    addi.d $sp, $sp, 1642; CHECK-NEXT:    ret43entry:44  %safepoint_token = tail call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(i32 ()) @return_i32, i32 0, i32 0, i32 0, i32 0)45  %call1 = call zeroext i32 @llvm.experimental.gc.result.i32(token %safepoint_token)46  ret i32 %call147}48 49define ptr @test_i32ptr_return() nounwind gc "statepoint-example" {50; CHECK-LABEL: test_i32ptr_return:51; CHECK:       # %bb.0: # %entry52; CHECK-NEXT:    addi.d $sp, $sp, -1653; CHECK-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill54; CHECK-NEXT:    bl return_i32ptr55; CHECK-NEXT:  .Ltmp2:56; CHECK-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload57; CHECK-NEXT:    addi.d $sp, $sp, 1658; CHECK-NEXT:    ret59entry:60  %safepoint_token = tail call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(ptr ()) @return_i32ptr, i32 0, i32 0, i32 0, i32 0)61  %call1 = call ptr @llvm.experimental.gc.result.p0(token %safepoint_token)62  ret ptr %call163}64 65define float @test_float_return() nounwind gc "statepoint-example" {66; CHECK-LABEL: test_float_return:67; CHECK:       # %bb.0: # %entry68; CHECK-NEXT:    addi.d $sp, $sp, -1669; CHECK-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill70; CHECK-NEXT:    bl return_float71; CHECK-NEXT:  .Ltmp3:72; CHECK-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload73; CHECK-NEXT:    addi.d $sp, $sp, 1674; CHECK-NEXT:    ret75entry:76  %safepoint_token = tail call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(float ()) @return_float, i32 0, i32 0, i32 0, i32 0)77  %call1 = call float @llvm.experimental.gc.result.f32(token %safepoint_token)78  ret float %call179}80 81define %struct @test_struct_return() nounwind gc "statepoint-example" {82; CHECK-LABEL: test_struct_return:83; CHECK:       # %bb.0: # %entry84; CHECK-NEXT:    addi.d $sp, $sp, -1685; CHECK-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill86; CHECK-NEXT:    bl return_struct87; CHECK-NEXT:  .Ltmp4:88; CHECK-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload89; CHECK-NEXT:    addi.d $sp, $sp, 1690; CHECK-NEXT:    ret91entry:92  %safepoint_token = tail call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(%struct ()) @return_struct, i32 0, i32 0, i32 0, i32 0)93  %call1 = call %struct @llvm.experimental.gc.result.struct(token %safepoint_token)94  ret %struct %call195}96 97define i1 @test_relocate(ptr addrspace(1) %a) nounwind gc "statepoint-example" {98; CHECK-LABEL: test_relocate:99; CHECK:       # %bb.0: # %entry100; CHECK-NEXT:    addi.d $sp, $sp, -16101; CHECK-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill102; CHECK-NEXT:    st.d $a0, $sp, 0103; CHECK-NEXT:    bl return_i1104; CHECK-NEXT:  .Ltmp5:105; CHECK-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload106; CHECK-NEXT:    addi.d $sp, $sp, 16107; CHECK-NEXT:    ret108entry:109  %safepoint_token = tail call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(i1 ()) @return_i1, i32 0, i32 0, i32 0, i32 0) ["gc-live" (ptr addrspace(1) %a)]110  %call1 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %safepoint_token,  i32 0, i32 0)111  %call2 = call zeroext i1 @llvm.experimental.gc.result.i1(token %safepoint_token)112  ret i1 %call2113}114 115define void @test_void_vararg() nounwind gc "statepoint-example" {116; CHECK-LABEL: test_void_vararg:117; CHECK:       # %bb.0: # %entry118; CHECK-NEXT:    addi.d $sp, $sp, -16119; CHECK-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill120; CHECK-NEXT:    ori $a0, $zero, 42121; CHECK-NEXT:    ori $a1, $zero, 43122; CHECK-NEXT:    bl varargf123; CHECK-NEXT:  .Ltmp6:124; CHECK-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload125; CHECK-NEXT:    addi.d $sp, $sp, 16126; CHECK-NEXT:    ret127entry:128  %safepoint_token = tail call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void (i32, ...)) @varargf, i32 2, i32 0, i32 42, i32 43, i32 0, i32 0)129  ;; if we try to use the result from a statepoint wrapping a130  ;; non-void-returning varargf, we will experience a crash.131  ret void132}133 134define i1 @test_i1_return_patchable() nounwind gc "statepoint-example" {135;; A patchable variant of test_i1_return136; CHECK-LABEL: test_i1_return_patchable:137; CHECK:       # %bb.0: # %entry138; CHECK-NEXT:    addi.d $sp, $sp, -16139; CHECK-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill140; CHECK-NEXT:    nop141; CHECK-NEXT:  .Ltmp7:142; CHECK-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload143; CHECK-NEXT:    addi.d $sp, $sp, 16144; CHECK-NEXT:    ret145entry:146  %safepoint_token = tail call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 4, ptr elementtype(i1 ()) null, i32 0, i32 0, i32 0, i32 0)147  %call1 = call zeroext i1 @llvm.experimental.gc.result.i1(token %safepoint_token)148  ret i1 %call1149}150 151declare void @consume(ptr addrspace(1) %obj)152 153define i1 @test_cross_bb(ptr addrspace(1) %a, i1 %external_cond) nounwind gc "statepoint-example" {154; CHECK-LABEL: test_cross_bb:155; CHECK:       # %bb.0: # %entry156; CHECK-NEXT:    addi.d $sp, $sp, -32157; CHECK-NEXT:    st.d $ra, $sp, 24 # 8-byte Folded Spill158; CHECK-NEXT:    st.d $fp, $sp, 16 # 8-byte Folded Spill159; CHECK-NEXT:    andi $fp, $a1, 1160; CHECK-NEXT:    st.d $a0, $sp, 8161; CHECK-NEXT:    bl return_i1162; CHECK-NEXT:  .Ltmp8:163; CHECK-NEXT:    beqz $fp, .LBB8_2164; CHECK-NEXT:  # %bb.1: # %left165; CHECK-NEXT:    ld.d $a1, $sp, 8166; CHECK-NEXT:    move $fp, $a0167; CHECK-NEXT:    move $a0, $a1168; CHECK-NEXT:    pcaddu18i $ra, %call36(consume)169; CHECK-NEXT:    jirl $ra, $ra, 0170; CHECK-NEXT:    move $a0, $fp171; CHECK-NEXT:    b .LBB8_3172; CHECK-NEXT:  .LBB8_2: # %right173; CHECK-NEXT:    ori $a0, $zero, 1174; CHECK-NEXT:  .LBB8_3: # %right175; CHECK-NEXT:    ld.d $fp, $sp, 16 # 8-byte Folded Reload176; CHECK-NEXT:    ld.d $ra, $sp, 24 # 8-byte Folded Reload177; CHECK-NEXT:    addi.d $sp, $sp, 32178; CHECK-NEXT:    ret179entry:180  %safepoint_token = tail call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(i1 ()) @return_i1, i32 0, i32 0, i32 0, i32 0) ["gc-live" (ptr addrspace(1) %a)]181  br i1 %external_cond, label %left, label %right182 183left:184  %call1 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %safepoint_token,  i32 0, i32 0)185  %call2 = call zeroext i1 @llvm.experimental.gc.result.i1(token %safepoint_token)186  call void @consume(ptr addrspace(1) %call1)187  ret i1 %call2188 189right:190  ret i1 true191}192 193%struct2 = type { i64, i64, i64 }194 195declare void @consume_attributes(i32, ptr nest, i32, ptr byval(%struct2))196 197define void @test_attributes(ptr byval(%struct2) %s) nounwind gc "statepoint-example" {198; CHECK-LABEL: test_attributes:199; CHECK:       # %bb.0: # %entry200; CHECK-NEXT:    addi.d $sp, $sp, -32201; CHECK-NEXT:    st.d $ra, $sp, 24 # 8-byte Folded Spill202; CHECK-NEXT:    ld.d $a1, $a0, 16203; CHECK-NEXT:    st.d $a1, $sp, 16204; CHECK-NEXT:    vld $vr0, $a0, 0205; CHECK-NEXT:    vst $vr0, $sp, 0206; CHECK-NEXT:    ori $a0, $zero, 42207; CHECK-NEXT:    ori $a2, $zero, 17208; CHECK-NEXT:    addi.d $a3, $sp, 0209; CHECK-NEXT:    move $a1, $zero210; CHECK-NEXT:    bl consume_attributes211; CHECK-NEXT:  .Ltmp9:212; CHECK-NEXT:    ld.d $ra, $sp, 24 # 8-byte Folded Reload213; CHECK-NEXT:    addi.d $sp, $sp, 32214; CHECK-NEXT:    ret215entry:216;; We call a function that has a nest argument and a byval argument.217  %statepoint_token = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void (i32, ptr, i32, ptr)) @consume_attributes, i32 4, i32 0, i32 42, ptr nest null, i32 17, ptr byval(%struct2) %s, i32 0, i32 0)218  ret void219}220 221; CHECK-LABEL: .section .llvm_stackmaps222; CHECK:       __LLVM_StackMaps:223; CHECK-NEXT:    .byte 3224; CHECK-NEXT:    .byte 0225; CHECK-NEXT:    .half 0226; CHECK-NEXT:    .word 10227; CHECK-NEXT:    .word 0228; CHECK-NEXT:    .word 10229; CHECK-NEXT:    .dword test_i1_return230; CHECK-NEXT:    .dword 16231; CHECK-NEXT:    .dword 1232; CHECK-NEXT:    .dword test_i32_return233; CHECK-NEXT:    .dword 16234; CHECK-NEXT:    .dword 1235; CHECK-NEXT:    .dword test_i32ptr_return236; CHECK-NEXT:    .dword 16237; CHECK-NEXT:    .dword 1238; CHECK-NEXT:    .dword test_float_return239; CHECK-NEXT:    .dword 16240; CHECK-NEXT:    .dword 1241; CHECK-NEXT:    .dword test_struct_return242; CHECK-NEXT:    .dword 16243; CHECK-NEXT:    .dword 1244; CHECK-NEXT:    .dword test_relocate245; CHECK-NEXT:    .dword 16246; CHECK-NEXT:    .dword 1247; CHECK-NEXT:    .dword test_void_vararg248; CHECK-NEXT:    .dword 16249; CHECK-NEXT:    .dword 1250; CHECK-NEXT:    .dword test_i1_return_patchable251; CHECK-NEXT:    .dword 16252; CHECK-NEXT:    .dword 1253; CHECK-NEXT:    .dword test_cross_bb254; CHECK-NEXT:    .dword 32255; CHECK-NEXT:    .dword 1256; CHECK-NEXT:    .dword test_attributes257; CHECK-NEXT:    .dword 32258; CHECK-NEXT:    .dword 1259; CHECK-NEXT:    .dword 0260; CHECK-NEXT:    .word .Ltmp0-test_i1_return261; CHECK-NEXT:    .half 0262; CHECK-NEXT:    .half 3263; CHECK-NEXT:    .byte 4264; CHECK-NEXT:    .byte 0265; CHECK-NEXT:    .half 8266; CHECK-NEXT:    .half 0267; CHECK-NEXT:    .half 0268; CHECK-NEXT:    .word 0269; CHECK-NEXT:    .byte 4270; CHECK-NEXT:    .byte 0271; CHECK-NEXT:    .half 8272; CHECK-NEXT:    .half 0273; CHECK-NEXT:    .half 0274; CHECK-NEXT:    .word 0275; CHECK-NEXT:    .byte 4276; CHECK-NEXT:    .byte 0277; CHECK-NEXT:    .half 8278; CHECK-NEXT:    .half 0279; CHECK-NEXT:    .half 0280; CHECK-NEXT:    .word 0281; CHECK-NEXT:    .p2align 3, 0x0282; CHECK-NEXT:    .half 0283; CHECK-NEXT:    .half 0284; CHECK-NEXT:    .p2align 3, 0x0285; CHECK-NEXT:    .dword 0286; CHECK-NEXT:    .word .Ltmp1-test_i32_return287; CHECK-NEXT:    .half 0288; CHECK-NEXT:    .half 3289; CHECK-NEXT:    .byte 4290; CHECK-NEXT:    .byte 0291; CHECK-NEXT:    .half 8292; CHECK-NEXT:    .half 0293; CHECK-NEXT:    .half 0294; CHECK-NEXT:    .word 0295; CHECK-NEXT:    .byte 4296; CHECK-NEXT:    .byte 0297; CHECK-NEXT:    .half 8298; CHECK-NEXT:    .half 0299; CHECK-NEXT:    .half 0300; CHECK-NEXT:    .word 0301; CHECK-NEXT:    .byte 4302; CHECK-NEXT:    .byte 0303; CHECK-NEXT:    .half 8304; CHECK-NEXT:    .half 0305; CHECK-NEXT:    .half 0306; CHECK-NEXT:    .word 0307; CHECK-NEXT:    .p2align 3, 0x0308; CHECK-NEXT:    .half 0309; CHECK-NEXT:    .half 0310; CHECK-NEXT:    .p2align 3, 0x0311; CHECK-NEXT:    .dword 0312; CHECK-NEXT:    .word .Ltmp2-test_i32ptr_return313; CHECK-NEXT:    .half 0314; CHECK-NEXT:    .half 3315; CHECK-NEXT:    .byte 4316; CHECK-NEXT:    .byte 0317; CHECK-NEXT:    .half 8318; CHECK-NEXT:    .half 0319; CHECK-NEXT:    .half 0320; CHECK-NEXT:    .word 0321; CHECK-NEXT:    .byte 4322; CHECK-NEXT:    .byte 0323; CHECK-NEXT:    .half 8324; CHECK-NEXT:    .half 0325; CHECK-NEXT:    .half 0326; CHECK-NEXT:    .word 0327; CHECK-NEXT:    .byte 4328; CHECK-NEXT:    .byte 0329; CHECK-NEXT:    .half 8330; CHECK-NEXT:    .half 0331; CHECK-NEXT:    .half 0332; CHECK-NEXT:    .word 0333; CHECK-NEXT:    .p2align 3, 0x0334; CHECK-NEXT:    .half 0335; CHECK-NEXT:    .half 0336; CHECK-NEXT:    .p2align 3, 0x0337; CHECK-NEXT:    .dword 0338; CHECK-NEXT:    .word .Ltmp3-test_float_return339; CHECK-NEXT:    .half 0340; CHECK-NEXT:    .half 3341; CHECK-NEXT:    .byte 4342; CHECK-NEXT:    .byte 0343; CHECK-NEXT:    .half 8344; CHECK-NEXT:    .half 0345; CHECK-NEXT:    .half 0346; CHECK-NEXT:    .word 0347; CHECK-NEXT:    .byte 4348; CHECK-NEXT:    .byte 0349; CHECK-NEXT:    .half 8350; CHECK-NEXT:    .half 0351; CHECK-NEXT:    .half 0352; CHECK-NEXT:    .word 0353; CHECK-NEXT:    .byte 4354; CHECK-NEXT:    .byte 0355; CHECK-NEXT:    .half 8356; CHECK-NEXT:    .half 0357; CHECK-NEXT:    .half 0358; CHECK-NEXT:    .word 0359; CHECK-NEXT:    .p2align 3, 0x0360; CHECK-NEXT:    .half 0361; CHECK-NEXT:    .half 0362; CHECK-NEXT:    .p2align 3, 0x0363; CHECK-NEXT:    .dword 0364; CHECK-NEXT:    .word .Ltmp4-test_struct_return365; CHECK-NEXT:    .half 0366; CHECK-NEXT:    .half 3367; CHECK-NEXT:    .byte 4368; CHECK-NEXT:    .byte 0369; CHECK-NEXT:    .half 8370; CHECK-NEXT:    .half 0371; CHECK-NEXT:    .half 0372; CHECK-NEXT:    .word 0373; CHECK-NEXT:    .byte 4374; CHECK-NEXT:    .byte 0375; CHECK-NEXT:    .half 8376; CHECK-NEXT:    .half 0377; CHECK-NEXT:    .half 0378; CHECK-NEXT:    .word 0379; CHECK-NEXT:    .byte 4380; CHECK-NEXT:    .byte 0381; CHECK-NEXT:    .half 8382; CHECK-NEXT:    .half 0383; CHECK-NEXT:    .half 0384; CHECK-NEXT:    .word 0385; CHECK-NEXT:    .p2align 3, 0x0386; CHECK-NEXT:    .half 0387; CHECK-NEXT:    .half 0388; CHECK-NEXT:    .p2align 3, 0x0389; CHECK-NEXT:    .dword 0390; CHECK-NEXT:    .word .Ltmp5-test_relocate391; CHECK-NEXT:    .half 0392; CHECK-NEXT:    .half 5393; CHECK-NEXT:    .byte 4394; CHECK-NEXT:    .byte 0395; CHECK-NEXT:    .half 8396; CHECK-NEXT:    .half 0397; CHECK-NEXT:    .half 0398; CHECK-NEXT:    .word 0399; CHECK-NEXT:    .byte 4400; CHECK-NEXT:    .byte 0401; CHECK-NEXT:    .half 8402; CHECK-NEXT:    .half 0403; CHECK-NEXT:    .half 0404; CHECK-NEXT:    .word 0405; CHECK-NEXT:    .byte 4406; CHECK-NEXT:    .byte 0407; CHECK-NEXT:    .half 8408; CHECK-NEXT:    .half 0409; CHECK-NEXT:    .half 0410; CHECK-NEXT:    .word 0411; CHECK-NEXT:    .byte 3412; CHECK-NEXT:    .byte 0413; CHECK-NEXT:    .half 8414; CHECK-NEXT:    .half 3415; CHECK-NEXT:    .half 0416; CHECK-NEXT:    .word 0417; CHECK-NEXT:    .byte 3418; CHECK-NEXT:    .byte 0419; CHECK-NEXT:    .half 8420; CHECK-NEXT:    .half 3421; CHECK-NEXT:    .half 0422; CHECK-NEXT:    .word 0423; CHECK-NEXT:    .p2align 3, 0x0424; CHECK-NEXT:    .half 0425; CHECK-NEXT:    .half 0426; CHECK-NEXT:    .p2align 3, 0x0427; CHECK-NEXT:    .dword 0428; CHECK-NEXT:    .word .Ltmp6-test_void_vararg429; CHECK-NEXT:    .half 0430; CHECK-NEXT:    .half 3431; CHECK-NEXT:    .byte 4432; CHECK-NEXT:    .byte 0433; CHECK-NEXT:    .half 8434; CHECK-NEXT:    .half 0435; CHECK-NEXT:    .half 0436; CHECK-NEXT:    .word 0437; CHECK-NEXT:    .byte 4438; CHECK-NEXT:    .byte 0439; CHECK-NEXT:    .half 8440; CHECK-NEXT:    .half 0441; CHECK-NEXT:    .half 0442; CHECK-NEXT:    .word 0443; CHECK-NEXT:    .byte 4444; CHECK-NEXT:    .byte 0445; CHECK-NEXT:    .half 8446; CHECK-NEXT:    .half 0447; CHECK-NEXT:    .half 0448; CHECK-NEXT:    .word 0449; CHECK-NEXT:    .p2align 3, 0x0450; CHECK-NEXT:    .half 0451; CHECK-NEXT:    .half 0452; CHECK-NEXT:    .p2align 3, 0x0453; CHECK-NEXT:    .dword 0454; CHECK-NEXT:    .word .Ltmp7-test_i1_return_patchable455; CHECK-NEXT:    .half 0456; CHECK-NEXT:    .half 3457; CHECK-NEXT:    .byte 4458; CHECK-NEXT:    .byte 0459; CHECK-NEXT:    .half 8460; CHECK-NEXT:    .half 0461; CHECK-NEXT:    .half 0462; CHECK-NEXT:    .word 0463; CHECK-NEXT:    .byte 4464; CHECK-NEXT:    .byte 0465; CHECK-NEXT:    .half 8466; CHECK-NEXT:    .half 0467; CHECK-NEXT:    .half 0468; CHECK-NEXT:    .word 0469; CHECK-NEXT:    .byte 4470; CHECK-NEXT:    .byte 0471; CHECK-NEXT:    .half 8472; CHECK-NEXT:    .half 0473; CHECK-NEXT:    .half 0474; CHECK-NEXT:    .word 0475; CHECK-NEXT:    .p2align 3, 0x0476; CHECK-NEXT:    .half 0477; CHECK-NEXT:    .half 0478; CHECK-NEXT:    .p2align 3, 0x0479; CHECK-NEXT:    .dword 0480; CHECK-NEXT:    .word .Ltmp8-test_cross_bb481; CHECK-NEXT:    .half 0482; CHECK-NEXT:    .half 5483; CHECK-NEXT:    .byte 4484; CHECK-NEXT:    .byte 0485; CHECK-NEXT:    .half 8486; CHECK-NEXT:    .half 0487; CHECK-NEXT:    .half 0488; CHECK-NEXT:    .word 0489; CHECK-NEXT:    .byte 4490; CHECK-NEXT:    .byte 0491; CHECK-NEXT:    .half 8492; CHECK-NEXT:    .half 0493; CHECK-NEXT:    .half 0494; CHECK-NEXT:    .word 0495; CHECK-NEXT:    .byte 4496; CHECK-NEXT:    .byte 0497; CHECK-NEXT:    .half 8498; CHECK-NEXT:    .half 0499; CHECK-NEXT:    .half 0500; CHECK-NEXT:    .word 0501; CHECK-NEXT:    .byte 3502; CHECK-NEXT:    .byte 0503; CHECK-NEXT:    .half 8504; CHECK-NEXT:    .half 3505; CHECK-NEXT:    .half 0506; CHECK-NEXT:    .word 8507; CHECK-NEXT:    .byte 3508; CHECK-NEXT:    .byte 0509; CHECK-NEXT:    .half 8510; CHECK-NEXT:    .half 3511; CHECK-NEXT:    .half 0512; CHECK-NEXT:    .word 8513; CHECK-NEXT:    .p2align 3, 0x0514; CHECK-NEXT:    .half 0515; CHECK-NEXT:    .half 0516; CHECK-NEXT:    .p2align 3, 0x0517; CHECK-NEXT:    .dword 0518; CHECK-NEXT:    .word .Ltmp9-test_attributes519; CHECK-NEXT:    .half 0520; CHECK-NEXT:    .half 3521; CHECK-NEXT:    .byte 4522; CHECK-NEXT:    .byte 0523; CHECK-NEXT:    .half 8524; CHECK-NEXT:    .half 0525; CHECK-NEXT:    .half 0526; CHECK-NEXT:    .word 0527; CHECK-NEXT:    .byte 4528; CHECK-NEXT:    .byte 0529; CHECK-NEXT:    .half 8530; CHECK-NEXT:    .half 0531; CHECK-NEXT:    .half 0532; CHECK-NEXT:    .word 0533; CHECK-NEXT:    .byte 4534; CHECK-NEXT:    .byte 0535; CHECK-NEXT:    .half 8536; CHECK-NEXT:    .half 0537; CHECK-NEXT:    .half 0538; CHECK-NEXT:    .word 0539; CHECK-NEXT:    .p2align 3, 0x0540; CHECK-NEXT:    .half 0541; CHECK-NEXT:    .half 0542; CHECK-NEXT:    .p2align 3, 0x0543 544declare token @llvm.experimental.gc.statepoint.p0(i64, i32, ptr, i32, i32, ...)545declare i1 @llvm.experimental.gc.result.i1(token)546declare i32 @llvm.experimental.gc.result.i32(token)547declare ptr @llvm.experimental.gc.result.p0(token)548declare float @llvm.experimental.gc.result.f32(token)549declare %struct @llvm.experimental.gc.result.struct(token)550declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32, i32)551