108 lines · plain
1; RUN: llc -mtriple=powerpc %s -o - | FileCheck %s --check-prefixes=CHECK,PPC322; RUN: llc -mtriple=powerpc64 %s -o - | FileCheck %s --check-prefixes=CHECK,PPC643; RUN: llc -mtriple=powerpc64le %s -o - | FileCheck %s --check-prefix=PPC64LE4 5@a = global i32 0, align 46 7define void @f0() {8; CHECK-LABEL: f0:9; CHECK-NOT: nop10; CHECK: # %bb.0:11; CHECK-NEXT: blr12; CHECK-NOT: .section __patchable_function_entries13;14; PPC64LE-LABEL: f0:15; PPC64LE-NOT: nop16; PPC64LE: # %bb.0:17; PPC64LE-NEXT: blr18; PPC64LE-NOT: .section __patchable_function_entries19 ret void20}21 22define void @f1() "patchable-function-entry"="0" {23; CHECK-LABEL: f1:24; CHECK-NOT: nop25; CHECK: # %bb.0:26; CHECK-NEXT: blr27; CHECK-NOT: .section __patchable_function_entries28;29; PPC64LE-LABEL: f1:30; PPC64LE: # %bb.0:31; PPC64LE-NEXT: .Ltmp0:32; PPC64LE-NEXT: b .Ltmp133; PPC64LE-NEXT: nop34; PPC64LE-NEXT: std 0, -8(1)35; PPC64LE-NEXT: mflr 036; PPC64LE-NEXT: bl __xray_FunctionEntry37; PPC64LE-NEXT: nop38; PPC64LE-NEXT: mtlr 039; PPC64LE-NEXT: .Ltmp1:40; PPC64LE-NEXT: blr41; PPC64LE-NOT: .section __patchable_function_entries42; PPC64LE: .section xray_instr_map43; PPC64LE: .section xray_fn_idx44 ret void45}46 47define void @f2() "patchable-function-entry"="1" {48; CHECK-LABEL: f2:49; CHECK-LABEL-NEXT: .Lfunc_begin2:50; CHECK: # %bb.0:51; CHECK-NEXT: nop52; CHECK-NEXT: blr53; CHECK: .section __patchable_function_entries54; PPC32: .p2align 2, 0x055; PPC64: .p2align 3, 0x056; PPC32-NEXT: .long .Lfunc_begin257; PPC64-NEXT: .quad .Lfunc_begin258;59; PPC64LE-LABEL: f2:60; PPC64LE-LABEL-NEXT: .Lfunc_begin2:61; PPC64LE: # %bb.0:62; PPC64LE-NEXT: nop63; PPC64LE-NEXT: blr64; PPC64LE: .section __patchable_function_entries65; PPC64LE: .p2align 3, 0x066; PPC64LE-NEXT: .quad .Lfunc_begin267; PPC64LE-NOT: .section xray_instr_map68; PPC64LE-NOT: .section xray_fn_idx69 ret void70}71 72define i32 @f3() "patchable-function-entry"="1" "patchable-function-prefix"="2" {73; CHECK-LABEL: .Ltmp0:74; CHECK-COUNT-2: nop75; CHECK-LABEL: f3:76; CHECK: # %bb.0:77; CHECK-NEXT: nop78; PPC32: lis 3, a@ha79; PPC32-NEXT: lwz 3, a@l(3)80; PPC64: addis 3, 2, .LC0@toc@ha81; PPC64-NEXT: ld 3, .LC0@toc@l(3)82; PPC64-NEXT: lwz 3, 0(3)83; CHECK: blr84; CHECK: .section __patchable_function_entries85; PPC32: .p2align 2, 0x086; PPC64: .p2align 3, 0x087; PPC32-NEXT: .long .Ltmp088; PPC64-NEXT: .quad .Ltmp089;90; PC64LE-LABEL: .Ltmp3:91; PC64LE-COUNT-2: nop92; PC64LE-LABEL: f3:93; PC64LE: # %bb.0:94; PC64LE-NEXT: nop95; PC64LE: addis 3, 2, .LC0@toc@ha96; PC64LE-NEXT: ld 3, .LC0@toc@l(3)97; PC64LE-NEXT: lwz 3, 0(3)98; PC64LE: blr99; PC64LE: .section __patchable_function_entries100; PPC64LE: .p2align 3, 0x0101; PPC64LE-NEXT: .quad .Ltmp3102; PC64LE-NOT: .section xray_instr_map103; PC64LE-NOT: .section xray_fn_idx104entry:105 %0 = load i32, ptr @a, align 4106 ret i32 %0107}108