@@ -252,6 +252,183 @@ define i64 @addmul72(i64 %a, i64 %b) {
252252 ret i64 %d
253253}
254254
255+ define i64 @mul11 (i64 %a ) {
256+ ; RV64I-LABEL: mul11:
257+ ; RV64I: # %bb.0:
258+ ; RV64I-NEXT: li a1, 11
259+ ; RV64I-NEXT: mul a0, a0, a1
260+ ; RV64I-NEXT: ret
261+ ;
262+ ; RV64XTHEADBA-LABEL: mul11:
263+ ; RV64XTHEADBA: # %bb.0:
264+ ; RV64XTHEADBA-NEXT: th.addsl a1, a0, a0, 2
265+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a1, 1
266+ ; RV64XTHEADBA-NEXT: ret
267+ %c = mul i64 %a , 11
268+ ret i64 %c
269+ }
270+
271+ define i64 @mul19 (i64 %a ) {
272+ ; RV64I-LABEL: mul19:
273+ ; RV64I: # %bb.0:
274+ ; RV64I-NEXT: li a1, 19
275+ ; RV64I-NEXT: mul a0, a0, a1
276+ ; RV64I-NEXT: ret
277+ ;
278+ ; RV64XTHEADBA-LABEL: mul19:
279+ ; RV64XTHEADBA: # %bb.0:
280+ ; RV64XTHEADBA-NEXT: th.addsl a1, a0, a0, 3
281+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a1, 1
282+ ; RV64XTHEADBA-NEXT: ret
283+ %c = mul i64 %a , 19
284+ ret i64 %c
285+ }
286+
287+ define i64 @mul13 (i64 %a ) {
288+ ; RV64I-LABEL: mul13:
289+ ; RV64I: # %bb.0:
290+ ; RV64I-NEXT: li a1, 13
291+ ; RV64I-NEXT: mul a0, a0, a1
292+ ; RV64I-NEXT: ret
293+ ;
294+ ; RV64XTHEADBA-LABEL: mul13:
295+ ; RV64XTHEADBA: # %bb.0:
296+ ; RV64XTHEADBA-NEXT: th.addsl a1, a0, a0, 1
297+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a1, 2
298+ ; RV64XTHEADBA-NEXT: ret
299+ %c = mul i64 %a , 13
300+ ret i64 %c
301+ }
302+
303+ define i64 @mul21 (i64 %a ) {
304+ ; RV64I-LABEL: mul21:
305+ ; RV64I: # %bb.0:
306+ ; RV64I-NEXT: li a1, 21
307+ ; RV64I-NEXT: mul a0, a0, a1
308+ ; RV64I-NEXT: ret
309+ ;
310+ ; RV64XTHEADBA-LABEL: mul21:
311+ ; RV64XTHEADBA: # %bb.0:
312+ ; RV64XTHEADBA-NEXT: th.addsl a1, a0, a0, 2
313+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a1, 2
314+ ; RV64XTHEADBA-NEXT: ret
315+ %c = mul i64 %a , 21
316+ ret i64 %c
317+ }
318+
319+ define i64 @mul37 (i64 %a ) {
320+ ; RV64I-LABEL: mul37:
321+ ; RV64I: # %bb.0:
322+ ; RV64I-NEXT: li a1, 37
323+ ; RV64I-NEXT: mul a0, a0, a1
324+ ; RV64I-NEXT: ret
325+ ;
326+ ; RV64XTHEADBA-LABEL: mul37:
327+ ; RV64XTHEADBA: # %bb.0:
328+ ; RV64XTHEADBA-NEXT: th.addsl a1, a0, a0, 3
329+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a1, 2
330+ ; RV64XTHEADBA-NEXT: ret
331+ %c = mul i64 %a , 37
332+ ret i64 %c
333+ }
334+
335+ define i64 @mul25 (i64 %a ) {
336+ ; RV64I-LABEL: mul25:
337+ ; RV64I: # %bb.0:
338+ ; RV64I-NEXT: li a1, 25
339+ ; RV64I-NEXT: mul a0, a0, a1
340+ ; RV64I-NEXT: ret
341+ ;
342+ ; RV64XTHEADBA-LABEL: mul25:
343+ ; RV64XTHEADBA: # %bb.0:
344+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a0, 2
345+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a0, 2
346+ ; RV64XTHEADBA-NEXT: ret
347+ %c = mul i64 %a , 25
348+ ret i64 %c
349+ }
350+
351+ define i64 @mul41 (i64 %a ) {
352+ ; RV64I-LABEL: mul41:
353+ ; RV64I: # %bb.0:
354+ ; RV64I-NEXT: li a1, 41
355+ ; RV64I-NEXT: mul a0, a0, a1
356+ ; RV64I-NEXT: ret
357+ ;
358+ ; RV64XTHEADBA-LABEL: mul41:
359+ ; RV64XTHEADBA: # %bb.0:
360+ ; RV64XTHEADBA-NEXT: th.addsl a1, a0, a0, 2
361+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a1, 3
362+ ; RV64XTHEADBA-NEXT: ret
363+ %c = mul i64 %a , 41
364+ ret i64 %c
365+ }
366+
367+ define i64 @mul73 (i64 %a ) {
368+ ; RV64I-LABEL: mul73:
369+ ; RV64I: # %bb.0:
370+ ; RV64I-NEXT: li a1, 73
371+ ; RV64I-NEXT: mul a0, a0, a1
372+ ; RV64I-NEXT: ret
373+ ;
374+ ; RV64XTHEADBA-LABEL: mul73:
375+ ; RV64XTHEADBA: # %bb.0:
376+ ; RV64XTHEADBA-NEXT: th.addsl a1, a0, a0, 3
377+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a1, 3
378+ ; RV64XTHEADBA-NEXT: ret
379+ %c = mul i64 %a , 73
380+ ret i64 %c
381+ }
382+
383+ define i64 @mul27 (i64 %a ) {
384+ ; RV64I-LABEL: mul27:
385+ ; RV64I: # %bb.0:
386+ ; RV64I-NEXT: li a1, 27
387+ ; RV64I-NEXT: mul a0, a0, a1
388+ ; RV64I-NEXT: ret
389+ ;
390+ ; RV64XTHEADBA-LABEL: mul27:
391+ ; RV64XTHEADBA: # %bb.0:
392+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a0, 3
393+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a0, 1
394+ ; RV64XTHEADBA-NEXT: ret
395+ %c = mul i64 %a , 27
396+ ret i64 %c
397+ }
398+
399+ define i64 @mul45 (i64 %a ) {
400+ ; RV64I-LABEL: mul45:
401+ ; RV64I: # %bb.0:
402+ ; RV64I-NEXT: li a1, 45
403+ ; RV64I-NEXT: mul a0, a0, a1
404+ ; RV64I-NEXT: ret
405+ ;
406+ ; RV64XTHEADBA-LABEL: mul45:
407+ ; RV64XTHEADBA: # %bb.0:
408+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a0, 3
409+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a0, 2
410+ ; RV64XTHEADBA-NEXT: ret
411+ %c = mul i64 %a , 45
412+ ret i64 %c
413+ }
414+
415+ define i64 @mul81 (i64 %a ) {
416+ ; RV64I-LABEL: mul81:
417+ ; RV64I: # %bb.0:
418+ ; RV64I-NEXT: li a1, 81
419+ ; RV64I-NEXT: mul a0, a0, a1
420+ ; RV64I-NEXT: ret
421+ ;
422+ ; RV64XTHEADBA-LABEL: mul81:
423+ ; RV64XTHEADBA: # %bb.0:
424+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a0, 3
425+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a0, 3
426+ ; RV64XTHEADBA-NEXT: ret
427+ %c = mul i64 %a , 81
428+ ret i64 %c
429+ }
430+
431+
255432define i64 @mul96 (i64 %a ) {
256433; RV64I-LABEL: mul96:
257434; RV64I: # %bb.0:
0 commit comments