829 lines · plain
1# RUN: llc -mtriple=s390x-linux-gnu -mcpu=z14 -start-before=greedy %s -o - \2# RUN: | FileCheck %s3#4# Test folding of a memory operand into an fp memory instruction.5 6--- |7 define void @fun0(double %arg0, double %arg1, ptr %Dst) { ret void }8 define void @fun1(double %arg0, double %arg1, ptr %Dst) { ret void }9 define void @fun2(double %arg0, double %arg1, ptr %Dst) { ret void }10 define void @fun3(float %arg0, float %arg1, ptr %Dst) { ret void }11 define void @fun4(float %arg0, float %arg1, ptr %Dst) { ret void }12 define void @fun5(float %arg0, float %arg1, ptr %Dst) { ret void }13 define void @fun6(double %arg0, double %arg1, ptr %Dst) { ret void }14 define void @fun7(double %arg0, double %arg1, ptr %Dst) { ret void }15 define void @fun8(double %arg0, double %arg1, ptr %Dst) { ret void }16 define void @fun9(float %arg0, float %arg1, ptr %Dst) { ret void }17 define void @fun10(float %arg0, float %arg1, ptr %Dst) { ret void }18 define void @fun11(float %arg0, float %arg1, ptr %Dst) { ret void }19 define void @fun12(double %arg0, double %arg1, ptr %Dst) { ret void }20 define void @fun13(double %arg0, double %arg1, ptr %Dst) { ret void }21 define void @fun14(double %arg0, double %arg1, ptr %Dst) { ret void }22 define void @fun15(float %arg0, float %arg1, ptr %Dst) { ret void }23 define void @fun16(float %arg0, float %arg1, ptr %Dst) { ret void }24 define void @fun17(float %arg0, float %arg1, ptr %Dst) { ret void }25 define void @fun18(double %arg0, double %arg1, ptr %Dst) { ret void }26 define void @fun19(double %arg0, double %arg1, ptr %Dst) { ret void }27 define void @fun20(double %arg0, double %arg1, ptr %Dst) { ret void }28 define void @fun21(float %arg0, float %arg1, ptr %Dst) { ret void }29 define void @fun22(float %arg0, float %arg1, ptr %Dst) { ret void }30 define void @fun23(float %arg0, float %arg1, ptr %Dst) { ret void }31 32...33 34# Test with both orders of operands since some operations are commutative.35 36# CHECK-LABEL: fun0:37# CHECK: adb %f0, 160(%r15) # 8-byte Folded Reload38---39name: fun040alignment: 1641tracksRegLiveness: true42registers:43 - { id: 0, class: fp64bit }44 - { id: 1, class: fp64bit }45 - { id: 2, class: addr64bit }46 - { id: 3, class: vr64bit }47liveins:48 - { reg: '$f0d', virtual-reg: '%0' }49 - { reg: '$f2d', virtual-reg: '%1' }50 - { reg: '$r2d', virtual-reg: '%2' }51frameInfo:52 maxAlignment: 153machineFunctionInfo: {}54body: |55 bb.0:56 liveins: $f0d, $f2d, $r2d57 58 %2:addr64bit = COPY $r2d59 %1:fp64bit = COPY $f2d60 %0:fp64bit = COPY $f0d61 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d62 %3:vr64bit = nofpexcept WFADB %0, %1, implicit $fpc63 VST64 %3, %2, 0, $noreg :: (store (s64) into %ir.Dst)64 Return65 66...67 68 69# CHECK-LABEL: fun1:70# CHECK: adb %f0, 160(%r15) # 8-byte Folded Reload71---72name: fun173alignment: 1674tracksRegLiveness: true75registers:76 - { id: 0, class: fp64bit }77 - { id: 1, class: fp64bit }78 - { id: 2, class: addr64bit }79 - { id: 3, class: vr64bit }80liveins:81 - { reg: '$f0d', virtual-reg: '%0' }82 - { reg: '$f2d', virtual-reg: '%1' }83 - { reg: '$r2d', virtual-reg: '%2' }84frameInfo:85 maxAlignment: 186machineFunctionInfo: {}87body: |88 bb.0:89 liveins: $f0d, $f2d, $r2d90 91 %2:addr64bit = COPY $r2d92 %1:fp64bit = COPY $f2d93 %0:fp64bit = COPY $f0d94 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d95 %3:vr64bit = nofpexcept WFADB %1, %0, implicit $fpc96 VST64 %3, %2, 0, $noreg :: (store (s64) into %ir.Dst)97 Return98 99...100 101# ADB can't be used if one operand is a VR64 (and not FP64).102# CHECK-LABEL: fun2:103# CHECK: wfadb %f0, %v16, %f0104---105name: fun2106alignment: 16107tracksRegLiveness: true108registers:109 - { id: 0, class: fp64bit }110 - { id: 1, class: vr64bit }111 - { id: 2, class: addr64bit }112 - { id: 3, class: vr64bit }113liveins:114 - { reg: '$f0d', virtual-reg: '%0' }115 - { reg: '$f2d', virtual-reg: '%1' }116 - { reg: '$r2d', virtual-reg: '%2' }117frameInfo:118 maxAlignment: 1119machineFunctionInfo: {}120body: |121 bb.0:122 liveins: $f0d, $f2d, $r2d123 124 %2:addr64bit = COPY $r2d125 %1:vr64bit = COPY $f2d126 %0:fp64bit = COPY $f0d127 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d128 %3:vr64bit = nofpexcept WFADB %1, %0, implicit $fpc129 VST64 %3, %2, 0, $noreg :: (store (s64) into %ir.Dst)130 Return131 132...133 134 135# CHECK-LABEL: fun3:136# CHECK: aeb %f0, 164(%r15) # 4-byte Folded Reload137---138name: fun3139alignment: 16140tracksRegLiveness: true141registers:142 - { id: 0, class: fp32bit }143 - { id: 1, class: fp32bit }144 - { id: 2, class: addr64bit }145 - { id: 3, class: vr32bit }146liveins:147 - { reg: '$f0s', virtual-reg: '%0' }148 - { reg: '$f2s', virtual-reg: '%1' }149 - { reg: '$r2d', virtual-reg: '%2' }150frameInfo:151 maxAlignment: 1152machineFunctionInfo: {}153body: |154 bb.0:155 liveins: $f0s, $f2s, $r2d156 157 %2:addr64bit = COPY $r2d158 %1:fp32bit = COPY $f2s159 %0:fp32bit = COPY $f0s160 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d161 %3:vr32bit = nofpexcept WFASB %0, %1, implicit $fpc162 VST32 %3, %2, 0, $noreg :: (store (s32) into %ir.Dst)163 Return164 165...166 167 168# CHECK-LABEL: fun4:169# CHECK: aeb %f0, 164(%r15) # 4-byte Folded Reload170---171name: fun4172alignment: 16173tracksRegLiveness: true174registers:175 - { id: 0, class: fp32bit }176 - { id: 1, class: fp32bit }177 - { id: 2, class: addr64bit }178 - { id: 3, class: vr32bit }179liveins:180 - { reg: '$f0s', virtual-reg: '%0' }181 - { reg: '$f2s', virtual-reg: '%1' }182 - { reg: '$r2d', virtual-reg: '%2' }183frameInfo:184 maxAlignment: 1185machineFunctionInfo: {}186body: |187 bb.0:188 liveins: $f0s, $f2s, $r2d189 190 %2:addr64bit = COPY $r2d191 %1:fp32bit = COPY $f2s192 %0:fp32bit = COPY $f0s193 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d194 %3:vr32bit = nofpexcept WFASB %1, %0, implicit $fpc195 VST32 %3, %2, 0, $noreg :: (store (s32) into %ir.Dst)196 Return197 198...199 200 201# AEB can't be used if one operand is a VR64 (and not FP64).202# CHECK-LABEL: fun5:203# CHECK: wfasb %f0, %v16, %f0204---205name: fun5206alignment: 16207tracksRegLiveness: true208registers:209 - { id: 0, class: fp32bit }210 - { id: 1, class: vr32bit }211 - { id: 2, class: addr64bit }212 - { id: 3, class: vr32bit }213liveins:214 - { reg: '$f0s', virtual-reg: '%0' }215 - { reg: '$f2s', virtual-reg: '%1' }216 - { reg: '$r2d', virtual-reg: '%2' }217frameInfo:218 maxAlignment: 1219machineFunctionInfo: {}220body: |221 bb.0:222 liveins: $f0s, $f2s, $r2d223 224 %2:addr64bit = COPY $r2d225 %1:vr32bit = COPY $f2s226 %0:fp32bit = COPY $f0s227 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d228 %3:vr32bit = nofpexcept WFASB %1, %0, implicit $fpc229 VST32 %3, %2, 0, $noreg :: (store (s32) into %ir.Dst)230 Return231 232...233 234 235# CHECK-LABEL: fun6:236# CHECK: sdb %f0, 160(%r15) # 8-byte Folded Reload237---238name: fun6239alignment: 16240tracksRegLiveness: true241registers:242 - { id: 0, class: fp64bit }243 - { id: 1, class: fp64bit }244 - { id: 2, class: addr64bit }245 - { id: 3, class: vr64bit }246liveins:247 - { reg: '$f0d', virtual-reg: '%0' }248 - { reg: '$f2d', virtual-reg: '%1' }249 - { reg: '$r2d', virtual-reg: '%2' }250frameInfo:251 maxAlignment: 1252machineFunctionInfo: {}253body: |254 bb.0:255 liveins: $f0d, $f2d, $r2d256 257 %2:addr64bit = COPY $r2d258 %1:fp64bit = COPY $f2d259 %0:fp64bit = COPY $f0d260 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d261 %3:vr64bit = nofpexcept WFSDB %0, %1, implicit $fpc262 VST64 %3, %2, 0, $noreg :: (store (s64) into %ir.Dst)263 Return264 265...266 267 268# CHECK-LABEL: fun7:269# CHECK: wfsdb %f0, %f1, %f0270---271name: fun7272alignment: 16273tracksRegLiveness: true274registers:275 - { id: 0, class: fp64bit }276 - { id: 1, class: fp64bit }277 - { id: 2, class: addr64bit }278 - { id: 3, class: vr64bit }279liveins:280 - { reg: '$f0d', virtual-reg: '%0' }281 - { reg: '$f2d', virtual-reg: '%1' }282 - { reg: '$r2d', virtual-reg: '%2' }283frameInfo:284 maxAlignment: 1285machineFunctionInfo: {}286body: |287 bb.0:288 liveins: $f0d, $f2d, $r2d289 290 %2:addr64bit = COPY $r2d291 %1:fp64bit = COPY $f2d292 %0:fp64bit = COPY $f0d293 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d294 %3:vr64bit = nofpexcept WFSDB %1, %0, implicit $fpc295 VST64 %3, %2, 0, $noreg :: (store (s64) into %ir.Dst)296 Return297 298...299 300# SDB can't be used if one operand is a VR64 (and not FP64).301# CHECK-LABEL: fun8:302# CHECK: wfsdb %f0, %f0, %v16303---304name: fun8305alignment: 16306tracksRegLiveness: true307registers:308 - { id: 0, class: fp64bit }309 - { id: 1, class: vr64bit }310 - { id: 2, class: addr64bit }311 - { id: 3, class: vr64bit }312liveins:313 - { reg: '$f0d', virtual-reg: '%0' }314 - { reg: '$f2d', virtual-reg: '%1' }315 - { reg: '$r2d', virtual-reg: '%2' }316frameInfo:317 maxAlignment: 1318machineFunctionInfo: {}319body: |320 bb.0:321 liveins: $f0d, $f2d, $r2d322 323 %2:addr64bit = COPY $r2d324 %1:vr64bit = COPY $f2d325 %0:fp64bit = COPY $f0d326 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d327 %3:vr64bit = nofpexcept WFSDB %0, %1, implicit $fpc328 VST64 %3, %2, 0, $noreg :: (store (s64) into %ir.Dst)329 Return330 331...332 333 334# CHECK-LABEL: fun9:335# CHECK: seb %f0, 164(%r15) # 4-byte Folded Reload336---337name: fun9338alignment: 16339tracksRegLiveness: true340registers:341 - { id: 0, class: fp32bit }342 - { id: 1, class: fp32bit }343 - { id: 2, class: addr64bit }344 - { id: 3, class: vr32bit }345liveins:346 - { reg: '$f0s', virtual-reg: '%0' }347 - { reg: '$f2s', virtual-reg: '%1' }348 - { reg: '$r2d', virtual-reg: '%2' }349frameInfo:350 maxAlignment: 1351machineFunctionInfo: {}352body: |353 bb.0:354 liveins: $f0s, $f2s, $r2d355 356 %2:addr64bit = COPY $r2d357 %1:fp32bit = COPY $f2s358 %0:fp32bit = COPY $f0s359 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d360 %3:vr32bit = nofpexcept WFSSB %0, %1, implicit $fpc361 VST32 %3, %2, 0, $noreg :: (store (s32) into %ir.Dst)362 Return363 364...365 366 367# CHECK-LABEL: fun10:368# CHECK: wfssb %f0, %f1, %f0369---370name: fun10371alignment: 16372tracksRegLiveness: true373registers:374 - { id: 0, class: fp32bit }375 - { id: 1, class: fp32bit }376 - { id: 2, class: addr64bit }377 - { id: 3, class: vr32bit }378liveins:379 - { reg: '$f0s', virtual-reg: '%0' }380 - { reg: '$f2s', virtual-reg: '%1' }381 - { reg: '$r2d', virtual-reg: '%2' }382frameInfo:383 maxAlignment: 1384machineFunctionInfo: {}385body: |386 bb.0:387 liveins: $f0s, $f2s, $r2d388 389 %2:addr64bit = COPY $r2d390 %1:fp32bit = COPY $f2s391 %0:fp32bit = COPY $f0s392 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d393 %3:vr32bit = nofpexcept WFSSB %1, %0, implicit $fpc394 VST32 %3, %2, 0, $noreg :: (store (s32) into %ir.Dst)395 Return396 397...398 399 400# SEB can't be used if one operand is a VR32 (and not FP32).401# CHECK-LABEL: fun11:402# CHECK: wfssb %f0, %f0, %v16403---404name: fun11405alignment: 16406tracksRegLiveness: true407registers:408 - { id: 0, class: fp32bit }409 - { id: 1, class: vr32bit }410 - { id: 2, class: addr64bit }411 - { id: 3, class: vr32bit }412liveins:413 - { reg: '$f0s', virtual-reg: '%0' }414 - { reg: '$f2s', virtual-reg: '%1' }415 - { reg: '$r2d', virtual-reg: '%2' }416frameInfo:417 maxAlignment: 1418machineFunctionInfo: {}419body: |420 bb.0:421 liveins: $f0s, $f2s, $r2d422 423 %2:addr64bit = COPY $r2d424 %1:vr32bit = COPY $f2s425 %0:fp32bit = COPY $f0s426 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d427 %3:vr32bit = nofpexcept WFSSB %0, %1, implicit $fpc428 VST32 %3, %2, 0, $noreg :: (store (s32) into %ir.Dst)429 Return430 431...432 433# CHECK-LABEL: fun12:434# CHECK: ddb %f0, 160(%r15) # 8-byte Folded Reload435---436name: fun12437alignment: 16438tracksRegLiveness: true439registers:440 - { id: 0, class: fp64bit }441 - { id: 1, class: fp64bit }442 - { id: 2, class: addr64bit }443 - { id: 3, class: vr64bit }444liveins:445 - { reg: '$f0d', virtual-reg: '%0' }446 - { reg: '$f2d', virtual-reg: '%1' }447 - { reg: '$r2d', virtual-reg: '%2' }448frameInfo:449 maxAlignment: 1450machineFunctionInfo: {}451body: |452 bb.0:453 liveins: $f0d, $f2d, $r2d454 455 %2:addr64bit = COPY $r2d456 %1:fp64bit = COPY $f2d457 %0:fp64bit = COPY $f0d458 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d459 %3:vr64bit = nofpexcept WFDDB %0, %1, implicit $fpc460 VST64 %3, %2, 0, $noreg :: (store (s64) into %ir.Dst)461 Return462 463...464 465 466# CHECK-LABEL: fun13:467# CHECK: wfddb %f0, %f1, %f0468---469name: fun13470alignment: 16471tracksRegLiveness: true472registers:473 - { id: 0, class: fp64bit }474 - { id: 1, class: fp64bit }475 - { id: 2, class: addr64bit }476 - { id: 3, class: vr64bit }477liveins:478 - { reg: '$f0d', virtual-reg: '%0' }479 - { reg: '$f2d', virtual-reg: '%1' }480 - { reg: '$r2d', virtual-reg: '%2' }481frameInfo:482 maxAlignment: 1483machineFunctionInfo: {}484body: |485 bb.0:486 liveins: $f0d, $f2d, $r2d487 488 %2:addr64bit = COPY $r2d489 %1:fp64bit = COPY $f2d490 %0:fp64bit = COPY $f0d491 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d492 %3:vr64bit = nofpexcept WFDDB %1, %0, implicit $fpc493 VST64 %3, %2, 0, $noreg :: (store (s64) into %ir.Dst)494 Return495 496...497 498# DDB can't be used if one operand is a VR64 (and not FP64).499# CHECK-LABEL: fun14:500# CHECK: wfddb %f0, %f0, %v16501---502name: fun14503alignment: 16504tracksRegLiveness: true505registers:506 - { id: 0, class: fp64bit }507 - { id: 1, class: vr64bit }508 - { id: 2, class: addr64bit }509 - { id: 3, class: vr64bit }510liveins:511 - { reg: '$f0d', virtual-reg: '%0' }512 - { reg: '$f2d', virtual-reg: '%1' }513 - { reg: '$r2d', virtual-reg: '%2' }514frameInfo:515 maxAlignment: 1516machineFunctionInfo: {}517body: |518 bb.0:519 liveins: $f0d, $f2d, $r2d520 521 %2:addr64bit = COPY $r2d522 %1:vr64bit = COPY $f2d523 %0:fp64bit = COPY $f0d524 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d525 %3:vr64bit = nofpexcept WFDDB %0, %1, implicit $fpc526 VST64 %3, %2, 0, $noreg :: (store (s64) into %ir.Dst)527 Return528 529...530 531 532# CHECK-LABEL: fun15:533# CHECK: deb %f0, 164(%r15) # 4-byte Folded Reload534---535name: fun15536alignment: 16537tracksRegLiveness: true538registers:539 - { id: 0, class: fp32bit }540 - { id: 1, class: fp32bit }541 - { id: 2, class: addr64bit }542 - { id: 3, class: vr32bit }543liveins:544 - { reg: '$f0s', virtual-reg: '%0' }545 - { reg: '$f2s', virtual-reg: '%1' }546 - { reg: '$r2d', virtual-reg: '%2' }547frameInfo:548 maxAlignment: 1549machineFunctionInfo: {}550body: |551 bb.0:552 liveins: $f0s, $f2s, $r2d553 554 %2:addr64bit = COPY $r2d555 %1:fp32bit = COPY $f2s556 %0:fp32bit = COPY $f0s557 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d558 %3:vr32bit = nofpexcept WFDSB %0, %1, implicit $fpc559 VST32 %3, %2, 0, $noreg :: (store (s32) into %ir.Dst)560 Return561 562...563 564 565# CHECK-LABEL: fun16:566# CHECK: wfdsb %f0, %f1, %f0567---568name: fun16569alignment: 16570tracksRegLiveness: true571registers:572 - { id: 0, class: fp32bit }573 - { id: 1, class: fp32bit }574 - { id: 2, class: addr64bit }575 - { id: 3, class: vr32bit }576liveins:577 - { reg: '$f0s', virtual-reg: '%0' }578 - { reg: '$f2s', virtual-reg: '%1' }579 - { reg: '$r2d', virtual-reg: '%2' }580frameInfo:581 maxAlignment: 1582machineFunctionInfo: {}583body: |584 bb.0:585 liveins: $f0s, $f2s, $r2d586 587 %2:addr64bit = COPY $r2d588 %1:fp32bit = COPY $f2s589 %0:fp32bit = COPY $f0s590 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d591 %3:vr32bit = nofpexcept WFDSB %1, %0, implicit $fpc592 VST32 %3, %2, 0, $noreg :: (store (s32) into %ir.Dst)593 Return594 595...596 597 598# DEB can't be used if one operand is a VR32 (and not FP32).599# CHECK-LABEL: fun17:600# CHECK: wfdsb %f0, %f0, %v16601---602name: fun17603alignment: 16604tracksRegLiveness: true605registers:606 - { id: 0, class: fp32bit }607 - { id: 1, class: vr32bit }608 - { id: 2, class: addr64bit }609 - { id: 3, class: vr32bit }610liveins:611 - { reg: '$f0s', virtual-reg: '%0' }612 - { reg: '$f2s', virtual-reg: '%1' }613 - { reg: '$r2d', virtual-reg: '%2' }614frameInfo:615 maxAlignment: 1616machineFunctionInfo: {}617body: |618 bb.0:619 liveins: $f0s, $f2s, $r2d620 621 %2:addr64bit = COPY $r2d622 %1:vr32bit = COPY $f2s623 %0:fp32bit = COPY $f0s624 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d625 %3:vr32bit = nofpexcept WFDSB %0, %1, implicit $fpc626 VST32 %3, %2, 0, $noreg :: (store (s32) into %ir.Dst)627 Return628 629...630 631 632# CHECK-LABEL: fun18:633# CHECK: mdb %f0, 160(%r15) # 8-byte Folded Reload634---635name: fun18636alignment: 16637tracksRegLiveness: true638registers:639 - { id: 0, class: fp64bit }640 - { id: 1, class: fp64bit }641 - { id: 2, class: addr64bit }642 - { id: 3, class: vr64bit }643liveins:644 - { reg: '$f0d', virtual-reg: '%0' }645 - { reg: '$f2d', virtual-reg: '%1' }646 - { reg: '$r2d', virtual-reg: '%2' }647frameInfo:648 maxAlignment: 1649machineFunctionInfo: {}650body: |651 bb.0:652 liveins: $f0d, $f2d, $r2d653 654 %2:addr64bit = COPY $r2d655 %1:fp64bit = COPY $f2d656 %0:fp64bit = COPY $f0d657 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d658 %3:vr64bit = nofpexcept WFMDB %0, %1, implicit $fpc659 VST64 %3, %2, 0, $noreg :: (store (s64) into %ir.Dst)660 Return661 662...663 664 665# CHECK-LABEL: fun19:666# CHECK: mdb %f0, 160(%r15) # 8-byte Folded Reload667---668name: fun19669alignment: 16670tracksRegLiveness: true671registers:672 - { id: 0, class: fp64bit }673 - { id: 1, class: fp64bit }674 - { id: 2, class: addr64bit }675 - { id: 3, class: vr64bit }676liveins:677 - { reg: '$f0d', virtual-reg: '%0' }678 - { reg: '$f2d', virtual-reg: '%1' }679 - { reg: '$r2d', virtual-reg: '%2' }680frameInfo:681 maxAlignment: 1682machineFunctionInfo: {}683body: |684 bb.0:685 liveins: $f0d, $f2d, $r2d686 687 %2:addr64bit = COPY $r2d688 %1:fp64bit = COPY $f2d689 %0:fp64bit = COPY $f0d690 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d691 %3:vr64bit = nofpexcept WFMDB %1, %0, implicit $fpc692 VST64 %3, %2, 0, $noreg :: (store (s64) into %ir.Dst)693 Return694 695...696 697# MDB can't be used if one operand is a VR64 (and not FP64).698# CHECK-LABEL: fun20:699# CHECK: wfmdb %f0, %v16, %f0700---701name: fun20702alignment: 16703tracksRegLiveness: true704registers:705 - { id: 0, class: fp64bit }706 - { id: 1, class: vr64bit }707 - { id: 2, class: addr64bit }708 - { id: 3, class: vr64bit }709liveins:710 - { reg: '$f0d', virtual-reg: '%0' }711 - { reg: '$f2d', virtual-reg: '%1' }712 - { reg: '$r2d', virtual-reg: '%2' }713frameInfo:714 maxAlignment: 1715machineFunctionInfo: {}716body: |717 bb.0:718 liveins: $f0d, $f2d, $r2d719 720 %2:addr64bit = COPY $r2d721 %1:vr64bit = COPY $f2d722 %0:fp64bit = COPY $f0d723 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d724 %3:vr64bit = nofpexcept WFMDB %1, %0, implicit $fpc725 VST64 %3, %2, 0, $noreg :: (store (s64) into %ir.Dst)726 Return727 728...729 730 731# CHECK-LABEL: fun21:732# CHECK: meeb %f0, 164(%r15) # 4-byte Folded Reload733---734name: fun21735alignment: 16736tracksRegLiveness: true737registers:738 - { id: 0, class: fp32bit }739 - { id: 1, class: fp32bit }740 - { id: 2, class: addr64bit }741 - { id: 3, class: vr32bit }742liveins:743 - { reg: '$f0s', virtual-reg: '%0' }744 - { reg: '$f2s', virtual-reg: '%1' }745 - { reg: '$r2d', virtual-reg: '%2' }746frameInfo:747 maxAlignment: 1748machineFunctionInfo: {}749body: |750 bb.0:751 liveins: $f0s, $f2s, $r2d752 753 %2:addr64bit = COPY $r2d754 %1:fp32bit = COPY $f2s755 %0:fp32bit = COPY $f0s756 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d757 %3:vr32bit = nofpexcept WFMSB %0, %1, implicit $fpc758 VST32 %3, %2, 0, $noreg :: (store (s32) into %ir.Dst)759 Return760 761...762 763 764# CHECK-LABEL: fun22:765# CHECK: meeb %f0, 164(%r15) # 4-byte Folded Reload766---767name: fun22768alignment: 16769tracksRegLiveness: true770registers:771 - { id: 0, class: fp32bit }772 - { id: 1, class: fp32bit }773 - { id: 2, class: addr64bit }774 - { id: 3, class: vr32bit }775liveins:776 - { reg: '$f0s', virtual-reg: '%0' }777 - { reg: '$f2s', virtual-reg: '%1' }778 - { reg: '$r2d', virtual-reg: '%2' }779frameInfo:780 maxAlignment: 1781machineFunctionInfo: {}782body: |783 bb.0:784 liveins: $f0s, $f2s, $r2d785 786 %2:addr64bit = COPY $r2d787 %1:fp32bit = COPY $f2s788 %0:fp32bit = COPY $f0s789 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d790 %3:vr32bit = nofpexcept WFMSB %1, %0, implicit $fpc791 VST32 %3, %2, 0, $noreg :: (store (s32) into %ir.Dst)792 Return793 794...795 796 797# MEEB can't be used if one operand is a VR32 (and not FP32).798# CHECK-LABEL: fun23:799# CHECK: wfmsb %f0, %v16, %f0800---801name: fun23802alignment: 16803tracksRegLiveness: true804registers:805 - { id: 0, class: fp32bit }806 - { id: 1, class: vr32bit }807 - { id: 2, class: addr64bit }808 - { id: 3, class: vr32bit }809liveins:810 - { reg: '$f0s', virtual-reg: '%0' }811 - { reg: '$f2s', virtual-reg: '%1' }812 - { reg: '$r2d', virtual-reg: '%2' }813frameInfo:814 maxAlignment: 1815machineFunctionInfo: {}816body: |817 bb.0:818 liveins: $f0s, $f2s, $r2d819 820 %2:addr64bit = COPY $r2d821 %1:vr32bit = COPY $f2s822 %0:fp32bit = COPY $f0s823 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d824 %3:vr32bit = nofpexcept WFMSB %1, %0, implicit $fpc825 VST32 %3, %2, 0, $noreg :: (store (s32) into %ir.Dst)826 Return827 828...829