87 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=riscv32-unknown-elf -mattr=+zba %s -o - | FileCheck %s3 4declare i32 @callee2(i32, i32)5declare i32 @callee3(i32, i32, i32)6 7; Positive test8; The users of addi aren't more than 29define void @t1(i32 %a, i32 %b, i32 %c) {10; CHECK-LABEL: t1:11; CHECK: # %bb.0: # %entry12; CHECK-NEXT: sh2add a2, a0, a213; CHECK-NEXT: sh2add a0, a0, a114; CHECK-NEXT: addi a0, a0, 4215; CHECK-NEXT: addi a1, a2, 4216; CHECK-NEXT: tail callee217entry:18 %shl = shl i32 %a, 219 %add = add nsw i32 %shl, 4220 %add1 = add nsw i32 %add, %b21 %add2 = add nsw i32 %add, %c22 %call = tail call i32 @callee2(i32 %add1, i32 %add2)23 ret void24}25 26; Negative test27; The users of addi are more than 2.28define void @t2(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e) {29; CHECK-LABEL: t2:30; CHECK: # %bb.0: # %entry31; CHECK-NEXT: slli a0, a0, 232; CHECK-NEXT: addi a4, a0, 4233; CHECK-NEXT: add a0, a4, a134; CHECK-NEXT: add a1, a4, a235; CHECK-NEXT: add a2, a4, a336; CHECK-NEXT: tail callee337entry:38 %shl = shl i32 %a, 239 %add = add nsw i32 %shl, 4240 %add1 = add nsw i32 %add, %b41 %add2 = add nsw i32 %add, %c42 %add3 = add nsw i32 %add, %d43 %call = tail call i32 @callee3(i32 %add1, i32 %add2, i32 %add3)44 ret void45}46 47; Negative test48; shl doesn't have one use.49define void @t3(i32 %a, i32 %b, i32 %c, i32 %d) {50; CHECK-LABEL: t3:51; CHECK: # %bb.0: # %entry52; CHECK-NEXT: slli a4, a0, 253; CHECK-NEXT: addi a5, a4, 4554; CHECK-NEXT: add a4, a5, a155; CHECK-NEXT: add a1, a5, a256; CHECK-NEXT: sh2add a2, a0, a357; CHECK-NEXT: mv a0, a458; CHECK-NEXT: tail callee359entry:60 %shl = shl i32 %a, 261 %add = add nsw i32 %shl, 4562 %add1 = add nsw i32 %add, %b63 %add2 = add nsw i32 %add, %c64 %add3 = add nsw i32 %shl, %d65 %call = tail call i32 @callee3(i32 %add1, i32 %add2, i32 %add3)66 ret void67}68 69; Negative test70; shift amount isn't 1, 2, or 3.71define void @t4(i32 %a, i32 %b, i32 %c, i32 %d) {72; CHECK-LABEL: t4:73; CHECK: # %bb.0: # %entry74; CHECK-NEXT: slli a0, a0, 475; CHECK-NEXT: addi a3, a0, 4576; CHECK-NEXT: add a0, a3, a177; CHECK-NEXT: add a1, a3, a278; CHECK-NEXT: tail callee279entry:80 %shl = shl i32 %a, 481 %add = add nsw i32 %shl, 4582 %add1 = add nsw i32 %add, %b83 %add2 = add nsw i32 %add, %c84 %call = tail call i32 @callee2(i32 %add1, i32 %add2)85 ret void86}87