[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / combine-binop-undef-left-to-zero.mir
blobe7ddda957a54fee2797009db8b668e8abcec3476
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -o - -mtriple=aarch64-unknown-unknown -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s | FileCheck %s
3 ---
4 name:            test_combine_shl_undef_x_s32
5 body:             |
6   bb.1:
7   liveins: $w0
8     ; CHECK-LABEL: name: test_combine_shl_undef_x_s32
9     ; CHECK: liveins: $w0
10     ; CHECK-NEXT: {{  $}}
11     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
12     ; CHECK-NEXT: $w0 = COPY [[C]](s32)
13     %0:_(s32) = COPY $w0
14     %1:_(s32) = G_IMPLICIT_DEF
15     %2:_(s32) = G_SHL %1(s32), %0(s32)
16     $w0 = COPY %2(s32)
17 ...
18 ---
19 name:            test_combine_shl_undef_x_v2s32
20 body:             |
21   bb.1:
22   liveins: $d0
23     ; CHECK-LABEL: name: test_combine_shl_undef_x_v2s32
24     ; CHECK: liveins: $d0
25     ; CHECK-NEXT: {{  $}}
26     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
27     ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32)
28     ; CHECK-NEXT: $d0 = COPY [[BUILD_VECTOR]](<2 x s32>)
29     %0:_(<2 x s32>) = COPY $d0
30     %1:_(<2 x s32>) = G_IMPLICIT_DEF
31     %2:_(<2 x s32>) = G_SHL %1(<2 x s32>), %0(<2 x s32>)
32     $d0 = COPY %2(<2 x s32>)
33 ...
34 ---
35 name:            udiv_scalar
36 body:             |
37   bb.1:
38   liveins: $w0
39     ; CHECK-LABEL: name: udiv_scalar
40     ; CHECK: liveins: $w0
41     ; CHECK-NEXT: {{  $}}
42     ; CHECK-NEXT: %op:_(s32) = G_CONSTANT i32 0
43     ; CHECK-NEXT: $w0 = COPY %op(s32)
44     %rhs:_(s32) = COPY $w0
45     %undef:_(s32) = G_IMPLICIT_DEF
46     %op:_(s32) = G_UDIV %undef(s32), %rhs(s32)
47     $w0 = COPY %op(s32)
48 ...
49 ---
50 name:            udiv_vector
51 body:             |
52   bb.1:
53   liveins: $d0
54     ; CHECK-LABEL: name: udiv_vector
55     ; CHECK: liveins: $d0
56     ; CHECK-NEXT: {{  $}}
57     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
58     ; CHECK-NEXT: %op:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32)
59     ; CHECK-NEXT: $d0 = COPY %op(<2 x s32>)
60     %rhs:_(<2 x s32>) = COPY $d0
61     %undef:_(<2 x s32>) = G_IMPLICIT_DEF
62     %op:_(<2 x s32>) = G_UDIV %undef(<2 x s32>), %rhs(<2 x s32>)
63     $d0 = COPY %op(<2 x s32>)
64 ...
65 ---
66 name:            urem_scalar
67 body:             |
68   bb.1:
69   liveins: $w0
70     ; CHECK-LABEL: name: urem_scalar
71     ; CHECK: liveins: $w0
72     ; CHECK-NEXT: {{  $}}
73     ; CHECK-NEXT: %op:_(s32) = G_CONSTANT i32 0
74     ; CHECK-NEXT: $w0 = COPY %op(s32)
75     %rhs:_(s32) = COPY $w0
76     %undef:_(s32) = G_IMPLICIT_DEF
77     %op:_(s32) = G_UREM %undef(s32), %rhs(s32)
78     $w0 = COPY %op(s32)
79 ...
80 ---
81 name:            urem_vector
82 body:             |
83   bb.1:
84   liveins: $d0
85     ; CHECK-LABEL: name: urem_vector
86     ; CHECK: liveins: $d0
87     ; CHECK-NEXT: {{  $}}
88     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
89     ; CHECK-NEXT: %op:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32)
90     ; CHECK-NEXT: $d0 = COPY %op(<2 x s32>)
91     %rhs:_(<2 x s32>) = COPY $d0
92     %undef:_(<2 x s32>) = G_IMPLICIT_DEF
93     %op:_(<2 x s32>) = G_UREM %undef(<2 x s32>), %rhs(<2 x s32>)
94     $d0 = COPY %op(<2 x s32>)