@@ -243,10 +243,9 @@ define i16 @fold_sub301_mul19_i16(i16 %a) {
243
243
define i32 @fold_add251_mul253_i32 (i32 %a ) {
244
244
; CHECK-ARMV6-LABEL: fold_add251_mul253_i32:
245
245
; CHECK-ARMV6: @ %bb.0:
246
- ; CHECK-ARMV6-NEXT: mov r1, #15
247
- ; CHECK-ARMV6-NEXT: mov r2, #253
248
- ; CHECK-ARMV6-NEXT: orr r1, r1, #63488
249
- ; CHECK-ARMV6-NEXT: mla r0, r0, r2, r1
246
+ ; CHECK-ARMV6-NEXT: add r0, r0, #251
247
+ ; CHECK-ARMV6-NEXT: mov r1, #253
248
+ ; CHECK-ARMV6-NEXT: mul r0, r0, r1
250
249
; CHECK-ARMV6-NEXT: bx lr
251
250
;
252
251
; CHECK-ARMV7-LABEL: fold_add251_mul253_i32:
@@ -258,15 +257,10 @@ define i32 @fold_add251_mul253_i32(i32 %a) {
258
257
;
259
258
; CHECK-THUMBV6M-LABEL: fold_add251_mul253_i32:
260
259
; CHECK-THUMBV6M: @ %bb.0:
260
+ ; CHECK-THUMBV6M-NEXT: adds r0, #251
261
261
; CHECK-THUMBV6M-NEXT: movs r1, #253
262
- ; CHECK-THUMBV6M-NEXT: muls r1, r0, r1
263
- ; CHECK-THUMBV6M-NEXT: ldr r0, .LCPI8_0
264
- ; CHECK-THUMBV6M-NEXT: adds r0, r1, r0
262
+ ; CHECK-THUMBV6M-NEXT: muls r0, r1, r0
265
263
; CHECK-THUMBV6M-NEXT: bx lr
266
- ; CHECK-THUMBV6M-NEXT: .p2align 2
267
- ; CHECK-THUMBV6M-NEXT: @ %bb.1:
268
- ; CHECK-THUMBV6M-NEXT: .LCPI8_0:
269
- ; CHECK-THUMBV6M-NEXT: .long 63503 @ 0xf80f
270
264
;
271
265
; CHECK-THUMBV7M-LABEL: fold_add251_mul253_i32:
272
266
; CHECK-THUMBV7M: @ %bb.0:
@@ -282,9 +276,9 @@ define i32 @fold_add251_mul253_i32(i32 %a) {
282
276
define i16 @fold_add251_mul253_i16 (i16 %a ) {
283
277
; CHECK-ARMV6-LABEL: fold_add251_mul253_i16:
284
278
; CHECK-ARMV6: @ %bb.0:
285
- ; CHECK-ARMV6-NEXT: mvn r1, #2032
286
- ; CHECK-ARMV6-NEXT: mov r2 , #253
287
- ; CHECK-ARMV6-NEXT: mla r0, r0, r2 , r1
279
+ ; CHECK-ARMV6-NEXT: add r0, r0, #251
280
+ ; CHECK-ARMV6-NEXT: mov r1 , #253
281
+ ; CHECK-ARMV6-NEXT: mul r0, r0, r1
288
282
; CHECK-ARMV6-NEXT: bx lr
289
283
;
290
284
; CHECK-ARMV7-LABEL: fold_add251_mul253_i16:
@@ -297,15 +291,10 @@ define i16 @fold_add251_mul253_i16(i16 %a) {
297
291
;
298
292
; CHECK-THUMBV6M-LABEL: fold_add251_mul253_i16:
299
293
; CHECK-THUMBV6M: @ %bb.0:
294
+ ; CHECK-THUMBV6M-NEXT: adds r0, #251
300
295
; CHECK-THUMBV6M-NEXT: movs r1, #253
301
- ; CHECK-THUMBV6M-NEXT: muls r1, r0, r1
302
- ; CHECK-THUMBV6M-NEXT: ldr r0, .LCPI9_0
303
- ; CHECK-THUMBV6M-NEXT: adds r0, r1, r0
296
+ ; CHECK-THUMBV6M-NEXT: muls r0, r1, r0
304
297
; CHECK-THUMBV6M-NEXT: bx lr
305
- ; CHECK-THUMBV6M-NEXT: .p2align 2
306
- ; CHECK-THUMBV6M-NEXT: @ %bb.1:
307
- ; CHECK-THUMBV6M-NEXT: .LCPI9_0:
308
- ; CHECK-THUMBV6M-NEXT: .long 4294965263 @ 0xfffff80f
309
298
;
310
299
; CHECK-THUMBV7M-LABEL: fold_add251_mul253_i16:
311
300
; CHECK-THUMBV7M: @ %bb.0:
@@ -319,41 +308,19 @@ define i16 @fold_add251_mul253_i16(i16 %a) {
319
308
}
320
309
321
310
define i32 @fold_sub251_mul253_i32 (i32 %a ) {
322
- ; CHECK-ARMV6-LABEL: fold_sub251_mul253_i32:
323
- ; CHECK-ARMV6: @ %bb.0:
324
- ; CHECK-ARMV6-NEXT: mvn r1, #14
325
- ; CHECK-ARMV6-NEXT: mov r2, #253
326
- ; CHECK-ARMV6-NEXT: sub r1, r1, #63488
327
- ; CHECK-ARMV6-NEXT: mla r0, r0, r2, r1
328
- ; CHECK-ARMV6-NEXT: bx lr
329
- ;
330
- ; CHECK-ARMV7-LABEL: fold_sub251_mul253_i32:
331
- ; CHECK-ARMV7: @ %bb.0:
332
- ; CHECK-ARMV7-NEXT: mov r1, #253
333
- ; CHECK-ARMV7-NEXT: mul r0, r0, r1
334
- ; CHECK-ARMV7-NEXT: movw r1, #63503
335
- ; CHECK-ARMV7-NEXT: sub r0, r0, r1
336
- ; CHECK-ARMV7-NEXT: bx lr
337
- ;
338
- ; CHECK-THUMBV6M-LABEL: fold_sub251_mul253_i32:
339
- ; CHECK-THUMBV6M: @ %bb.0:
340
- ; CHECK-THUMBV6M-NEXT: movs r1, #253
341
- ; CHECK-THUMBV6M-NEXT: muls r1, r0, r1
342
- ; CHECK-THUMBV6M-NEXT: ldr r0, .LCPI10_0
343
- ; CHECK-THUMBV6M-NEXT: adds r0, r1, r0
344
- ; CHECK-THUMBV6M-NEXT: bx lr
345
- ; CHECK-THUMBV6M-NEXT: .p2align 2
346
- ; CHECK-THUMBV6M-NEXT: @ %bb.1:
347
- ; CHECK-THUMBV6M-NEXT: .LCPI10_0:
348
- ; CHECK-THUMBV6M-NEXT: .long 4294903793 @ 0xffff07f1
311
+ ; CHECK-ARM-LABEL: fold_sub251_mul253_i32:
312
+ ; CHECK-ARM: @ %bb.0:
313
+ ; CHECK-ARM-NEXT: sub r0, r0, #251
314
+ ; CHECK-ARM-NEXT: mov r1, #253
315
+ ; CHECK-ARM-NEXT: mul r0, r0, r1
316
+ ; CHECK-ARM-NEXT: bx lr
349
317
;
350
- ; CHECK-THUMBV7M-LABEL: fold_sub251_mul253_i32:
351
- ; CHECK-THUMBV7M: @ %bb.0:
352
- ; CHECK-THUMBV7M-NEXT: movs r1, #253
353
- ; CHECK-THUMBV7M-NEXT: muls r0, r1, r0
354
- ; CHECK-THUMBV7M-NEXT: movw r1, #63503
355
- ; CHECK-THUMBV7M-NEXT: subs r0, r0, r1
356
- ; CHECK-THUMBV7M-NEXT: bx lr
318
+ ; CHECK-THUMB-LABEL: fold_sub251_mul253_i32:
319
+ ; CHECK-THUMB: @ %bb.0:
320
+ ; CHECK-THUMB-NEXT: subs r0, #251
321
+ ; CHECK-THUMB-NEXT: movs r1, #253
322
+ ; CHECK-THUMB-NEXT: muls r0, r1, r0
323
+ ; CHECK-THUMB-NEXT: bx lr
357
324
%b = add i32 %a , -251
358
325
%c = mul i32 %b , 253
359
326
ret i32 %c
@@ -362,10 +329,9 @@ define i32 @fold_sub251_mul253_i32(i32 %a) {
362
329
define i16 @fold_sub251_mul253_i16 (i16 %a ) {
363
330
; CHECK-ARMV6-LABEL: fold_sub251_mul253_i16:
364
331
; CHECK-ARMV6: @ %bb.0:
365
- ; CHECK-ARMV6-NEXT: mov r1, #241
366
- ; CHECK-ARMV6-NEXT: mov r2, #253
367
- ; CHECK-ARMV6-NEXT: orr r1, r1, #1792
368
- ; CHECK-ARMV6-NEXT: mla r0, r0, r2, r1
332
+ ; CHECK-ARMV6-NEXT: sub r0, r0, #251
333
+ ; CHECK-ARMV6-NEXT: mov r1, #253
334
+ ; CHECK-ARMV6-NEXT: mul r0, r0, r1
369
335
; CHECK-ARMV6-NEXT: bx lr
370
336
;
371
337
; CHECK-ARMV7-LABEL: fold_sub251_mul253_i16:
@@ -377,15 +343,10 @@ define i16 @fold_sub251_mul253_i16(i16 %a) {
377
343
;
378
344
; CHECK-THUMBV6M-LABEL: fold_sub251_mul253_i16:
379
345
; CHECK-THUMBV6M: @ %bb.0:
346
+ ; CHECK-THUMBV6M-NEXT: subs r0, #251
380
347
; CHECK-THUMBV6M-NEXT: movs r1, #253
381
- ; CHECK-THUMBV6M-NEXT: muls r1, r0, r1
382
- ; CHECK-THUMBV6M-NEXT: ldr r0, .LCPI11_0
383
- ; CHECK-THUMBV6M-NEXT: adds r0, r1, r0
348
+ ; CHECK-THUMBV6M-NEXT: muls r0, r1, r0
384
349
; CHECK-THUMBV6M-NEXT: bx lr
385
- ; CHECK-THUMBV6M-NEXT: .p2align 2
386
- ; CHECK-THUMBV6M-NEXT: @ %bb.1:
387
- ; CHECK-THUMBV6M-NEXT: .LCPI11_0:
388
- ; CHECK-THUMBV6M-NEXT: .long 2033 @ 0x7f1
389
350
;
390
351
; CHECK-THUMBV7M-LABEL: fold_sub251_mul253_i16:
391
352
; CHECK-THUMBV7M: @ %bb.0:
@@ -401,43 +362,32 @@ define i16 @fold_sub251_mul253_i16(i16 %a) {
401
362
define i32 @fold_add251_mul353_i32 (i32 %a ) {
402
363
; CHECK-ARMV6-LABEL: fold_add251_mul353_i32:
403
364
; CHECK-ARMV6: @ %bb.0:
404
- ; CHECK-ARMV6-NEXT: mov r2 , #97
405
- ; CHECK-ARMV6-NEXT: ldr r1, .LCPI12_0
406
- ; CHECK-ARMV6-NEXT: orr r2, r2 , #256
407
- ; CHECK-ARMV6-NEXT: mla r0, r0, r2 , r1
365
+ ; CHECK-ARMV6-NEXT: mov r1 , #97
366
+ ; CHECK-ARMV6-NEXT: add r0, r0, #251
367
+ ; CHECK-ARMV6-NEXT: orr r1, r1 , #256
368
+ ; CHECK-ARMV6-NEXT: mul r0, r0, r1
408
369
; CHECK-ARMV6-NEXT: bx lr
409
- ; CHECK-ARMV6-NEXT: .p2align 2
410
- ; CHECK-ARMV6-NEXT: @ %bb.1:
411
- ; CHECK-ARMV6-NEXT: .LCPI12_0:
412
- ; CHECK-ARMV6-NEXT: .long 88603 @ 0x15a1b
413
370
;
414
371
; CHECK-ARMV7-LABEL: fold_add251_mul353_i32:
415
372
; CHECK-ARMV7: @ %bb.0:
416
- ; CHECK-ARMV7-NEXT: movw r1, #23067
417
- ; CHECK-ARMV7-NEXT: movw r2, #353
418
- ; CHECK-ARMV7-NEXT: movt r1, #1
419
- ; CHECK-ARMV7-NEXT: mla r0, r0, r2, r1
373
+ ; CHECK-ARMV7-NEXT: add r0, r0, #251
374
+ ; CHECK-ARMV7-NEXT: movw r1, #353
375
+ ; CHECK-ARMV7-NEXT: mul r0, r0, r1
420
376
; CHECK-ARMV7-NEXT: bx lr
421
377
;
422
378
; CHECK-THUMBV6M-LABEL: fold_add251_mul353_i32:
423
379
; CHECK-THUMBV6M: @ %bb.0:
424
380
; CHECK-THUMBV6M-NEXT: movs r1, #255
425
381
; CHECK-THUMBV6M-NEXT: adds r1, #98
426
- ; CHECK-THUMBV6M-NEXT: muls r1, r0, r1
427
- ; CHECK-THUMBV6M-NEXT: ldr r0, .LCPI12_0
428
- ; CHECK-THUMBV6M-NEXT: adds r0, r1, r0
382
+ ; CHECK-THUMBV6M-NEXT: adds r0, #251
383
+ ; CHECK-THUMBV6M-NEXT: muls r0, r1, r0
429
384
; CHECK-THUMBV6M-NEXT: bx lr
430
- ; CHECK-THUMBV6M-NEXT: .p2align 2
431
- ; CHECK-THUMBV6M-NEXT: @ %bb.1:
432
- ; CHECK-THUMBV6M-NEXT: .LCPI12_0:
433
- ; CHECK-THUMBV6M-NEXT: .long 88603 @ 0x15a1b
434
385
;
435
386
; CHECK-THUMBV7M-LABEL: fold_add251_mul353_i32:
436
387
; CHECK-THUMBV7M: @ %bb.0:
437
- ; CHECK-THUMBV7M-NEXT: movw r1, #23067
438
- ; CHECK-THUMBV7M-NEXT: movw r2, #353
439
- ; CHECK-THUMBV7M-NEXT: movt r1, #1
440
- ; CHECK-THUMBV7M-NEXT: mla r0, r0, r2, r1
388
+ ; CHECK-THUMBV7M-NEXT: adds r0, #251
389
+ ; CHECK-THUMBV7M-NEXT: movw r1, #353
390
+ ; CHECK-THUMBV7M-NEXT: muls r0, r1, r0
441
391
; CHECK-THUMBV7M-NEXT: bx lr
442
392
%b = add i32 %a , 251
443
393
%c = mul i32 %b , 353
@@ -447,11 +397,10 @@ define i32 @fold_add251_mul353_i32(i32 %a) {
447
397
define i16 @fold_add251_mul353_i16 (i16 %a ) {
448
398
; CHECK-ARMV6-LABEL: fold_add251_mul353_i16:
449
399
; CHECK-ARMV6: @ %bb.0:
450
- ; CHECK-ARMV6-NEXT: mov r2, #97
451
- ; CHECK-ARMV6-NEXT: mov r1, #27
452
- ; CHECK-ARMV6-NEXT: orr r2, r2, #256
453
- ; CHECK-ARMV6-NEXT: orr r1, r1, #23040
454
- ; CHECK-ARMV6-NEXT: mla r0, r0, r2, r1
400
+ ; CHECK-ARMV6-NEXT: mov r1, #97
401
+ ; CHECK-ARMV6-NEXT: add r0, r0, #251
402
+ ; CHECK-ARMV6-NEXT: orr r1, r1, #256
403
+ ; CHECK-ARMV6-NEXT: mul r0, r0, r1
455
404
; CHECK-ARMV6-NEXT: bx lr
456
405
;
457
406
; CHECK-ARMV7-LABEL: fold_add251_mul353_i16:
@@ -465,14 +414,9 @@ define i16 @fold_add251_mul353_i16(i16 %a) {
465
414
; CHECK-THUMBV6M: @ %bb.0:
466
415
; CHECK-THUMBV6M-NEXT: movs r1, #255
467
416
; CHECK-THUMBV6M-NEXT: adds r1, #98
468
- ; CHECK-THUMBV6M-NEXT: muls r1, r0, r1
469
- ; CHECK-THUMBV6M-NEXT: ldr r0, .LCPI13_0
470
- ; CHECK-THUMBV6M-NEXT: adds r0, r1, r0
417
+ ; CHECK-THUMBV6M-NEXT: adds r0, #251
418
+ ; CHECK-THUMBV6M-NEXT: muls r0, r1, r0
471
419
; CHECK-THUMBV6M-NEXT: bx lr
472
- ; CHECK-THUMBV6M-NEXT: .p2align 2
473
- ; CHECK-THUMBV6M-NEXT: @ %bb.1:
474
- ; CHECK-THUMBV6M-NEXT: .LCPI13_0:
475
- ; CHECK-THUMBV6M-NEXT: .long 23067 @ 0x5a1b
476
420
;
477
421
; CHECK-THUMBV7M-LABEL: fold_add251_mul353_i16:
478
422
; CHECK-THUMBV7M: @ %bb.0:
@@ -488,43 +432,32 @@ define i16 @fold_add251_mul353_i16(i16 %a) {
488
432
define i32 @fold_sub251_mul353_i32 (i32 %a ) {
489
433
; CHECK-ARMV6-LABEL: fold_sub251_mul353_i32:
490
434
; CHECK-ARMV6: @ %bb.0:
491
- ; CHECK-ARMV6-NEXT: mov r2 , #97
492
- ; CHECK-ARMV6-NEXT: ldr r1, .LCPI14_0
493
- ; CHECK-ARMV6-NEXT: orr r2, r2 , #256
494
- ; CHECK-ARMV6-NEXT: mla r0, r0, r2 , r1
435
+ ; CHECK-ARMV6-NEXT: mov r1 , #97
436
+ ; CHECK-ARMV6-NEXT: sub r0, r0, #251
437
+ ; CHECK-ARMV6-NEXT: orr r1, r1 , #256
438
+ ; CHECK-ARMV6-NEXT: mul r0, r0, r1
495
439
; CHECK-ARMV6-NEXT: bx lr
496
- ; CHECK-ARMV6-NEXT: .p2align 2
497
- ; CHECK-ARMV6-NEXT: @ %bb.1:
498
- ; CHECK-ARMV6-NEXT: .LCPI14_0:
499
- ; CHECK-ARMV6-NEXT: .long 4294878693 @ 0xfffea5e5
500
440
;
501
441
; CHECK-ARMV7-LABEL: fold_sub251_mul353_i32:
502
442
; CHECK-ARMV7: @ %bb.0:
503
- ; CHECK-ARMV7-NEXT: movw r1, #42469
504
- ; CHECK-ARMV7-NEXT: movw r2, #353
505
- ; CHECK-ARMV7-NEXT: movt r1, #65534
506
- ; CHECK-ARMV7-NEXT: mla r0, r0, r2, r1
443
+ ; CHECK-ARMV7-NEXT: sub r0, r0, #251
444
+ ; CHECK-ARMV7-NEXT: movw r1, #353
445
+ ; CHECK-ARMV7-NEXT: mul r0, r0, r1
507
446
; CHECK-ARMV7-NEXT: bx lr
508
447
;
509
448
; CHECK-THUMBV6M-LABEL: fold_sub251_mul353_i32:
510
449
; CHECK-THUMBV6M: @ %bb.0:
511
450
; CHECK-THUMBV6M-NEXT: movs r1, #255
512
451
; CHECK-THUMBV6M-NEXT: adds r1, #98
513
- ; CHECK-THUMBV6M-NEXT: muls r1, r0, r1
514
- ; CHECK-THUMBV6M-NEXT: ldr r0, .LCPI14_0
515
- ; CHECK-THUMBV6M-NEXT: adds r0, r1, r0
452
+ ; CHECK-THUMBV6M-NEXT: subs r0, #251
453
+ ; CHECK-THUMBV6M-NEXT: muls r0, r1, r0
516
454
; CHECK-THUMBV6M-NEXT: bx lr
517
- ; CHECK-THUMBV6M-NEXT: .p2align 2
518
- ; CHECK-THUMBV6M-NEXT: @ %bb.1:
519
- ; CHECK-THUMBV6M-NEXT: .LCPI14_0:
520
- ; CHECK-THUMBV6M-NEXT: .long 4294878693 @ 0xfffea5e5
521
455
;
522
456
; CHECK-THUMBV7M-LABEL: fold_sub251_mul353_i32:
523
457
; CHECK-THUMBV7M: @ %bb.0:
524
- ; CHECK-THUMBV7M-NEXT: movw r1, #42469
525
- ; CHECK-THUMBV7M-NEXT: movw r2, #353
526
- ; CHECK-THUMBV7M-NEXT: movt r1, #65534
527
- ; CHECK-THUMBV7M-NEXT: mla r0, r0, r2, r1
458
+ ; CHECK-THUMBV7M-NEXT: subs r0, #251
459
+ ; CHECK-THUMBV7M-NEXT: movw r1, #353
460
+ ; CHECK-THUMBV7M-NEXT: muls r0, r1, r0
528
461
; CHECK-THUMBV7M-NEXT: bx lr
529
462
%b = add i32 %a , -251
530
463
%c = mul i32 %b , 353
@@ -534,11 +467,10 @@ define i32 @fold_sub251_mul353_i32(i32 %a) {
534
467
define i16 @fold_sub251_mul353_i16 (i16 %a ) {
535
468
; CHECK-ARMV6-LABEL: fold_sub251_mul353_i16:
536
469
; CHECK-ARMV6: @ %bb.0:
537
- ; CHECK-ARMV6-NEXT: mov r2, #97
538
- ; CHECK-ARMV6-NEXT: mvn r1, #26
539
- ; CHECK-ARMV6-NEXT: orr r2, r2, #256
540
- ; CHECK-ARMV6-NEXT: sub r1, r1, #23040
541
- ; CHECK-ARMV6-NEXT: mla r0, r0, r2, r1
470
+ ; CHECK-ARMV6-NEXT: mov r1, #97
471
+ ; CHECK-ARMV6-NEXT: sub r0, r0, #251
472
+ ; CHECK-ARMV6-NEXT: orr r1, r1, #256
473
+ ; CHECK-ARMV6-NEXT: mul r0, r0, r1
542
474
; CHECK-ARMV6-NEXT: bx lr
543
475
;
544
476
; CHECK-ARMV7-LABEL: fold_sub251_mul353_i16:
@@ -553,14 +485,9 @@ define i16 @fold_sub251_mul353_i16(i16 %a) {
553
485
; CHECK-THUMBV6M: @ %bb.0:
554
486
; CHECK-THUMBV6M-NEXT: movs r1, #255
555
487
; CHECK-THUMBV6M-NEXT: adds r1, #98
556
- ; CHECK-THUMBV6M-NEXT: muls r1, r0, r1
557
- ; CHECK-THUMBV6M-NEXT: ldr r0, .LCPI15_0
558
- ; CHECK-THUMBV6M-NEXT: adds r0, r1, r0
488
+ ; CHECK-THUMBV6M-NEXT: subs r0, #251
489
+ ; CHECK-THUMBV6M-NEXT: muls r0, r1, r0
559
490
; CHECK-THUMBV6M-NEXT: bx lr
560
- ; CHECK-THUMBV6M-NEXT: .p2align 2
561
- ; CHECK-THUMBV6M-NEXT: @ %bb.1:
562
- ; CHECK-THUMBV6M-NEXT: .LCPI15_0:
563
- ; CHECK-THUMBV6M-NEXT: .long 4294944229 @ 0xffffa5e5
564
491
;
565
492
; CHECK-THUMBV7M-LABEL: fold_sub251_mul353_i16:
566
493
; CHECK-THUMBV7M: @ %bb.0:
0 commit comments