334 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -verify-machineinstrs -mtriple aarch64--- \3# RUN: -run-pass=legalizer -mattr=+fullfp16 -global-isel %s -o - \4# RUN: | FileCheck %s5...6---7name: test_v4f16.atan28alignment: 49tracksRegLiveness: true10registers:11 - { id: 0, class: _ }12 - { id: 1, class: _ }13body: |14 bb.0:15 liveins: $d0, $d116 17 ; CHECK-LABEL: name: test_v4f16.atan218 ; CHECK: liveins: $d0, $d119 ; CHECK-NEXT: {{ $}}20 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d021 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s16>) = COPY $d122 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16), [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)23 ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16), [[UV6:%[0-9]+]]:_(s16), [[UV7:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>)24 ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[UV]](s16)25 ; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(s32) = G_FPEXT [[UV4]](s16)26 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp27 ; CHECK-NEXT: $s0 = COPY [[FPEXT]](s32)28 ; CHECK-NEXT: $s1 = COPY [[FPEXT1]](s32)29 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s030 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp31 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $s032 ; CHECK-NEXT: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY2]](s32)33 ; CHECK-NEXT: [[FPEXT2:%[0-9]+]]:_(s32) = G_FPEXT [[UV1]](s16)34 ; CHECK-NEXT: [[FPEXT3:%[0-9]+]]:_(s32) = G_FPEXT [[UV5]](s16)35 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp36 ; CHECK-NEXT: $s0 = COPY [[FPEXT2]](s32)37 ; CHECK-NEXT: $s1 = COPY [[FPEXT3]](s32)38 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s039 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp40 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $s041 ; CHECK-NEXT: [[FPTRUNC1:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY3]](s32)42 ; CHECK-NEXT: [[FPEXT4:%[0-9]+]]:_(s32) = G_FPEXT [[UV2]](s16)43 ; CHECK-NEXT: [[FPEXT5:%[0-9]+]]:_(s32) = G_FPEXT [[UV6]](s16)44 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp45 ; CHECK-NEXT: $s0 = COPY [[FPEXT4]](s32)46 ; CHECK-NEXT: $s1 = COPY [[FPEXT5]](s32)47 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s048 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp49 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $s050 ; CHECK-NEXT: [[FPTRUNC2:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY4]](s32)51 ; CHECK-NEXT: [[FPEXT6:%[0-9]+]]:_(s32) = G_FPEXT [[UV3]](s16)52 ; CHECK-NEXT: [[FPEXT7:%[0-9]+]]:_(s32) = G_FPEXT [[UV7]](s16)53 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp54 ; CHECK-NEXT: $s0 = COPY [[FPEXT6]](s32)55 ; CHECK-NEXT: $s1 = COPY [[FPEXT7]](s32)56 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s057 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp58 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $s059 ; CHECK-NEXT: [[FPTRUNC3:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY5]](s32)60 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s16>) = G_BUILD_VECTOR [[FPTRUNC]](s16), [[FPTRUNC1]](s16), [[FPTRUNC2]](s16), [[FPTRUNC3]](s16)61 ; CHECK-NEXT: $d0 = COPY [[BUILD_VECTOR]](<4 x s16>)62 ; CHECK-NEXT: RET_ReallyLR implicit $d063 %0:_(<4 x s16>) = COPY $d064 %1:_(<4 x s16>) = COPY $d165 %2:_(<4 x s16>) = G_FATAN2 %0, %166 $d0 = COPY %2(<4 x s16>)67 RET_ReallyLR implicit $d068 69...70---71name: test_v8f16.atan272alignment: 473tracksRegLiveness: true74registers:75 - { id: 0, class: _ }76 - { id: 1, class: _ }77body: |78 bb.0:79 liveins: $q0, $q180 81 ; CHECK-LABEL: name: test_v8f16.atan282 ; CHECK: liveins: $q0, $q183 ; CHECK-NEXT: {{ $}}84 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q085 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s16>) = COPY $q186 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16), [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16), [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16), [[UV6:%[0-9]+]]:_(s16), [[UV7:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY]](<8 x s16>)87 ; CHECK-NEXT: [[UV8:%[0-9]+]]:_(s16), [[UV9:%[0-9]+]]:_(s16), [[UV10:%[0-9]+]]:_(s16), [[UV11:%[0-9]+]]:_(s16), [[UV12:%[0-9]+]]:_(s16), [[UV13:%[0-9]+]]:_(s16), [[UV14:%[0-9]+]]:_(s16), [[UV15:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY1]](<8 x s16>)88 ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[UV]](s16)89 ; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(s32) = G_FPEXT [[UV8]](s16)90 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp91 ; CHECK-NEXT: $s0 = COPY [[FPEXT]](s32)92 ; CHECK-NEXT: $s1 = COPY [[FPEXT1]](s32)93 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s094 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp95 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $s096 ; CHECK-NEXT: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY2]](s32)97 ; CHECK-NEXT: [[FPEXT2:%[0-9]+]]:_(s32) = G_FPEXT [[UV1]](s16)98 ; CHECK-NEXT: [[FPEXT3:%[0-9]+]]:_(s32) = G_FPEXT [[UV9]](s16)99 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp100 ; CHECK-NEXT: $s0 = COPY [[FPEXT2]](s32)101 ; CHECK-NEXT: $s1 = COPY [[FPEXT3]](s32)102 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s0103 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp104 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $s0105 ; CHECK-NEXT: [[FPTRUNC1:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY3]](s32)106 ; CHECK-NEXT: [[FPEXT4:%[0-9]+]]:_(s32) = G_FPEXT [[UV2]](s16)107 ; CHECK-NEXT: [[FPEXT5:%[0-9]+]]:_(s32) = G_FPEXT [[UV10]](s16)108 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp109 ; CHECK-NEXT: $s0 = COPY [[FPEXT4]](s32)110 ; CHECK-NEXT: $s1 = COPY [[FPEXT5]](s32)111 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s0112 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp113 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $s0114 ; CHECK-NEXT: [[FPTRUNC2:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY4]](s32)115 ; CHECK-NEXT: [[FPEXT6:%[0-9]+]]:_(s32) = G_FPEXT [[UV3]](s16)116 ; CHECK-NEXT: [[FPEXT7:%[0-9]+]]:_(s32) = G_FPEXT [[UV11]](s16)117 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp118 ; CHECK-NEXT: $s0 = COPY [[FPEXT6]](s32)119 ; CHECK-NEXT: $s1 = COPY [[FPEXT7]](s32)120 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s0121 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp122 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $s0123 ; CHECK-NEXT: [[FPTRUNC3:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY5]](s32)124 ; CHECK-NEXT: [[FPEXT8:%[0-9]+]]:_(s32) = G_FPEXT [[UV4]](s16)125 ; CHECK-NEXT: [[FPEXT9:%[0-9]+]]:_(s32) = G_FPEXT [[UV12]](s16)126 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp127 ; CHECK-NEXT: $s0 = COPY [[FPEXT8]](s32)128 ; CHECK-NEXT: $s1 = COPY [[FPEXT9]](s32)129 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s0130 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp131 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $s0132 ; CHECK-NEXT: [[FPTRUNC4:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY6]](s32)133 ; CHECK-NEXT: [[FPEXT10:%[0-9]+]]:_(s32) = G_FPEXT [[UV5]](s16)134 ; CHECK-NEXT: [[FPEXT11:%[0-9]+]]:_(s32) = G_FPEXT [[UV13]](s16)135 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp136 ; CHECK-NEXT: $s0 = COPY [[FPEXT10]](s32)137 ; CHECK-NEXT: $s1 = COPY [[FPEXT11]](s32)138 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s0139 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp140 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $s0141 ; CHECK-NEXT: [[FPTRUNC5:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY7]](s32)142 ; CHECK-NEXT: [[FPEXT12:%[0-9]+]]:_(s32) = G_FPEXT [[UV6]](s16)143 ; CHECK-NEXT: [[FPEXT13:%[0-9]+]]:_(s32) = G_FPEXT [[UV14]](s16)144 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp145 ; CHECK-NEXT: $s0 = COPY [[FPEXT12]](s32)146 ; CHECK-NEXT: $s1 = COPY [[FPEXT13]](s32)147 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s0148 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp149 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $s0150 ; CHECK-NEXT: [[FPTRUNC6:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY8]](s32)151 ; CHECK-NEXT: [[FPEXT14:%[0-9]+]]:_(s32) = G_FPEXT [[UV7]](s16)152 ; CHECK-NEXT: [[FPEXT15:%[0-9]+]]:_(s32) = G_FPEXT [[UV15]](s16)153 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp154 ; CHECK-NEXT: $s0 = COPY [[FPEXT14]](s32)155 ; CHECK-NEXT: $s1 = COPY [[FPEXT15]](s32)156 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s0157 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp158 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $s0159 ; CHECK-NEXT: [[FPTRUNC7:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY9]](s32)160 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s16>) = G_BUILD_VECTOR [[FPTRUNC]](s16), [[FPTRUNC1]](s16), [[FPTRUNC2]](s16), [[FPTRUNC3]](s16), [[FPTRUNC4]](s16), [[FPTRUNC5]](s16), [[FPTRUNC6]](s16), [[FPTRUNC7]](s16)161 ; CHECK-NEXT: $q0 = COPY [[BUILD_VECTOR]](<8 x s16>)162 ; CHECK-NEXT: RET_ReallyLR implicit $q0163 %0:_(<8 x s16>) = COPY $q0164 %1:_(<8 x s16>) = COPY $q1165 %2:_(<8 x s16>) = G_FATAN2 %0, %1166 $q0 = COPY %2(<8 x s16>)167 RET_ReallyLR implicit $q0168 169...170---171name: test_v2f32.atan2172alignment: 4173tracksRegLiveness: true174registers:175 - { id: 0, class: _ }176 - { id: 1, class: _ }177body: |178 bb.0:179 liveins: $d0, $d1180 181 ; CHECK-LABEL: name: test_v2f32.atan2182 ; CHECK: liveins: $d0, $d1183 ; CHECK-NEXT: {{ $}}184 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0185 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $d1186 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)187 ; CHECK-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)188 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp189 ; CHECK-NEXT: $s0 = COPY [[UV]](s32)190 ; CHECK-NEXT: $s1 = COPY [[UV2]](s32)191 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s0192 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp193 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $s0194 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp195 ; CHECK-NEXT: $s0 = COPY [[UV1]](s32)196 ; CHECK-NEXT: $s1 = COPY [[UV3]](s32)197 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s0198 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp199 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $s0200 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY2]](s32), [[COPY3]](s32)201 ; CHECK-NEXT: $d0 = COPY [[BUILD_VECTOR]](<2 x s32>)202 ; CHECK-NEXT: RET_ReallyLR implicit $d0203 %0:_(<2 x s32>) = COPY $d0204 %1:_(<2 x s32>) = COPY $d1205 %2:_(<2 x s32>) = G_FATAN2 %0, %1206 $d0 = COPY %2(<2 x s32>)207 RET_ReallyLR implicit $d0208 209...210---211name: test_v4f32.atan2212alignment: 4213tracksRegLiveness: true214registers:215 - { id: 0, class: _ }216 - { id: 1, class: _ }217body: |218 bb.0:219 liveins: $q0, $q1220 221 ; CHECK-LABEL: name: test_v4f32.atan2222 ; CHECK: liveins: $q0, $q1223 ; CHECK-NEXT: {{ $}}224 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0225 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q1226 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)227 ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<4 x s32>)228 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp229 ; CHECK-NEXT: $s0 = COPY [[UV]](s32)230 ; CHECK-NEXT: $s1 = COPY [[UV4]](s32)231 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s0232 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp233 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $s0234 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp235 ; CHECK-NEXT: $s0 = COPY [[UV1]](s32)236 ; CHECK-NEXT: $s1 = COPY [[UV5]](s32)237 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s0238 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp239 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $s0240 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp241 ; CHECK-NEXT: $s0 = COPY [[UV2]](s32)242 ; CHECK-NEXT: $s1 = COPY [[UV6]](s32)243 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s0244 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp245 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $s0246 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp247 ; CHECK-NEXT: $s0 = COPY [[UV3]](s32)248 ; CHECK-NEXT: $s1 = COPY [[UV7]](s32)249 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s0250 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp251 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $s0252 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)253 ; CHECK-NEXT: $q0 = COPY [[BUILD_VECTOR]](<4 x s32>)254 ; CHECK-NEXT: RET_ReallyLR implicit $q0255 %0:_(<4 x s32>) = COPY $q0256 %1:_(<4 x s32>) = COPY $q1257 %2:_(<4 x s32>) = G_FATAN2 %0, %1258 $q0 = COPY %2(<4 x s32>)259 RET_ReallyLR implicit $q0260 261...262---263name: test_v2f64.atan2264alignment: 4265tracksRegLiveness: true266registers:267 - { id: 0, class: _ }268 - { id: 1, class: _ }269body: |270 bb.0:271 liveins: $q0, $q1272 273 ; CHECK-LABEL: name: test_v2f64.atan2274 ; CHECK: liveins: $q0, $q1275 ; CHECK-NEXT: {{ $}}276 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0277 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $q1278 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)279 ; CHECK-NEXT: [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>)280 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp281 ; CHECK-NEXT: $d0 = COPY [[UV]](s64)282 ; CHECK-NEXT: $d1 = COPY [[UV2]](s64)283 ; CHECK-NEXT: BL &atan2, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $d0, implicit $d1, implicit-def $d0284 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp285 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $d0286 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp287 ; CHECK-NEXT: $d0 = COPY [[UV1]](s64)288 ; CHECK-NEXT: $d1 = COPY [[UV3]](s64)289 ; CHECK-NEXT: BL &atan2, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $d0, implicit $d1, implicit-def $d0290 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp291 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $d0292 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[COPY2]](s64), [[COPY3]](s64)293 ; CHECK-NEXT: $q0 = COPY [[BUILD_VECTOR]](<2 x s64>)294 ; CHECK-NEXT: RET_ReallyLR implicit $q0295 %0:_(<2 x s64>) = COPY $q0296 %1:_(<2 x s64>) = COPY $q1297 %2:_(<2 x s64>) = G_FATAN2 %0, %1298 $q0 = COPY %2(<2 x s64>)299 RET_ReallyLR implicit $q0300 301...302---303name: test_atan2_half304alignment: 4305tracksRegLiveness: true306registers:307 - { id: 0, class: _ }308 - { id: 1, class: _ }309body: |310 bb.0:311 liveins: $h0, $h1312 313 ; CHECK-LABEL: name: test_atan2_half314 ; CHECK: liveins: $h0, $h1315 ; CHECK-NEXT: {{ $}}316 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h0317 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s16) = COPY $h1318 ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[COPY]](s16)319 ; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(s32) = G_FPEXT [[COPY1]](s16)320 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp321 ; CHECK-NEXT: $s0 = COPY [[FPEXT]](s32)322 ; CHECK-NEXT: $s1 = COPY [[FPEXT1]](s32)323 ; CHECK-NEXT: BL &atan2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit $s1, implicit-def $s0324 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp325 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $s0326 ; CHECK-NEXT: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY2]](s32)327 ; CHECK-NEXT: $h0 = COPY [[FPTRUNC]](s16)328 ; CHECK-NEXT: RET_ReallyLR implicit $h0329 %0:_(s16) = COPY $h0330 %1:_(s16) = COPY $h1331 %2:_(s16) = G_FATAN2 %0, %1332 $h0 = COPY %2(s16)333 RET_ReallyLR implicit $h0334