86 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -verify-machineinstrs -mtriple powerpc64le -mcpu=pwr9 | FileCheck %s3; RUN: llc < %s -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -vec-extabi -mcpu=pwr9 | FileCheck %s4; RUN: opt < %s -passes="default<O3>" -S -mtriple powerpc64le -mcpu=pwr9 | FileCheck %s --check-prefix=OPT5 6define i64 @raw() {7; CHECK-LABEL: raw:8; CHECK: # %bb.0: # %entry9; CHECK-NEXT: darn 3, 210; CHECK-NEXT: blr11entry:12 %0 = call i64 @llvm.ppc.darnraw()13 ret i64 %014}15 16define i64 @conditioned() {17; CHECK-LABEL: conditioned:18; CHECK: # %bb.0: # %entry19; CHECK-NEXT: darn 3, 120; CHECK-NEXT: blr21entry:22 %0 = call i64 @llvm.ppc.darn()23 ret i64 %024}25 26define signext i32 @word() {27; CHECK-LABEL: word:28; CHECK: # %bb.0: # %entry29; CHECK-NEXT: darn 3, 030; CHECK-NEXT: extsw 3, 331; CHECK-NEXT: blr32entry:33 %0 = call i32 @llvm.ppc.darn32()34 ret i32 %035}36 37define i64 @darn_side_effect() {38; CHECK-LABEL: darn_side_effect:39; CHECK: # %bb.0: # %entry40; CHECK-NEXT: darn 3, 241; CHECK-NEXT: darn 3, 142; CHECK-NEXT: blr43 44; OPT-LABEL: @darn_side_effect45; OPT: call i64 @llvm.ppc.darnraw()46; OPT-NEXT: call i64 @llvm.ppc.darn()47entry:48 %0 = call i64 @llvm.ppc.darnraw()49 %1 = call i64 @llvm.ppc.darn()50 ret i64 %151}52 53define void @darn_loop(ptr noundef %darn) {54; OPT-LABEL: @darn_loop55; OPT-COUNT-32: tail call i64 @llvm.ppc.darn()56entry:57 %inc = alloca i32, align 458 store i32 0, ptr %inc, align 459 br label %cond60 61cond:62 %0 = load i32, ptr %inc, align 463 %cmp = icmp ne i32 %0, 3264 br i1 %cmp, label %body, label %end_loop65 66body:67 %1 = call i64 @llvm.ppc.darn()68 %2 = load i32, ptr %inc, align 469 %idx = getelementptr inbounds i64, ptr %darn, i32 %270 store i64 %1, ptr %idx, align 871 br label %incr72 73incr:74 %3 = load i32, ptr %inc, align 475 %ninc = add nsw i32 %3, 176 store i32 %ninc, ptr %inc, align 477 br label %cond78 79end_loop:80 ret void81}82 83declare i64 @llvm.ppc.darn()84declare i64 @llvm.ppc.darnraw()85declare i32 @llvm.ppc.darn32()86