[NFC][Py Reformat] Reformat python files in llvm
[llvm-project.git] / llvm / test / CodeGen / Hexagon / intrinsics-v67.ll
blobbca9332a4d582479add47228f447f17bbe49d685
1 ; RUN: llc -march=hexagon < %s | FileCheck %s
3 ; CHECK-LABEL: @t1
4 ; CHECK: r{{[0-9]+}}:{{[0-9]+}} += dfmpylh(r{{[0-9]+}}:{{[0-9]+}},r{{[0-9]+}}:{{[0-9]+}})
5 define dso_local double @t1(double %a, double %b, double %c) local_unnamed_addr #0 {
6 entry:
7   %0 = tail call double @llvm.hexagon.F2.dfmpylh(double %a, double %b, double %c) #2
8   ret double %0
11 declare double @llvm.hexagon.F2.dfmpylh(double, double, double) #1
13 ; CHECK-LABEL: @t2
14 ; CHECK: r{{[0-9]+}}:{{[0-9]+}} += dfmpyhh(r{{[0-9]+}}:{{[0-9]+}},r{{[0-9]+}}:{{[0-9]+}})
15 define dso_local double @t2(double %a, double %b, double %c) local_unnamed_addr #0 {
16 entry:
17   %0 = tail call double @llvm.hexagon.F2.dfmpyhh(double %a, double %b, double %c) #2
18   ret double %0
21 declare double @llvm.hexagon.F2.dfmpyhh(double, double, double) #1
23 ; CHECK-LABEL: @t3
24 ; CHECK: r{{[0-9]+}}:{{[0-9]+}} = dfmax(r{{[0-9]+}}:{{[0-9]+}},r{{[0-9]+}}:{{[0-9]+}})
25 define dso_local double @t3(double %a, double %b) local_unnamed_addr #0 {
26 entry:
27   %0 = tail call double @llvm.hexagon.F2.dfmax(double %a, double %b) #2
28   ret double %0
31 declare double @llvm.hexagon.F2.dfmax(double, double) #1
33 ; CHECK-LABEL: @t4
34 ; CHECK: r{{[0-9]+}}:{{[0-9]+}} = dfmin(r{{[0-9]+}}:{{[0-9]+}},r{{[0-9]+}}:{{[0-9]+}})
35 define dso_local double @t4(double %a, double %b) local_unnamed_addr #0 {
36 entry:
37   %0 = tail call double @llvm.hexagon.F2.dfmin(double %a, double %b) #2
38   ret double %0
41 declare double @llvm.hexagon.F2.dfmin(double, double) #1
43 ; CHECK-LABEL: @t5
44 ; CHECK: r{{[0-9]+}}:{{[0-9]+}} = dfmpyfix(r{{[0-9]+}}:{{[0-9]+}},r{{[0-9]+}}:{{[0-9]+}})
45 define dso_local double @t5(double %a, double %b) local_unnamed_addr #0 {
46 entry:
47   %0 = tail call double @llvm.hexagon.F2.dfmpyfix(double %a, double %b) #2
48   ret double %0
51 declare double @llvm.hexagon.F2.dfmpyfix(double, double) #1
53 ; CHECK-LABEL: @t6
54 ; CHECK: r{{[0-9]+}}:{{[0-9]+}} = dfmpyll(r{{[0-9]+}}:{{[0-9]+}},r{{[0-9]+}}:{{[0-9]+}})
55 define dso_local double @t6(double %a, double %b) local_unnamed_addr #0 {
56 entry:
57   %0 = tail call double @llvm.hexagon.F2.dfmpyll(double %a, double %b) #2
58   ret double %0
61 declare double @llvm.hexagon.F2.dfmpyll(double, double) #1
63 ; CHECK-LABEL: @t7
64 ; CHECK:r{{[0-9]+}}:{{[0-9]+}} = cmpyrw(r{{[0-9]+}}:{{[0-9]+}},r{{[0-9]+}}:{{[0-9]+}}*)
65 define dso_local i64 @t7(i64 %a, i64 %b) local_unnamed_addr #0 {
66 entry:
67   %0 = tail call i64 @llvm.hexagon.M7.vdmpy(i64 %a, i64 %b)
68   ret i64 %0
71 declare i64 @llvm.hexagon.M7.vdmpy(i64, i64) #1
73 ; CHECK-LABEL: @t8
74 ; CHECK:r{{[0-9]+}}:{{[0-9]+}} += cmpyrw(r{{[0-9]+}}:{{[0-9]+}},r{{[0-9]+}}:{{[0-9]+}}*)
75 define dso_local i64 @t8(i64 %a, i64 %b, i64 %c) local_unnamed_addr #0 {
76 entry:
77   %0 = tail call i64 @llvm.hexagon.M7.vdmpy.acc(i64 %a, i64 %b, i64 %c)
78   ret i64 %0
81 declare i64 @llvm.hexagon.M7.vdmpy.acc(i64, i64, i64) #1
83 ; CHECK-LABEL: @t9
84 ; CHECK: r1:0 = cmpyrw(r1:0,r3:2)
85 define i64 @t9(i64 %rss, i64 %rtt) local_unnamed_addr #0 {
86 entry:
87   %0 = tail call i64 @llvm.hexagon.M7.dcmpyrw(i64 %rss, i64 %rtt)
88   ret i64 %0
91 declare i64 @llvm.hexagon.M7.dcmpyrw(i64, i64) #1
93 ; CHECK-LABEL: @t10
94 ; CHECK: r1:0 += cmpyrw(r3:2,r5:4)
95 define i64 @t10(i64 %rxx, i64 %rss, i64 %rtt) local_unnamed_addr #0 {
96 entry:
97   %0 = tail call i64 @llvm.hexagon.M7.dcmpyrw.acc(i64 %rxx, i64 %rss, i64 %rtt)
98   ret i64 %0
101 declare i64 @llvm.hexagon.M7.dcmpyrw.acc(i64, i64, i64) #1
103 ; CHECK-LABEL: @t11
104 ; CHECK: r1:0 = cmpyrw(r1:0,r3:2*)
105 define i64 @t11(i64 %rss, i64 %rtt) local_unnamed_addr #0 {
106 entry:
107   %0 = tail call i64 @llvm.hexagon.M7.dcmpyrwc(i64 %rss, i64 %rtt)
108   ret i64 %0
111 declare i64 @llvm.hexagon.M7.dcmpyrwc(i64, i64) #1
113 ; CHECK-LABEL: @t12
114 ; CHECK: r1:0 += cmpyrw(r3:2,r5:4*)
115 define i64 @t12(i64 %rxx, i64 %rss, i64 %rtt) local_unnamed_addr #0 {
116 entry:
117   %0 = tail call i64 @llvm.hexagon.M7.dcmpyrwc.acc(i64 %rxx, i64 %rss, i64 %rtt)
118   ret i64 %0
121 declare i64 @llvm.hexagon.M7.dcmpyrwc.acc(i64, i64, i64) #1
123 ; CHECK-LABEL: @t13
124 ; CHECK: r1:0 = cmpyiw(r1:0,r3:2)
125 define i64 @t13(i64 %rss, i64 %rtt) local_unnamed_addr #0 {
126 entry:
127   %0 = tail call i64 @llvm.hexagon.M7.dcmpyiw(i64 %rss, i64 %rtt)
128   ret i64 %0
131 declare i64 @llvm.hexagon.M7.dcmpyiw(i64, i64) #1
133 ; CHECK-LABEL: @t14
134 ; CHECK: r1:0 += cmpyiw(r3:2,r5:4)
135 define i64 @t14(i64 %rxx, i64 %rss, i64 %rtt) local_unnamed_addr #0 {
136 entry:
137   %0 = tail call i64 @llvm.hexagon.M7.dcmpyiw.acc(i64 %rxx, i64 %rss, i64 %rtt)
138   ret i64 %0
141 declare i64 @llvm.hexagon.M7.dcmpyiw.acc(i64, i64, i64) #1
143 ; CHECK-LABEL: @t15
144 ; CHECK: r1:0 = cmpyiw(r1:0,r3:2*)
145 define i64 @t15(i64 %rss, i64 %rtt) local_unnamed_addr #0 {
146 entry:
147   %0 = tail call i64 @llvm.hexagon.M7.dcmpyiwc(i64 %rss, i64 %rtt)
148   ret i64 %0
151 declare i64 @llvm.hexagon.M7.dcmpyiwc(i64, i64) #1
153 ; CHECK-LABEL: @t16
154 ; CHECK: r1:0 += cmpyiw(r3:2,r5:4*)
155 define i64 @t16(i64 %rxx, i64 %rss, i64 %rtt) local_unnamed_addr #0 {
156 entry:
157   %0 = tail call i64 @llvm.hexagon.M7.dcmpyiwc.acc(i64 %rxx, i64 %rss, i64 %rtt)
158   ret i64 %0
161 declare i64 @llvm.hexagon.M7.dcmpyiwc.acc(i64, i64, i64) #1
163 ; CHECK-LABEL: @t17
164 ; CHECK: r0 = cmpyrw(r1:0,r3:2):<<1:sat
165 define i32 @t17(i64 %rss, i64 %rtt) local_unnamed_addr #0 {
166 entry:
167   %0 = tail call i32 @llvm.hexagon.M7.wcmpyrw(i64 %rss, i64 %rtt)
168   ret i32 %0
171 declare i32 @llvm.hexagon.M7.wcmpyrw(i64, i64) #1
173 ; CHECK-LABEL: @t18
174 ; CHECK: r0 = cmpyrw(r1:0,r3:2*):<<1:sat
175 define i32 @t18(i64 %rss, i64 %rtt) local_unnamed_addr #0 {
176 entry:
177   %0 = tail call i32 @llvm.hexagon.M7.wcmpyrwc(i64 %rss, i64 %rtt)
178   ret i32 %0
181 declare i32 @llvm.hexagon.M7.wcmpyrwc(i64, i64) #1
183 ; CHECK-LABEL: @t19
184 ; CHECK: r0 = cmpyiw(r1:0,r3:2):<<1:sat
185 define i32 @t19(i64 %rss, i64 %rtt) local_unnamed_addr #0 {
186 entry:
187   %0 = tail call i32 @llvm.hexagon.M7.wcmpyiw(i64 %rss, i64 %rtt)
188   ret i32 %0
191 declare i32 @llvm.hexagon.M7.wcmpyiw(i64, i64) #1
193 ; CHECK-LABEL: @t20
194 ; CHECK: r0 = cmpyiw(r1:0,r3:2*):<<1:sat
195 define i32 @t20(i64 %rss, i64 %rtt) local_unnamed_addr #0 {
196 entry:
197   %0 = tail call i32 @llvm.hexagon.M7.wcmpyiwc(i64 %rss, i64 %rtt)
198   ret i32 %0
201 declare i32 @llvm.hexagon.M7.wcmpyiwc(i64, i64) #1
203 ; CHECK-LABEL: @t21
204 ; CHECK: r0 = cmpyrw(r1:0,r3:2):<<1:rnd:sat
205 define i32 @t21(i64 %rss, i64 %rtt) local_unnamed_addr #0 {
206 entry:
207   %0 = tail call i32 @llvm.hexagon.M7.wcmpyrw.rnd(i64 %rss, i64 %rtt)
208   ret i32 %0
211 declare i32 @llvm.hexagon.M7.wcmpyrw.rnd(i64, i64) #1
213 ; CHECK-LABEL: @t22
214 ; CHECK: r0 = cmpyrw(r1:0,r3:2*):<<1:rnd:sat
215 define i32 @t22(i64 %rss, i64 %rtt) local_unnamed_addr #0 {
216 entry:
217   %0 = tail call i32 @llvm.hexagon.M7.wcmpyrwc.rnd(i64 %rss, i64 %rtt)
218   ret i32 %0
221 declare i32 @llvm.hexagon.M7.wcmpyrwc.rnd(i64, i64) #1
223 ; CHECK-LABEL: @t23
224 ; CHECK: r0 = cmpyiw(r1:0,r3:2):<<1:rnd:sat
225 define i32 @t23(i64 %rss, i64 %rtt) local_unnamed_addr #0 {
226 entry:
227   %0 = tail call i32 @llvm.hexagon.M7.wcmpyiw.rnd(i64 %rss, i64 %rtt)
228   ret i32 %0
231 declare i32 @llvm.hexagon.M7.wcmpyiw.rnd(i64, i64) #1
233 ; CHECK-LABEL: @t24
234 ; CHECK: r0 = cmpyiw(r1:0,r3:2*):<<1:rnd:sat
235 define i32 @t24(i64 %rss, i64 %rtt) local_unnamed_addr #0 {
236 entry:
237   %0 = tail call i32 @llvm.hexagon.M7.wcmpyiwc.rnd(i64 %rss, i64 %rtt)
238   ret i32 %0
241 declare i32 @llvm.hexagon.M7.wcmpyiwc.rnd(i64, i64) #1
243 ; CHECK-LABEL: @t25
244 ; CHECK: r1:0 = cround(r1:0,#0)
245 define i64 @t25(i64 %rss) local_unnamed_addr #0 {
246 entry:
247   %0 = tail call i64 @llvm.hexagon.A7.croundd.ri(i64 %rss, i32 0)
248   ret i64 %0
251 declare i64 @llvm.hexagon.A7.croundd.ri(i64, i32) #1
253 ; CHECK-LABEL: @t26
254 ; CHECK: r1:0 = cround(r1:0,r2)
255 define i64 @t26(i64 %rss, i32 %rt) local_unnamed_addr #0 {
256 entry:
257   %0 = tail call i64 @llvm.hexagon.A7.croundd.rr(i64 %rss, i32 %rt)
258   ret i64 %0
261 declare i64 @llvm.hexagon.A7.croundd.rr(i64, i32) #1
263 ; CHECK-LABEL: @t27
264 ; CHECK: r0 = clip(r0,#0)
265 define i32 @t27(i32 %rs) local_unnamed_addr #0 {
266 entry:
267   %0 = tail call i32 @llvm.hexagon.A7.clip(i32 %rs, i32 0)
268   ret i32 %0
271 declare i32 @llvm.hexagon.A7.clip(i32, i32) #1
273 ; CHECK-LABEL: @t28
274 ; CHECK: r1:0 = vclip(r1:0,#0)
275 define i64 @t28(i64 %rs) local_unnamed_addr #0 {
276 entry:
277   %0 = tail call i64 @llvm.hexagon.A7.vclip(i64 %rs, i32 0)
278   ret i64 %0
281 declare i64 @llvm.hexagon.A7.vclip(i64, i32) #1
283 attributes #0 = { nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv67" "target-features"="-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }
284 attributes #1 = { readnone }
285 attributes #2 = { nounwind }