Skip to content

Commit 39752d3

Browse files
committed
Test other shift amounts.
1 parent fde8a5f commit 39752d3

File tree

1 file changed

+134
-10
lines changed

1 file changed

+134
-10
lines changed

llvm/test/CodeGen/AArch64/arm64-movi.ll

Lines changed: 134 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -554,48 +554,172 @@ define i64 @orr_32_eor_64() nounwind {
554554
; Tests for EOR / EON with MOVN.
555555
;==--------------------------------------------------------------------------==
556556

557-
define i64 @movn_0_eon() {
558-
; CHECK-LABEL: movn_0_eon:
557+
define i64 @movn_0_eon_lsl_17() {
558+
; CHECK-LABEL: movn_0_eon_lsl_17:
559+
; CHECK: // %bb.0:
560+
; CHECK-NEXT: mov x0, #-4370 // =0xffffffffffffeeee
561+
; CHECK-NEXT: movk x0, #8738, lsl #16
562+
; CHECK-NEXT: movk x0, #65534, lsl #32
563+
; CHECK-NEXT: ret
564+
ret i64 u0xfffffffe2222eeee
565+
}
566+
567+
define i64 @movn_0_eon_lsl_32() {
568+
; CHECK-LABEL: movn_0_eon_lsl_32:
559569
; CHECK: // %bb.0:
560570
; CHECK-NEXT: mov x0, #-43691 // =0xffffffffffff5555
561571
; CHECK-NEXT: eon x0, x0, x0, lsl #32
562572
; CHECK-NEXT: ret
563573
ret i64 u0xffff55550000aaaa
564574
}
565575

566-
define i64 @movn_1_eon() {
567-
; CHECK-LABEL: movn_1_eon:
576+
define i64 @movn_0_eon_lsl_47() {
577+
; CHECK-LABEL: movn_0_eon_lsl_47:
578+
; CHECK: // %bb.0:
579+
; CHECK-NEXT: mov x0, #61166 // =0xeeee
580+
; CHECK-NEXT: movk x0, #32768, lsl #32
581+
; CHECK-NEXT: movk x0, #34952, lsl #48
582+
; CHECK-NEXT: ret
583+
ret i64 u0x888880000000eeee
584+
}
585+
586+
define i64 @movn_1_eon_lsl_17() {
587+
; CHECK-LABEL: movn_1_eon_lsl_17:
588+
; CHECK: // %bb.0:
589+
; CHECK-NEXT: mov x0, #286261248 // =0x11100000
590+
; CHECK-NEXT: movk x0, #8739, lsl #32
591+
; CHECK-NEXT: movk x0, #65534, lsl #48
592+
; CHECK-NEXT: ret
593+
ret i64 u0xfffe222311100000
594+
}
595+
596+
define i64 @movn_1_eon_lsl_32() {
597+
; CHECK-LABEL: movn_1_eon_lsl_32:
568598
; CHECK: // %bb.0:
569599
; CHECK-NEXT: mov x0, #-2863267841 // =0xffffffff5555ffff
570600
; CHECK-NEXT: eon x0, x0, x0, lsl #32
571601
; CHECK-NEXT: ret
572602
ret i64 u0x5555ffffaaaa0000
573603
}
574604

575-
define i64 @movn_0_eor() {
576-
; CHECK-LABEL: movn_0_eor:
605+
define i64 @movn_1_eon_lsl_46() {
606+
; CHECK-LABEL: movn_1_eon_lsl_46:
607+
; CHECK: // %bb.0:
608+
; CHECK-NEXT: mov x0, #4008509440 // =0xeeed0000
609+
; CHECK-NEXT: movk x0, #49152, lsl #32
610+
; CHECK-NEXT: movk x0, #49151, lsl #48
611+
; CHECK-NEXT: ret
612+
ret i64 u0xbfffc000eeed0000
613+
}
614+
615+
define i64 @movn_0_eor_lsl_17() {
616+
; CHECK-LABEL: movn_0_eor_lsl_17:
617+
; CHECK: // %bb.0:
618+
; CHECK-NEXT: mov x0, #4369 // =0x1111
619+
; CHECK-NEXT: movk x0, #56797, lsl #16
620+
; CHECK-NEXT: movk x0, #1, lsl #32
621+
; CHECK-NEXT: ret
622+
ret i64 u0x00000001dddd1111
623+
}
624+
625+
define i64 @movn_0_eor_lsl_32() {
626+
; CHECK-LABEL: movn_0_eor_lsl_32:
577627
; CHECK: // %bb.0:
578628
; CHECK-NEXT: mov x0, #-43691 // =0xffffffffffff5555
579629
; CHECK-NEXT: eor x0, x0, x0, lsl #32
580630
; CHECK-NEXT: ret
581631
ret i64 u0x0000aaaaffff5555
582632
}
583633

584-
define i64 @movn_1_eor() {
585-
; CHECK-LABEL: movn_1_eor:
634+
define i64 @movn_0_eor_lsl_47() {
635+
; CHECK-LABEL: movn_0_eor_lsl_47:
636+
; CHECK: // %bb.0:
637+
; CHECK-NEXT: mov x0, #-61167 // =0xffffffffffff1111
638+
; CHECK-NEXT: movk x0, #32767, lsl #32
639+
; CHECK-NEXT: movk x0, #30583, lsl #48
640+
; CHECK-NEXT: ret
641+
ret i64 u0x77777fffffff1111
642+
}
643+
644+
define i64 @movn_1_eor_lsl_17() {
645+
; CHECK-LABEL: movn_1_eor_lsl_17:
646+
; CHECK: // %bb.0:
647+
; CHECK-NEXT: mov x0, #-286261249 // =0xffffffffeeefffff
648+
; CHECK-NEXT: movk x0, #56796, lsl #32
649+
; CHECK-NEXT: movk x0, #1, lsl #48
650+
; CHECK-NEXT: ret
651+
ret i64 u0x0001dddceeefffff
652+
}
653+
654+
define i64 @movn_1_eor_lsl_32() {
655+
; CHECK-LABEL: movn_1_eor_lsl_32:
586656
; CHECK: // %bb.0:
587657
; CHECK-NEXT: mov x0, #-2863267841 // =0xffffffff5555ffff
588658
; CHECK-NEXT: eor x0, x0, x0, lsl #32
589659
; CHECK-NEXT: ret
590660
ret i64 u0xaaaa00005555ffff
591661
}
592662

593-
define i64 @movn_movk_eor() {
594-
; CHECK-LABEL: movn_movk_eor:
663+
define i64 @movn_1_eor_lsl_46() {
664+
; CHECK-LABEL: movn_1_eor_lsl_46:
665+
; CHECK: // %bb.0:
666+
; CHECK-NEXT: mov x0, #-4008509441
667+
; CHECK-NEXT: movk x0, #16383, lsl #32
668+
; CHECK-NEXT: movk x0, #16384, lsl #48
669+
; CHECK-NEXT: ret
670+
ret i64 u0x40003fff1112ffff
671+
}
672+
673+
define i64 @movn_movk_eon_lsl_17() {
674+
; CHECK-LABEL: movn_movk_eon_lsl_17:
675+
; CHECK: // %bb.0:
676+
; CHECK-NEXT: mov x0, #43399 // =0xa987
677+
; CHECK-NEXT: movk x0, #16699, lsl #16
678+
; CHECK-NEXT: movk x0, #9320, lsl #32
679+
; CHECK-NEXT: movk x0, #65534, lsl #48
680+
; CHECK-NEXT: ret
681+
ret i64 u0xfffe2468413ba987
682+
}
683+
684+
define i64 @movn_movk_eon_lsl_47() {
685+
; CHECK-LABEL: movn_movk_eon_lsl_47:
686+
; CHECK: // %bb.0:
687+
; CHECK-NEXT: mov x0, #61166 // =0xeeee
688+
; CHECK-NEXT: movk x0, #21554, lsl #16
689+
; CHECK-NEXT: movk x0, #32768, lsl #32
690+
; CHECK-NEXT: movk x0, #34952, lsl #48
691+
; CHECK-NEXT: ret
692+
ret i64 u0x888880005432eeee
693+
}
694+
695+
define i64 @movn_movk_eor_lsl_17() {
696+
; CHECK-LABEL: movn_movk_eor_lsl_17:
697+
; CHECK: // %bb.0:
698+
; CHECK-NEXT: mov x0, #22136 // =0x5678
699+
; CHECK-NEXT: movk x0, #48836, lsl #16
700+
; CHECK-NEXT: movk x0, #56215, lsl #32
701+
; CHECK-NEXT: movk x0, #1, lsl #48
702+
; CHECK-NEXT: ret
703+
ret i64 u0x0001db97bec45678
704+
}
705+
706+
define i64 @movn_movk_eor_lsl_32() {
707+
; CHECK-LABEL: movn_movk_eor_lsl_32:
595708
; CHECK: // %bb.0:
596709
; CHECK-NEXT: mov x0, #-21846 // =0xffffffffffffaaaa
597710
; CHECK-NEXT: movk x0, #52428, lsl #16
598711
; CHECK-NEXT: eor x0, x0, x0, lsl #32
599712
; CHECK-NEXT: ret
600713
ret i64 u0x33335555ccccaaaa
601714
}
715+
716+
define i64 @movn_movk_eor_lsl_47() {
717+
; CHECK-LABEL: movn_movk_eor_lsl_47:
718+
; CHECK: // %bb.0:
719+
; CHECK-NEXT: mov x0, #4369 // =0x1111
720+
; CHECK-NEXT: movk x0, #43981, lsl #16
721+
; CHECK-NEXT: movk x0, #32767, lsl #32
722+
; CHECK-NEXT: movk x0, #30583, lsl #48
723+
; CHECK-NEXT: ret
724+
ret i64 u0x77777fffabcd1111
725+
}

0 commit comments

Comments
 (0)