Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / ARM / GlobalISel / arm-legalize-cmp.mir
blobc03e985f09c3b623d5a10a1df46b32b0444b9238
1 # RUN: llc -mtriple arm-- -run-pass=legalizer %s -o - | FileCheck %s
2 # RUN: llc -mtriple thumb-- -mattr=+v6t2 -run-pass=legalizer %s -o - | FileCheck %s
3 --- |
4   define void @test_icmp_s8() { ret void }
5   define void @test_icmp_s16() { ret void }
6   define void @test_icmp_s32() { ret void }
8   define void @test_icmp_p0() { ret void }
9 ...
10 ---
11 name:            test_icmp_s8
12 # CHECK-LABEL: name: test_icmp_s8
13 legalized:       false
14 # CHECK: legalized: true
15 regBankSelected: false
16 selected:        false
17 tracksRegLiveness: true
18 registers:
19   - { id: 0, class: _ }
20   - { id: 1, class: _ }
21   - { id: 2, class: _ }
22   - { id: 3, class: _ }
23   - { id: 4, class: _ }
24   - { id: 5, class: _ }
25 body:             |
26   bb.0:
27     liveins: $r0, $r1
29     %0(p0) = COPY $r0
30     %1(s8) = G_LOAD %0 :: (load (s8))
31     %2(p0) = COPY $r1
32     %3(s8) = G_LOAD %2 :: (load (s8))
33     %4(s1) = G_ICMP intpred(ne), %1(s8), %3
34     ; G_ICMP with s8 should widen
35     ; CHECK: {{%[0-9]+}}:_(s1) = G_ICMP intpred(ne), {{%[0-9]+}}(s32), {{%[0-9]+}}
36     ; CHECK-NOT: {{%[0-9]+}}:_(s1) = G_ICMP intpred(ne), {{%[0-9]+}}(s8), {{%[0-9]+}}
37     %5(s32) = G_ZEXT %4(s1)
38     $r0 = COPY %5(s32)
39     BX_RET 14, $noreg, implicit $r0
40 ...
41 ---
42 name:            test_icmp_s16
43 # CHECK-LABEL: name: test_icmp_s16
44 legalized:       false
45 # CHECK: legalized: true
46 regBankSelected: false
47 selected:        false
48 tracksRegLiveness: true
49 registers:
50   - { id: 0, class: _ }
51   - { id: 1, class: _ }
52   - { id: 2, class: _ }
53   - { id: 3, class: _ }
54   - { id: 4, class: _ }
55   - { id: 5, class: _ }
56 body:             |
57   bb.0:
58     liveins: $r0, $r1
60     %0(p0) = COPY $r0
61     %1(s16) = G_LOAD %0 :: (load (s16))
62     %2(p0) = COPY $r1
63     %3(s16) = G_LOAD %2 :: (load (s16))
64     %4(s1) = G_ICMP intpred(slt), %1(s16), %3
65     ; G_ICMP with s16 should widen
66     ; CHECK: {{%[0-9]+}}:_(s1) = G_ICMP intpred(slt), {{%[0-9]+}}(s32), {{%[0-9]+}}
67     ; CHECK-NOT: {{%[0-9]+}}:_(s1) = G_ICMP intpred(slt), {{%[0-9]+}}(s16), {{%[0-9]+}}
68     %5(s32) = G_ZEXT %4(s1)
69     $r0 = COPY %5(s32)
70     BX_RET 14, $noreg, implicit $r0
71 ...
72 ---
73 name:            test_icmp_s32
74 # CHECK-LABEL: name: test_icmp_s32
75 legalized:       false
76 # CHECK: legalized: true
77 regBankSelected: false
78 selected:        false
79 tracksRegLiveness: true
80 registers:
81   - { id: 0, class: _ }
82   - { id: 1, class: _ }
83   - { id: 2, class: _ }
84   - { id: 3, class: _ }
85 body:             |
86   bb.0:
87     liveins: $r0, $r1
89     %0(s32) = COPY $r0
90     %1(s32) = COPY $r1
91     %2(s1) = G_ICMP intpred(eq), %0(s32), %1
92     ; G_ICMP with s32 is legal, so we should find it unchanged in the output
93     ; CHECK: {{%[0-9]+}}:_(s1) = G_ICMP intpred(eq), {{%[0-9]+}}(s32), {{%[0-9]+}}
94     %3(s32) = G_ZEXT %2(s1)
95     $r0 = COPY %3(s32)
96     BX_RET 14, $noreg, implicit $r0
97 ...
98 ---
99 name:            test_icmp_p0
100 # CHECK-LABEL: name: test_icmp_p0
101 legalized:       false
102 # CHECK: legalized: true
103 regBankSelected: false
104 selected:        false
105 tracksRegLiveness: true
106 registers:
107   - { id: 0, class: _ }
108   - { id: 1, class: _ }
109   - { id: 2, class: _ }
110   - { id: 3, class: _ }
111 body:             |
112   bb.0:
113     liveins: $r0, $r1
115     %0(p0) = COPY $r0
116     %1(p0) = COPY $r1
117     %2(s1) = G_ICMP intpred(eq), %0(p0), %1
118     ; G_ICMP with p0 is legal, so we should find it unchanged in the output
119     ; CHECK: {{%[0-9]+}}:_(s1) = G_ICMP intpred(eq), {{%[0-9]+}}(p0), {{%[0-9]+}}
120     %3(s32) = G_ZEXT %2(s1)
121     $r0 = COPY %3(s32)
122     BX_RET 14, $noreg, implicit $r0