[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / combine-shifts-undef.mir
blobd4dc24741527b6fe528f52336fe75e82f07a4e64
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple aarch64 -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s
3 ---
4 name:            shl_by_ge_bw
5 alignment:       4
6 tracksRegLiveness: true
7 liveins:
8   - { reg: '$w0' }
9 body:             |
10   bb.1:
11     liveins: $w0
13     ; CHECK-LABEL: name: shl_by_ge_bw
14     ; CHECK: liveins: $w0
15     ; CHECK-NEXT: {{  $}}
16     ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF
17     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[DEF]](s16)
18     ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
19     ; CHECK-NEXT: RET_ReallyLR implicit $w0
20     %1:_(s32) = COPY $w0
21     %0:_(s16) = G_TRUNC %1(s32)
22     %2:_(s16) = G_CONSTANT i16 20
23     %3:_(s16) = G_SHL %0, %2(s16)
24     %4:_(s32) = G_ANYEXT %3(s16)
25     $w0 = COPY %4(s32)
26     RET_ReallyLR implicit $w0
28 ...
29 ---
30 name:            lshr_by_ge_bw
31 alignment:       4
32 tracksRegLiveness: true
33 liveins:
34   - { reg: '$w0' }
35 body:             |
36   bb.1:
37     liveins: $w0
39     ; CHECK-LABEL: name: lshr_by_ge_bw
40     ; CHECK: liveins: $w0
41     ; CHECK-NEXT: {{  $}}
42     ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF
43     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[DEF]](s16)
44     ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
45     ; CHECK-NEXT: RET_ReallyLR implicit $w0
46     %1:_(s32) = COPY $w0
47     %0:_(s16) = G_TRUNC %1(s32)
48     %2:_(s16) = G_CONSTANT i16 16
49     %3:_(s16) = G_LSHR %0, %2(s16)
50     %4:_(s32) = G_ANYEXT %3(s16)
51     $w0 = COPY %4(s32)
52     RET_ReallyLR implicit $w0
54 ...
55 ---
56 name:            ashr_by_ge_bw
57 alignment:       4
58 tracksRegLiveness: true
59 liveins:
60   - { reg: '$w0' }
61 body:             |
62   bb.1:
63     liveins: $w0
65     ; CHECK-LABEL: name: ashr_by_ge_bw
66     ; CHECK: liveins: $w0
67     ; CHECK-NEXT: {{  $}}
68     ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF
69     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[DEF]](s16)
70     ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
71     ; CHECK-NEXT: RET_ReallyLR implicit $w0
72     %1:_(s32) = COPY $w0
73     %0:_(s16) = G_TRUNC %1(s32)
74     %2:_(s16) = G_CONSTANT i16 20
75     %3:_(s16) = G_ASHR %0, %2(s16)
76     %4:_(s32) = G_ANYEXT %3(s16)
77     $w0 = COPY %4(s32)
78     RET_ReallyLR implicit $w0
80 ...
81 ---
82 name:            shl_by_ge_bw_vector
83 alignment:       4
84 tracksRegLiveness: true
85 liveins:
86   - { reg: '$q0' }
87 body:             |
88   bb.1:
89     liveins: $q0
91     ; CHECK-LABEL: name: shl_by_ge_bw_vector
92     ; CHECK: liveins: $q0
93     ; CHECK-NEXT: {{  $}}
94     ; CHECK-NEXT: %shl:_(<4 x s32>) = G_IMPLICIT_DEF
95     ; CHECK-NEXT: $q0 = COPY %shl(<4 x s32>)
96     ; CHECK-NEXT: RET_ReallyLR implicit $q0
97     %1:_(<4 x s32>) = COPY $q0
98     %0:_(s32) = G_CONSTANT i32 32
99     %bv:_(<4 x s32>) = G_BUILD_VECTOR %0, %0, %0, %0
100     %shl:_(<4 x s32>) = G_SHL %1, %bv(<4 x s32>)
101     $q0 = COPY %shl(<4 x s32>)
102     RET_ReallyLR implicit $q0
106 name:            shl_by_ge_bw_vector_partial
107 alignment:       4
108 tracksRegLiveness: true
109 liveins:
110   - { reg: '$q0' }
111 body:             |
112   bb.1:
113     liveins: $q0
115     ; CHECK-LABEL: name: shl_by_ge_bw_vector_partial
116     ; CHECK: liveins: $q0
117     ; CHECK-NEXT: {{  $}}
118     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0
119     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32
120     ; CHECK-NEXT: %small:_(s32) = G_CONSTANT i32 4
121     ; CHECK-NEXT: %bv:_(<4 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32), [[C]](s32), %small(s32)
122     ; CHECK-NEXT: %shl:_(<4 x s32>) = G_SHL [[COPY]], %bv(<4 x s32>)
123     ; CHECK-NEXT: $q0 = COPY %shl(<4 x s32>)
124     ; CHECK-NEXT: RET_ReallyLR implicit $q0
125     %1:_(<4 x s32>) = COPY $q0
126     %0:_(s32) = G_CONSTANT i32 32
127     %small:_(s32) = G_CONSTANT i32 4
128     %bv:_(<4 x s32>) = G_BUILD_VECTOR %0, %0, %0, %small
129     %shl:_(<4 x s32>) = G_SHL %1, %bv(<4 x s32>)
130     $q0 = COPY %shl(<4 x s32>)
131     RET_ReallyLR implicit $q0