Skip to content

Commit d306600

Browse files
committed
[RISCV] Add test coverage for #148084
1 parent 8a52605 commit d306600

File tree

1 file changed

+279
-0
lines changed

1 file changed

+279
-0
lines changed

llvm/test/CodeGen/RISCV/pr148084.ll

Lines changed: 279 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,279 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc < %s | FileCheck %s
3+
4+
source_filename = "external/libaom/av1/encoder/tx_search.c"
5+
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
6+
target triple = "riscv64-unknown-linux-android10000"
7+
8+
define fastcc void @search_tx_type() #0 {
9+
; CHECK-LABEL: search_tx_type:
10+
; CHECK: # %bb.0: # %._crit_edge.i
11+
; CHECK-NEXT: # %bb.1: # %bb
12+
; CHECK-NEXT: lbu a1, 0(zero)
13+
; CHECK-NEXT: lw a0, 0(zero)
14+
; CHECK-NEXT: lh a2, 0(zero)
15+
; CHECK-NEXT: seqz a1, a1
16+
; CHECK-NEXT: srai a3, a0, 63
17+
; CHECK-NEXT: addi a1, a1, -1
18+
; CHECK-NEXT: and a1, a1, a2
19+
; CHECK-NEXT: andi a2, a1, 1
20+
; CHECK-NEXT: addi a2, a2, -1
21+
; CHECK-NEXT: or a3, a3, a0
22+
; CHECK-NEXT: or a2, a2, a3
23+
; CHECK-NEXT: bgez a2, .LBB0_3
24+
; CHECK-NEXT: # %bb.2:
25+
; CHECK-NEXT: bexti a3, a1, 1
26+
; CHECK-NEXT: addi a3, a3, -1
27+
; CHECK-NEXT: and a2, a2, a3
28+
; CHECK-NEXT: .LBB0_3: # %bb
29+
; CHECK-NEXT: andi a4, a1, 4
30+
; CHECK-NEXT: mv a3, a2
31+
; CHECK-NEXT: beqz a4, .LBB0_5
32+
; CHECK-NEXT: # %bb.4: # %bb
33+
; CHECK-NEXT: mv a3, a0
34+
; CHECK-NEXT: .LBB0_5: # %bb
35+
; CHECK-NEXT: blt a2, a0, .LBB0_7
36+
; CHECK-NEXT: # %bb.6: # %bb
37+
; CHECK-NEXT: mv a3, a2
38+
; CHECK-NEXT: .LBB0_7: # %bb
39+
; CHECK-NEXT: andi a5, a1, 8
40+
; CHECK-NEXT: sext.w a4, a3
41+
; CHECK-NEXT: mv a2, a3
42+
; CHECK-NEXT: beqz a5, .LBB0_9
43+
; CHECK-NEXT: # %bb.8: # %bb
44+
; CHECK-NEXT: mv a2, a0
45+
; CHECK-NEXT: .LBB0_9: # %bb
46+
; CHECK-NEXT: blt a4, a0, .LBB0_11
47+
; CHECK-NEXT: # %bb.10: # %bb
48+
; CHECK-NEXT: mv a2, a3
49+
; CHECK-NEXT: .LBB0_11: # %bb
50+
; CHECK-NEXT: andi a5, a1, 16
51+
; CHECK-NEXT: sext.w a4, a2
52+
; CHECK-NEXT: mv a3, a2
53+
; CHECK-NEXT: beqz a5, .LBB0_13
54+
; CHECK-NEXT: # %bb.12: # %bb
55+
; CHECK-NEXT: mv a3, a0
56+
; CHECK-NEXT: .LBB0_13: # %bb
57+
; CHECK-NEXT: blt a4, a0, .LBB0_15
58+
; CHECK-NEXT: # %bb.14: # %bb
59+
; CHECK-NEXT: mv a3, a2
60+
; CHECK-NEXT: .LBB0_15: # %bb
61+
; CHECK-NEXT: andi a5, a1, 32
62+
; CHECK-NEXT: sext.w a4, a3
63+
; CHECK-NEXT: mv a2, a3
64+
; CHECK-NEXT: beqz a5, .LBB0_17
65+
; CHECK-NEXT: # %bb.16: # %bb
66+
; CHECK-NEXT: mv a2, a0
67+
; CHECK-NEXT: .LBB0_17: # %bb
68+
; CHECK-NEXT: blt a4, a0, .LBB0_19
69+
; CHECK-NEXT: # %bb.18: # %bb
70+
; CHECK-NEXT: mv a2, a3
71+
; CHECK-NEXT: .LBB0_19: # %bb
72+
; CHECK-NEXT: andi a5, a1, 64
73+
; CHECK-NEXT: sext.w a4, a2
74+
; CHECK-NEXT: mv a3, a2
75+
; CHECK-NEXT: beqz a5, .LBB0_21
76+
; CHECK-NEXT: # %bb.20: # %bb
77+
; CHECK-NEXT: mv a3, a0
78+
; CHECK-NEXT: .LBB0_21: # %bb
79+
; CHECK-NEXT: blt a4, a0, .LBB0_23
80+
; CHECK-NEXT: # %bb.22: # %bb
81+
; CHECK-NEXT: mv a3, a2
82+
; CHECK-NEXT: .LBB0_23: # %bb
83+
; CHECK-NEXT: andi a5, a1, 128
84+
; CHECK-NEXT: sext.w a4, a3
85+
; CHECK-NEXT: mv a2, a3
86+
; CHECK-NEXT: beqz a5, .LBB0_25
87+
; CHECK-NEXT: # %bb.24: # %bb
88+
; CHECK-NEXT: mv a2, a0
89+
; CHECK-NEXT: .LBB0_25: # %bb
90+
; CHECK-NEXT: blt a4, a0, .LBB0_27
91+
; CHECK-NEXT: # %bb.26: # %bb
92+
; CHECK-NEXT: mv a2, a3
93+
; CHECK-NEXT: .LBB0_27: # %bb
94+
; CHECK-NEXT: andi a5, a1, 256
95+
; CHECK-NEXT: sext.w a4, a2
96+
; CHECK-NEXT: mv a3, a2
97+
; CHECK-NEXT: beqz a5, .LBB0_29
98+
; CHECK-NEXT: # %bb.28: # %bb
99+
; CHECK-NEXT: mv a3, a0
100+
; CHECK-NEXT: .LBB0_29: # %bb
101+
; CHECK-NEXT: blt a4, a0, .LBB0_31
102+
; CHECK-NEXT: # %bb.30: # %bb
103+
; CHECK-NEXT: mv a3, a2
104+
; CHECK-NEXT: .LBB0_31: # %bb
105+
; CHECK-NEXT: andi a5, a1, 512
106+
; CHECK-NEXT: sext.w a4, a3
107+
; CHECK-NEXT: mv a2, a3
108+
; CHECK-NEXT: beqz a5, .LBB0_33
109+
; CHECK-NEXT: # %bb.32: # %bb
110+
; CHECK-NEXT: mv a2, a0
111+
; CHECK-NEXT: .LBB0_33: # %bb
112+
; CHECK-NEXT: blt a4, a0, .LBB0_35
113+
; CHECK-NEXT: # %bb.34: # %bb
114+
; CHECK-NEXT: mv a2, a3
115+
; CHECK-NEXT: .LBB0_35: # %bb
116+
; CHECK-NEXT: andi a5, a1, 1024
117+
; CHECK-NEXT: sext.w a4, a2
118+
; CHECK-NEXT: mv a3, a2
119+
; CHECK-NEXT: beqz a5, .LBB0_37
120+
; CHECK-NEXT: # %bb.36: # %bb
121+
; CHECK-NEXT: mv a3, a0
122+
; CHECK-NEXT: .LBB0_37: # %bb
123+
; CHECK-NEXT: blt a4, a0, .LBB0_39
124+
; CHECK-NEXT: # %bb.38: # %bb
125+
; CHECK-NEXT: mv a3, a2
126+
; CHECK-NEXT: .LBB0_39: # %bb
127+
; CHECK-NEXT: slli a5, a1, 52
128+
; CHECK-NEXT: sext.w a4, a3
129+
; CHECK-NEXT: mv a2, a3
130+
; CHECK-NEXT: bgez a5, .LBB0_41
131+
; CHECK-NEXT: # %bb.40: # %bb
132+
; CHECK-NEXT: mv a2, a0
133+
; CHECK-NEXT: .LBB0_41: # %bb
134+
; CHECK-NEXT: blt a4, a0, .LBB0_43
135+
; CHECK-NEXT: # %bb.42: # %bb
136+
; CHECK-NEXT: mv a2, a3
137+
; CHECK-NEXT: .LBB0_43: # %bb
138+
; CHECK-NEXT: slli a4, a1, 51
139+
; CHECK-NEXT: sext.w a3, a2
140+
; CHECK-NEXT: mv a1, a2
141+
; CHECK-NEXT: bltz a4, .LBB0_49
142+
; CHECK-NEXT: # %bb.44: # %bb
143+
; CHECK-NEXT: bge a3, a0, .LBB0_50
144+
; CHECK-NEXT: .LBB0_45: # %bb
145+
; CHECK-NEXT: sext.w a2, a1
146+
; CHECK-NEXT: blt a2, a0, .LBB0_47
147+
; CHECK-NEXT: .LBB0_46: # %bb
148+
; CHECK-NEXT: mv a0, a1
149+
; CHECK-NEXT: .LBB0_47: # %bb
150+
; CHECK-NEXT: sext.w a0, a0
151+
; CHECK-NEXT: # %bb.48: # %get_tx_mask.exit
152+
; CHECK-NEXT: ret
153+
; CHECK-NEXT: .LBB0_49: # %bb
154+
; CHECK-NEXT: mv a1, a0
155+
; CHECK-NEXT: blt a3, a0, .LBB0_45
156+
; CHECK-NEXT: .LBB0_50: # %bb
157+
; CHECK-NEXT: mv a1, a2
158+
; CHECK-NEXT: sext.w a2, a2
159+
; CHECK-NEXT: bge a2, a0, .LBB0_46
160+
; CHECK-NEXT: j .LBB0_47
161+
._crit_edge.i:
162+
%.in196.i = load i16, ptr null, align 2
163+
%i2 = load i16, ptr null, align 2
164+
%i3 = and i16 %i2, %.in196.i
165+
%i9 = trunc nuw i8 0 to i1
166+
br i1 %i9, label %get_tx_mask.exit, label %bb
167+
168+
bb: ; preds = %._crit_edge.i
169+
%i13 = load i8, ptr null, align 1
170+
%i14 = icmp eq i8 %i13, 0
171+
%spec.select211.i = select i1 %i14, i16 0, i16 %i3
172+
%i19 = load i32, ptr null, align 4
173+
%i20 = zext i16 %spec.select211.i to i32
174+
%i21 = load i32, ptr null, align 4
175+
%i22 = icmp sgt i32 %i21, -1
176+
%i23 = and i32 %i20, 1
177+
%.not203.i = icmp eq i32 %i23, 0
178+
%spec.select212.i = select i1 %.not203.i, i32 -1, i32 %i21
179+
%.1174.i = select i1 %i22, i32 %spec.select212.i, i32 -1
180+
%i28 = icmp sgt i32 0, %.1174.i
181+
%i29 = and i32 %i20, 2
182+
%.not203.1.not.i = icmp eq i32 %i29, 0
183+
%spec.select212.1.i = select i1 %.not203.1.not.i, i32 %.1174.i, i32 0
184+
%.1174.1.i = select i1 %i28, i32 %spec.select212.1.i, i32 %.1174.i
185+
%i30 = load i32, ptr null, align 4
186+
%i31 = icmp sgt i32 %i30, %.1174.1.i
187+
%i32 = and i32 %i20, 4
188+
%.not203.2.i = icmp eq i32 %i32, 0
189+
%spec.select212.2.i = select i1 %.not203.2.i, i32 %.1174.1.i, i32 %i30
190+
%.1174.2.i = select i1 %i31, i32 %spec.select212.2.i, i32 %.1174.1.i
191+
%i36 = load i32, ptr null, align 4
192+
%i37 = icmp sgt i32 %i36, %.1174.2.i
193+
%i38 = and i32 %i20, 8
194+
%.not203.3.i = icmp eq i32 %i38, 0
195+
%spec.select212.3.i = select i1 %.not203.3.i, i32 %.1174.2.i, i32 %i36
196+
%.1174.3.i = select i1 %i37, i32 %spec.select212.3.i, i32 %.1174.2.i
197+
%i42 = load i32, ptr null, align 4
198+
%i43 = icmp sgt i32 %i42, %.1174.3.i
199+
%i44 = and i32 %i20, 16
200+
%.not203.4.i = icmp eq i32 %i44, 0
201+
%spec.select212.4.i = select i1 %.not203.4.i, i32 %.1174.3.i, i32 %i42
202+
%.1174.4.i = select i1 %i43, i32 %spec.select212.4.i, i32 %.1174.3.i
203+
%i48 = load i32, ptr null, align 4
204+
%i49 = icmp sgt i32 %i48, %.1174.4.i
205+
%i50 = and i32 %i20, 32
206+
%.not203.5.i = icmp eq i32 %i50, 0
207+
%spec.select212.5.i = select i1 %.not203.5.i, i32 %.1174.4.i, i32 %i48
208+
%.1174.5.i = select i1 %i49, i32 %spec.select212.5.i, i32 %.1174.4.i
209+
%i51 = load i32, ptr null, align 4
210+
%i52 = icmp sgt i32 %i51, %.1174.5.i
211+
%i53 = and i32 %i20, 64
212+
%.not203.6.i = icmp eq i32 %i53, 0
213+
%spec.select212.6.i = select i1 %.not203.6.i, i32 %.1174.5.i, i32 %i51
214+
%.1174.6.i = select i1 %i52, i32 %spec.select212.6.i, i32 %.1174.5.i
215+
%i56 = load i32, ptr null, align 4
216+
%i57 = icmp sgt i32 %i56, %.1174.6.i
217+
%i58 = and i32 %i20, 128
218+
%.not203.7.i = icmp eq i32 %i58, 0
219+
%spec.select212.7.i = select i1 %.not203.7.i, i32 %.1174.6.i, i32 %i56
220+
%.1174.7.i = select i1 %i57, i32 %spec.select212.7.i, i32 %.1174.6.i
221+
%i60 = load i32, ptr null, align 4
222+
%i61 = icmp sgt i32 %i60, %.1174.7.i
223+
%i62 = and i32 %i20, 256
224+
%.not203.8.i = icmp eq i32 %i62, 0
225+
%spec.select212.8.i = select i1 %.not203.8.i, i32 %.1174.7.i, i32 %i60
226+
%.1174.8.i = select i1 %i61, i32 %spec.select212.8.i, i32 %.1174.7.i
227+
%i63 = load i32, ptr null, align 4
228+
%i64 = icmp sgt i32 %i63, %.1174.8.i
229+
%i65 = and i32 %i20, 512
230+
%.not203.9.i = icmp eq i32 %i65, 0
231+
%spec.select212.9.i = select i1 %.not203.9.i, i32 %.1174.8.i, i32 %i63
232+
%.1174.9.i = select i1 %i64, i32 %spec.select212.9.i, i32 %.1174.8.i
233+
%i67 = load i32, ptr null, align 4
234+
%i68 = icmp sgt i32 %i67, %.1174.9.i
235+
%i69 = and i32 %i20, 1024
236+
%.not203.10.i = icmp eq i32 %i69, 0
237+
%spec.select212.10.i = select i1 %.not203.10.i, i32 %.1174.9.i, i32 %i67
238+
%.1174.10.i = select i1 %i68, i32 %spec.select212.10.i, i32 %.1174.9.i
239+
%i70 = load i32, ptr null, align 4
240+
%i71 = icmp sgt i32 %i70, %.1174.10.i
241+
%i72 = and i32 %i20, 2048
242+
%.not203.11.i = icmp eq i32 %i72, 0
243+
%spec.select212.11.i = select i1 %.not203.11.i, i32 %.1174.10.i, i32 %i70
244+
%.1174.11.i = select i1 %i71, i32 %spec.select212.11.i, i32 %.1174.10.i
245+
%i75 = load i32, ptr null, align 4
246+
%i76 = icmp sgt i32 %i75, %.1174.11.i
247+
%i77 = and i32 %i20, 4096
248+
%.not203.12.i = icmp eq i32 %i77, 0
249+
%spec.select212.12.i = select i1 %.not203.12.i, i32 %.1174.11.i, i32 %i75
250+
%.1174.12.i = select i1 %i76, i32 %spec.select212.12.i, i32 %.1174.11.i
251+
%i80 = load i32, ptr null, align 4
252+
%i81 = icmp sgt i32 %i80, %.1174.12.i
253+
%spec.select212.13.i = select i1 false, i32 %.1174.12.i, i32 %i80
254+
%.1174.13.i = select i1 %i81, i32 %spec.select212.13.i, i32 %.1174.12.i
255+
%.1172.13.i = select i1 %i81, i32 13, i32 0
256+
%i84 = icmp sgt i32 0, %.1174.13.i
257+
%.1172.14.i = select i1 %i84, i32 14, i32 %.1172.13.i
258+
%i88 = icmp slt i32 0, %i19
259+
%i89 = select i1 %i88, i16 -32768, i16 0
260+
%i90 = zext i16 %i89 to i32
261+
%i91 = shl nuw nsw i32 1, %.1172.14.i
262+
%i92 = and i32 %i91, %i90
263+
%.not200.i = icmp eq i32 %i92, 0
264+
%i93 = trunc nuw i32 %i91 to i16
265+
%i94 = xor i16 %i93, -1
266+
%i95 = select i1 %.not200.i, i16 -1, i16 %i94
267+
%.2177.i = and i16 %i95, %i89
268+
%i96 = xor i16 %.2177.i, -1
269+
%i97 = and i16 %spec.select211.i, %i96
270+
br label %get_tx_mask.exit
271+
272+
get_tx_mask.exit: ; preds = %._crit_edge.i, %bb
273+
%.1261.i = phi i16 [ %i97, %bb ], [ 0, %._crit_edge.i ]
274+
%i99 = icmp eq i16 %.1261.i, 0
275+
%.2262.i = select i1 %i99, i16 0, i16 %.1261.i
276+
ret void
277+
}
278+
279+
attributes #0 = { noimplicitfloat nounwind sspstrong uwtable vscale_range(2,1024) "frame-pointer"="non-leaf" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic-rv64" "target-features"="+64bit,+a,+b,+c,+d,+f,+m,+relax,+unaligned-scalar-mem,+unaligned-vector-mem,+v,+zaamo,+zalrsc,+zba,+zbb,+zbs,+zca,+zcd,+zicsr,+zifencei,+zmmul,+zve32f,+zve32x,+zve64d,+zve64f,+zve64x,+zvl128b,+zvl32b,+zvl64b,-e,-experimental-p,-experimental-smctr,-experimental-ssctr,-experimental-svukte,-experimental-xqccmp,-experimental-xqcia,-experimental-xqciac,-experimental-xqcibi,-experimental-xqcibm,-experimental-xqcicli,-experimental-xqcicm,-experimental-xqcics,-experimental-xqcicsr,-experimental-xqciint,-experimental-xqciio,-experimental-xqcilb,-experimental-xqcili,-experimental-xqcilia,-experimental-xqcilo,-experimental-xqcilsm,-experimental-xqcisim,-experimental-xqcisls,-experimental-xqcisync,-experimental-xrivosvisni,-experimental-xrivosvizip,-experimental-xsfmclic,-experimental-xsfsclic,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-experimental-zvqdotq,-h,-q,-sdext,-sdtrig,-sha,-shcounterenw,-shgatpa,-shlcofideleg,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcntrpmf,-smcsrind,-smdbltrp,-smepmp,-smmpm,-smnpm,-smrnmi,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssdbltrp,-ssnpm,-sspm,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-supm,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-svvptc,-xandesperf,-xandesvbfhcvt,-xandesvdot,-xandesvpackfph,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xmipscmov,-xmipslsp,-xsfcease,-xsfmm128t,-xsfmm16t,-xsfmm32a16f,-xsfmm32a32f,-xsfmm32a8f,-xsfmm32a8i,-xsfmm32t,-xsfmm64a64f,-xsfmm64t,-xsfmmbase,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zabha,-zacas,-zama16b,-zawrs,-zbc,-zbkb,-zbkc,-zbkx,-zcb,-zce,-zcf,-zclsd,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccamoc,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zihintntl,-zihintpause,-zihpm,-zilsd,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl4096b,-zvl512b,-zvl65536b,-zvl8192b" }

0 commit comments

Comments
 (0)