1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs -mtriple aarch64-unknown-unknown %s -o - | FileCheck %s
7 tracksRegLiveness: true
10 machineFunctionInfo: {}
14 ; CHECK-LABEL: name: mul_by_zero
16 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
17 ; CHECK: $x0 = COPY [[C]](s64)
19 %1:_(s64) = G_CONSTANT i64 0
20 %2:_(s64) = G_MUL %0, %1(s64)
24 name: mul_vector_by_zero
26 tracksRegLiveness: true
29 machineFunctionInfo: {}
33 ; Currently not implemented.
34 ; CHECK-LABEL: name: mul_vector_by_zero
36 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0
37 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
38 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32)
39 ; CHECK: [[MUL:%[0-9]+]]:_(<4 x s32>) = G_MUL [[COPY]], [[BUILD_VECTOR]]
40 ; CHECK: $q0 = COPY [[MUL]](<4 x s32>)
41 %0:_(<4 x s32>) = COPY $q0
42 %1:_(s32) = G_CONSTANT i32 0
43 %2:_(<4 x s32>) = G_BUILD_VECTOR %1(s32), %1(s32), %1(s32), %1(s32)
44 %3:_(<4 x s32>) = G_MUL %0, %2(<4 x s32>)
45 $q0 = COPY %3(<4 x s32>)
50 tracksRegLiveness: true
53 machineFunctionInfo: {}
57 ; CHECK-LABEL: name: mul_by_one
59 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
60 ; CHECK: $x0 = COPY [[COPY]](s64)
62 %1:_(s64) = G_CONSTANT i64 1
63 %2:_(s64) = G_MUL %0, %1(s64)
67 name: mul_vector_by_one
69 tracksRegLiveness: true
72 machineFunctionInfo: {}
76 ; Currently not implemented.
77 ; CHECK-LABEL: name: mul_vector_by_one
79 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0
80 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
81 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32)
82 ; CHECK: [[MUL:%[0-9]+]]:_(<4 x s32>) = G_MUL [[COPY]], [[BUILD_VECTOR]]
83 ; CHECK: $q0 = COPY [[MUL]](<4 x s32>)
84 %0:_(<4 x s32>) = COPY $q0
85 %1:_(s32) = G_CONSTANT i32 1
86 %2:_(<4 x s32>) = G_BUILD_VECTOR %1(s32), %1(s32), %1(s32), %1(s32)
87 %3:_(<4 x s32>) = G_MUL %0, %2(<4 x s32>)
88 $q0 = COPY %3(<4 x s32>)
93 tracksRegLiveness: true
96 machineFunctionInfo: {}
100 ; CHECK-LABEL: name: mul_by_neg_one
101 ; CHECK: liveins: $x0
102 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
103 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
104 ; CHECK: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[C]], [[COPY]]
105 ; CHECK: $x0 = COPY [[SUB]](s64)
107 %1:_(s64) = G_CONSTANT i64 -1
108 %2:_(s64) = G_MUL %0, %1(s64)
112 name: mul_vector_by_neg_one
114 tracksRegLiveness: true
117 machineFunctionInfo: {}
121 ; Currently not implemented.
122 ; CHECK-LABEL: name: mul_vector_by_neg_one
123 ; CHECK: liveins: $q0
124 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0
125 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1
126 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32)
127 ; CHECK: [[MUL:%[0-9]+]]:_(<4 x s32>) = G_MUL [[COPY]], [[BUILD_VECTOR]]
128 ; CHECK: $q0 = COPY [[MUL]](<4 x s32>)
129 %0:_(<4 x s32>) = COPY $q0
130 %1:_(s32) = G_CONSTANT i32 -1
131 %2:_(<4 x s32>) = G_BUILD_VECTOR %1(s32), %1(s32), %1(s32), %1(s32)
132 %3:_(<4 x s32>) = G_MUL %0, %2(<4 x s32>)
133 $q0 = COPY %3(<4 x s32>)