brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · f9fea40 Raw
111 lines · plain
1; RUN: llc -O1 -mtriple=armv5te-none-none-eabi %s -o - | FileCheck %s2; RUN: llc -O1 -mtriple=armv6-none-none-eabi %s -o - | FileCheck %s3; RUN: llc -O1 -mtriple=armv7-none-none-eabi %s -o - | FileCheck %s4; RUN: llc -O1 -mtriple=thumbv7-none-none-eabi %s -o - | FileCheck %s5; RUN: llc -O1 -mtriple=thumbv6t2-none-none-eabi %s -o - | FileCheck %s6; RUN: llc -O1 -mtriple=thumbv7em-none-none-eabi %s -o - | FileCheck %s7; RUN: llc -O1 -mtriple=thumbv8m.main-none-none-eabi -mattr=+dsp %s -o - | FileCheck %s8define i32 @smulbb(i32 %a, i32 %b) {9; CHECK-LABEL: smulbb10; CHECK: smulbb r0, r0, r111  %tmp = call i32 @llvm.arm.smulbb(i32 %a, i32 %b)12  ret i32 %tmp13}14 15define i32 @smulbt(i32 %a, i32 %b) {16; CHECK-LABEL: smulbt17; CHECK: smulbt r0, r0, r118  %tmp = call i32 @llvm.arm.smulbt(i32 %a, i32 %b)19  ret i32 %tmp20}21 22define i32 @smultb(i32 %a, i32 %b) {23; CHECK-LABEL: smultb24; CHECK: smultb r0, r0, r125  %tmp = call i32 @llvm.arm.smultb(i32 %a, i32 %b)26  ret i32 %tmp27}28 29define i32 @smultt(i32 %a, i32 %b) {30; CHECK-LABEL: smultt31; CHECK: smultt r0, r0, r132  %tmp = call i32 @llvm.arm.smultt(i32 %a, i32 %b)33  ret i32 %tmp34}35 36define i32 @smulwb(i32 %a, i32 %b) {37; CHECK-LABEL: smulwb38; CHECK: smulwb r0, r0, r139  %tmp = call i32 @llvm.arm.smulwb(i32 %a, i32 %b)40  ret i32 %tmp41}42 43define i32 @smulwt(i32 %a, i32 %b) {44; CHECK-LABEL: smulwt45; CHECK: smulwt r0, r0, r146  %tmp = call i32 @llvm.arm.smulwt(i32 %a, i32 %b)47  ret i32 %tmp48}49 50define i32 @acc_mults(i32 %a, i32 %b, i32 %acc) {51; CHECK-LABEL: acc_mults52; CHECK: smlabb r2, r0, r1, r253; CHECK: smlabt r2, r0, r1, r254; CHECK: smlatb r2, r0, r1, r255; CHECK: smlatt r2, r0, r1, r256; CHECK: smlawb r2, r0, r1, r257; CHECK: smlawt r0, r0, r1, r258  %acc1 = call i32 @llvm.arm.smlabb(i32 %a, i32 %b, i32 %acc)59  %acc2 = call i32 @llvm.arm.smlabt(i32 %a, i32 %b, i32 %acc1)60  %acc3 = call i32 @llvm.arm.smlatb(i32 %a, i32 %b, i32 %acc2)61  %acc4 = call i32 @llvm.arm.smlatt(i32 %a, i32 %b, i32 %acc3)62  %acc5 = call i32 @llvm.arm.smlawb(i32 %a, i32 %b, i32 %acc4)63  %acc6 = call i32 @llvm.arm.smlawt(i32 %a, i32 %b, i32 %acc5)64  ret i32 %acc665}66 67define i32 @qadd(i32 %a, i32 %b) nounwind {68; CHECK-LABEL: qadd69; CHECK: qadd r0, r0, r170  %tmp = call i32 @llvm.arm.qadd(i32 %a, i32 %b)71  ret i32 %tmp72}73 74define i32 @qsub(i32 %a, i32 %b) nounwind {75; CHECK-LABEL: qsub76; CHECK: qsub r0, r0, r177  %tmp = call i32 @llvm.arm.qsub(i32 %a, i32 %b)78  ret i32 %tmp79}80 81define i32 @qdadd(i32 %a, i32 %b) nounwind {82; CHECK-LABEL: qdadd83; CHECK: qdadd r0, r1, r084  %dbl = call i32 @llvm.arm.qadd(i32 %a, i32 %a)85  %add = call i32 @llvm.arm.qadd(i32 %dbl, i32 %b)86  ret i32 %add87}88 89define i32 @qdsub(i32 %a, i32 %b) nounwind {90; CHECK-LABEL: qdsub91; CHECK: qdsub r0, r0, r192  %dbl = call i32 @llvm.arm.qadd(i32 %b, i32 %b)93  %add = call i32 @llvm.arm.qsub(i32 %a, i32 %dbl)94  ret i32 %add95}96 97declare i32 @llvm.arm.smulbb(i32 %a, i32 %b) nounwind readnone98declare i32 @llvm.arm.smulbt(i32 %a, i32 %b) nounwind readnone99declare i32 @llvm.arm.smultb(i32 %a, i32 %b) nounwind readnone100declare i32 @llvm.arm.smultt(i32 %a, i32 %b) nounwind readnone101declare i32 @llvm.arm.smulwb(i32 %a, i32 %b) nounwind readnone102declare i32 @llvm.arm.smulwt(i32 %a, i32 %b) nounwind readnone103declare i32 @llvm.arm.smlabb(i32, i32, i32) nounwind104declare i32 @llvm.arm.smlabt(i32, i32, i32) nounwind105declare i32 @llvm.arm.smlatb(i32, i32, i32) nounwind106declare i32 @llvm.arm.smlatt(i32, i32, i32) nounwind107declare i32 @llvm.arm.smlawb(i32, i32, i32) nounwind108declare i32 @llvm.arm.smlawt(i32, i32, i32) nounwind109declare i32 @llvm.arm.qadd(i32, i32) nounwind110declare i32 @llvm.arm.qsub(i32, i32) nounwind111