Skip to content

Commit df00092

Browse files
committed
[AArch64] Pre-commit test (NFC)
1 parent 851da60 commit df00092

File tree

1 file changed

+184
-0
lines changed

1 file changed

+184
-0
lines changed

llvm/test/CodeGen/AArch64/cmp-to-cmn.ll

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,3 +430,187 @@ entry:
430430
%cmp = icmp ne i32 %conv, %add
431431
ret i1 %cmp
432432
}
433+
434+
define i1 @cmn_large_imm(i32 %a) {
435+
; CHECK-LABEL: cmn_large_imm:
436+
; CHECK: // %bb.0:
437+
; CHECK-NEXT: mov w8, #64765 // =0xfcfd
438+
; CHECK-NEXT: movk w8, #64764, lsl #16
439+
; CHECK-NEXT: cmp w0, w8
440+
; CHECK-NEXT: cset w0, gt
441+
; CHECK-NEXT: ret
442+
%cmp = icmp sgt i32 %a, -50529027
443+
ret i1 %cmp
444+
}
445+
446+
define i1 @almost_immediate_neg_slt(i32 %x) {
447+
; CHECK-LABEL: almost_immediate_neg_slt:
448+
; CHECK: // %bb.0:
449+
; CHECK-NEXT: mov w8, #4097 // =0x1001
450+
; CHECK-NEXT: movk w8, #65281, lsl #16
451+
; CHECK-NEXT: cmp w0, w8
452+
; CHECK-NEXT: cset w0, lt
453+
; CHECK-NEXT: ret
454+
%cmp = icmp slt i32 %x, -16707583
455+
ret i1 %cmp
456+
}
457+
458+
define i1 @almost_immediate_neg_slt_64(i64 %x) {
459+
; CHECK-LABEL: almost_immediate_neg_slt_64:
460+
; CHECK: // %bb.0:
461+
; CHECK-NEXT: mov x8, #-61439 // =0xffffffffffff1001
462+
; CHECK-NEXT: movk x8, #65281, lsl #16
463+
; CHECK-NEXT: cmp x0, x8
464+
; CHECK-NEXT: cset w0, lt
465+
; CHECK-NEXT: ret
466+
%cmp = icmp slt i64 %x, -16707583
467+
ret i1 %cmp
468+
}
469+
470+
define i1 @almost_immediate_neg_sge(i32 %x) {
471+
; CHECK-LABEL: almost_immediate_neg_sge:
472+
; CHECK: // %bb.0:
473+
; CHECK-NEXT: cmn w0, #4079, lsl #12 // =16707584
474+
; CHECK-NEXT: cset w0, gt
475+
; CHECK-NEXT: ret
476+
%cmp = icmp sge i32 %x, -16707583
477+
ret i1 %cmp
478+
}
479+
480+
define i1 @almost_immediate_neg_sge_64(i64 %x) {
481+
; CHECK-LABEL: almost_immediate_neg_sge_64:
482+
; CHECK: // %bb.0:
483+
; CHECK-NEXT: cmn x0, #4079, lsl #12 // =16707584
484+
; CHECK-NEXT: cset w0, gt
485+
; CHECK-NEXT: ret
486+
%cmp = icmp sge i64 %x, -16707583
487+
ret i1 %cmp
488+
}
489+
490+
define i1 @almost_immediate_neg_uge(i32 %x) {
491+
; CHECK-LABEL: almost_immediate_neg_uge:
492+
; CHECK: // %bb.0:
493+
; CHECK-NEXT: cmn w0, #4079, lsl #12 // =16707584
494+
; CHECK-NEXT: cset w0, hi
495+
; CHECK-NEXT: ret
496+
%cmp = icmp uge i32 %x, -16707583
497+
ret i1 %cmp
498+
}
499+
500+
define i1 @almost_immediate_neg_uge_64(i64 %x) {
501+
; CHECK-LABEL: almost_immediate_neg_uge_64:
502+
; CHECK: // %bb.0:
503+
; CHECK-NEXT: cmn x0, #4079, lsl #12 // =16707584
504+
; CHECK-NEXT: cset w0, hi
505+
; CHECK-NEXT: ret
506+
%cmp = icmp uge i64 %x, -16707583
507+
ret i1 %cmp
508+
}
509+
510+
define i1 @almost_immediate_neg_ult(i32 %x) {
511+
; CHECK-LABEL: almost_immediate_neg_ult:
512+
; CHECK: // %bb.0:
513+
; CHECK-NEXT: mov w8, #4097 // =0x1001
514+
; CHECK-NEXT: movk w8, #65281, lsl #16
515+
; CHECK-NEXT: cmp w0, w8
516+
; CHECK-NEXT: cset w0, lo
517+
; CHECK-NEXT: ret
518+
%cmp = icmp ult i32 %x, -16707583
519+
ret i1 %cmp
520+
}
521+
522+
define i1 @almost_immediate_neg_ult_64(i64 %x) {
523+
; CHECK-LABEL: almost_immediate_neg_ult_64:
524+
; CHECK: // %bb.0:
525+
; CHECK-NEXT: mov x8, #-61439 // =0xffffffffffff1001
526+
; CHECK-NEXT: movk x8, #65281, lsl #16
527+
; CHECK-NEXT: cmp x0, x8
528+
; CHECK-NEXT: cset w0, lo
529+
; CHECK-NEXT: ret
530+
%cmp = icmp ult i64 %x, -16707583
531+
ret i1 %cmp
532+
}
533+
534+
define i1 @almost_immediate_neg_sle(i32 %x) {
535+
; CHECK-LABEL: almost_immediate_neg_sle:
536+
; CHECK: // %bb.0:
537+
; CHECK-NEXT: cmn w0, #4095, lsl #12 // =16773120
538+
; CHECK-NEXT: cset w0, lt
539+
; CHECK-NEXT: ret
540+
%cmp = icmp sle i32 %x, -16773121
541+
ret i1 %cmp
542+
}
543+
544+
define i1 @almost_immediate_neg_sle_64(i64 %x) {
545+
; CHECK-LABEL: almost_immediate_neg_sle_64:
546+
; CHECK: // %bb.0:
547+
; CHECK-NEXT: cmn x0, #4095, lsl #12 // =16773120
548+
; CHECK-NEXT: cset w0, lt
549+
; CHECK-NEXT: ret
550+
%cmp = icmp sle i64 %x, -16773121
551+
ret i1 %cmp
552+
}
553+
554+
define i1 @almost_immediate_neg_sgt(i32 %x) {
555+
; CHECK-LABEL: almost_immediate_neg_sgt:
556+
; CHECK: // %bb.0:
557+
; CHECK-NEXT: mov w8, #-16773121 // =0xff000fff
558+
; CHECK-NEXT: cmp w0, w8
559+
; CHECK-NEXT: cset w0, gt
560+
; CHECK-NEXT: ret
561+
%cmp = icmp sgt i32 %x, -16773121
562+
ret i1 %cmp
563+
}
564+
565+
define i1 @almost_immediate_neg_sgt_64(i64 %x) {
566+
; CHECK-LABEL: almost_immediate_neg_sgt_64:
567+
; CHECK: // %bb.0:
568+
; CHECK-NEXT: mov x8, #-16773121 // =0xffffffffff000fff
569+
; CHECK-NEXT: cmp x0, x8
570+
; CHECK-NEXT: cset w0, gt
571+
; CHECK-NEXT: ret
572+
%cmp = icmp sgt i64 %x, -16773121
573+
ret i1 %cmp
574+
}
575+
576+
define i1 @almost_immediate_neg_ule(i32 %x) {
577+
; CHECK-LABEL: almost_immediate_neg_ule:
578+
; CHECK: // %bb.0:
579+
; CHECK-NEXT: cmn w0, #4095, lsl #12 // =16773120
580+
; CHECK-NEXT: cset w0, lo
581+
; CHECK-NEXT: ret
582+
%cmp = icmp ule i32 %x, -16773121
583+
ret i1 %cmp
584+
}
585+
586+
define i1 @almost_immediate_neg_ule_64(i64 %x) {
587+
; CHECK-LABEL: almost_immediate_neg_ule_64:
588+
; CHECK: // %bb.0:
589+
; CHECK-NEXT: cmn x0, #4095, lsl #12 // =16773120
590+
; CHECK-NEXT: cset w0, lo
591+
; CHECK-NEXT: ret
592+
%cmp = icmp ule i64 %x, -16773121
593+
ret i1 %cmp
594+
}
595+
596+
define i1 @almost_immediate_neg_ugt(i32 %x) {
597+
; CHECK-LABEL: almost_immediate_neg_ugt:
598+
; CHECK: // %bb.0:
599+
; CHECK-NEXT: mov w8, #-16773121 // =0xff000fff
600+
; CHECK-NEXT: cmp w0, w8
601+
; CHECK-NEXT: cset w0, hi
602+
; CHECK-NEXT: ret
603+
%cmp = icmp ugt i32 %x, -16773121
604+
ret i1 %cmp
605+
}
606+
607+
define i1 @almost_immediate_neg_ugt_64(i64 %x) {
608+
; CHECK-LABEL: almost_immediate_neg_ugt_64:
609+
; CHECK: // %bb.0:
610+
; CHECK-NEXT: mov x8, #-16773121 // =0xffffffffff000fff
611+
; CHECK-NEXT: cmp x0, x8
612+
; CHECK-NEXT: cset w0, hi
613+
; CHECK-NEXT: ret
614+
%cmp = icmp ugt i64 %x, -16773121
615+
ret i1 %cmp
616+
}

0 commit comments

Comments
 (0)