Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / AArch64 / sve-ptest-removal-rdffr.mir
blob86383ea53318006759eb48c94108c10e0ba46472
1 # RUN: llc -mtriple=aarch64--linux-gnu -mattr=+sve -run-pass=peephole-opt -verify-machineinstrs %s -o - | FileCheck %s
2 # Test that RDFFR followed by PTEST is replaced with RDFFRS.
3 ---
4 # CHECK-LABEL: name:{{\s*}} substitute_rdffr_pp_with_rdffrs_pp
5 name:                       substitute_rdffr_pp_with_rdffrs_pp
6 tracksRegLiveness: true
7 body: |
8   bb.0:
9     liveins: $ffr, $p0
10     %0:ppr_3b = COPY $p0
12     ; CHECK: RDFFRS_PPz
13     ; CHECK-NOT: PTEST
14     %1:ppr_3b = RDFFR_PPz %0:ppr_3b, implicit $ffr
15     PTEST_PP killed %0:ppr_3b, killed %1:ppr_3b, implicit-def $nzcv
17     ; Consume nzcv
18     %2:gpr32 = COPY $wzr
19     %3:gpr32 = CSINCWr killed %2, $wzr, 0, implicit $nzcv
20     $w0 = COPY %3
21     RET_ReallyLR implicit $w0
22 ...
23 ---
24 # CHECK-LABEL: name:{{\s*}} fail_to_substitute_rdffr_pp_with_rdffrs_pp_differing_mask
25 name:                       fail_to_substitute_rdffr_pp_with_rdffrs_pp_differing_mask
26 tracksRegLiveness: true
27 body: |
28   bb.0:
29     liveins: $ffr, $p0, $p1
30     %0:ppr_3b = COPY $p0
31     %1:ppr_3b = COPY $p1
33     ; CHECK: RDFFR_PPz
34     ; CHECK: PTEST
35     %2:ppr_3b = RDFFR_PPz %0:ppr_3b, implicit $ffr
36     PTEST_PP killed %1:ppr_3b, killed %2:ppr_3b, implicit-def $nzcv
38     ; Consume nzcv
39     %3:gpr32 = COPY $wzr
40     %4:gpr32 = CSINCWr killed %3, $wzr, 0, implicit $nzcv
41     $w0 = COPY %4
42     RET_ReallyLR implicit $w0
43 ...
44 ---
45 # CHECK-LABEL: name:{{\s*}} fail_to_substitute_rdffr_pp_with_rdffrs_pp_nzcv_clobbered
46 name:                       fail_to_substitute_rdffr_pp_with_rdffrs_pp_nzcv_clobbered
47 tracksRegLiveness: true
48 body: |
49   bb.0:
50     liveins: $ffr, $p0, $x0
51     %0:ppr_3b = COPY $p0
53     ; CHECK: RDFFR_PPz
54     ; CHECK-NEXT: ADDSXrr
55     ; CHECK-NEXT: PTEST_PP
56     %1:ppr_3b = RDFFR_PPz %0:ppr_3b, implicit $ffr
57     ; Clobber nzcv
58     $x0 = ADDSXrr $x0, $x0, implicit-def $nzcv
59     PTEST_PP killed %0:ppr_3b, killed %1:ppr_3b, implicit-def $nzcv
61     ; Consume nzcv
62     %2:gpr32 = COPY $wzr
63     %3:gpr32 = CSINCWr killed %2, $wzr, 0, implicit $nzcv
64     $w0 = COPY %3
65     RET_ReallyLR implicit $w0
66 ...
67 ---
68 # CHECK-LABEL: name:{{\s*}} fail_to_substitute_rdffr_pp_with_rdffrs_pp_nzcv_flags_used_between
69 name:                       fail_to_substitute_rdffr_pp_with_rdffrs_pp_nzcv_flags_used_between
70 tracksRegLiveness: true
71 body: |
72   bb.0:
73     liveins: $ffr, $p0, $x0
74     %0:ppr_3b = COPY $p0
76     $wzr = SUBSWri $w0, 0, 0, implicit-def $nzcv
78     ; CHECK: RDFFR_PPz
79     ; CHECK-NEXT: CSINCWr
80     ; CHECK-NEXT: PTEST_PP
81     %1:ppr_3b = RDFFR_PPz %0:ppr_3b, implicit $ffr
82     ; Consume nzcv
83     %2:gpr32 = CSINCWr $wzr, $wzr, 0, implicit $nzcv
84     PTEST_PP killed %0:ppr_3b, killed %1:ppr_3b, implicit-def $nzcv
86     ; Consume nzcv
87     %3:gpr32 = COPY $wzr
88     %4:gpr32 = CSINCWr killed %3, $wzr, 0, implicit $nzcv
89     $w0 = ORRWrs %4, %2, 1
90     RET_ReallyLR implicit $w0