54 lines · plain
1; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s2; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s3; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s \4; RUN: --check-prefix=CHECK-ITIN5; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s \6; RUN: --check-prefix=CHECK-ITIN7; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s \8; RUN: --check-prefix=CHECK-ITIN9 10define void @bn_mul_comba8(ptr nocapture %r, ptr nocapture readonly %a, ptr nocapture readonly %b) {11; CHECK-LABEL: bn_mul_comba8:12; CHECK: mulhdu13; CHECK-NEXT: mulld14; CHECK: mulhdu15; CHECK: mulld16; CHECK-NEXT: mulhdu17 18 19; CHECK-ITIN-LABEL: bn_mul_comba8:20; CHECK-ITIN: mulhdu21; CHECK-ITIN-NEXT: mulld22; CHECK-ITIN-NEXT: mulhdu23; CHECK-ITIN: mulld24; CHECK-ITIN-NEXT: mulhdu25 26 %1 = load i64, ptr %a, align 827 %conv = zext i64 %1 to i12828 %2 = load i64, ptr %b, align 829 %conv2 = zext i64 %2 to i12830 %mul = mul nuw i128 %conv2, %conv31 %shr = lshr i128 %mul, 6432 %agep = getelementptr inbounds i64, ptr %a, i64 133 %3 = load i64, ptr %agep, align 834 %conv14 = zext i64 %3 to i12835 %mul15 = mul nuw i128 %conv14, %conv36 %add17 = add i128 %mul15, %shr37 %shr19 = lshr i128 %add17, 6438 %conv20 = trunc i128 %shr19 to i6439 %bgep = getelementptr inbounds i64, ptr %b, i64 140 %4 = load i64, ptr %bgep, align 841 %conv28 = zext i64 %4 to i12842 %mul31 = mul nuw i128 %conv28, %conv243 %conv32 = and i128 %add17, 1844674407370955161544 %add33 = add i128 %conv32, %mul3145 %shr35 = lshr i128 %add33, 6446 %conv36 = trunc i128 %shr35 to i6447 %add37 = add i64 %conv36, %conv2048 %cmp38 = icmp ult i64 %add37, %conv3649 %conv148 = zext i1 %cmp38 to i6450 store i64 %conv148, ptr %r, align 851 ret void52}53 54