brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · b066314 Raw
120 lines · plain
1; RUN: llc -mtriple=aarch64-unknown-linux-gnu -aarch64-tbz-offset-bits=4 -aarch64-cbz-offset-bits=3 < %s | FileCheck %s2 3;; Check that branch relaxation accounts for the size of xray EXIT sleds4;; Note that TAIL_CALL sleds don't exist on AArch64 and don't need a test.5define void @exit(i1 zeroext %0) nounwind "function-instrument"="xray-always" {6; CHECK-LABEL: exit:7; CHECK-NEXT:     .Lfunc_begin0:8; CHECK-NEXT:     // %bb.0:9; CHECK-NEXT:       .p2align 210; CHECK-NEXT:     .Lxray_sled_0:11; CHECK-NEXT:       b #3212; CHECK-COUNT-7:    nop13; CHECK-NOT:        nop14; CHECK:            tbnz15; CHECK-SAME:            [[FALLTHROUGH:.LBB[0-9_]+]]16; CHECK-NEXT:       b17; CHECK-SAME:         [[OUT_OF_RANGE:.LBB[0-9_]+]]18; CHECK-NEXT:     [[FALLTHROUGH]]:19; CHECK-NEXT:       bl      bar20; CHECK:            .p2align 221; CHECK-NEXT:     .Lxray_sled_1:22; CHECK-NEXT:       b #3223; CHECK-COUNT-7:    nop24; CHECK-NOT:        nop25; CHECK-NEXT:     .Ltmp1:26; CHECK-NEXT:       ret27; CHECK-NEXT:     [[OUT_OF_RANGE]]:28; CHECK-SAME:                        // %end229; CHECK-NEXT:       bl      baz30  br i1 %0, label %end1, label %end231 32end1:33  %2 = call i32 @bar()34  ret void35 36end2:37  %3 = call i32 @baz()38  ret void39}40 41;; Check that branch relaxation accounts for the size of xray EVENT sleds42define void @customevent(i1 zeroext %0, ptr nocapture noundef readonly %e1, i64 noundef %s1, ptr nocapture noundef readonly %e2, i64 noundef %s2) "function-instrument"="xray-always" {43; CHECK-LABEL: customevent:44; CHECK-NEXT:     .Lfunc_begin1:45; CHECK-NEXT:       .cfi_startproc46; CHECK-NEXT:       // %bb.0:47; CHECK-NEXT:       .p2align 248; CHECK-NEXT:     .Lxray_sled_{{[0-9]+}}:49; CHECK:            cbnz50; CHECK-SAME:           [[FALLTHROUGH_2:.LBB[0-9_]+]]51; CHECK-NEXT:       b52; CHECK-SAME:           [[OUT_OF_RANGE_2:.LBB[0-9_]+]]53; CHECK-NEXT:     [[FALLTHROUGH_2]]:54; CHECK-SAME:                        // %end155; CHECK-NEXT:     .Lxray_sled_{{[0-9]+}}:56; CHECK-NEXT:         Begin XRay custom event57; CHECK:            bl      __xray_CustomEvent58; CHECK:              End XRay custom event59; CHECK-NEXT:     [[OUT_OF_RANGE_2]]:60; CHECK-SAME:                        // %end261; CHECK-NEXT:     .Lxray_sled_{{[0-9]+}}:62; CHECK-NEXT:         Begin XRay custom event63; CHECK:            bl      __xray_CustomEvent64; CHECK:              End XRay custom event65; CHECK:          .Ltmp66; CHECK-NEXT:       ret67entry:68  br i1 %0, label %end1, label %end269 70end1:71  call void @llvm.xray.customevent(ptr %e1, i64 %s1)72  br label %end273 74end2:75  tail call void @llvm.xray.customevent(ptr %e2, i64 %s2)76  ret void77}78 79;; Check that branch relaxation accounts for the size of xray TYPED_EVENT sleds80define void @typedevent(i1 zeroext %0, i64 noundef %type, ptr nocapture noundef readonly %event, i64 noundef %size) "function-instrument"="xray-always" {81; CHECK-LABEL: typedevent:82; CHECK-NEXT:     .Lfunc_begin2:83; CHECK-NEXT:       .cfi_startproc84; CHECK-NEXT:       // %bb.0:85; CHECK-NEXT:       .p2align 286; CHECK-NEXT:     .Lxray_sled_{{[0-9]+}}:87; CHECK:            cbnz88; CHECK-SAME:           [[FALLTHROUGH_3:.LBB[0-9_]+]]89; CHECK-NEXT:       b90; CHECK-SAME:           [[OUT_OF_RANGE_3:.LBB[0-9_]+]]91; CHECK-NEXT:     [[FALLTHROUGH_3]]:92; CHECK-SAME:                        // %end193; CHECK-NEXT:     .Lxray_sled_{{[0-9]+}}:94; CHECK-NEXT:         Begin XRay typed event95; CHECK:            bl      __xray_TypedEvent96; CHECK:              End XRay typed event97; CHECK-NEXT:     [[OUT_OF_RANGE_3]]:98; CHECK-SAME:                        // %end299; CHECK-NEXT:     .Lxray_sled_{{[0-9]+}}:100; CHECK-NEXT:         Begin XRay typed event101; CHECK:            bl      __xray_TypedEvent102; CHECK:              End XRay typed event103; CHECK:          .Ltmp104; CHECK-NEXT:       ret105entry:106  br i1 %0, label %end1, label %end2107 108end1:109  call void @llvm.xray.typedevent(i64 %type, ptr %event, i64 %size)110  br label %end2111  112end2:113  tail call void @llvm.xray.typedevent(i64 %size, ptr %event, i64 %type)114  ret void115}116 117declare void @llvm.xray.customevent(ptr, i64)118declare void @llvm.xray.typedevent(i64, ptr, i64)119declare i32 @bar()120declare i32 @baz()