1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2 2# RUN: llc -mtriple aarch64 -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s 3--- 4name: fadd 5tracksRegLiveness: true 6body: | 7 bb.1: 8 liveins: $s0 9 10 ; CHECK-LABEL: name: fadd 11 ; CHECK: liveins: $s0 12 ; CHECK-NEXT: {{ $}} 13 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0 14 ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 1.000000e+00 15 ; CHECK-NEXT: %add:_(s32) = G_FADD [[COPY]], %cst 16 ; CHECK-NEXT: $s0 = COPY %add(s32) 17 ; CHECK-NEXT: RET_ReallyLR 18 %0:_(s32) = COPY $s0 19 %cst:_(s32) = G_FCONSTANT float 1.000000e+00 20 %add:_(s32) = G_FADD %cst, %0 21 $s0 = COPY %add 22 RET_ReallyLR 23 24... 25--- 26name: fmul 27tracksRegLiveness: true 28body: | 29 bb.1: 30 liveins: $s0 31 32 ; CHECK-LABEL: name: fmul 33 ; CHECK: liveins: $s0 34 ; CHECK-NEXT: {{ $}} 35 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0 36 ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 2.000000e+00 37 ; CHECK-NEXT: %mul:_(s32) = G_FMUL [[COPY]], %cst 38 ; CHECK-NEXT: $s0 = COPY %mul(s32) 39 ; CHECK-NEXT: RET_ReallyLR 40 %0:_(s32) = COPY $s0 41 %cst:_(s32) = G_FCONSTANT float 2.000000e+00 42 %mul:_(s32) = G_FMUL %cst, %0 43 $s0 = COPY %mul 44 RET_ReallyLR 45... 46--- 47name: fmul_vector 48tracksRegLiveness: true 49body: | 50 bb.1: 51 liveins: $s0 52 53 ; CHECK-LABEL: name: fmul_vector 54 ; CHECK: liveins: $s0 55 ; CHECK-NEXT: {{ $}} 56 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0 57 ; CHECK-NEXT: %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00 58 ; CHECK-NEXT: %cst:_(<4 x s32>) = G_BUILD_VECTOR %cst_scalar(s32), %cst_scalar(s32), %cst_scalar(s32), %cst_scalar(s32) 59 ; CHECK-NEXT: %mul:_(<4 x s32>) = G_FMUL [[COPY]], %cst 60 ; CHECK-NEXT: $q0 = COPY %mul(<4 x s32>) 61 ; CHECK-NEXT: RET_ReallyLR 62 %0:_(<4 x s32>) = COPY $q0 63 %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00 64 %cst:_(<4 x s32>) = G_BUILD_VECTOR %cst_scalar, %cst_scalar, %cst_scalar, %cst_scalar 65 %mul:_(<4 x s32>) = G_FMUL %cst, %0 66 $q0 = COPY %mul 67 RET_ReallyLR 68... 69--- 70name: fmul_splat_with_undef 71tracksRegLiveness: true 72body: | 73 bb.1: 74 liveins: $q0 75 76 ; CHECK-LABEL: name: fmul_splat_with_undef 77 ; CHECK: liveins: $q0 78 ; CHECK-NEXT: {{ $}} 79 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0 80 ; CHECK-NEXT: %undef:_(s32) = G_IMPLICIT_DEF 81 ; CHECK-NEXT: %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00 82 ; CHECK-NEXT: %cst:_(<4 x s32>) = G_BUILD_VECTOR %undef(s32), %undef(s32), %cst_scalar(s32), %cst_scalar(s32) 83 ; CHECK-NEXT: %mul:_(<4 x s32>) = G_FMUL [[COPY]], %cst 84 ; CHECK-NEXT: $q0 = COPY %mul(<4 x s32>) 85 ; CHECK-NEXT: RET_ReallyLR 86 %0:_(<4 x s32>) = COPY $q0 87 %undef:_(s32) = G_IMPLICIT_DEF 88 %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00 89 %cst:_(<4 x s32>) = G_BUILD_VECTOR %undef, %undef, %cst_scalar, %cst_scalar 90 %mul:_(<4 x s32>) = G_FMUL %cst, %0 91 $q0 = COPY %mul 92 RET_ReallyLR 93... 94--- 95name: fmul_vector_nonsplat 96tracksRegLiveness: true 97body: | 98 bb.1: 99 liveins: $s0 100 101 ; CHECK-LABEL: name: fmul_vector_nonsplat 102 ; CHECK: liveins: $s0 103 ; CHECK-NEXT: {{ $}} 104 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0 105 ; CHECK-NEXT: %scalar:_(s32) = COPY $s0 106 ; CHECK-NEXT: %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00 107 ; CHECK-NEXT: %cst:_(<4 x s32>) = G_BUILD_VECTOR %cst_scalar(s32), %cst_scalar(s32), %cst_scalar(s32), %scalar(s32) 108 ; CHECK-NEXT: %mul:_(<4 x s32>) = G_FMUL %cst, [[COPY]] 109 ; CHECK-NEXT: $q0 = COPY %mul(<4 x s32>) 110 ; CHECK-NEXT: RET_ReallyLR 111 %0:_(<4 x s32>) = COPY $q0 112 %scalar:_(s32) = COPY $s0 113 %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00 114 %cst:_(<4 x s32>) = G_BUILD_VECTOR %cst_scalar, %cst_scalar, %cst_scalar, %scalar 115 %mul:_(<4 x s32>) = G_FMUL %cst, %0 116 $q0 = COPY %mul 117 RET_ReallyLR 118... 119--- 120name: fminnum 121tracksRegLiveness: true 122body: | 123 bb.1: 124 liveins: $s0 125 126 ; CHECK-LABEL: name: fminnum 127 ; CHECK: liveins: $s0 128 ; CHECK-NEXT: {{ $}} 129 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0 130 ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 2.000000e+00 131 ; CHECK-NEXT: %min:_(s32) = G_FMINNUM [[COPY]], %cst 132 ; CHECK-NEXT: $s0 = COPY %min(s32) 133 ; CHECK-NEXT: RET_ReallyLR 134 %0:_(s32) = COPY $s0 135 %cst:_(s32) = G_FCONSTANT float 2.000000e+00 136 %min:_(s32) = G_FMINNUM %cst, %0 137 $s0 = COPY %min 138 RET_ReallyLR 139... 140--- 141name: fmaxnum 142tracksRegLiveness: true 143body: | 144 bb.1: 145 liveins: $s0 146 147 ; CHECK-LABEL: name: fmaxnum 148 ; CHECK: liveins: $s0 149 ; CHECK-NEXT: {{ $}} 150 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0 151 ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 2.000000e+00 152 ; CHECK-NEXT: %max:_(s32) = G_FMAXNUM [[COPY]], %cst 153 ; CHECK-NEXT: $s0 = COPY %max(s32) 154 ; CHECK-NEXT: RET_ReallyLR 155 %0:_(s32) = COPY $s0 156 %cst:_(s32) = G_FCONSTANT float 2.000000e+00 157 %max:_(s32) = G_FMAXNUM %cst, %0 158 $s0 = COPY %max 159 RET_ReallyLR 160... 161--- 162name: fminnum_ieee 163tracksRegLiveness: true 164body: | 165 bb.1: 166 liveins: $s0 167 168 ; CHECK-LABEL: name: fminnum_ieee 169 ; CHECK: liveins: $s0 170 ; CHECK-NEXT: {{ $}} 171 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0 172 ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 2.000000e+00 173 ; CHECK-NEXT: %min:_(s32) = G_FMINNUM_IEEE [[COPY]], %cst 174 ; CHECK-NEXT: $s0 = COPY %min(s32) 175 ; CHECK-NEXT: RET_ReallyLR 176 %0:_(s32) = COPY $s0 177 %cst:_(s32) = G_FCONSTANT float 2.000000e+00 178 %min:_(s32) = G_FMINNUM_IEEE %cst, %0 179 $s0 = COPY %min 180 RET_ReallyLR 181... 182--- 183name: fmaxnum_ieee 184tracksRegLiveness: true 185body: | 186 bb.1: 187 liveins: $s0 188 189 ; CHECK-LABEL: name: fmaxnum_ieee 190 ; CHECK: liveins: $s0 191 ; CHECK-NEXT: {{ $}} 192 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0 193 ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 2.000000e+00 194 ; CHECK-NEXT: %max:_(s32) = G_FMAXNUM_IEEE [[COPY]], %cst 195 ; CHECK-NEXT: $s0 = COPY %max(s32) 196 ; CHECK-NEXT: RET_ReallyLR 197 %0:_(s32) = COPY $s0 198 %cst:_(s32) = G_FCONSTANT float 2.000000e+00 199 %max:_(s32) = G_FMAXNUM_IEEE %cst, %0 200 $s0 = COPY %max 201 RET_ReallyLR 202... 203--- 204name: fminimum 205tracksRegLiveness: true 206body: | 207 bb.1: 208 liveins: $s0 209 210 ; CHECK-LABEL: name: fminimum 211 ; CHECK: liveins: $s0 212 ; CHECK-NEXT: {{ $}} 213 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0 214 ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 2.000000e+00 215 ; CHECK-NEXT: %min:_(s32) = G_FMINIMUM [[COPY]], %cst 216 ; CHECK-NEXT: $s0 = COPY %min(s32) 217 ; CHECK-NEXT: RET_ReallyLR 218 %0:_(s32) = COPY $s0 219 %cst:_(s32) = G_FCONSTANT float 2.000000e+00 220 %min:_(s32) = G_FMINIMUM %cst, %0 221 $s0 = COPY %min 222 RET_ReallyLR 223... 224--- 225name: fmaximum 226tracksRegLiveness: true 227body: | 228 bb.1: 229 liveins: $s0 230 231 ; CHECK-LABEL: name: fmaximum 232 ; CHECK: liveins: $s0 233 ; CHECK-NEXT: {{ $}} 234 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0 235 ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 2.000000e+00 236 ; CHECK-NEXT: %max:_(s32) = G_FMAXIMUM [[COPY]], %cst 237 ; CHECK-NEXT: $s0 = COPY %max(s32) 238 ; CHECK-NEXT: RET_ReallyLR 239 %0:_(s32) = COPY $s0 240 %cst:_(s32) = G_FCONSTANT float 2.000000e+00 241 %max:_(s32) = G_FMAXIMUM %cst, %0 242 $s0 = COPY %max 243 RET_ReallyLR 244... 245