brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 64d5427 Raw
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