45 lines · plain
1; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s -mattr=+thumb2 %s -o - | FileCheck %s2; Check generated signed and unsigned multiply accumulate long.3 4define i64 @MACLongTest1(i32 %a, i32 %b, i64 %c) {5;CHECK-LABEL: MACLongTest1:6;CHECK: umlal7 %conv = zext i32 %a to i648 %conv1 = zext i32 %b to i649 %mul = mul i64 %conv1, %conv10 %add = add i64 %mul, %c11 ret i64 %add12}13 14define i64 @MACLongTest2(i32 %a, i32 %b, i64 %c) {15;CHECK-LABEL: MACLongTest2:16;CHECK: smlal17 %conv = sext i32 %a to i6418 %conv1 = sext i32 %b to i6419 %mul = mul nsw i64 %conv1, %conv20 %add = add nsw i64 %mul, %c21 ret i64 %add22}23 24define i64 @MACLongTest3(i32 %a, i32 %b, i32 %c) {25;CHECK-LABEL: MACLongTest3:26;CHECK: umlal27 %conv = zext i32 %b to i6428 %conv1 = zext i32 %a to i6429 %mul = mul i64 %conv, %conv130 %conv2 = zext i32 %c to i6431 %add = add i64 %mul, %conv232 ret i64 %add33}34 35define i64 @MACLongTest4(i32 %a, i32 %b, i32 %c) {36;CHECK-LABEL: MACLongTest4:37;CHECK: smlal38 %conv = sext i32 %b to i6439 %conv1 = sext i32 %a to i6440 %mul = mul nsw i64 %conv, %conv141 %conv2 = sext i32 %c to i6442 %add = add nsw i64 %mul, %conv243 ret i64 %add44}45