@@ -252,6 +252,183 @@ define i64 @addmul72(i64 %a, i64 %b) {
252
252
ret i64 %d
253
253
}
254
254
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
+
255
432
define i64 @mul96 (i64 %a ) {
256
433
; RV64I-LABEL: mul96:
257
434
; RV64I: # %bb.0:
0 commit comments