brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.9 KiB · 2b9be8d Raw
198 lines · plain
1; RUN: llc -mtriple=hexagon -O0 < %s | FileCheck %s2; RUN: llc -mtriple=hexagon -O0 < %s | FileCheck -check-prefix=CHECK-CALL %s3; Hexagon Programmer's Reference Manual 11.1.1 ALU32/ALU4 5; CHECK-CALL-NOT: call6 7; Add8declare i32 @llvm.hexagon.A2.addi(i32, i32)9define i32 @A2_addi(i32 %a) {10  %z = call i32 @llvm.hexagon.A2.addi(i32 %a, i32 0)11  ret i32 %z12}13; CHECK: = add({{.*}},#0)14 15declare i32 @llvm.hexagon.A2.add(i32, i32)16define i32 @A2_add(i32 %a, i32 %b) {17  %z = call i32 @llvm.hexagon.A2.add(i32 %a, i32 %b)18  ret i32 %z19}20; CHECK: = add({{.*}},{{.*}})21 22declare i32 @llvm.hexagon.A2.addsat(i32, i32)23define i32 @A2_addsat(i32 %a, i32 %b) {24  %z = call i32 @llvm.hexagon.A2.addsat(i32 %a, i32 %b)25  ret i32 %z26}27; CHECK: = add({{.*}},{{.*}}):sat28 29; Logical operations30declare i32 @llvm.hexagon.A2.and(i32, i32)31define i32 @A2_and(i32 %a, i32 %b) {32  %z = call i32 @llvm.hexagon.A2.and(i32 %a, i32 %b)33  ret i32 %z34}35; CHECK: = and({{.*}},{{.*}})36 37declare i32 @llvm.hexagon.A2.or(i32, i32)38define i32 @A2_or(i32 %a, i32 %b) {39  %z = call i32 @llvm.hexagon.A2.or(i32 %a, i32 %b)40  ret i32 %z41}42; CHECK: = or({{.*}},{{.*}})43 44declare i32 @llvm.hexagon.A2.xor(i32, i32)45define i32 @A2_xor(i32 %a, i32 %b) {46  %z = call i32 @llvm.hexagon.A2.xor(i32 %a, i32 %b)47  ret i32 %z48}49; CHECK: = xor({{.*}},{{.*}})50 51declare i32 @llvm.hexagon.A4.andn(i32, i32)52define i32 @A4_andn(i32 %a, i32 %b) {53  %z = call i32 @llvm.hexagon.A4.andn(i32 %a, i32 %b)54  ret i32 %z55}56; CHECK: = and({{.*}},~{{.*}})57 58declare i32 @llvm.hexagon.A4.orn(i32, i32)59define i32 @A4_orn(i32 %a, i32 %b) {60  %z = call i32 @llvm.hexagon.A4.orn(i32 %a, i32 %b)61  ret i32 %z62}63; CHECK: = or({{.*}},~{{.*}})64 65; Subtract66declare i32 @llvm.hexagon.A2.sub(i32, i32)67define i32 @A2_sub(i32 %a, i32 %b) {68  %z = call i32 @llvm.hexagon.A2.sub(i32 %a, i32 %b)69  ret i32 %z70}71; CHECK: = sub({{.*}},{{.*}})72 73declare i32 @llvm.hexagon.A2.subsat(i32, i32)74define i32 @A2_subsat(i32 %a, i32 %b) {75  %z = call i32 @llvm.hexagon.A2.subsat(i32 %a, i32 %b)76  ret i32 %z77}78; CHECK: = sub({{.*}},{{.*}}):sat79 80; Sign extend81declare i32 @llvm.hexagon.A2.sxtb(i32)82define i32 @A2_sxtb(i32 %a) {83  %z = call i32 @llvm.hexagon.A2.sxtb(i32 %a)84  ret i32 %z85}86; CHECK: = sxtb({{.*}})87 88declare i32 @llvm.hexagon.A2.sxth(i32)89define i32 @A2_sxth(i32 %a) {90  %z = call i32 @llvm.hexagon.A2.sxth(i32 %a)91  ret i32 %z92}93; CHECK: = sxth({{.*}})94 95; Transfer immediate96declare i32 @llvm.hexagon.A2.tfril(i32, i32)97define i32 @A2_tfril(i32 %a) {98  %z = call i32 @llvm.hexagon.A2.tfril(i32 %a, i32 0)99  ret i32 %z100}101; CHECK: = #0102 103declare i32 @llvm.hexagon.A2.tfrih(i32, i32)104define i32 @A2_tfrih(i32 %a) {105  %z = call i32 @llvm.hexagon.A2.tfrih(i32 %a, i32 0)106  ret i32 %z107}108; CHECK: = #0109 110declare i32 @llvm.hexagon.A2.tfrsi(i32)111define i32 @A2_tfrsi() {112  %z = call i32 @llvm.hexagon.A2.tfrsi(i32 0)113  ret i32 %z114}115; CHECK: = #0116 117; Transfer register118declare i32 @llvm.hexagon.A2.tfr(i32)119define i32 @A2_tfr(i32 %a) {120  %z = call i32 @llvm.hexagon.A2.tfr(i32 %a)121  ret i32 %z122}123; CHECK: =124 125; Vector add halfwords126declare i32 @llvm.hexagon.A2.svaddh(i32, i32)127define i32 @A2_svaddh(i32 %a, i32 %b) {128  %z = call i32 @llvm.hexagon.A2.svaddh(i32 %a, i32 %b)129  ret i32 %z130}131; CHECK: = vaddh({{.*}},{{.*}})132 133declare i32 @llvm.hexagon.A2.svaddhs(i32, i32)134define i32 @A2_svaddhs(i32 %a, i32 %b) {135  %z = call i32 @llvm.hexagon.A2.svaddhs(i32 %a, i32 %b)136  ret i32 %z137}138; CHECK: = vaddh({{.*}},{{.*}}):sat139 140declare i32 @llvm.hexagon.A2.svadduhs(i32, i32)141define i32 @A2_svadduhs(i32 %a, i32 %b) {142  %z = call i32 @llvm.hexagon.A2.svadduhs(i32 %a, i32 %b)143  ret i32 %z144}145; CHECK: = vadduh({{.*}},{{.*}}):sat146 147; Vector average halfwords148declare i32 @llvm.hexagon.A2.svavgh(i32, i32)149define i32 @A2_svavgh(i32 %a, i32 %b) {150  %z = call i32 @llvm.hexagon.A2.svavgh(i32 %a, i32 %b)151  ret i32 %z152}153; CHECK: = vavgh({{.*}},{{.*}})154 155declare i32 @llvm.hexagon.A2.svavghs(i32, i32)156define i32 @A2_svavghs(i32 %a, i32 %b) {157  %z = call i32 @llvm.hexagon.A2.svavghs(i32 %a, i32 %b)158  ret i32 %z159}160; CHECK: = vavgh({{.*}},{{.*}}):rnd161 162declare i32 @llvm.hexagon.A2.svnavgh(i32, i32)163define i32 @A2_svnavgh(i32 %a, i32 %b) {164  %z = call i32 @llvm.hexagon.A2.svnavgh(i32 %a, i32 %b)165  ret i32 %z166}167; CHECK: = vnavgh({{.*}},{{.*}})168 169; Vector subtract halfwords170declare i32 @llvm.hexagon.A2.svsubh(i32, i32)171define i32 @A2_svsubh(i32 %a, i32 %b) {172  %z = call i32 @llvm.hexagon.A2.svsubh(i32 %a, i32 %b)173  ret i32 %z174}175; CHECK: = vsubh({{.*}},{{.*}})176 177declare i32 @llvm.hexagon.A2.svsubhs(i32, i32)178define i32 @A2_svsubhs(i32 %a, i32 %b) {179  %z = call i32 @llvm.hexagon.A2.svsubhs(i32 %a, i32 %b)180  ret i32 %z181}182; CHECK: = vsubh({{.*}},{{.*}}):sat183 184declare i32 @llvm.hexagon.A2.svsubuhs(i32, i32)185define i32 @A2_svsubuhs(i32 %a, i32 %b) {186  %z = call i32 @llvm.hexagon.A2.svsubuhs(i32 %a, i32 %b)187  ret i32 %z188}189; CHECK: = vsubuh({{.*}},{{.*}}):sat190 191; Zero extend192declare i32 @llvm.hexagon.A2.zxth(i32)193define i32 @A2_zxth(i32 %a) {194  %z = call i32 @llvm.hexagon.A2.zxth(i32 %a)195  ret i32 %z196}197; CHECK: = zxth({{.*}})198